1引言
随着电子产品集成化的发展.液晶显示屏在便携式仪器中实现图像或文字的显示应用更为广泛。
同时在当今信息时代,数字图像处理技术对实时性、运算量大的要求越来越高,所以高运算速度的DSP芯片在数字图像处理领域得到了广泛的应用;其使数据采集、控制与人机界面融为一体,由于DSP处理速度快,整个系统能够由一片DSP芯片控制.体积更小、功耗更低、更便于携带[1]。目前大多数液晶控制器的接[1电路及驱动程序主要是针对单片机设计的[2],DSP的液晶屏接口电路参考资料相对较少,而在实际应用中,单片机的硬件资源远远不够。所以本文提出一种由DSP控制实现LcD液晶屏显示的方案。
2硬件设计
本系统采用TI公刮的加强型定点DSP芯片TMS320VC54lOA[3],其频率可达160MHz,内部有64kRAM空间,可以灵活的映射为数据或程序存储窄间。
液品模块采用信利公司的MG一128128-2中规模液品屏[2]。该模块内置有T6963C控制芯片,T6963C的最大特点是具有独特的硬件初始值设置功能,显示驱动所需的参数如占空比系数,驱动传输的字节数/行及字符的字体选择等均由引脚电平设置。这样T6963C的初始化在上电时就已经基本设置完成。软件操作的主要精力就可以全部用于显示画面的设计。
本系统中使VC5410A采用1/O空间扩展方式控制液晶模块。由于向液晶模块写数据、写指令和写控制信号时。需要锁存总线,所以采用了锁存芯片74HC573实现总线的锁存。74HC573由8个D触发器组成。这8个D触发器具有共同的锁存使能(LE)和输出使能。LE的下降沿将DO~D7上的数据锁存到O0~O7上的数据不随D0~D7变化。
DSP与液晶显示模块部分接口电路如图l所示。LE的下降沿将D0~D7上的数据锁存到O0~O7上,当LE为低时O0~O7上的数据不随D0~D7变化。锁存器的使能端由Vc5410A的A10和IS控制,即把控制信号锁存在地址为0400H的I/O空间上。其真值表如表1昕示。
系统中相类似的锁存电路有3个,写数据(指令)锁存电路的使能端由DSP的A11和IS控制,将数据或指令锁存住地址为0800H的I/O空间上,读数据锁存电路使能端DSP的A9和IS控制,将所读的数据锁存在地址为020OH的1/O空间上。DSP的低8位数据线和液晶模块的数据总线连接.负责将控制指令和显示数据送到显示模块的数据线上。vc5410A的内部存储空间有限,所以本系统扩展了一个64Mb/s的外部程序存储器SST39VF400A,该芯片的数据线和地址线分别与DSP芯片的对应相连,片选信号由控制,读写控制引脚与DSP的读写信号R/w相连。
3软件设计
液晶屏实际是通过若干个象素点来构成汉字或图形的,刈'应位为"1"时.液晶点被点亮;为"O"时,不点亮。要显示汉字或图肜实际就是按照一定的规律点亮相应的液晶象素点.视觉上看起来就成了一个汉字或图形。
MG一128128-2的控制器T6963C有一系列操作指令,通过指令的调用可以实现对液晶模块的控制[4]。在设计过程中,根据T6963c的指令系统及与DSP的时序信号波形图进行编程。
液晶模块一作时序的产生主要是通过控制信号的改变来实现的.在编写写指令、写数据、读数据等 子程序之前,首先要确定硬件接口图的时序,本系统的控制信号接口顺序巾高到低依次为:NULL一NUL一OEw-RD-WR-CD一CE-LCDRST,通过访问I/O空间的0200H,0400H,0800H地址,来控制液晶模块。
液晶屏上电之后,屏幕上的显示是随机的,所以控制程序开始就需要清屏,使屏幕上的液晶点全灭。然后初始化一些显示参数,例如显示区域、娃示方式、显示状态、光标状念等的设置。然后画出操作界面背景;DSP控制液晶显示采用外部中断办式。当有外部中断时.前端数据采集部分将数据,开始进入DSP缓存.同时清除显示区域上次的显示,对数据进行相应的处理。给液晶屏发送接收数据指令,即将LCD的RD引脚置为低电平,然后将显示数据送到LCD数据总线上,一个周期的数据的采集和显示即完成。
下面将给出部分C语言的液晶模块驱动子程序,首先足一些变量的声明函数和用到的库函数:
#include
#defineportLCDcmdport0400
//定义液晶模块的命令锁存地址为I/O空间的
0400H
#defineportLCDwriteport0800
∥写数据锁存地址为0800H
#defineportLCDreadport0200
//读数据锁存地址为0200H
#defineport_LCD_null;
ioportunsignedshortportport_LCD_cmd;
ioportunsignedshortportport_LCD_write;
ioportunsignedshortportport_LCD_read;
ioportunsignedshortportport_LCD_null;
读命令的子程序:
unsignedshortIcd-read-command()
{
{
unsignedshorttemp;
portLCD_cmd=0x003F:
portLCD_null=0x003F;
portLCD_emd一0x002D;
∥LCD_RST=1,CE=0,CD=1,WR=1,RD=0,OEW=1
portLCD_nulI=0x002D;
temp=portLCD_read:
portLCD_cmd=0x003F;
portLCD_null=0x003F;
return(temp);}
画点子程序:
Voidleddrawpoint(unsignedshortX,unsignedshorty)
{
unsignedshorttemp;
temp一(y<<4)+(x>>3)+0x100;
led-write-data(temp);
led-write-data(temp>>8);
lcd-write-write-command(0x24);
//送地址指针的控制字24H到命令端口
temp=(0x07一(X&ox07))l0xF8;
//FOH~FFH把选中的一位置1,即点亮,画点完成
lcd-write-command(temp);
}
向液晶模块写数据和写指令的子程序与读数据的过程相似,只要根据控制模块的时序图给出相应的命令即可。然后编写出初始化、清屏、画点等子程序,再此基础上就可以编写显示字符、数字、汉字及图形等。每条指令的执行都是先送入参数,再送入指令代码,然后送显示数据。
4结语
本文提出利用高速率DSP芯片控制液晶屏显示的技术,并编写出针对DSP的C语言液晶模块的驱动程序,能够广泛地应用于各种图像的处理和显示场合,在调试和仿真过程中取得了良好的显示效果。此电路的设计思想也可以应用在其他液晶模块的接口设计中,只要对程序稍加改动就可以加以。