基于FPGA的多功能LCD显示控制器设计
LCD12864和LCD1602液晶模块都有自己一套严格用户指令集,用户就是通过这些指令来初始化液晶模块来选择显示模式,这就要求多功能的LCD显示驱动器同时包含多种显示模式的用户配置指令,LCD12864和LCD1602液晶模块字符、图形显示模式的初始化指令如表2所示,对于指令的解释在此不再详述。本文引用地址:http://www.amcfsurvey.com/article/189600.htm
通过表2的指令对比可以看出两种显示模块的字符显示初始化指令完全一致,仅仅是显示行的起始地址有所不同;这就需要在LCD多功能显示控制器中设置参数跳转,来根据模块配置参数自动加载相应的行起始地址,而对于LCD模块的图形显示模式需要用到扩展指令集,并且需要分成上下两个半屏设置起始地址,上半屏垂直坐标Y:8’h80~9’h9F(32行),水平坐标X:8’h80;下半屏垂直坐标和上半屏相同,而水平坐标X:8’h88。
3 多功能显示控制器的状态机设计
基于FPGA设计LCD显示控制器,关键在于采用硬件描述语言设计有限状态机(FSM)来控制LCD模块的跳转,文献中就是使用FSM实现了对LCD模块的显示控制,但是它们都是针对一种类型LCD模块的某种显示模式,不具有多模式的显示控制能力。因此,多功能LCD显示控制器的有限状态机就需要设置更多的条件转换,来实现多种控制模式,状态机的状态转换图如图2所示。
在图2所示的状态转换图中,系统上电后,首先完成持续大约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显示控制器实现的逻辑分析仪界面。
5 结论
文中设计的多功能LCD显示控制器,在FPGA开发板上的验证结果表明,它完全具有能够驱动LCD1602模块显示字符、LCD12864模块显示字符和实时显示图形的功能;并能够通过端口参数配置而实现控制器的系统移植。
LCD显示屏相关文章:lcd显示屏原理
fpga相关文章:fpga是什么
led显示器相关文章:led显示器原理
lcd相关文章:lcd原理
评论