Перейти к содержанию
    

Управление LCD дисплеем с помощью ПЛИС

Сколько понадобится времени, чтобы вывести на дисплей слово : "Hallo". Выходит 5 букв по 500 нс на каждую, это 2,5 мкс?
Нет. 41mks * 5 = 205mks. А в вашем случае 50mks*5 = 250mks

 

А как узнать время выполнения той или иной команды, к примеру очистка экрана. В datasheet я нашел упоминание о миллисекундах только в пункте оптические характеристики.
Какой то не тот у вас DS. См. http://www.stanford.edu/class/ee281/handou...r_datasheet.pdf страницы 25 & 26

 

Опять таки повторюсь, хотелось бы знать возможно ли управлять полноценно дисплеем если при временном разделении шины для этого выделено 1,9 мкс на период приблизительно 25 мкс.
Да.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо за datasheet, очень толковый. Нашел в нем следующий пункт:

 

Initializing by Internal Reset Circuit

An internal reset circuit automatically initializes the HD44780U when the power is turned on. The

following instructions are executed during the initialization. The busy flag (BF) is kept in the busy state

until the initialization ends (BF = 1). The busy state lasts for 10 ms after VCC rises to 4.5 V.

 

1. Display clear

2. Function set:

DL = 1; 8-bit interface data

N = 0; 1-line display

F = 0; 5 × 8 dot character font

3. Display on/off control:

D = 0; Display off

C = 0; Cursor off

B = 0; Blinking off

4. Entry mode set:

I/D = 1; Increment by 1

S = 0; No shift

 

Я так понимаю после подачи питания и перед началом записи кодов символов в DDRAM нужно выждать 10 ms и после этого питающее напряжение возрастет к 4.5 В ? А до этого оно сколько было?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я так понимаю после подачи питания и перед началом записи кодов символов в DDRAM нужно выждать 10 ms и после этого питающее напряжение возрастет к 4.5 В ?
Нет. ПОСЛЕ подачи питающего напряжения (после подьема Vcc до 4.5В минимум), контролер будет инициализироваться в течении 10ms. В течении этого времени BF будет держаться в 1, а писать в него (контролер) ничего не нужно (да и бесполезно - он все будет игнорировать)

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну я почти это и имел ввиду, только напутал с 4,5В. Выходит, что бы вывести слово Hello нужно в моем случае 10ms + 50mks*5 = 250mks?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну я почти это и имел ввиду, только напутал с 4,5В. Выходит, что бы вывести слово Hello нужно в моем случае 10ms + 50mks*5 = 250mks?
Нет. После 10ms инициализации самого контролера ему еще надо скормить последовательность команд для установки режима работы (4/8 бит) и начального состояния (см. в том же DS). И только потом можно будет выводить Hello

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

После 10ms инициализации самого контролера ему еще надо скормить последовательность команд для установки режима работы (4/8 бит) и начального состояния (см. в том же DS). И только потом можно будет выводить Hello

 

Все так и сделал. Сначала подождал 10 мс, потом последовательно подал команды: 2 строки дисплея, 8 разрядная шина (00111000); включить дисплей (00001110); инкремент адреса и сдвиг курсора в право (00000110). Судя по datasheet у меня должен появится курсор на экране, но его нет. Ниже привожу временную диаграмму работы программы.

 

post-52032-1285768229_thumb.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Все так и сделал. Сначала подождал 10 мс, потом последовательно подал команды: 2 строки дисплея, 8 разрядная шина (00111000); включить дисплей (00001110); инкремент адреса и сдвиг курсора в право (00000110). Судя по datasheet у меня должен появится курсор на экране, но его нет. Ниже привожу временную диаграмму работы программы.
Насколько видно по диаграмме вы сделали только одну запись в LCD (сигнал x_lcd_en формирует только один импульс). Если за пределами окна там были еще импульсы, проверьте, что интервал между ними не меньше минимального по DS

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

На диаграмме я показал только один импульс x_lcd_en но на самом деле их три, для каждого из кодов, а период даже больше требуемого (требуемый 41 мс). Попробую подать непрерывно один из кодов и посмотреть осциллографом доходит ли он до дисплея.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Проверил все сигналы, все нормально. Может есть какой способ проверки дисплея на пригодность, а то он вообще молчит, хотя бы курсор вывел. :(

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ЕМНИП, на дисплее есть пин, отвечающий за контрастность. Как он у вас подключён?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А как это может повлиять на правильную работу дисплея?

post-52032-1285841771_thumb.jpg

Изменено пользователем Aleksandr_KPI

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А как это может повлиять на правильную работу дисплея?
Ну например дисплей может вообще ничего не выводить :rolleyes: Выкрутите переменный резистор в крайнюю левую позицию (что бы на V0 был GND)

 

Посмотрите последовательность инициализации на стр 46 DS. Там немного больше, чем 3 записи :)

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А в реальности, там поставили постоянный резистор на 10 КОм. Не думаю что это связано с резистором, на дисплей раньше уже выводили данные.

 

Посмотрел на страницу 46, она не сходится в плане инициализации со страницей 24. На 46 указано что инициализация длится 15 ms, а на 24 что 10 ms. Если 15 ms это правильно, то конечно контроллер ничего не будет выводить, так как команды поступают после 10 ms.

Изменено пользователем Aleksandr_KPI

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

 

Посмотрел на страницу 46, она не сходится в плане инициализации со страницей 24. На 46 указано что инициализация длится 15 ms, а на 24 что 10 ms. Если 15 ms это правильно, то конечно контроллер ничего не будет выводить, так как команды поступают после 10 ms.

Есть такое дело, раньше тоже натыкался на такие вещи.В принцапе, если при инициализации Вы подождете чуть дольше при подаче очередной команды, то ничего страшного не случиться (благо для индикаторов такого типа скорость не критична).

 

 

Вот ссылка на документ компании МЭЛТ, отечественная фирма дерущая деньги за то что приделала память с рускими шрифтами. Но у них не плохо скомпонованна документация + великий могучий  :biggrin: столь приятный нашему уху

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Есть такое дело, раньше тоже натыкался на такие вещи.В принцапе, если при инициализации Вы подождете чуть дольше при подаче очередной команды, то ничего страшного не случиться (благо для индикаторов такого типа скорость не критична).

 

Период подачи команд для дисплея у меня составляет около 58 us, а время под начальную инициализацию, увеличил до 15 мс так что я думаю здесь все нормально. За DS спасибо.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...