Конфигурация LCD: время отправки и передачи - PullRequest
0 голосов
/ 08 ноября 2011

Я программирую на VHDL и пытаюсь настроить LCD. Мои вопросы касаются синхронизации ЖК-интерфейса и времени, необходимого для инициализации при включении питания.

При выполнении инициализации существуют некоторые ограничения по времени, например, в руководстве пользователя сказано что-то вроде:

  1. Подождите 15 мс
  2. Напишите 0x30 и подождите 240 нс
  3. Подождите 4,1 мс и так далее и тому подобное

Когда я записываю 0x30 на ЖК-дисплей, должен ли я соблюдать 240 нс + время синхронизации интерфейса? (те для настройки, включить высокий, включить удержание, включить низкий).

Поправьте меня, если я ошибаюсь, но то, что я думаю, это то, что когда я инициализируюсь, меня не волнует синхронизация интерфейса. Когда я посылаю команды (например, набор функций, отображение вкл. / Выкл. И т. Д.), Я позабочусь о синхронизации интерфейса.

Спасибо. !

Ответы [ 2 ]

1 голос
/ 08 ноября 2011

Новый ответ:

В соответствии с таблицей данных, предоставленной в комментариях http://www.xilinx.com/support/documentation/boards_and_kits/ug334.pdf

Стоит отметить, что в большинстве ваших комментариев утверждается, что время интерфейса больше, чем время настройки.Это назад.Для настройки требуется больше времени, чем для разговора с ЖК-дисплеем.

Чтобы сделать это проще для меня, я собираюсь сделать вызов псевдо-функции, называемый импульсным LCD_E, который вы можете каждый раз заменять в своей голове.

Definition of pulse LCD_E
    wait a minimum of 40 ns (2 clock cycles at 50 MHz)    
    set LCD_E high
    wait a minimum of 230 ns (12 clock cycles at 50 MHz)
    set LCD_E low
    wait a minium 10 ns before changes (.5 clock cycle)

Временная диаграмма для стандартной команды записи просит вас

set LCD_RS, LCD_DB(7:4), LCD_RW

pulse LCD_E

reset LCD_RS, LCD_DB(7:4), LCD_RW for lower nibble
wait 1 us

pulse LCD_E

wait a minium of 40 us before repeating

Инициализация ОЧЕНЬ похожа, хотя у вас есть начальное время ожидания и вы пишете только 4-битные команды с более длительным ожиданиеммежду ними.

Сделайте это для инициализации

wait at least 15 ms (750,000 clock cycles at 50 MHz) 

set LCD_DB<7:4> = 0x3
pulse LCD_E
wait 4.1 ms or longer, which is 205,000 clock cycles at 50 MHz.

set LCD_DB<7:4> = 0x3, 
pulse LCD_E
wait 100 μs or longer, which is 5,000 clock cycles at 50 MHz.

set LCD_DB<7:4> = 0x3
pulse LCD_E
wait 40 μs or longer, which is 2,000 clock cycles at 50 MHz.

set LCD_DB<7:4> = 0x2
pulse LCD_E
wait 40 μs or longer, which is 2,000 clock cycles at 50 MH

Initialization complete

Если вам по какой-то причине требуется сократить время записи, вы можете установить следующий ввод данных во время более длительного ожидания и удалить начальное ожидание.в импульсе LCD_E

В защиту моего старого ответа.Из таблицы данных ~~

 After power-on, the display must be initialized to establish the required communication 
 protocol. The initialization sequence is simple and ideally suited to the highly-efficient 
 eight-bit PicoBlaze embedded controller. After initialization, the PicoBlaze controller is 
 available for more complex control or computation beyond simply driving the display.

Старый ответ:

Если это происходит на ПЛИС и у вас есть другие временные ограничения (например, время ожидания), вы можете рассмотреть возможность использования этого

http://en.wikipedia.org/wiki/PicoBlaze

Это реализация VHDL 8-битного микроконтроллера, очень полезная для настройки, записи и чтения информации с ЖК-дисплея.Чипсет очень прост и его легко подобрать.Кроме того, вы можете кодировать свои собственные периферийные устройства:)

Это бесплатное программное обеспечение, и я думаю, что вы можете скачать все это здесь.Он поставляется с собственной IDE и отладчиком.

http://www.picoblaze.info/tools.html

Если это просто для небольшого проекта, вы можете просто сделать все кодирование самостоятельно для задержек.Но если это происходит в более крупном проекте, это довольно полезно и его стоит изучить.Я думаю, что он работает на тактовой частоте 50 МГц, поэтому вам, возможно, потребуется немного управлять цифровыми часами, если вы используете более быстрые часы.

1 голос
/ 08 ноября 2011

При записи чего-либо в контроллер дисплея всегда нужно учитывать время интерфейса, иначе вы можете отправить недопустимые данные.Более длительные тайм-ауты обычно дают контроллеру дисплея время для запуска различных программных подпрограмм, которые могут помешать ему контролировать порт интерфейса.

Так что, да, вам нужно учитывать время интерфейса при записи 0x30 как частипоследовательность инициализации.

...