DSP控制液晶显示器的设计--控制网



DSP控制液晶显示器的设计
企业:控制网 日期:2007-06-16
领域:工厂信息化 点击数:4182



    当前信息时代,信息的获取最终要通过显示来实现人、机交换,由于DSP在高速信号采集、音频处理、图像处理等控制领域无处不在,而液晶显示器以其高画质、功耗低、接口控制方便、良好的可视化人机界面等优点,广泛应用在便携式智能仪器仪表的终端显示,成为测量结果和人机对话的重要工具。本文提出了一种以TMS320LF2407A为核心的智能测试仪器,通过DSP芯片TMS32OLF2407A与液晶控制芯片SED1335的接口,实现对液晶显示器MSP-G320240的控制,并介绍了相关的硬件、软件设计。

1.DSP芯片及液晶显示器的性能特点

    1.1 TMS320LF2407A 

    TMS320LF2407A是TI公司推出的一款定点DSP芯片,是目前TMSC2000家族中集成度高、性能最强的芯片,除了具有一般DSP改进的哈佛结构、多总线结构和流水线结构等优点外,它还采用高性能静态CMOS技术,电压从5V降为3.3V,减少了功耗;40MIPS的执行速度使得指令周期缩短到25ns,提高了计算能力和控制器的实时控制能力;片内集成了32KB的闪存、1.5KB的数据/程序RAM、544B双口RAM(DRAM)和2KB的单口RAM(SARAM)、16通道10位500ns的A/D转换器、CAN控制器模块、串行通信接口(SCI)模块、16位串行外部设备接口(SPI)模块、看门狗(WD)定时器模块、两个事件管理模块(EVA和EVB)等,如此功能强大的功能使得TMS320LF2407A可以满足各种智能仪器的PWM接口和I/O功能,提高系统的性能,简化外部硬件电路的设计。

    1.2 SED1335控制器

    SED1335是由日本EPSON公司生产的一款LCD控制器,具有较强功能的I/O缓冲器,指令功能丰富,在同类产品中是功能最强大的,硬件结构可分为MPU接口、控制部分和驱动LCD部分,结构如图1所示。

    D0~D7为数据总线,WR为写选通信号,RD为读选通信号,CS为器件选通信号,RES为复位信号,A0决定是数据还是指令。

    SED1335的接口部分由指令输入缓冲器、数据输入缓冲器、数据输出缓冲器和标志寄

    存器组成。通过引脚的电平设置可选择适配8080系列和M6800系列MPU的等两种操作时序电路。

    SED1335的控制部分由振荡器、功能逻辑电路、显示RAM管理电路、字符库及其管理电路以及产生驱动时序的时序发生器等组成。可以在很高的工作频率下迅速解译由MPU发来的各类代码,显示可以分为字符、图形和文本三种方式。

    SED1335的驱动部分具有各显示区的合成显示能力、传输数据的组织功能及产生液晶显示模块所需时序的功能。SED1335用4位并行方式向液晶显示器传输数据。

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

    使用内置SED1335控制器的液晶显示器时,用户无需了解SED1335对液晶器的显示驱动、点阵扫描、显示存储器管理等操作,这一切都会由SED1335自动进行。因此只需清楚SED1335的各种数据指令格式、显示存储器的区间划分和接口引脚的功能定义即可。

    1.3 MSP-G320240液晶显示器

    MSP-G320240是TRULY公司生产的图形点阵式液晶显示器,点阵数为320×240,电路结构框图如图2所示。

    从图2可知,MSP-G320240由液晶显示控制器SED1335(m1)、驱动电路(m2、m3)、显示存储器(m4 )以及液晶屏(m5)4部分组成,构成完整的显示系统模块。其中,m1通过其m4间的数据总线、地址总线、读/写控制线和片选控制线来实现对32KB显示RAM的管理,即对文本显示区、图像显示区以及内藏字符发生器的管理。

    MSP-G32O24O的所有控制器、扫描电路和显示RAM 集成于液晶屏背面,其采用的是外接小型逆变器背光。该LCD模块单电源供电,而有些型号的LCD需要负电源。SED1335控制器是整个显示系统的核心。它不仅能显示文字,还能显示曲线、图形,并且通过选择文本与图形之间的逻辑“与”、“或”、“异或”等组合实现反显、闪烁、滚屏、翻页、动画等多种显示功能。另外,还具有光标自动移动功能和多种光标显示功能。

2.硬件接口电路设计  

    TMS320LF2407与LCD模块MSP-G320240接口如图3所示。

    TMS320LF2407是3.3V电源器件,而MSP-G320240是5V电源供电,由于TMS320LF2407有时需要将数据写入控制器,有时又要从控制器中读数据,因此数据总线上的信号流是双向的,如果把两者直接相连,数据的流向可能会对TMS320LF2407造成损害。解决这个问题有两种方法:第一,系统中使用可以兼容3.3V和5V的可编程逻辑器件(CPLD),如MAX7000,通过它来连接SED1335与TMS320LF2407;第二,可以采用74LVC4245进行总线电平转换。管脚DIR置“0”时,3.3V电平的数据A经电平转换后,变成了5V电平的数据B,与LCD控制器准备接收的数据相匹配。OE管脚与DSP的地址线A22连接,用来分配LCD的总线地址,当OE为低电平有效时,DSP选通与液晶显示器通信的一路,此时,为了避免总线冲突,应暂时将其余与DSP通信的地址线关闭。

    为了提高DSP对控制器的驱动能力,且适合电平要求,SED1335的4个控制口CS、A0、WR和RD通过非门74HC04分别与DSP的I/O口连接,与I/O 口连接的控制端CS可以一直为低电平,保证DSP选通SED1335,这4个控制口通过不同的组合可以实现写指令代码、写参数、读参数及显示数据等。

    由于LCD模块需要负电压驱动才能工作,所以LCD驱动电压VEE接负压(约-19V),该负压由DC-DC变换器提供, Vadj接在电位器的中心抽头上,通过调节该电位器来改变Vadj,进行液晶对比度的调整。使用的CCFL背光(冷阴极发光)器件有背光灯管,点背光时需用CXA—L1OAN逆变器,它由5V直流电压供电,输出交流电压来驱动背景光。

3.软件设计

    DSP在很多方面不同于单片机,所以在软件设计时应该注意几个方面:

    3.1速度匹配
  
    由于TMS320LF2407A的速度高达到40MIPS,而SEED1335的晶振频率为1MHZ~10MHZ之间,液晶控制芯片难与DSP同步。解决的方法有2种:一是在每一条指令间加入延时,一般为1μs以上;二是设置DSP中的等待状态寄存器WSGR,增加等待状态的方法解决2个器件的速度匹配问题。

    3.2访问I/O空间
  
    因为将SED1335的地址放在DSP的I/O空间,必须知道如何访问它。在此介绍一下在C语言编程中访问DSP的I/O空间的方法。在TI公司针对24XX系列DSP的优化C语言中有一个关键字ioport,可以方便地访问I/O空间。

    ioport type porthexnum

    type表示数据类型如char、int等,porthexnum 表示端口地址,十六进制数表示。

    如:ioport unsigned port10; //port10表示地址为1OH的I/O空间变量

    通过这个定义,在程序中port10可以和其它变量一样的读和写,例如:
 
    portl0=a:  // 把变量a的值赋给地址为10H的I/O变量port10

    b=portl0:   // 把地址为10H的I/O变量port10的值赋给变量b

    在程序中可以采用更直观的定义,#define LCDPORT portl0

    因此我们可以定义出DSP访问SED1335的指令和数据地址:

    #define LCDPORTDATA port6;

    #define LCDPORTCMD port7; 

    ioport unsigned int port6; //定义数据地址

    ioport unsigned int port7;  //定义指令地址

    3.2 初始化SED1335

    初始化的作用是根据LCD结构对LCD模块进行参数设置,同一种类LCD模块的参数设置基本上大同小异,因为参数设置是根据LCD模块的结构来决定的。对于MSP-G320240,这里给出它的SYSTEM SET和SCROLL参数。SYSTEM SET指令是SED1335的软件初始化指令,SCROLL指令用来设置显示RAM区的起始地址及所占有的显示行数。

    SYSTEM SET的8个参数:30H,87H,07H,27H,41H,EFH,28H,00H;

    SCROLL的10个参数:00H,00H,F0H,80H,25H,F0H,00H,4BH,00H,00H;

    由于本设计中的液晶显示没有用DSP的数据线,而是用DSP的I0口来模拟液晶控制器的时序。因此,用I0口来模拟SED1335的读写时序重要,SED1335的读写时序有M8080和M6800两种,本设计选用M8080时序,其时序如图4所示。

    3.3 液晶显示

    液晶显示模块的初始化流程见图5所示。

    若采用图形方式显示文本、图形和字符,显示特性有些区别,但是实质上是一样的,都是对LCD屏上特定的区域写入相关的数据,这些数据以数组的形式事先建立在程序的开头处,在显示这些汉字、字符与图形时把数据写入显示RAM中,所以可以建立一个通用的函数来显示字符、文本与图形。这个函数形式如下:

    void  display_block (unsigned int *pblock,unsigned int addr,unsigned int block_x,unsigned int block_y)

    {

    unsigned int x,y,*p;

    p=pbolck;

    for(x=0;x<block_x;x++)
    
    {

    setcsr(addr+x);    /* setcsr(addr)是根据addr的值设置光标地址的函数 */

    LcdCommand=0×4F;  /* 设置光标向下移动 */

    LcdCommand=0×42;  /* 数据写入指令 */

    for(y=0;y<block_y;y++)

    {

    LcdData=*p;

    p++;

    }

    }

    }

    这里pblock是指向存有显示数据的数组的头指针,addr是要显示的区域的左上角地址,block_x和block_y是显示区域的横向与纵向的大小。下面用这个函数显示一个汉字:

    首先在程序的开头处加入这个汉字的字模数据,以数组的形式出现:

    unsigned char hanzi[]={0×53,0×65,0×76,0×69,0×63,0×65,0×72,0×20,0×54,0×45,0×4c,O×3a,0×00,0×30,0×31,O×30,0×36,0×32,0×37,0×38,0×30,0×38,0×36,0×36};
然后确定这个汉字要显示的位置地址,如显示RAM的2367处,因为是汉字,一般是16×16大小,所以调用这个函数:
display_block(hanzi,2367,2,16);

4.结束语

    本文提出的基于DSP控制的液晶显示器适用于多种点阵规格的显示器使用,加之其内部固化的字符发生器可产生160种字模,以及具有通过改变指令参数可实现图像的闪烁、翻转、移动等特点,因此非常适用于各种便携式系统显示终端的设计,有着广泛的应用前景。

参考文献:

[1]李维褪,郭强.液晶显示应用技术[M].北京:电子工业出版社,2000.

[2]苏涛,蔺丽华,卢光跃等.DSP实用技术[M].西安:电子科技大学出版社,2002.

[3]李文江,张岩,汪玉风.内置HD61202点阵式液晶显示模块接口设计与编程[J].液晶与显示,2004,19(2):138-142.

[4]赵立生,杜安,张伟.MSP-G320240 DBCW-21IN大规模点阵式LCD与PIC单片机接口技术[J].液晶与显示,2004,19(6):479-482.

  • 在线反馈
1.我有以下需求:



2.详细的需求:
姓名:
单位:
电话:
邮件: