Возникли проблемы с отображением первых трех символов на LCD 16x02, не отображаеться только два символа, при переходе на вторую строку все в порядке. Помогите. Пишу на AVR C , на ATMega8. прилагаю программу в AVRStudio и проект протеус.
rezident
Nov 18 2010, 14:31
Инициализация неверная. Первой после подачи питания должна быть команда выбора разрядности шины. В datasheet HD44780U есть пример последовательности команд при инициализации. См. Table 138-Bit Operation, 8-Digit Ч 2-Line Display Example with Internal Reset в datasheet.
kyraxinoff
Nov 19 2010, 07:22
Почитав иструкцию и проделав все по Table 138-Bit Operation, 8-Digit Ч 2-Line Display Example with Internal Reset вообще изображение пропало. Немного почистив и переделав инициализацию в начале поставил объявление разрядности.
void lcd_init(void) { // Interface is 8 bits long. lcd_com(0b00111000); // set8bit long lcd_com(0b00111000); // set 8bit long lcd_com(0b00111000); // set 8bit long // Function set lcd_com(0b00001000); // display off lcd_com(0b00000001); //clear & sets on 0x00 addrss; lcd_com(0b00000110); // increment lcd_com(0b00001101); // disp on lcd_com(0b10000000); // sets DDRAM adr. receives after sett lcd_com(0b00000001); // sets DDRAM adr in 0 }
В результате первый знак отображается, второй и третий нет.
rezident
Nov 19 2010, 16:54
Уточните, где вы проверяете: в "железе" или в Протеусе? И что там у вас с требуемыми при инициализации и вообще между командами паузами?