一种基于DSP控制的液晶显示屏的设计及实现

发布者:Delightful789最新更新时间:2007-01-18 来源: 电子技术应用关键字:单片机  内嵌  指令 手机看文章 扫描二维码
随时随地手机看文章
近年来,随着低价格、高性能DSP芯片的出现,DSP已越来越多地被应用于高速信号采集、语音处理、图像分析处理等领域中,并且日益显示其巨大的优越性。而液晶显示屏更以其显示直观、便于操作的特点被用作各种便携式系统的显示前端。传统的液晶显示往往采用单片机控制。但在系统有大量高速实时数据的情况下,单片机由于受到处理速度的限制就显得力不从心。为了解决这些问题,本文提出了一种基于DSP控制的液晶显示屏的设计,有效地解决以上所遇到的问题。

1 SED1335控制器的介绍

AT-320240Q1型液晶显示屏是由台北晶采用电科技股份有限公司生产的一款内嵌SED1335控制器的液晶显示屏。它由320×240点阵构成,具有高分辨率(点型为0.225mm×0.225mm)、接口方便(5V或3.3V)、设计简便(内嵌控制器)、功耗低、价格便宜等优点,常常用于各种便携式设备显示前端以及日用家电显示模块中。基于320×240点阵的显示屏具有多种扩展功能供用户选择,大大方便了用户,提高了系统的集成度与实用性。


SED1335控制器是由日本EPSON公司生产的一款液晶显示屏控制器,与同类产品相比,功能最强。其主要特点有:

有较强功能的I/O缓冲器;
指令功能丰富;
四位数据并行发送;
图形和文本方式混合显示。

SED1335控制器的指令集见表1。SED1335控制器具有13条指令,多数指令带有参数,参数值可由用户根据所控制的液晶显示模块的特征和显示的需要来设置。

表1 SED1335控制器指令表

SED1335控制器是应用于MPU系统与液晶模块之间的控制芯片,它接收来自MPU系统的指令与数据,并产生相应的时序及数据控制模块的显示。A0为LCD控制制寄存器的选择输入,分别选通指令输入缓冲器和数据输入缓冲器,类似于通常字符点阵LCD模块的RS或D/I。MPU把指令代码写入指令输入缓冲器内(即A0=1),指令的参数数据则随后通过数据输入缓冲写入(A0=0)。带有参数指令代码的作用之一就是选通相应的参数寄存器,任一条指令的执行(除SLEEPIN、CSRDIR、CSRR和MREAD外)都产生在附属参数的输入完成之后。MPU也可用写入新的参数与余下的旧参数有效地组合成新的参数组。需要注意的是,在实际使用指令时,如果该指令具有多个参数,则必须按顺序依次写入各个参数,不能随意省略。尤其在MPU操作SED1335及其控制的液晶显示模块时,必须首先写入SYSTEN SET(40H)指令。如果该指令设置出现错误,则显示必定不正常。

这里着重介绍CPSDIR指令。该指令的作用是规定光标地址指针自动移动的方向。SED1335所控制的光标地址指针实际也是显示RAM的当前地址指针。在控制器执行完读写操作后,将自动修改光标地址指针。该指令有四个参数:4C/4D/4E/4FH,分别表示修改的四个方向,这样就具有了很强的作图功能,这也是很多液晶控制器所没有的。在AT-320240Q1型液晶显示屏的设计中,显示的顺序是从右向左,即显示屏上的一个8×1点阵从左至右依次对应内存单元中1bit数据的高位到低位。因此对于常规的字模来说,就会导致显示相反的现象,可通过控制光标地址指针的移动方向很好地解决这个问题。

2 DSP与液晶显示屏硬件接口的设计

由于该款液晶显示屏内嵌了SED1335控制器,并且将接口电路直接引出,因此对于用户而言,整体设计大大简化,只需考虑DSP同接口电路间的连接即可。

以下是DSP与该液晶显示屏硬件接口的一种设计方案,如图1所示。

在该系统的设计过程中,选用了TI公司的TMS320C5402芯片。由于其内部ROM不可写,所以外挂一片32K的27256 EEPROM作为外部程序区来存储程序与外部字库。考虑到TMS320C5402芯片具有高达1Mbit的外扩空间,实际应用时用户可以根据需要改变ROM的大小。对于液晶显示屏的数据接口,因为DSP与液晶显示屏均由3.3V供电,可以直接将二者数据线相连,这样DSP就能将ROM或RAM中的数据直接送入控制器的缓存中以便显示。液晶显示屏的控制信号由DSP地址线的第16位与第9位译码,因此在程序的设计中,指令口地址为8100H,数据口地址为8000H。由于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 WR0,#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 ;初始化结束
显示图片的主程序如下:
AMIN: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种字模,以及具有通过改变指令参数可实现图像的闪烁、翻转、移动等特点,因此从总体性能方面而言其大大强于同类型的其它控制器,非常适用于各种便携式系统显示前端的设计。

关键字:单片机  内嵌  指令 引用地址:一种基于DSP控制的液晶显示屏的设计及实现

上一篇:ADSP2181与液晶显示模块SMC1602B的接口设计
下一篇:基于LPC2104的智能灯光控制器设计

推荐阅读最新更新时间:2024-05-13 18:16

单片机编程开发技巧经验分享
工作了7个月之久,对单片机的编程也开始慢慢熟悉起来,以前总是知道单片机就是定时器,状态机,中断这些东西结合起来效率是相当高的,但是自从接手开发GPF这个芯片之后,我发现了另外一种单片机的开发技巧,高手请绕道。 我们都知道,在程序中,延时会影响单片机的实时性能,导致效率明显降低,但是在GPF这个芯片的开发中,系统延时和初始化被供应商做到了一块,所以调用程序,必须要做一定的loop才能使得程序能够正常的跑起来,其实我也不知道她们为什么要这么做。 在工作中,改一份源码不是随随便便就可以改的,当时做了这么一个程序,源码我就不公开了,写个案例解释: void test() { int i = 0 ; int tick
[单片机]
基于C164单片机的自动摊铺机中分布式控制系统的实现
1.前 言 随着高等级公路的不断发展,对于高等级公路的路面基层、底基层施工质量要求也日益严格,采用常规的施工方法已难以满足其表面几何尺寸和平整度的要求,因此采用摊铺机摊铺路面基层、底基层施工势在必行。但公路工程任务中,质量要求高,时间紧,操作条件恶劣,迫切要求改善操作环境,降低劳动强度,提高摊铺机自动化程度。工程机械一体化和机器人化是工程机械未来的发展方向。融合电子技术、计算机技术、控制技术、通信技术等,实现机械产品的自动化和智能化,为机电一体化技术开辟了发展的广阔天地 该沥青混凝土自动摊铺机的研制、开发,将提高道路摊铺工程的自动化程度和智能化水平,改善道路工程的操作环境和劳动条件,降低劳动强度,提高摊铺机产品的档
[单片机]
基于C164<font color='red'>单片机</font>的自动摊铺机中分布式控制系统的实现
新型的按键扫描程序,仅三行程序
我在网上游逛了很久,也看过不少源程序了,没有发现这种按键处理办法的踪迹,所以,我将他共享出来,和广大同僚们共勉。我非常坚信这种按键处理办法的便捷和高效,你可以移植到任何一种嵌入式处理器上面,因为C语言强大的可移植性。 同时,这里面用到了一些分层的思想,在单片机当中也是相当有用的,也是本文的另外一个重点。 对于老鸟,我建议直接看那两个表达式,然后自己想想就会懂的了,也不需要听我后面的自吹自擂了,我可没有班门弄斧的意思,hoho~~但是对于新手,我建议将全文看完。因为这是实际项目中总结出来的经验,学校里面学不到的东西。 以下假设你懂C语言,因为纯粹的C语言描述,所以和处理器平台无关,你可以在MCS-51,AVR,PIC,甚至是ARM平台
[单片机]
μC/OS-II在Cortex-M3系列单片机上的移植介绍
引言   μC/OSII是一种简单高效、源代码公开的实时嵌入式操作系统,具有良好的扩展性和可移植性,被广泛应用到各种嵌入式处理器上;对于提高产品的质量,减少开发周期和降低成本有着重要的意义。本文以μC/OSII为移植对象,以ARM CortexM3内核微处理器为移植目标来讨论其移植过程及应用。 1 μC/OSII及ARM CortexM3简介   实时操作系统μC/OSII是一个基于优先级的抢占式实时内核,程序可读性强,移植性好,代码固定,可裁剪,非常灵活。至今,从8位到64位,μC/OSII已在超过40种不同架构的微处理器上运行。μC/OSII的主要特点有:是优先级可剥夺的实时多任务操作系统;可处理和调度56个用户任务,任务
[单片机]
μC/OS-II在Cortex-M3系列<font color='red'>单片机</font>上的移植介绍
世界智能化进程加速,MCU市场潜力无限
如同每台电脑都有一个作为大脑的CPU在其中运行,我们每天接触到的各种家电、数码产品、办公设备、汽车电子以及各种仪器仪表之中,也都有一个或者数个MCU(微控制器)默默运行,担负着控制、运算、信号转换及处理、通信等多项工作。而且随着越来越多电子产品向着智能化方向迈出脚步,MCU功能、性能及应用技术的发展也越来越快。为让更多电子工程师了解MCU最新发展状况,在今年的高交会电子展(ELEXCON)期间,创意时代将在深圳首次举办MCU技术创新与应用大会(MCU!MCU!2009),与业界精英分享MCU最新技术、热门应用及市场趋势。 MCU市场逐步扩大,32位市场百家争鸣 作为嵌入式系统的重要组成部分,MCU是推动对象系统实现
[单片机]
关于单片机多机通信系统稳定性的探讨
    笔者在研制单片机多机通信系统过程中,采用其它设计方法,消除了系统的不稳定因素,整个系统2年来一直运行稳定、可靠,希望在此能与大家作进一步的探讨。     由RS-485接口构成的半双工通信网络,其结构如图1所示,其中R=120Ω,为匹配电阻,作用为消除反射、吸收噪声。这样,无论系统处于什么状态,线路上都不会出现噪声干扰。这就很好地解决了《稳定性》一文中所提出的第2个问题。     MAX485芯片内部功耗的计算方法如下:在正常工作区域内(除去开路、短路状态),MAX485的差分输出B、A端电压与输出电流之比是线性的,等效电路如图2所示。根据MAX485手册提供的输出电流-差分输出电压曲线图,图2中E≈3.75 V,R0≈41
[单片机]
关于<font color='red'>单片机</font>多机通信系统稳定性的探讨
单片机STM32的引脚模式设置运用理解
单片机STM32的引脚有多种方式可以选择。 如果你是用直接写寄存器来配置的话,那么,看上手册,给“配置寄存器”对应的位写0或者1就可以达到目的。如下图: 如果是用库函数来配置的话,就需要知道下面这个结构体中的变量代表的意义。 库函数,选择好GPIO_Mode之后,就要使用GPIO_Init()函数来配置,你可以打开这个配置函数,实际上也是在对“配置寄存器”进行写操作。 先解释一下这个结构体中的各个变量的意思: GPIO_Mode_AIN:模拟输入模式 GPIO_Mode_IN_FLOATING:浮空输入模式 GPIO_Mode_IPD:下拉输入模式 GPIO_Mode_IPU:上拉输入模式 GPIO_Mode_Out
[单片机]
<font color='red'>单片机</font>STM32的引脚模式设置运用理解
[MSP430] 对MSP430单片机__delay_cycles精确延时的说明及改正
在这里, 我来讨论一下关于MSP430单片机使用__delay_cycles延时的问题. IAR for MSP430编译器提供了一个编译器内联的精确延时函数(并非真正的 函数)以提供用户精确延时使用, 该函数原型是: __intrinsic void __delay_cycles(unsigned long __cycles); 该内部函数实现__cycles个CPU周期的延时,但对于该参数的设置,我要陈述一下: __cycles需要我们传递的是CPU运行的周期个数 网上普遍的用法是: #define CPU_CLOCK 8000000 #define delay_us(us
[单片机]
小广播
最新应用文章
换一换 更多 相关热搜器件

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 安防电子 医疗电子 工业控制

词云: 1 2 3 4 5 6 7 8 9 10

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved