光电工程师社区

标题: [转帖]一种基于DSP控制的液晶显示器的设计及实现(下) [打印本页]

作者: v_2004    时间: 2004-5-17 00:38
标题: [转帖]一种基于DSP控制的液晶显示器的设计及实现(下)

3 DSP控制液晶显示屏的软件设计

这里通过液晶显示屏的初始化过程以及如何显示一幅图画来具体说明DSP控制液晶显示屏的软件设计。

需要显示的图片如图2所示。可以通过WINDOWS附带的画图工具制作这样一幅320×240的黑白位图。针对这款显示屏是由右向左显示的特点,需要将其垂直对称翻转,最后将处理过的图片以16进制文件的形式烧入外部27256中。该图片数据文件在DSP外部空间的起始地址为:0C000H。

由流程图(图3)可以看出,在系统硬件上电复位后,软件根据用户的需要自动对各项控制器指令代码及其参数进行设置,从而完成对液晶模块的参数?如液晶的行数、列数、扫描频率、光标的位置等?以及显示方式等一系列的初始化过程。在对系统进行正确的初始化以后,可以通过DSP将外部ROM中的数据直接送至SED1335显示缓冲区,控制器就可以控制液晶屏显示出用户所要的图画。同时用户也可以根据自己的需要在主程序运行的过程中改变图片显示的形式,只需在表1中选择相应的指令代码以及参数即可。

设置系统指令及其参数的方法如下:根据用户硬件电路的设计,先将指令代码送到SED1335控制器的命令口地址;然后把该指令的参数依次送到数据口地址,经过系统指令及其参数的设置后,就可以把数据送到数据口地址。具体语法形式如下:

指令设置语句:

STM #XXH?AR0 ;XXH为指令代码 PORTW AR0?#8100H ;8100H为命令口地址

参数设置语句:

STM #XXH?AR0 ;XXH为指令参数 PORTW AR0?#8000H ;8000H为数据口地址 …………

数据输入语句:

STM #XXH?AR0 ;XXH为用户数据 PORTW AR0?#8000H ;8000H为数据口地址 …………

液晶显示屏的初始化程序如下:

INIT: STM #40H?AR0 ;系统设置指令,指令代码:40H PORTW AR0?#8100H STM #10H?AR0 ;标准设置 PORTW AR0?#8000H STM #87H?AR0 ;设置光标宽度为8 PORTW AR0?#8000H STM #07H?AR0 ;设置光标高度为8 PORTW AR0?#8000H STM #27H?AR0;设置LCD每行需要的字节数, PORTW AR0?#8000H 每行320个点,行数为320/8 =40 STM #36H?AR0 ;设置液晶的扫描频率约为 70HZ PORTW AR0?#8000H STM #0F0H?AR0 ;设置LCD的点行数为240 PORTW AR0?#8000H STM #28H?AR0 ;设置显示屏一行所占显缓 的字节数 PORTW AR0?#8000H STM #00H?AR0 PORTW AR0?#8000H

STM #44H?AR0 ;SCROLL指令,指令代码:44H PORTW AR0?#8100H STM #00H?AR0 ;确定第一显示区的首地址 PORTW AR0?#8000H STM #00H?AR0 PORTW AR0?#8000H STM #240D?AR0 ;设置第一显示区的行数 PORTW AR0?#8000H STM #00H?AR0 ;确定第二显示区的首地址 PORTW AR0?#8000H STM #40H?AR0 PORTW AR0?#8000H STM #0F0H?AR0 ;设置第二显示区的行数 PORTW AR0?#8000H STM #00H?AR0 ;确定第三显示区的首地址 PORTW AR0?#8000H STM #80H?AR0 PORTW AR0?#8000H

STM #4CH?AR0 ;设置光标自动由左向右移动 PORTW AR0?#8100H

STM #5BH?AR0 ;设置显示屏为两层叠加显示 方式 PORTW AR0?#8100H STM #0DH?AR0 PORTW AR0?#8000H

…………

STM #42H?AR0 ;液晶显示屏显缓写指令 PORTW AR0?#8100H LD #240D?A ;清屏程序 LOOP1: LD   #40D?B LOOP2: STM #00H?AR0 PORTW AR0?#8000H SUB #1H?B BC LOOP2?BNEQ SUB #1H?A BC LOOP1?ANEQ RET ;初始化结束 显示图片的主程序如下: MAIN: STM #800H?SP CALL INIT ;调用液晶显示屏初始化程序 STM #0C03EH?AR1 ;位图数据相对于BMP文 件头的地址 STM #42H?AR0 PORTW AR0?#8100H ;送液晶显示屏显缓写指令 LD #240?A CMP: LD #40?B CMP1: PORTW AR1+?#8000H;将320×240的位图数据 依次写入缓存区 SUB #1?B BC CMP1?BNEQ SUB #1?A BC CMP?ANEQ B $ ;主程序结束

以上就是该系统的软件设计。由于篇幅有限,这里省略了某些控制指令的设置,用户可根据实际需要添加设置。在实际的软件设计中,DSP汇编语言执行过程中由于本身延时而引起的数据丢失现象,可以适当地加入空指令(NOP)来解决。同时,本程序中使用图片显示的例子只是用来说明控制器的使用方法。对于文本方式的显示,这种方法在存储空间的利用方面就显得有些浪费而且灵活性较差。针对那些存储空间有限、效率要求高的系统,可以制作成字模存储在外部ROM中供多次调 用,当显示文字时只需计算出显示的地址而后调用字模入口地址即可。

本文提出的基于DSP控制的液晶显示屏,作为示波表显示前端已在实际应用中取得了成功。该系统中所选用具有64K大容量缓存区的SED1335控制器,适用于多种点阵规格的显示屏使用,加之其内部固化的字符发生器可产生160种字模,以及具有通过改变指令参数可实现图像的闪烁、翻转、移动等特点,因此从总体性能方面而言其大大强于同类型的其它控制器,非常适用于各种便携式系统显示前端的设计。






欢迎光临 光电工程师社区 (http://bbs.oecr.com/) Powered by Discuz! X3.2