Jump to content

    

Управление 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 мкс.
Да.

Share this post


Link to post
Share on other sites

Спасибо за 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 В ? А до этого оно сколько было?

Share this post


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

 

 

Share this post


Link to post
Share on other sites

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

Share this post


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

 

 

Share this post


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

 

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

 

post-52032-1285768229_thumb.jpg

Share this post


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

 

 

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Share this post


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

 

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

 

Share this post


Link to post
Share on other sites

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

 

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

Edited by Aleksandr_KPI

Share this post


Link to post
Share on other sites

 

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

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

 

 

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

 

 

Share this post


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

 

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

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this