发布企业信息

图形液晶显示模块在嵌入式系统中的应用

作者:  信息来源:电子市场  2007-1-22

字体大小:  网友评论  进入论坛  

摘要:本文以一种由ST7902驱动的点阵液晶显示模块OCM4×8C为例,给出了其在基于DSP的嵌入式便携仪表中与DSP芯片(TMS320F2812)的硬件接口电路和C语言显示子程序,实现了多层菜单和动态波形的显示。关键词:图形点阵液晶显示。Clanguageprogram图形点阵式液晶显示模块具有尺寸小、功耗低、寿命长、成本低、可显示各种图像与文...
    摘要:本文以一种由ST7902驱动的点阵液晶显示模块OCM4×8C为例,给出了其在基于DSP的嵌入式便携仪表中与DSP芯片(TMS320F2812)的硬件接口电路和C语言显示子程序,实现了多层菜单和动态波形的显示。 
    关键词:图形点阵液晶显示;DSP;C语言程序 
    中图分类号:TP368文献标识码:B 
    Abstract:Inthispaper,wetakeanexampleofALiquidCrystalDisplay(LCD)moduleOCM4×8C,whichisdrivenbyST7902,thehardwareinterfacecircuitandClanguagesubprogramwithDSP(TMS320F2812)appliedintheembeddedportableinstrumentisproposed,multi-menuanddynamicwaveformdisplayisrealized. 
    Keywords:GraphiclatticeLCD;DSP;Clanguageprogram 
    图形点阵式液晶显示模块具有尺寸小、功耗低、寿命长、成本低、可显示各种图像与文本信息等优点,因此在各种仪器仪表、电子设备、移动通讯及家用电器中得到广泛的应用[1]。本文结合笔者在“便携式电力故障录波仪”项目中的实践经验,着重介绍如何把液晶显示模块应用做嵌入式DSP系统人机界面的问题,仅用四个按键相互配合,通过软件编程实现多层菜单和动态波形的显示。软件部分采用C语言编制,模块化设计,具有很强的可移植性,可以直接应用到其他的嵌入式系统中。 
    1.模块的工作原理 
    1.1基本功能 
    OCM4×8C液晶显示模块是128×64点阵的汉字图形型液晶显示模块,内置国标GB2312码简体中文字库(16×16点阵)、126个字符(8×16点阵)及32×128点阵显示RAM(GDRAM)。可与CPU直接接口,提供两种界面来连接微处理机:8位并行及串行两种连接方式。具有多种功能:光标显示、画面移位、睡眠模式、反白显示等。 
    1.2引脚定义 
    OCM4x8c液晶显示模块的引脚说明如表1所示。该模块对液晶显示的控制和驱动都由模块内部的芯片及电路来完成,因此它与外部的连接只有数据线和控制线。主控CPU通过这些数据线和控制线来设置所需要的显示方式,其它功能均由模块自动完成。 
    1.3指令系统 
    当ST7902在接受指令前,处理器必须先确认ST7902内部处于非忙碌状态,即读取BF标志位时BF需为0,方可接受新的指令;如果在送入一个指令前并不检查BF标志,那么在前一个指令和这个指令中间必须延迟一段较长的时间,即等待前一个指令执行完成。 
    ST7902提供两套控制命令,基本指令和扩充指令,RE为基本指令与扩充指令集的选择控制位,当改变RE位后,往后的指令集将维持在最后的状态,除非再次改变RE,否则使用相同的指令集时,不需每次重设RE位。
下面举例说明指令格式,如进入点设定(指令代码为0x02H):  
    CODERSRWDB7DB6DB5DB4DB3DB2DB1DB0  

    0  

    0  

    0  

    0  

    0  

    0  

    0  

    1  

    0  

    0  

      

      

    功能:游标右移,DDRAM位址计数器(AC)加1  

    ST7920A提供硬体游标及闪烁控制电路,由地址计数器(addresscounter)的值来指定DDRAM中的游标或闪烁位置。  

    表1液晶显示OCM4x8c模块的引脚功能  

    Tab.1pinfunctionofLCDOCM4x8cmodule  

      

      

      

    2.OCM4×8c和TMS320F2812并行接口设计  

    2.1硬件电路设计[2,3]  

    利用F2812的PA口的PA0~PA10作为和ST7902并行连接的接口,其中PA0~PA7对应ST7902的八位数据线端口,PA8~PA10对应控制器的控制线端口,ST7902的复位端口与F2812的复位端口XRS相连,背光灯的阳极LA接5V电源,负极LK接地,PSB管脚通过上拉电阻接高电平,使芯片工作在并行连接方式。利用F2812的PB口的低四位PB0~PB3作为与外部四个按健的接口,四个按键分别为返回,向上/下,确认。这四个按键相互配合可以实现多层菜单和数据、波形的动态显示。其硬件连接图如图1所示:  

      

    图1TMS320F2812与ST7902并行接口图  

    Fig.1DiagramoftheparallelinterfaceofTMS320F2812andST7902  

    图1中还包含DSP最小系统的时钟电路和复位电路,时钟电路由晶体和谐振电容组成,复位电路由RC充放电组成,为了便于调试,复位电路中增加了一个跳线器(J2),用于手动复位。笔者在设计过程中遇到一个问题,需要特别注意,液晶模块驱动器ST7902的工作电压为2.7~5.5V,但是OCM4×8c的工作电压为4.5~5.5V,所以两者配合的使用时电压需在4.5~5.5V之间,不然液晶显示将无法正常工作,所以不能为了方便用DSP芯片电源3.3V。 
 2.2软件程序设计[3-5]  

    下面给出与上述硬件电路配套的C语言显示子程序。包括初始化子程序、主程序、延时子程序、汉字、字符显示子程序、动态显示数据子程序、清屏子程序、按键扫描子程序等,多层菜单功能利用事件触发方式实现。可根据显示需要在主程序的相应位置调用,即可实现相应的显示功能,其主程序流程图如图2所示。  

      

    图2主程序流程图  

    Fig.2Mainprogramflowchart  

      

    初始化子程序:  

    voidinit_lcd(void){  

    wr_lcd(COMM,0x30);/*30---基本指令动作*/  

    delay(2000);  

    wr_lcd(COMM,0x30);/*30---基本指令动作*/  

    delay(1000);  

    wr_lcd(COMM,0x0c);/*开显示,关游标*/  

    delay(2000);  

    wr_lcd(COMM,0x01);/*清屏,地址指针指向00H*/  

    delay(20000);  

    wr_lcd(COMM,0x06);/*光标的移动方向*/  

    }  

    /***主程序***/  

    voidmain(void){  

    InitSysCtrl();  

    //DisableandclearallCPUinterrupts:  

    DINT;  

    IER=0x0000;  

    IFR=0x0000;  

    //InitializePieControlRegistersToDefaultState:  

    InitPieCtrl();  

    //InitializethePIEVectorTableToaKnownState:  

    InitPieVectTable();  

    InitGpio();  

    init_lcd();  

    for(o=0;o<10;o++)  

    {welcome();}  

    show_items(tab0,4,0);  

    while(1){  

    display();  

    w 

hile(!key_scan());  
    key_server();}  

    }  

    写数据或指令子程序:  

    /*写指令或数据  

    *data_comm:1写数据,0写指令,data:数据或指令内容*/  

    voidwr_lcd(Uchardata_comm,Uchardata){  

    delay(50);  

    GpioDataRegs.GPADAT.bit.GPIOA9=data_comm;/*置rs=data_comm*/  

    GpioDataRegs.GPADAT.bit.GPIOA8=0;/*置rw=0*/  

    GpioDataRegs.GPADAT.all&=0xff00;/*输入数据*/  

    data&=0x00ff;  

    GpioDataRegs.GPADAT.all|=data;  

    GpioDataRegs.GPADAT.bit.GPIOA10=1;/*e=1*/  

    delay(50);  

    GpioDataRegs.GPADAT.bit.GPIOA10=0;/*e=0*/  

    }  

    清屏子程序:  

    voidclear(void){  

    wr_lcd(COMM,0x30);  

    wr_lcd(COMM,0x01);  

    }  

    汉字、字符显示子程序:  

    voidchn_disp(Uchar*chn,Uint16rows,Uint16cur_row){  

    int16row_num,offset,i,j;  

    clear();  

    row_num=(rows>4)?4:((rows<1)?1:rows);/*要显示的行数*/  

    if(cur_row>=rows)cur_row=rows-1;  

    offset=(cur_row>3)?(cur_row-3)*16:0;/*第一行数据的数组下标*/  

    wr_lcd(COMM,0x30);  

    for(i=0;i<row_num;i++){  

    wr_lcd(COMM,addr[i]);  

    for(j=0;j<16;j++)  

    wr_lcd(DATA,chn[offset+j]);  

   & 

nbsp;offset+=16;  
    }  

    wr_lcd(COMM,0x0c);  

    delay(50000);  

    }  

    /*动态显示数据*tab:要显示的数据数组*/  

    voiddyna_disp_value(Uchar*tab,float*tf,floatfactor){  

    while(1){  

    clear_tab(tab,16,64);/*清除数值,但保留屏幕第一行的提示信息*/  

    float_to_char(tab,16,(*tf)*factor);/*将动态数值存入数组*/  

    chn_disp(tab,4,0);  

    delay(5000);  

    if(key_scan()&&(GpioDataRegs.GPBDAT.all|0xFFF0)==0xFFF8)break;/*监听返回键*/  

    }  

    disp_menu();/*显示主菜单*/  

    }  

    延时子程序:  

    voiddelay(Uint16us)  

    {Uint16i,j;  

    for(i=0;i<us;i++)  

    for(j=0;j<50;j++);  

    }  

    按键扫描子程序:  

    intkey_scan(void){  

    int16i;  

    if((GpioDataRegs.GPBDAT.all|0xFFF0)==0xFFF0)return0;/*没有按键被按下*/  

    for(i=2000;i>0;--i);/*延时消除按键抖动*/  

    return(((GpioDataRegs.GPBDAT.all|0xFFF0)==0xFFF0)?0:1);  

    }  

    3.结语  

    以上程序均在TMS320C2X系列的软件环境CCS下调试通过并运行成功。液晶屏能够通过四个简单按键,以多层菜单的模式动态显示汉字、字符、数字和图形,用作便携式嵌入式仪表的人机界面。通过移植本文的程序,经过适当修改,可以完成各种不同组合的功能,缩短开发周期,适用于各种便携式设备的人机界面系统,如手机、便携仪表、PDA等。 

因此,该模块为嵌人式系统人机界面设计提供了一种较好的解决方案,提供十分简单、方便、功能强大的LCD显示功能。  
      

    参考资料:  

    [1]鲍晓宇,施克仁等.TMS320C54XDSKplus与图形液晶显示模块DNF50081的接口设计.国外电子元器件,2002.11:6-9.  

    [2]TMS320F281xDataSheet.  

    [3]刘和平等.TMS320LF240xDSPC语言开发应用.北京航天航空大学出版社,2003.  

    [4]TMS320F281xOptimizingC/C++CompilerUser’sGuide.  

    [5]TMS320F281xAssemblyLanguageToolsUser’sGuide.  

    作者简介:  

    王晓明(1948—),男,博士,教授,从事测控技术和脉冲放电技术应用等方面的研究;  

    职伟芳(1981—),女,河南省新乡市人,硕士研究生,研究方向为测控技术及智能控制。  

    作者登记:  

    作者:王晓明  

    单位:哈尔滨工业大学电气工程学院  

    稿件名称:液晶显示模块在嵌入式系统中的应用  

    邮编:150001  

    地址:黑龙江省哈尔滨市西大直街92号电气工程学院  

    联系人:王晓明  

    联系电话:0451-86849721手机:13009721295  

    E-mail:xmw2002@hit.edu.cn  
分页:
Google


推荐图文

广告

电子热点图文

  • 新型太阳能充电器的研究与设计
  • 基于EDA的交通灯控制系统
  • 电子元件基础知识--半导体三极管
  • PID控制中如何整定PID参数

电子风云人物

Copyright © 2004 51base.com Inc. All rights reserved.

无忧基地 版权所有│粤ICP备06098418号│XHTML | CSS

客服:+86-755-2212 2202 工作时间:周1~5 10点~16点

感谢中国网络提供带宽支持

《网络营销技巧》