Технический форум по робототехнике.
-= Александр =- » 07 фев 2006, 23:54
В общем уже не первый час парюсь с символьным ЖКИ (HD44780). В 8-битном режиме все без проблем было, а вот в 4-битном никак не заводится. Если у кого есть провереный кусок кода на Си - буду рад. :roll:
wolf » 08 фев 2006, 00:11
-= Александр =- писал(а):В общем уже не первый час парюсь с символьным ЖКИ (HD44780). В 8-битном режиме все без проблем было, а вот в 4-битном никак не заводится. Если у кого есть провереный кусок кода на Си - буду рад. :roll:
- Код: Выделить всё • Развернуть
#define SET_RS (PORTB |= BIT(4))
#define CLR_RS (PORTB &= ~BIT(4))
#define SET_E (PORTB |= BIT(5))
#define CLR_E (PORTB &= ~BIT(5))
#define WRITE_LOW_NIBBLE(x) ( PORTD = (PORTD & 0x0F) | ((x) << 4) )
#define WRITE_HIGH_NIBBLE(x) ( PORTD = (PORTD & 0x0F) | ((x) & 0xF0) )
#define MKS_BYTE 40 /* время на передачу байта на дисплей */
/*
* посылка байта на дисплей с необходимой задержкой
* value - значение
*/
void WriteDelayed(byte value) {
SET_E;
WRITE_HIGH_NIBBLE(value);
CLR_E;
SET_E;
WRITE_LOW_NIBBLE(value);
CLR_E;
delay_us(MKS_BYTE);
}
/*
* инициализация уст-ва
*/
void InitDisplay(void) {
CLR_RS;
WriteDelayed(0x33);
WriteDelayed(0x32);
WriteDelayed(0x28); //4-битный интерфейс, 2 строки, шрифт-5х7 точек
WriteDelayed(0x0c); //включить дисплей, выключить курсор
WriteDelayed(0x06); //Курсор сдвигается вправо при записи, дисплей стоит на месте
}
-= Александр =- » 08 фев 2006, 00:47
Странно, теперь горит вся верхняя строка... И ни на что кроме ресета не реагирует... Какой у тебя кварц? Есть подозрение что слишком шустро работает...
-= Александр =- » 12 фев 2006, 12:04
Что-то мне кажется дисплейчик у меня дохлый. Кто-нить знает как они к статике относятся? А то вполне возможно что его разрядом убило... :cry:
Dars » 12 фев 2006, 13:21
Прям сразу дохлый. Код надо правильно писать
Вот тебе рабочий 100% пример. Тот что wolf дал - странный код. Нет задержек! Команды для перехода в 4 битный режим это
0x30
0x30
0x30
0x20
А у него
0x33
0x32
0x28
Это вообще откуда????Их должно быть 4! И они совершенно другие!
P.S. В даташите все по шагам расписано!
- Вложения
-
IARLCD4bit.RAR
- (3.04 КиБ) Скачиваний: 108
dx40 » 12 фев 2006, 13:43
Дисплеи от статики дохнут очень легко. Только вот не думаю, что он у тебя сдох - по 8 битному же работает. А что верхняя строка полностью горит - это самотестирование в некоторых дисплеях - значит, питание подано, а инициализации не было.
-= Александр =- » 12 фев 2006, 14:09
Как только я эти задержки не мучал... Раньше через флаг все было, но щас ноги для этого не хватает... :( В общем буду пробовать дальше.
Stepan » 28 фев 2006, 16:39
Ещё такой момент есть- неиспользованные 4 разряда- притянуть к земле.
-= Александр =- » 28 фев 2006, 16:59
У меня все ОК, это контроллер глюкавый был. На новый переставил - все заработало!