Цитата(Рома_С @ Mar 1 2007, 00:04)

И что означают вот ети две строчки функции define_char
a=(char_code<<3) | 0x40;
for (i=0; i<8; i++) lcd_write_byte(a++,*pc++);
если можно поподробней.
А сейчас я поставил себе задачу, вывести на экран бегущую строку тобишь есть строка символов которая имеет допустим 50 символов то ее нужно вывести на дисплей имеющий 20 символов в строке.
посмотрите
http://electronix.ru/forum/index.php?s=&am...st&p=129947 
a - это адрес куда будем писать, у 44780 есть две области памяти знакогенератор и данные, отображаемые на экране
адрес первой ячейки знакогенератора 0x40, а данных - 0x80
на каждый _свой_ символ нужно 8 байт (т. е. для символа 0 это 0x40 - 0x47, соответственно для 1ого 0x48 - 0x4F, и т.д.)
это делаем сдвигом номера символа на 3 влево, и побитное или с 0х40.
далее в цикле записываем 8 значений из массива переданного через указатель pc
Ах да! забыл сказать:
у 44780 данные разделены на две строки по 40 байт
у двухстрочных для удобства первая строка это первая

, а вторая - вторая
Но у
четырехстрочных первая строка в озу отображается на 1ой и
3ей(!) строках
а вторая строка в озу - на 2ой и 4ой
надеюсь понятно написал