roboforum.ru

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

LCD - мистика

Программирование микроконтроллеров AVR, PIC, ARM.
Разработка и изготовление печатных плат для модулей.

LCD - мистика

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

В общем уже не первый час парюсь с символьным ЖКИ (HD44780). В 8-битном режиме все без проблем было, а вот в 4-битном никак не заводится. Если у кого есть провереный кусок кода на Си - буду рад.  :roll:
Аватара пользователя
-= Александр =-
Мастер Самоделкин
 
Сообщения: 3678
Зарегистрирован: 11 окт 2004, 19:20
Откуда: Россия, СПб
прог. языки: C/C++, Python, asm
ФИО: Курмис Александр Андреевич

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); //Курсор сдвигается вправо при записи, дисплей стоит на месте
}
wolf
 
Сообщения: 63
Зарегистрирован: 23 июл 2005, 00:39
Откуда: Казань

Сообщение -= Александр =- » 08 фев 2006, 00:47

Странно, теперь горит вся верхняя строка... И ни на что кроме ресета не реагирует... Какой у тебя кварц? Есть подозрение что слишком шустро работает...
Аватара пользователя
-= Александр =-
Мастер Самоделкин
 
Сообщения: 3678
Зарегистрирован: 11 окт 2004, 19:20
Откуда: Россия, СПб
прог. языки: C/C++, Python, asm
ФИО: Курмис Александр Андреевич

Сообщение -= Александр =- » 12 фев 2006, 12:04

Что-то мне кажется дисплейчик у меня дохлый. Кто-нить знает как они к статике относятся? А то вполне возможно что его разрядом убило...  :cry:
Аватара пользователя
-= Александр =-
Мастер Самоделкин
 
Сообщения: 3678
Зарегистрирован: 11 окт 2004, 19:20
Откуда: Россия, СПб
прог. языки: C/C++, Python, asm
ФИО: Курмис Александр Андреевич

Сообщение Dars » 12 фев 2006, 13:21

Прям сразу дохлый. Код надо правильно писать :!:
Вот тебе рабочий 100% пример. Тот что wolf дал - странный код. Нет задержек! Команды для перехода в 4 битный режим это
0x30
0x30
0x30
0x20

А у него

0x33
0x32
0x28

Это вообще откуда????Их должно быть 4! И они совершенно другие!

P.S. В даташите все по шагам расписано!
Вложения
IARLCD4bit.RAR
(3.04 КиБ) Скачиваний: 108
Dars
 
Сообщения: 106
Зарегистрирован: 04 авг 2005, 18:56
Откуда: Москва

Сообщение dx40 » 12 фев 2006, 13:43

Дисплеи от статики дохнут очень легко. Только вот не думаю, что он у тебя сдох - по 8 битному же работает. А что верхняя строка полностью горит - это самотестирование в некоторых дисплеях - значит, питание подано, а инициализации не было.
Аватара пользователя
dx40
 
Сообщения: 201
Зарегистрирован: 27 янв 2005, 11:49
Откуда: Мск

Сообщение -= Александр =- » 12 фев 2006, 14:09

Как только я эти задержки не мучал... Раньше через флаг все было, но щас ноги для этого не хватает...  :(  В общем буду пробовать дальше.
Аватара пользователя
-= Александр =-
Мастер Самоделкин
 
Сообщения: 3678
Зарегистрирован: 11 окт 2004, 19:20
Откуда: Россия, СПб
прог. языки: C/C++, Python, asm
ФИО: Курмис Александр Андреевич

Сообщение Stepan » 28 фев 2006, 16:39

Ещё такой момент есть- неиспользованные 4 разряда- притянуть к земле.
Stepan
 
Сообщения: 39
Зарегистрирован: 16 апр 2005, 19:49
Откуда: Санкт-Петербург

Сообщение -= Александр =- » 28 фев 2006, 16:59

У меня все ОК, это контроллер глюкавый был. На новый переставил - все заработало!
Аватара пользователя
-= Александр =-
Мастер Самоделкин
 
Сообщения: 3678
Зарегистрирован: 11 окт 2004, 19:20
Откуда: Россия, СПб
прог. языки: C/C++, Python, asm
ФИО: Курмис Александр Андреевич


Вернуться в Микроконтроллеры

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5