引言
在嵌入式系统开发过程中,显示输出控制是一项重要的研究内容。常用的显示输出器件有发光二极管(LED)、数码管及液晶显示器等。 LED及数码管的显示输出控制相对比较简单,相关文献介绍的也比较详细。在液晶显示器中,图形点阵形液晶显示器的硬件结构比较复杂,显示输出控制也不太容易掌握,虽然部分文献进行了一定介绍,但面向的对象往往是已有一定开发经验的使用人员,而针对初学者进行专题论述的文献却不多。鉴于此,文章以基于ST7920控制器的128×64中文字库点阵屏为例,进行了开发应用研究分析,以便初学者进行参考学习。
1 图形点阵显示控制原理
图1为12864液晶屏图形点阵显示原理的示意图。由图可见,液晶屏在x方向有128列,在y方向有64行,因此整个液晶屏有128×64个像素。每个像素有亮与灭两种状态,以黄绿屏黑字为例,若某个像素亮则该像素被黑色填充,这样不同像素的亮与灭的组合就可显示不同的点阵型字符或图案。如图1中的黑色像素组合就可显示一个汉字"十"字。
图1 12864液晶屏图形点阵显示原理
对于字符显示来说,可以分为16×8像素半宽字符和16×16像素中文字符两种点阵显示。在液晶显示屏上一个半宽字符占据的像素点数为16×8个,中文字符的像素点数为16×16个。12864点阵液晶屏能显示32×8个半宽字符或16×4个中文字符。在显示缓存中有一种叫绘图RAM的缓存来对点阵型字符进行控制,该RAM简写为GDRAM.GDRAM维护了一个和液晶屏像素相对应的二维绘图缓冲空间,该表的水平地址为0至16,垂直地址为0至64.GDRAM的每一个水平地址对应了图1中的16个列,每一个垂直地址对应图1中的一行。
在更改绘图RAM时,由扩充指令设置GDRAM地址,先垂直地址后水平地址(连续2个字节的数据来定义垂直和水平地址),再2个字节的数据给绘图RAM(先高8位后低8位)。图1中的汉字"十"字在GDRAM中的编码如表1所示。
2 液晶显示控制指令
编程人员在向液晶显示缓存写入要显示的编码数据时,须在一系列液晶显示控制指令的控制下才能完成。表2是基于ST7920控制器的128×64中文字库点阵屏液晶显示控制的主要指令表。由该表可以看出,显示控制指令要受到控制信号RS、R/W的控制。D0至D7为外部CPU与液晶内部处理器之间交互数据的总线,交互的数据包括上述指令及显示数据。对于各指令的详细描述在相关数据手册中都有具体介绍,在进行液晶驱动开发之前要进行认真学习研究,只有熟悉了各指令的意义及取值后才能进行程序的编写。
3 液晶显示控制时序
进行液晶驱动开发就象利用英语与外宾交流。要想与外宾交流就必须先熟悉英语的词组,不同的词组代表了不同的意思。而只熟悉相关词组,但不能将其按着英语的词组先后搭配顺序进行表达,则外宾也不能理解我们要表达的意思。这里词组就类似于上述的显示控制指令,外宾就类似于液晶显示屏,而词组的先后搭配顺序则指的是液晶显示控制的时序。简单来说,控制时序就是为了使液晶单元能够正常工作,相应的控制信号取值高低的先后搭配顺序。
图2是ST7920控制的128×64液晶的8位并口写操作时序图。由图2可见,如果想通过8位并口DB0~DB7进行写操作,需要RS、R/W、E三种控制信号的联合控制,首先RS根据并口上的数据是指令还是显示数据置0或置1,其次,由于是写数据R/W要置0,之后使能信号E要置1,当上述三种控制信号置位稳定后,8位并口DB0~DB7总线上的信息就可写入液晶屏,写入完毕后要将使能信号E置0.需要说明的是在处理相关时序时要注意各控制信号高低电平变换期间的不稳定期,写操作要尽量避开这段时间。
图2 8位并口写操作时序图
4 液晶使用举例
4.1MCU接口
下面以89C52单片机控制液晶显示屏为例,介绍一下MCU与液晶的连接方法及主要的程序代码。该程序运行后会在液晶屏上显示"ST7920显示控制"等字符。
图3为8位并口MCU控制接口图。由图3可见,MCU的P1口与液晶的DB0至DB7相连,作为指令与显示数据的总线通道;P3.0、P3.1、P3.2分别与液晶的RS、R/W、E相连,构成液晶显示控制信号的通道。
图3 8位并口MCU控制接口图
4.2 程序主要代码
(1)定义
(2)忙检测函数
(3)写操作函数
(4)初始化
(5)DDRAM地址设定函数
(6)字符串显示函数
(7)主函数
5 结束语
文章主要从图形点阵显示控制原理、基于ST7920控制器的12864液晶屏图形点阵显示分析控制指令、液晶显示控制时序几个方面进行了分析,主要围绕基于ST7920控制器的128× 64中文字库点阵屏的开发使用方法而展开研究,并以该型液晶为例给出了嵌入式液晶显示应用的开发使用步骤:第一步,理解图形点阵显示控制原理;第二步,熟悉液晶显示控制指令;第三步,分析液晶显示控制时序;第四步,应用程序编写。