ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Пятница
22 ноября
445392
Mazur (23.09.2013 10:05 - 10:46, просмотров: 2731)
Продолжение истории. -> Как только я изменил логику управления по рекомендации rezident-а, у меня перестало нормально работать на LCD. VFD хавает. У меня все руки не доходили нормально разобраться. Начну, брошу. Сегодня ночью решил снова http://caxapa.ru/402926.html
поковырять проблемку, почему перестало нормально запускаться. Уже не помню как додумался, была глубокая ночь. Было (работало нестабильно, показывало через раз): void Init_LCD (void) { _delay_ms(100); lcd_send_com_nibble(0x30); // Установка 8-разрядного интерфейса. _delay_ms(5); lcd_send_com_nibble(0x30); _delay_ms(5); lcd_send_com_nibble(0x30); _delay_ms(5); lcd_send_com_nibble(0x20); // Установка 4-разрядного интерфейса. _delay_ms(5); lcd_send_com_nibble(0x28); // 4-разрядный интерфейс. Двухстрочный режим. _delay_us(100); lcd_send_com(0x01); // Команда очистки дисплея. _delay_ms(5); lcd_send_com(0x06); // Инкремент счетчика адреса. _delay_us(100); lcd_send_com(0x0C); // Включение дисплея. _delay_us(100); } Стало (работает четко, на 4 и 16 мгц): _delay_ms(100); lcd_send_com_nibble(0x30); // Установка 8-разрядного интерфейса. _delay_ms(5); lcd_send_com_nibble(0x30); _delay_ms(5); lcd_send_com_nibble(0x30); _delay_ms(5); lcd_send_com_nibble(0x28); // 4-разрядный интерфейс. Двухстрочный режим. _delay_us(100); lcd_send_com(0x01); // Команда очистки дисплея. _delay_ms(5); lcd_send_com(0x06); // Инкремент счетчика адреса. _delay_us(100); lcd_send_com(0x0C); // Включение дисплея. _delay_us(100); } Почему? В примерах вроде 0x20 включение 4-битного режима. Получается, что 0x20 нужно один раз вместе с какой-то еще командой запускать?