roboforum.ru

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

LCD - мистика

LCD - мистика

-= Александр =- » 07 фев 2006, 23:54

В общем уже не первый час парюсь с символьным ЖКИ (HD44780). В 8-битном режиме все без проблем было, а вот в 4-битном никак не заводится. Если у кого есть провереный кусок кода на Си - буду рад.  :roll:

Re: LCD - мистика

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

У меня все ОК, это контроллер глюкавый был. На новый переставил - все заработало!


cron
Rambler\'s Top100 Mail.ru counter