一种基于DSP控制的液晶显示屏的设计及实现
需要显示的图片如图2所示。可以通过WINDOWS附带的画图工具制作这样一幅320×240的黑白位图。针对这款显示屏是由右向左显示的特点,需要将其垂直对称翻转,最后将处理过的图片以16进制文件的形式烧入外部27256中。该图片数据文件在DSP外部空间的起始地址为:0C000H。
由流程图(图3)可以看出,在系统硬件上电复位后,软件根据用户的需要自动对各项控制器指令代码及其参数进行设置,从而完成对液晶模块的参数(如液晶的行数、列数、扫描频率、光标的位置等)以及显示方式等一系列的初始化过程。在对系统进行正确的初始化以后,可以通过DSP将外部ROM中的数据直接送至SED1335显示缓冲区,控制器就可以控制液晶屏显示出用户所要的图画。同时用户也可以根据自己的需要在主程序运行的过程中改变图片显示的形式,只需在表1中选择相应的指令代码以及参数即可。
设置系统指令及其参数的方法如下:根据用户硬件电路的设计,先将指令代码送到SED1335控制器的命令口地址;然后把该指令的参数依次送到数据口地址,经过系统指令及其参数的设置后,就可以把数据送到数据口地址。具体语法形式如下:
指令设置语句:
STM#XXH,AR0;XXH为指令代码
PORTWAR0,#8100H;8100H为命令口地址
参数设置语句:
STM#XXH,AR0;XXH为指令参数
PORTWAR0,#8000H;8000H为数据口地址
…………
数据输入语句:
STM#XXH,AR0;XXH为用户数据
PORTWAR0,#8000H;8000H为数据口地址
…………
液晶显示屏的初始化程序如下:
INIT:
STM#40H,AR0;系统设置命令,指令代码:40H
PORTWWR0,#8100H
STM#10H,AR0;标准设置
PORTWAR0,#8000H
STM#87H,AR0;设置光标宽度为8
PORTWAR0,#8000H
STM#07H,AR0;设置光标高度为8
PORTWAR0,#8000H
STM#27H,AR0;设置LCD每行需要的字节数,
PORTWAR0,#8000H每行320个点,行数为320/8=40
STM#36H,AR0;设置液晶的扫描频率约为70Hz
PORTWAR0,#8000H
STM#0F0H,AR0;设置LCD的点行数为240
PORTWAR0,#8000H
STM#28H,AR0;设置显示屏一行所占显缓的字节数
PORTWAR0,#8000H
STM#00H,AR0
PORTWAR0,#8000H
STM#44H,AR0;SCROLL指令,指令代码:44H
PORTWAR0,#8100H
STM#00H,AR0;确定第一显示区的首地址
PORTWAR0,#8000H
STM#00H,AR0
PORTWAR0,#8000H
STM#240D,AR0;设置第一显示区的行数
PORTWAR0,#8000H
STM#00H,AR0;确定第二显示区的首地址
PORTWAR0,#8000H
STM#40H,AR0
PORTWAR0,#8000H
STM#0F0H,AR0;设置第二显示区的行数
PORTWAR0,#8000H
STM#00H,AR0;确定第三显示区的首地址
PORTWAR0,#8000H
STM#80H,AR0
PORTWAR0,#8000H
STM#4CH,AR0;设置光标自动由左向右移动
PORTWAR0,#8100H
STM#5BH,AR0;设置显示屏为两层叠加显示方式
PORTWAR0,#8100H

STM#0DH,AR0
PORTWAR0,#8000H
…………
STM#42H,AR0;液晶显示屏显缓写指令
PORTWAR0,#8100H
LD#240D,A;清屏程序
LOOP1:LD#40D,B
LOOP2:STM#00H,AR0
PORTWAR0,#8000H
SUB#1H,B
BCLOOP2,BNEQ
SUB#1H,A
BCLOOP1,ANEQ
RET;初始化结束
显示图片的主程序如下:
AMIN:STM#800H,SP
CALLINIT;调用液晶显示屏初始化程序
STM#0C03EH,AR1;位图数据相对于BMP文件头的地址
STM#42H,AR0
PORTWAR0,#8100H;送液晶显示屏缓写指令
LD#240,A
CMP:LD#40,B
CMP1:PORTWAR1+,#8000H;将320×240的位图数据依次写入缓存区
SUB#1,B
BCCMP1,BNEQ
SUB#1,A
BCCMP,ANEQ
B$;主程序结束
以上就是该系统的软件设计。由于篇幅有限,这里省略了某些控制指令的设置,用户可根据实际需要添加设置。在实际的软件设计中,DSP汇编语言执行过程中由于本身延时而引起的数据丢失现象,可以适当地加入空指令(NOP)来解决。同时,本程序中使用图片显示的例子只是用来说明控制器的利用方面就显得有些浪费而且灵活性较差。针对那些存储空间有限、效率要求高的系统,可以制作成字模存储在外部ROM中供多次调用,当显示文字时只需计算出显示地址而后调用字模入口地址即可。
本文提出的基础DSP控制的液晶显示屏,作为示波表显示前端已在实际应用中取得了成功。该系统中所选用具有64K大容量缓存区的SED1335控制器,适用于多种点阵规格的显示屏使用,加之其内部固化的字符发生器可产生160种字模,以及具有通过改变指令参数可实现图像的闪烁、翻转、移动等特点,因此从总体性能方面而言其大大强于同类型的其它控制器,非常适用于各种便携式系统显示前端的设计。
评论