roboforum.ru

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

вывод на LCD 2х16 цивр (директива lcd_putchar(myhour)

вывод на LCD 2х16 цивр (директива lcd_putchar(myhour)

к561ЛА7 » 29 мар 2012, 10:43

Директива

lcd_putchar(myhour)

выводит на экран LCD не значение переменной (0-255), а код этой буквы, в одном знакоместе

можно ли вывести число?

Re: вывод на LCD 2х16 цивр (директива lcd_putchar(myhour)

Myp » 29 мар 2012, 11:11

можно :)

Re: вывод на LCD 2х16 цивр (директива lcd_putchar(myhour)

Romikgy » 29 мар 2012, 11:19

lcd_putchar(0x30+(myhour%100));
lcd_putchar(0x30+((myhour%10)&10));
lcd_putchar(0x30+((myhour)&10));
типа так наверное

Re: вывод на LCD 2х16 цивр (директива lcd_putchar(myhour)

к561ЛА7 » 29 мар 2012, 11:37

Romikgy писал(а):lcd_putchar(0x30+(myhour%100));
lcd_putchar(0x30+((myhour%10)&10));
lcd_putchar(0x30+((myhour)&10));
типа так наверное




Все равно символы выводит


Глубокоуважаемый Федор Анатольевич знает но молчит

Re: вывод на LCD 2х16 цивр (директива lcd_putchar(myhour)

Myp » 29 мар 2012, 11:50

у аврчика же в курсе помоему очень понятно описано как выводить на экран данные

Re: вывод на LCD 2х16 цивр (директива lcd_putchar(myhour)

Romikgy » 29 мар 2012, 11:54

к561ЛА7 писал(а):
Romikgy писал(а):lcd_putchar(0x30+(myhour%100));
lcd_putchar(0x30+((myhour%10)&10));
lcd_putchar(0x30+((myhour)&10));
типа так наверное




Все равно символы выводит


Глубокоуважаемый Федор Анатольевич знает но молчит

в протеусе или в живую? если в протеусе то проект выложи

Re: вывод на LCD 2х16 цивр (директива lcd_putchar(myhour)

к561ЛА7 » 29 мар 2012, 12:01

вживую в кодвижн авр
У авр только строчки прописано как выводить и вывод данных на USART

Re: вывод на LCD 2х16 цивр (директива lcd_putchar(myhour)

Myp » 29 мар 2012, 12:10

вот там часики делают
http://my-avr.at.ua/publ/1-1-0-24

и время выводят вот так

Код: Выделить всёРазвернуть
lcd_clear();
  lcd_gotoxy(0,0);
  lcd_putsf("Time is=");
  lcd_putchar(hour/10+0x30);
  lcd_putchar(hour%10+0x30);
  lcd_putchar(':');
  lcd_putchar(min/10+0x30);
  lcd_putchar(min%10+0x30);
  lcd_putchar(':');
  lcd_putchar(sek/10+0x30);
  lcd_putchar(sek%10+0x30);


я не помню как я выводил время, потому и не говорю =)

Re: вывод на LCD 2х16 цивр (директива lcd_putchar(myhour)

к561ЛА7 » 29 мар 2012, 12:17

тут если задавать переменную 2 знаками то она выводиться, а если 3мя -
тоесть больше 99 - то вместо старшей выводиться символ

тоесть тут сначала 1 символ выводися, потом второй
что значит /10+0x30 и %10+0x30 вообще не понятно

Re: вывод на LCD 2х16 цивр (директива lcd_putchar(myhour)

Romikgy » 29 мар 2012, 12:47

символ нуля это 0x30
/ - деление
% - деление по модулю

Re: вывод на LCD 2х16 цивр (директива lcd_putchar(myhour)

к561ЛА7 » 29 мар 2012, 13:12

если вот так то 2 цифры выводит

lcd_putchar(mydate/10+0x30); // (делим на 10 и выводим)
lcd_putchar(mydate%10+0x30); // это зачем непонятно - но выводиться

а если вот та к то 3 цивры но на место 2 й - символ

lcd_putchar(mymonth/100+0x30); // (делим на 100 и выводим)- выводится
lcd_putchar(mymonth/10+0x30); // (делим на 10 и выводим) выводиться символ
lcd_putchar(mymonth%10+0x30); // это зачем непонятно -но выводиться

а зечет тут везде ссимвол нуля прибавляется?

Добавлено спустя 13 минут 30 секунд:
lcd_putchar(mymonth/100+0x30); //
lcd_putchar((mymonth-(100*(mymonth/100)))/10+0x30); //
lcd_putchar(mymonth%10+0x30); //

вроде работает

Re: вывод на LCD 2х16 цивр (директива lcd_putchar(myhour)

Romikgy » 29 мар 2012, 13:41

if ( x>99 )
{
y=x/100;
lcd_putchar(y+0x30);
y=(x/10)%10;
lcd_putchar(y+0x30);
y=(x)%10;
lcd_putchar(y+0x30);
}
else
{
if (x>9)
{
y=(x/10);
lcd_putchar(y+0x30);
y=(x)%10;
lcd_putchar(y+0x30);
}
else
{
lcd_putchar(y+0x30);
}
}

Re: вывод на LCD 2х16 цивр (директива lcd_putchar(myhour)

Myp » 29 мар 2012, 15:13

ыыыыыы
какая страшная макарона


Rambler\'s Top100 Mail.ru counter