реклама на сайте
подробности

 
 
> ЖКИ BC2004B, Как заставить работать на четыре строки?
AVR
сообщение Jan 23 2006, 23:26
Сообщение #1


фанат Linux'а
*****

Группа: Свой
Сообщений: 1 353
Регистрация: 23-10-05
Из: SPB.RU
Пользователь №: 10 008



Есть символьный дисплей BC2004B 20х4.
У этого дисплея четыре строки, но внутрення организация у него как у двухстрочного (3-я строка продолжение первой, 4-я - продолжение второй).
Поэтому для работы с ним я включаю режим работы на две строки. Но в результате, на ЖКИ первая строка пишется в первый ряд ЖКИ как и положено, однако вторая пишется в третий ряд, а 3-я и 4-я вовсе не появляются на экране. В чем может быть ошибка? Как можно задействовать все четыре строки?


--------------------
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
BVU
сообщение Jan 25 2006, 15:04
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 301
Регистрация: 30-11-04
Из: Россия, Н.Новгород
Пользователь №: 1 264



Цитата(AVR @ Jan 24 2006, 02:26) *
Есть символьный дисплей BC2004B 20х4.
У этого дисплея четыре строки, но внутрення организация у него как у двухстрочного (3-я строка продолжение первой, 4-я - продолжение второй).
Поэтому для работы с ним я включаю режим работы на две строки. Но в результате, на ЖКИ первая строка пишется в первый ряд ЖКИ как и положено, однако вторая пишется в третий ряд, а 3-я и 4-я вовсе не появляются на экране. В чем может быть ошибка? Как можно задействовать все четыре строки?

Возможно Вы 'недоинициализировали' LCD. Когдато я делал для WH1604A, что немногим отличается от BC2004B (количество позиций в строке). Вот код инициализации:

void LCD_init(void)
{
PORTB = STROB_DOWN;
PORTB = RS_COMAND;
PORTD = WRITE_LCD;
DelayMs(100);
PORTB = (DATA_IO_LCD | 0x03); // To establish word length of the interface
LCD_strobe();
DelayUs(40);
LCD_strobe();
DelayUs(40);
LCD_strobe();
DelayUs(40);
LCD_write_comand(0x28); // 4 bit mode, 2/16 duty, 5x8 font
LCD_write_comand(0x08); // display off
LCD_write_comand(0x0C); // display on, blink curson off
LCD_write_comand(0x06); // entry mode
}

так же необходимо четко выдерживать все временные соотношения рекомендуемые к инициализации контроллера - DelayMs(), DelayUs(40):

#define ClkFreq 16000000
#define _1us (unsigned long)((ClkFreq / 1000000) / 1.25)
#define _1ms (unsigned long)(ClkFreq / 1000)
void DelayMs(unsigned int d)
{
while(d--)__delay_cycles(_1ms);
}

void DelayUs(unsigned int d)
{
while(d--)__delay_cycles(_1us);
}

длительность строба LCD_strobe() так же должна быть не меньше минимально допустимой.
Рекомендую посмотреть документацию на MT-20S4A, что является практически аналогом для BC2004B. Там достаточно подробное описание модуля (http://www.melt.aha.ru/work/display/150).


--------------------
Не корысти ради, не в целях наживы, а во исполнение велений души!
Go to the top of the page
 
+Quote Post
AVR
сообщение Feb 2 2006, 11:03
Сообщение #3


фанат Linux'а
*****

Группа: Свой
Сообщений: 1 353
Регистрация: 23-10-05
Из: SPB.RU
Пользователь №: 10 008



Спасибо за помощь. Сделал код инициализации такой же как у Вас и расставил задержки при изменении управляющих сигналов не менее минимальных (минимум 500 нс, я поставил 5 мкс), но индикатор по прежнему отображал только 1-ю и 3-ю строки. Потом я пошел и заменил в магазине ЖКИ модуль на такой же. Подключил - а ситуация обратная: на нём уже работает 2-я и 4-я строка, это при том что программа, зашитая в управляющий контроллер всё та же самая. Как Вы думаете, это всё же бракованные индикаторы или это у меня руки не совсем прямые?
У меня возникли подозрения на тему того что я мог сделать не так:
1) Если я задал задержки при управляющих сигналах больше чем рекоммендуется, то может это сказаться на работоспособности? Хотя при фиксированной задержке в 5 мкс всё нормально пишется/читается...
2) Если у меня порядок начальных установок после инициализации не совсем такой как в документации MT-20S4A, то могло ли из-за этого не заработать?

Сообщение отредактировал AVR - Feb 2 2006, 11:16


--------------------
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 07:25
Рейтинг@Mail.ru


Страница сгенерированна за 0.01382 секунд с 7
ELECTRONIX ©2004-2016