DIY编程器网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 365|回复: 0
打印 上一主题 下一主题

基于TMS320F2812液晶显示的监测系统的设计

[复制链接]
跳转到指定楼层
楼主
发表于 2012-1-27 20:18:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

  
         
    The design of monitoring system based on F2812

摘要:本文提出了一种基于F2812并使用液晶显示的监测系统的设计方案,给出了系统的总体硬件结构框图,并详细介绍了F2812与液晶显示屏的接口设计以及液晶显示的程序设计。

关键字:F2812  DSP  CPLD  液晶显示  SED-1335  
Abstract: A design scheme about monitoring system that is based on F2812 and displayed with LCD is brought forward,  the hardware architecture figure of the system is given,  the design of hardware interface between F2812 and LCD ,and software design of LCD is discussed in detail in the paper.
Keywords: F2812  DSP  CPLD  LCD  SED-1335
1.     引言
传统的监测系统大多都是在单片机基础上开发的。单片机由于速度慢,运算能力弱,实时性差,在需要处理大量高速实时数据的情况下,往往不能达到要求,而DSP则非常擅长进行高速信号采集和数据处理。因此,本文将讨论一种基于F2812并使用液晶显示的监测系统的设计方案。

2.     系统总体硬件结构
本系统采用TI公司推出的32位定点DSP芯片TMS320F2812作为底层主处理器件,利用其片上16通道A/D转换模块将采集得到的数字信号进行处理,并将所有控制电路和地址译码,分配等功能设计在CPLD中,通过CPLD来控制读写液晶显示模块等外围器件,其中,液晶显示模块采用台湾晶采光电股份有限公司生产的一款内嵌SED1335控制器的AT-320240Q1FIEW-33H型液晶模块(320x240点阵)。此外,在DSP芯片外还扩展了RAM和FLASH。硬件结构框图如下:


500)this.style.width=500;" border=0>


1.     F2812与液晶显示模块接口设计
在上图中,RAM和FLASH ROM是F2812的外扩存储器,CPLD是用来作为地址译码产生片选信号的,它们都映射到F2812的XINTF区域。F2812的XINTF包括5个存储区域:
Zone0 存储区域: 0x002000—0x003FFF,8K x 16位
Zone1 存储区域: 0x004000—0x005FFF,8K x 16位
Zone2 存储区域: 0x080000—0x0FFFFF,512K x 16位
Zone6 存储区域: 0x100000—0x17FFFF,512K x 16位
Zone7 存储区域: 0x3FC000—0x3FFFFF,16K x 16位
其中,Zone0和Zone1共用1个片选线XZCS0AND1,Zone6和Zone7共用1个片选线XZCS6AND7,Zone2单独使用1个片选线XZCS2.如上图所示。CPLD映射到Zone0(地址0x2000—0x3FFF),即当访问Zone0区域时,XZCS0AND1有效(CS1有效),此时选中CPLD;同样,RAM和FLASH分别映射到Zone6和Zone2,当访问Zone6(0x100000—0x17FFFF)或Zone2(0x080000—0x0FFFFF),则XZCS6AND7(CS6)或XZCS2(CS2)有效,表明选中了RAM或FLASH。
可以注意到CPLD使用了F2812的4位地址线A12…A9作为译码信号,通过CPLD译码来实现LCDCS信号有效。在本系统中通过CPLD编程实现当A12…A9为1100时经CPLD译码后LCDCS有效,但应注意前提是CPLD必须被选中。因为CPLD映射到Zone0,只有访问0x2000—0x3FFF这个区域时,才能选中CPLD。这就要求A15…A13必须为001,其余A8…A1不参与译码,可取任意值,在此全部取为0。如此一来,只有A15…A0为0x3800和0x3801时LCDCS有效,此时F2812可以访问LCD.
    在液晶模块接口中,A0脚为数据/指令寄存器的选择信号.A0=1,访问指令寄存器,A0=0,访问数据寄存器。在硬件图中我们可以看到液晶模块接口的A0脚直接接F2812的XA0脚,再综合上面所述,就可以确定0x3800为液晶模块数据寄存器地址,0x3801为液晶模块指令寄存器地址
2.     液晶模块内嵌控制器及其指令介绍  
SED-1335是整个320x240液晶模块的核心部分,接下来将简要介绍一下其指令集。为便于浏览,特将SED-1335的所有指令列表如下。



500)this.style.width=500;" border=0>

带有参数的指令代码的作用之一就是选通相应参数的寄存器,任一条指令的执行(除SLEEP IN, CSRDIR, CSRR和MREAD外)都产生在附属参数的输入完成之后。MPU可用写入新的指令代码来结束上一条指令参数的写入,此时已写入的新参数与余下的旧参数有效地组合成新的参数组,需要注意的是虽然参数可以不必全部写入,但所写的参数顺序不能改变,也不能省略。
在下面将列出部分初始化程序来说明指令的使用,但对于CSRDIR和CSRW指令,有必要详细解释一下。CSRDIR指令是用来设置光标移动方向的,有上,下,左,右四个移动方向(4EH,4FH,4DH,4CH),CSRW指令则是用来设置光标地址的。要特别注意这里的光标是对应显存里面的一个字节(byte),而不是对应字节里的一个位(bit),当设置光标向右移动时,每写完一个字节数据到显存,光标地址就会加一,此时对应显存的字节地址加一;同理,设置光标向左移动时,对应显存的字节地址减一。而当设置光标向下移动时,目标光标地址(字节地址)=当前光标地址(字节地址)+AP(液晶屏一行所对应显存的字节数),注:一般AP设置为完整显示液晶屏一行所用字节数加1,即40+1=41. 如下图所示,如果当前光标在字节地址Add1处,则写完一个字节数据后光标则移到了字节地址Add42处;同理,设置光标向上移动时,如果当前光标在Add81处,则写完一个字节数据后光标则移到了Add40处



500)this.style.width=500;" border=0>
[1] [2]  下一页
         
          [/td]
        [/tr]
      
  
         
   



5.  液晶显示的软件设计
  5.1初始化LCD程序:
#define      LCD_DAT        (*((volatile  unsigned  int *)0x3800)) //定义数据寄存器
#define      LCD_COM        (*((volatile  unsigned  int *)0x3801))//定义指令寄存器
    void Lcd_init(void)
            {
                   LCD_COM = 0x40;//显示窗口设置指令,之后带8个参数
                   LCD_DAT = 0x30;//单屏LCD模式,内部字元发生器有效
                   LCD_DAT = 0x87;//显示字符宽度8
                   LCD_DAT = 0x07;//显示字符高度8
                   LCD_DAT = 0x27;//一行显示40个字节
                   LCD_DAT = 0x46;  
                   LCD_DAT = 0xEF;//总共显示240行
                   LCD_DAT = 0x28;//AP=40+1
                   LCD_DAT = 0x00;
           …………… //其他初始化指令
       }
  5.2 显示一个32x32字符程序:
       void  Disp16x32Char(void)
           {
LCD_COM = 0x4E;//设置光标地址自动移动方向 向上
                   for(i=0;i
                { // x1取值范围1--40,y1取值范围1--240
                  Set_Graphic_Csr(x1,y1);  //根据光标所在位置计算出对应的字节地址
                     p = CharTab[1];  //指针指向字模数组
             LCD_COM = 0x42;  //写显示数据指令
                  //自下而上写入32个字节
for(j=0;j
                      {
                           LCD_DAT = p[j+32*i+128*k];//从字模数组中取出一字节
                      }
                     x1++;//准备写右边一列数据
                   }
          }
5.3 显示主程序
  void main(void)
      {
……// 初始化系统,PIE, PIE中断向量表,外设
Lcd_init(); // LCD初始化
clearscr1(); // 清空第一显示缓冲区
  clearscr2(); // 清空第二显示缓冲区
  clearscr3(); // 清空第三显示缓冲区
Disp32x32Char(void); // 显示一个32x32字符
……//其他字符显示程序
While(1);
}
总结:本文液晶显示程序并未使用SED1335自带的字符发生器,而是通过在程序中调用自定义的字模数组数据,将其分别写入显存相应位置。因此,首先必须用相应的字模软件对要显示的字符或位图取模,并特别注意写数据到显存的顺序必须与取模的顺序一致,比如显示32x32字符,写数据的顺序为先在光标所在处自上而下写入32个字节,再将光标右移,连续自上而下分别写入3列32个字节。考虑到字模数组占用内存空间较大,应该将字模数组存储在ROM中,在需要使用时再从ROM中将字模数据调入RAM中执行。
结束语:本文提出了一种基于F2812并使用320x240液晶显示的监测系统的设计方案,此方案已经在软硬件上得到实现,经过验证后效果较好,从而为其他便携式监测系统的设计提供了借鉴。本文创新点在于使用了TI公司目前功能最为强大的2000系列DSP芯片TMS320F2812来构建新型监测系统,改变了传统的用单片机构建监测系统的思路。
参考文献:
[1] TMS320F28x External Interface(XINTF) Reference Guide. Texas Instruments,2003.P1--2
[2] SED 1335 Series LCD Controller Ics Technical Manual. EPSON,1999.P20--39
[3] SPECIFICATIONS FOR LCD MODULE AT-320240Q1FIEW-33. AMPIRE,2001.P10--12
[4] 陈力平 。SED1520控制器在环境监测系统中的应用[J]。微机算机信息, 2006, 6-2: 6--8
作者简介:
刘毅,男,1979年生,广西桂林人,湖南大学电气与信息工程学院在读研究生,电路与系统专业,主要从事嵌入式系统研究,Email:loveacmilan724@163.com
曾文海,男,1955年生,湖南益阳人,湖南大学电气与信息工程学院副教授
(410082, 湖南大学电气与信息工程学院)   刘毅  曾文海
通讯地址:(410082 湖南省长沙市湖南大学南校区十四舍230室)刘毅上一页  [1] [2]
         
          [/td]
        [/tr]
      
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|文字版|手机版|DIY编程器网 ( 桂ICP备14005565号-1 )

GMT+8, 2024-6-23 10:40 , 耗时 0.092724 秒, 19 个查询请求 , Gzip 开启.

各位嘉宾言论仅代表个人观点,非属DIY编程器网立场。

桂公网安备 45031202000115号

DIY编程器群(超员):41210778 DIY编程器

DIY编程器群1(满员):3044634 DIY编程器1

diy编程器群2:551025008 diy编程器群2

QQ:28000622;Email:libyoufer@sina.com

本站由桂林市临桂区技兴电子商务经营部独家赞助。旨在技术交流,请自觉遵守国家法律法规,一旦发现将做封号删号处理。

快速回复 返回顶部 返回列表