通过表1所示的LCD12864和LCD1602两种液晶模块的端口对比可以看出,它们的端口定义基本相同,LCD12864模块只比LCD16021模块多了PSB(串并选择)和RST(复位端)端口,因此;可以完全按照LCD12864的端口要求来设计多功能LCD显示控制器的端口;PSB和RST端口在驱动LCD 1602模块时闲置或悬空(也可以用来充当某些特殊LCD1602屏的电源开关和背光开关信号)。

2 多功能显示控制器的操作时序

如果LCD12864液晶模块工作在并口的数据传输模式(PSB=1、RST=1)下,就和LCD1602液晶模块具有完全相同的控制时序,这就要求多功能控制器产生的E、RW、RS控制信号具有正确的时序,LED模块的读/写操作时序由使能信号E完成:对读/写操作的识别是判断RW信号上的电平状态;RS信号用于识别数据总线DB0~DB7上的数据是指令代码还是属于显示数据,LCD模块都给出了关键时间参数(不同厂商产品有差异),一般要求数据读写周期TC≥13μs;使能脉冲宽度TPW≥1.5 μs;数据建立时间TDSW≥1μs;数据保持时间TH≥20 ns;地址建立和保持时间(TAS和TAH)不得小于1.5μs,因此在多功能LCD显示控制器IP核的设计中,必须设置有延时配置参数以满足控制器的多种模块驱动调试。

LCD12864和LCD1602液晶模块都有自己一套严格用户指令集,用户就是通过这些指令来初始化液晶模块来选择显示模式,这就要求多功能的LCD显示驱动器同时包含多种显示模式的用户配置指令, LCD12864 和LCD1602 液晶模块字符 、 图形显示模式 的初始化指令如表2所示,对于指令的解释在此不再详述。

3 多功能显示控制器的状态机设计

基于FPGA设计 LCD显示控制器 ,关键在于采用硬件描述语言设计有限状态机(FSM)来控制LCD模块的跳转,文献中就是使用FSM实现了对LCD模块的显示控制,但是它们都是针对一种类型LCD模块的某种显示模式,不具有多模式的显示控制能力。因此,多功能LCD显示控制器的有限状态机就需要设置更多的条件转换,来实现多种控制模式。系统上电后,首先完成持续大约0.1 s(根据时钟频率配置)的自动复位,然后才根据模块的端口参数选择不同显示模式所对应的初始化命令,在状态机中设置有初始化命令、起始行地址和屏显示数据3条转换路径来适应LCD屏的工作状态,同时也在关键转换路径上设置有可以配置的延时循环,这样既能方便LCD模块的工作调试,又能使LCD模块一直工作在写屏模式(RW=0)。对于LCD屏的显示数据存储可以完全采用FPGA内嵌的ROM/RAM单元实现,如果使用双口RAM(存储器读写独立)就能实现LCD模块的动态实时显示。

4 多功能显示控制器的设计验证

使用康芯KX7C5T FPGA开发板(Altera CycleⅡEP2C5T144C8)、KBl2864KZK、RT1602C和4x4键盘组成多功能LCD控制器的硬件测试平台;设计项目经过QuartusⅡ9.1开发工具的工程编译和芯片下载配置后得到的实际显示效果图如图3所示,其中图3(a)是LCD1602模块的字符显示效果图;屏的第1行显示静态字符,第2行实时显示键盘输入键值。图3(b)是LCD12864模块的中西文混合字符显示效果图,第4行也是实时显示键盘输入键值。图3(c)是LCD12864模块的静态图片显示效果图(ROM存储);图3(d)是LCD12864模块的实时动态图形显示效果图(双口RAM存储),这是用多功能LCD显示控制器实现的逻辑分析仪界面。

  • UC3846控制芯片工作原理控制图 逆变焊机原理与用途
  • 数字万用表电阻档测试二极管正反向没有阻值(使用万用表测量二极管的正向电阻,为什么各档)
  • 学单片机需要学数电模电吗(学单片机要先学数电模电吗)
  • 电工怎么选择适合自己用的万用表(电工初学者买什么样的万用表好)
  • 单片机需要同时运行多个任务怎么办(单片机怎么同时执行多个任务)
  • 电机保护的方案取决于负载的机械特性
  • 绝缘电阻表正负搭接不复零位是怎么回事
  • 短路怎么用万用表查