roboforum.ru

Технический форум по робототехнике.

Вывести значение с АЦП

Программирование микроконтроллеров AVR, PIC, ARM.
Разработка и изготовление печатных плат для модулей.

Вывести значение с АЦП

Сообщение Lockdog » 03 фев 2009, 22:53

Вот есть код:
Код: Выделить всёРазвернуть
unsigned int read_adc(unsigned char adc_input)
{
ADMUX=adc_input | (ADC_VREF_TYPE & 0xff);
delay_us(10);
ADCSRA|=0x40;
while ((ADCSRA & 0x10)==0);
ADCSRA|=0x10;
return ADCW;

Получается, что результат записывается в ADCW, мне надо это значение вывести на дисплей (HD44780). Как это можно сделать?
Аватара пользователя
Lockdog
 
Сообщения: 650
Зарегистрирован: 06 июл 2006, 20:42
Откуда: Москва
прог. языки: C/C++, Python

Re: Вывести значение с АЦП

Сообщение Myp » 03 фев 2009, 23:07

наверноп рочитать курс АВРчика
особенно задание где он объясняет как работать с дисплеем
<telepathmode>На вопросы отвечает Бригадир Телепатов!</telepathmode>
Всё уже придумано до нас!
Аватара пользователя
Myp
скрытый хозяин вселенной :)
 
Сообщения: 18018
Зарегистрирован: 18 сен 2006, 12:26
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич

Re: Вывести значение с АЦП

Сообщение Lockdog » 03 фев 2009, 23:24

Кто б сомневался, что кто-нибудь так ответит. Я знаю с помощью каких функций выводить СТРОКОВЫЕ данные, а тут тип unsigned int - это вывести у меня не получается.(((
Аватара пользователя
Lockdog
 
Сообщения: 650
Зарегистрирован: 06 июл 2006, 20:42
Откуда: Москва
прог. языки: C/C++, Python

Re: Вывести значение с АЦП

Сообщение avr123.nm.ru » 03 фев 2009, 23:40

Lockdog писал(а): результат записывается в ADCW, мне надо это значение вывести на дисплей (HD44780). Как это можно сделать?

Несколько способов, выбирайте - http://avr123.nm.ru/z5.htm
И в примерах к CVAVR посмотрите.
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8

Re: Вывести значение с АЦП

Сообщение Lockdog » 03 фев 2009, 23:56

Вы все издеваетесь что-ли?
Там 4\5 урока про усарт и несколько функций для LCD. Там не описано ничего, кроме как выводить СТРОКИ
Аватара пользователя
Lockdog
 
Сообщения: 650
Зарегистрирован: 06 июл 2006, 20:42
Откуда: Москва
прог. языки: C/C++, Python

Re: Вывести значение с АЦП

Сообщение snayperAlfa » 04 фев 2009, 00:02

Щас я те напишу.
Код: Выделить всёРазвернуть
        a=ADCH;     [color=#40BF00]//измениш тут свой регистр[/color]
        // 20ms delay
        delay_ms(20);

// вот ут сразу посчитать напряжение
//float shag =0.01953125;
//float result;
//result=a*shag;
//sprintf(buffer,"%f",result);


        lcd_clear();
        sprintf(buffer,"Volt= %d\n",a);
        lcd_puts(buffer);
        delay_ms(500);
snayperAlfa
 
Сообщения: 163
Зарегистрирован: 05 июн 2008, 22:03
Откуда: Украина,Одесса
прог. языки: С,Java,SQL если это язык,C++ немного

Re: Вывести значение с АЦП

Сообщение Lockdog » 04 фев 2009, 00:17

Вот сделал так:
Код: Выделить всёРазвернуть
unsigned char adc_sharp;
char buffer;

adc_sharp=ADCW;
lcd_gotoxy(0,1);
sprintf(buffer,"adc= %d\n",adc_sharp);
lcd_puts(buffer);


Две ошибки одинаковые вылезает:
Error: E:\Documents\Robotics\CAVR\main\main2.c(204): function argument #1 of type 'unsigned char' is incompatible with required parameter of type 'unsigned char *'
Аватара пользователя
Lockdog
 
Сообщения: 650
Зарегистрирован: 06 июл 2006, 20:42
Откуда: Москва
прог. языки: C/C++, Python

Re: Вывести значение с АЦП

Сообщение snayperAlfa » 04 фев 2009, 00:28

Забыл написать
Код: Выделить всёРазвернуть
char buffer[20];
snayperAlfa
 
Сообщения: 163
Зарегистрирован: 05 июн 2008, 22:03
Откуда: Украина,Одесса
прог. языки: С,Java,SQL если это язык,C++ немного

Re: Вывести значение с АЦП

Сообщение Lockdog » 04 фев 2009, 00:48

Спасибо, заработало.
Аватара пользователя
Lockdog
 
Сообщения: 650
Зарегистрирован: 06 июл 2006, 20:42
Откуда: Москва
прог. языки: C/C++, Python

Re: Вывести значение с АЦП

Сообщение avr123.nm.ru » 04 фев 2009, 00:57

Lockdog писал(а):Вы все издеваетесь что-ли?
Там 4\5 урока про усарт и несколько функций для LCD.


Правильно. Там рассказано как преобразовать данные для форматированого вывода КУДА ЛИБО - аналогично и на UART и на LCD

Lockdog писал(а):Там не описано ничего, кроме как выводить СТРОКИ


ВРАНЬЕ очевидное ! Вам и надо строку вывести на LCD содержащую ваши данные с АЦП.

Изображение

КАК И УКАЗАНО ! Открываем хелп CVAVR и смотрим пример

Код: Выделить всёРазвернуть
/* prepare the displayed temperatures */
   /* in the display_buffer */
   sprintf(display_buffer,
   "t0=%-i.%-u%cC\nt1=%-i.%-u%cC",
   t0/10,abs(t0%10),0xdf,t1/10,abs(t1%10),0xdf);

   /* display the temperatures */
   lcd_clear();
   lcd_puts(display_buffer);


====================

Кроме того в посте я вам написал что вывод есть в примерах CVAVR - смотрите thermlcd.c
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8

Re: Вывести значение с АЦП

Сообщение Lockdog » 04 фев 2009, 01:17

Мне сказали искать про вывод данных на LCD, там sprintf не описывался. Можно было сразу написать, за что спасибо snayperAlfa, а не отсылать на километровые страницы курса.
Аватара пользователя
Lockdog
 
Сообщения: 650
Зарегистрирован: 06 июл 2006, 20:42
Откуда: Москва
прог. языки: C/C++, Python

Re: Вывести значение с АЦП

Сообщение avr123.nm.ru » 04 фев 2009, 01:24

Lockdog писал(а):Мне сказали искать про вывод данных на LCD, там sprintf не описывался.

Ну это же не единственый способ вывода.

Там описан вывод отдельных символов. Вы можете преобразовать данные в символы и вывести их.

Ведь sprintf сильно расходует память программ - первый вызов занимет около 430 слов памяти программ.

Добавлено спустя 5 минут 6 секунд:
Lockdog писал(а): а не отсылать на километровые страницы курса.

Я СРАЗУ в посте и написал: И в примерах к CVAVR посмотрите.

Вы посмотрели ?
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8


Вернуться в Микроконтроллеры

Кто сейчас на конференции

Сейчас этот форум просматривают: Bing [Bot], Google [Bot] и гости: 38