LCD配置:发送和发送时序

时间:2011-11-08 05:42:06

标签: initialization vhdl timing lcd

我正在使用VHDL进行编程并尝试配置LCD。我的问题与LCD接口时序和上电启动所需的时间有关。

在进行初始化时,有一些时序限制,例如在用户指南中说明如下:

  1. 等待15ms
  2. 写入0x30并等待240ns
  3. 等待4.1ms 等等
  4. 当我向LCD写入0x30时,我应该尊重240ns +接口时序的次数吗? (用于设置,启用高电平,启用保持,启用低电平)。

    如果我错了,请纠正我,但我认为当我初始化时我不关心接口时序。当我发送命令(如功能设置,显示开/关等)时,我会处理接口时序。

    感谢。 !

2 个答案:

答案 0 :(得分:1)

在向显示控制器写入任何内容时,您始终需要遵守接口时序,否则您可能会发送无效数据。较长的超时通常是为显示控制器提供运行各种软件例程的时间,这可能会阻止它监视接口端口。

所以,是的,在初始化序列中写入0x30时需要遵守接口时序。

答案 1 :(得分:1)

新答案:

按照评论中提供的数据表进行操作 http://www.xilinx.com/support/documentation/boards_and_kits/ug334.pdf

值得注意的是,您的大多数评论声称接口时序比设置时间长。这是倒退。设置所需的时间比与LCD通话的时间长。

为了让我更容易,我将进行一个名为pulse 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.

旧答案:

如果这是在FPGA上运行并且您有其他时序限制(如等待时间),您可以考虑使用此

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

它是8位微控制器的VHDL实现,对于从LCD设置,写入和读取信息非常有用。该芯片组非常简单易于拾取。另外,您可以编写自己的外围设备代码:)

它的免费软件,我想你可以在这里下载。它带有自己的IDE和调试器。

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

如果只是针对一个小项目,您可能只想自己做所有编码延迟。但如果它进入一个更大的项目,这是非常有用的,值得学习。我认为它运行在50 MHz时钟最大值,因此如果您使用更快的时钟,则可能需要进行一些数字时钟管理。