roboforum.ru

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

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

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

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). Как это можно сделать?

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

Myp » 03 фев 2009, 23:07

наверноп рочитать курс АВРчика
особенно задание где он объясняет как работать с дисплеем

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

Lockdog » 03 фев 2009, 23:24

Кто б сомневался, что кто-нибудь так ответит. Я знаю с помощью каких функций выводить СТРОКОВЫЕ данные, а тут тип unsigned int - это вывести у меня не получается.(((

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

avr123.nm.ru » 03 фев 2009, 23:40

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

Несколько способов, выбирайте - http://avr123.nm.ru/z5.htm
И в примерах к CVAVR посмотрите.

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

Lockdog » 03 фев 2009, 23:56

Вы все издеваетесь что-ли?
Там 4\5 урока про усарт и несколько функций для LCD. Там не описано ничего, кроме как выводить СТРОКИ

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);

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 *'

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

snayperAlfa » 04 фев 2009, 00:28

Забыл написать
Код: Выделить всёРазвернуть
char buffer[20];

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

Lockdog » 04 фев 2009, 00:48

Спасибо, заработало.

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

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

Lockdog » 04 фев 2009, 01:17

Мне сказали искать про вывод данных на LCD, там sprintf не описывался. Можно было сразу написать, за что спасибо snayperAlfa, а не отсылать на километровые страницы курса.

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

avr123.nm.ru » 04 фев 2009, 01:24

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

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

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

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

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

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

Вы посмотрели ?


Rambler\'s Top100 Mail.ru counter