摘要:提出了一种采用内存接口的液晶显示模块。该模块是在现有点阵式液晶显示屏上附加一个MCU(Micro-Controller Unit 微处理器)及相关硬件,利用内存与外部控制器进行接口,从而解决了液晶显示统一接口和显示速度的问题。
关键词:液晶接口 内存 微处理器
点阵式液晶接口简单,能以点阵或图形方式显示出各种信息,因此在各种电子设计中得到广泛应用。但是,它的接口必须遵循一定的硬件和时序规范,根据不同的液晶驱动器,可能需要发出不同的命令进行控制才能显示数据。而且命令的执行需要耗费一定时间,在系统大量的实时数据的情况下,如果直接控制液晶显示,可能会消耗过多的时间,从而影响数据的处理。因此,由于某种需要必须采用不同的液晶模块,这就需要修改软件。为了解决这些问题,文提出采用内存接口的液晶显示模块,在现有点阵式液晶显示屏上附加一个MCU(Micro-Controller Unit微处理器)及相关器件,利用内存与外部控制器进行接口,从而解决了统一接口和显示速度的问题。
1 系统设计
1.1 设计思想
我们知道,人眼有视觉暂留现象,每0.1秒时间内变化一次的影像看上去会认为是连续的,而且只在0.1秒之内变化的影像人眼很难察觉到。根据这一物理现象,我们采用内存与外部控制器接口设计一种液晶接口模块,外部控制器将欲显示的数据直接写入接口内存,根据接口刷新液晶的显示。刷新率在每秒10次以上,就可达到连续显示的目的。当然,刷新率越高人眼就越能感觉图像变化的连续与流畅。
采用内存与外部控制器接口,具有统一的硬件接口规范。因为外部控制器和模块内的MCU需要同时读写内存,接口内存采用带有BUSY线的2K双RAM IDT 7132,MCU选用常用的AT89C51,液晶模块为市面普及的采用HITACHI公司HD61202液晶控制器的单5V供电的128×64点阵液晶。液晶显示模块的设计必须具备很强的通用性,可以被广泛应用到各种系统中。目前系统一般为3V电平或5V电平系统,因此液晶显示模块的设计也必须同时考虑应用于这两种系统。液晶显示模块硬件结构框图如图1所示。外部控制器将欲显示的数据写入双口RAM,MCU则不断扫描内存,根据内存中的数据进行相应的处理,不断刷新液晶显示屏上的显示。综合考虑液晶和系统操作的时序,AT89C51单片机运行在12MHz时钟下,设计系统的刷新率达到每秒18次。
外部控制器的数据、地址、控制总线通过接插件引入液晶显示模块。因为双口RAM IDT7132的输入输出为TTL电平,BUSY信号为开漏极输出,因此无论是3V还是5V的系统,地址和控制总线可以直接引入。而数据总线因为是双向系统,如果直接与双口RAM连接,在双口RAM输出数据的时候可能会对3V系统造成损害,因此设计一个总线驱动器,采用74LVC245进行总线电平转换。74LVC245在3V供电时,输入5V的电压信号这样就实现了与3V和5V电平系统的接口。
双口RAM的BUSY信号是用来标示双口RAM的两个口同时在访问相同的内存单元,而且至少有一个口处于写该单元状态。双口RAM通过仲裁逻辑使后访问该单元的BUSY信号有效,并屏蔽该口的操作,直到没有访问,竞争BUSY信号才变为无效。通过检测BUSY信号可有效地确保内存读写的安全。
模块内采用27C040保存16×8的256个ASCII字符点阵的16×16点阵的汉字库,方便用户使用。
考虑到液晶背光电流较大,加入了液晶背光的控制,可根据需要开关背光。
1.3 软件设计
软件部分涉及接口操作、点阵操作及液晶操作等,这里仅对接口有关部分进行介绍。
1.3.1 接口内存分配
接口内存的分配如表1所示。
表1 接口内存分配表
地址范围 | 功 能 | 说 明 | |
0000H~03FFH |
直接显示映射区 |
||
0400H~04FEH | 命令缓冲区 | 字符显示映射区 | 功能取决于显示模式 |
04FFH | 命令长度 | ||
0500H | 命令字 | ||
0501H | 命令结果 | ||
0502H | 显示模式 | ||
0507H | 背光开关 | 任何时候写放0关闭背光,写入1打开背光 |
液晶屏幕上共有128×64=8192点,每个点用内存中的一位为0或1来表示点亮或熄灭。在双口RAM中分配0000H~03FFH的内存用来直接与屏幕上的点相对应,称为直接显示映射区。这样,用户只需将欲显示的点阵写入内存中的指定地址,就可在屏幕上指定位置直接显示出来。
另外,为方便使用,还设计了简单的命令接口,分配0400~0507H的空间作为命令接口的内存,具体分配详见表1。其中,0400H~04FEH的内存也作为字符显示映射区,在设置了显示模式后,将欲显示的字符写入该区域的指定地址,即可在屏幕指定位置显示出该字符。
1.3.2 命令接口简介
外部控制器将命令按照预定格式写入命令接口的内存。显示模块的单片机检测到有命令时,首先将命令读出,将命令字地址内容变为00H,并将该命令字最高位置为1写入命令结果地址内,表示该命令正在被执行。当命令执行完后,命令执行的结果(规定最高位为0)写入命令结果地址。这样,外部控制器可以通过检测命令字地址的内容和命令执行结果来确认显示模块当前的工作状态,发布命令。基本命令字如表2所示,当然根据具体应用还可增加如绘制各种图形、填充等的命令字。
表2 命令字及其参数
命令字 | 参 数 | 说 明 |
00H | 无 | 表明现在正在执行上条命令或者没有任何命令在执行 |
01H | 无 | 初始化控制器,将液晶清屏,并设置显示模式为1 |
02H | 字符串位置,字符串 | 从屏幕上指定位置起写字符串 |
03H | 用一个8位2进制数的位表示的行 | 清除参数中为1的位代表的行 |
41H | 无 | 设置显示模式1 |
42H | 无 | 设置显示模式2 |
1.3.3 接口模块工作方式
设计了两种显示模式:显示模式1和显示模式2。在显示模式1时,MCU不断扫描显示映射区并检查双口RAM中用户写入的命令。在显示模式2时,MCU不断监测字符显示映射区的变化,将用户写入的字符转化成点阵,写入直接显示映射区,然后扫描显示映射区进行显示。此时MCU只执行改变显示模式或初始化命令。其它的命令一概忽略。这样外部控制器就不需要了解具体的液晶操作,操作液晶像读写内存一样简单快捷,因此外部控制器可以处理大量的实时数据,并进行实时显示。
2 应用实例
液晶显示模块在我们设计的一套蓝牙系统中得到了成功应用,蓝牙模块采用Ericsson Rok 101,主控制器采用TI公司的MSP430F149。通过蓝牙传送的动画和所有控制信息均在液晶显示模块上显示,效果很流畅,达到了设计要求。
本文提出的液晶显示模块采用内存和外部控制器进行接口,具有统一的接口规范。外部控制器将欲显示的内容直接写入液晶显示模块提供的内存接口即可实现显示,不需要直接进行繁复费时的液晶控制和点阵处理操作,有利于控制器对大量数据进行实时处理。目前市面上有大屏幕的彩色液晶采用了类似方案,但价格昂贵。对一般应用来说,本文提出的液晶显示模块具有很强的通用性,而且增加的硬件成本不到单独购买一块点阵式液晶的20%,因此可广泛应用。