首页 液晶显示在嵌入式系统中的应用编程

液晶显示在嵌入式系统中的应用编程

举报
开通vip

液晶显示在嵌入式系统中的应用编程液晶显示在嵌入式系统中的应用 摘要:介绍了液晶显示在嵌入系统中的应用编程,给出了在液晶显示与系统接口的应用层编程中,采用环形结构算法来达到快速、简单地进行汉字代码的编码以及汉字的分页和分行显示的显示应用程序。   关键词:嵌入式系统;液晶显示;环形结构算法;汉字显示1 引言在嵌入系统中,一个良好的人机界面必须提供友善的菜单,同时应能实现汉字和图形显示,并应提供英文、数字输入和汉字输入功能。笔者采用香港精电公司的128×64点阵显示模块在以MPC860作为主CPU并以NuclusPLUS为嵌入式操作系统的系统中进行液...

液晶显示在嵌入式系统中的应用编程
液晶显示在嵌入式系统中的应用 摘要:介绍了液晶显示在嵌入系统中的应用编程,给出了在液晶显示与系统接口的应用层编程中,采用环形结构算法来达到快速、简单地进行汉字代码的编码以及汉字的分页和分行显示的显示应用程序。   关键词:嵌入式系统;液晶显示;环形结构算法;汉字显示1 引言在嵌入系统中,一个良好的人机界面必须提供友善的菜单,同时应能实现汉字和图形显示,并应提供英文、数字输入和汉字输入功能。笔者采用香港精电公司的128×64点阵显示模块在以MPC860作为主CPU并以NuclusPLUS为嵌入式操作系统的系统中进行液晶显示取得了较为满意的效果。图1所示为其结构框图。香港精电公司的128×64点阵模块内部自带液晶图形显示控制芯片T6963,其中C/D脚用于控制字与数据,RD和WR分别为读、写使能端。当WR为低时,C/D为高为写命令,C/D为低为写数据;而当RD为低时,C/D为高为读状态C/D为低为读数据。另外,CE为器件使能引脚,D0~D7为数据和地址复用总线引脚。2 应用编程利用MPC860嵌入式系统的快速性,可将显示应用程序分为两层,其中底层为硬件接口层,上层为应用层。硬件接口层主要是显示液晶模块自带的ASCII函数和显示汉字代码函数。由于硬件各不相同,在此不作具体介绍。而上层应用层的主要功能是提供友善的菜单,同时实现汉字和图形显示,并提供英文、数字输入和汉字输入功能。由于硬件接口层的隔离作用,不同的系统具有一定的通用性,以下重点介绍应用层编程中的汉字代码编码方法和显示编程的实现这两部分。2.1汉字代码编码一般西文为8×8点阵,因而显示一个西文字需要8个字节而每个汉字占4个西文字体,因此显示一个汉字需要32个字节。汉字字库表为一张数据表每个汉字在数据表中,通常由32个字节组成一个点阵图形。由于ASCII码编码是由0X00-0X7F表示,因此每个汉字可由两个字节0Xxx和0Xyy来表示,每个字节为0X80~0XFF(区别于ASCII代码)。第一汉字定义为0X800X80,依此类推直至0X800XFF,0X810X80,……,……,0XFF0XFF,总计可以定义128×128=16384个汉字。一个汉字代码表可简单表示为:hzcodetableINT=//汉字“数”的32字节的点阵图形代码为0x080x490x2A0x080xFF0x190x2C0x4A0x100xFE0x220x220x140x180x250x420x400x400x400x840xFE0x080x880x880x880x900x500x200x500x880x0E0x04//汉字“据”的32字节的点阵图形代码为0x100x130x120x120xFF0x120x160x1B0x320xD20x130x150x150x150x590x210x040xFE0x040x040xFC0x200x240xFE0x200x240xFE0x040x040x040xFC0x04,…}2.2显示编程在系统显示中,主要的显示方式有页处理和行处理两种。系统可以根据按键来显示某一页。实际上,页也是由相应行来显示的。页中的行可由按键来改变。一个页能显示8行ASCII码或4行汉字代码,带有汉字的行一般要占有2个只有ASCII码的行,而页可以由任意多行组成。显示时,通过按键可控制能显示行,并可在行中输入汉字或ASCII码。   在设计中,所有的页可组成一个环形队列结构,页中的行也可组成一个环形队列结构,其关系如图2所示。图3所示是该系统的显示 流程 快递问题件怎么处理流程河南自建厂房流程下载关于规范招聘需求审批流程制作流程表下载邮件下载流程设计 。下面给出一个行结构:typedefstructlcdLine{structlcdLine*previous//前一行structlcdLine*next//后一行unsignedshortlineId//行特征字unsignedcharshowflag//是否显示汉字unsignedcharstart//显示行号,汉字一定是奇数行如1,3,5,7unsignedcharlcdseg16//显示的代码如是ASCII码,0X10显示0,0X3C显示\汉字为0X800X81显示汉字“据”void*flcdLinestructlcdLine*plcdLine//处理行函数};由于页是由行组成的,所以页结构的定义如下:typedefstructlcdPage{structlcdLine*firstLine//该页中的第一行structlcdPage*previous//前一页structlcdPage*next//后一页unsignedshortpageId//页特征字}lcdPage下面给出的是一个环行队列函数的程序代码:VOIDCSCPlaceOnListCSNODE**headCSNODE*newnode{/*Determineifthelistinnon-empty.*/if*head{/*Thelistisnotempty.Addthenewnodetotheendofthelist.*/newnode->csprevious=*head->csprevious(newnode->csprevious)->csnext=newnodenewnode->csnext=*head(newnode->csnext)->csprevious=newnode;}else{/*Thelistisemptysetuptheheadandthenewnode.*/*head=newnodenewnode->csprevious=newnodenewnode->csnext=newnode}}在建立了上述结构后,便可以得出行队列和页队列的组成方法:lcdLinelcdLine30lcdPagelcdPage10;//初始化列lcdLine0..lcdseg0=0x80lcdLine0..lcdseg1=0x80lcdLine0..lcdseg2=0x80lcdLine0..lcdseg3=0xBClcdLine0..lcdseg4=0x80lcdLine0..lcdseg5=0x97lcdLine0..lcdseg6=0x80lcdLine0..lcdseg7=0x98lcdLine0..lcdseg8=0x80lcdLine0..lcdseg9=0x99lcdLine0..lcdseg10=0x00lcdLine0..lcdseg11=0x00lcdLine0..lcdseg12=0x00lcdLine0..lcdseg13=0x00lcdLine0..lcdseg14=0x00lcdLine0..lcdseg15=0x00lcdLine0..start=1//第二行起lcdLine0..showflag=1//汉字lcdLine0.lineId=1001;//行标识firstlcdLine1=NULLCSCPlaceOnList&firstlcdLine1&lcdLine0//第一页中的第一行CSCPlaceOnList&firstlcdLine1&lcdLine1CSCPlaceOnList&firstlcdLine1&lcdLine2CSCPlaceOnList&firstlcdLine1&lcdLine3由于四行即可组成一个循环队列,其中lcdLine0指定为第一页的第一个入口行,FirstlcdLine1与lcdLine为同一行,lcdPage0页的入口行为firstlcd-Line;lcdPage0.firstLine=firstlcdLine1lcdPage0.pageID=1001,这样,依据该方法便可以生成任意多的页。具体方法如下:lcdpage1=NULLlcdPagePlaceOnList&lcdpage1&lcdpage0lcdPagePlaceOnList&lcdpage1&lcdpage1lcdPagePlaceOnList&lcdpage1&lcdpage2lcdPagePlaceOnList&lcdpage1&lcdpage3lcdPagePlaceOnList&lcdpage1&lcdpage4lcdPagePlaceOnList&lcdpage1&lcdpage5这样,用五页即可组成一个循环队列,其中lcd-page_1与lcdpage0为同一页。对于行的显示,最基础的行显示方法如下:voiddisplcdLinelcdMenu*lcdmunsignedcharstart//START为行号{unsignedchariloopunsignedcharztzt1unsignedcharsignunsignedcharoffsetunsignedcharofflenunsignedchar*phzunsignedcharz0phz=unsignedchar*&hzcodetable/汉字代码初地址offset=start*16//显示的位置行号*列号offlen=0loop=0z0=0x00sign=lcdm->showflag//是否为汉字whileloop<16//在同一行中从0列到15列{zt=lcdm->lcdsegloop//取第一个代码ifzt<=0x7F/小于0X80为ASCII代码{dispselfascii&zt1offset//在本行,显示自有的ASCII代码ifsign==1{dispselfascii&z01offset16//在上一行,同一列的位置,不显示任何代码}offset=offset+1offlen=offlen+1loop++}else{loop++zt1=lcdm->lcdsegloop//取第二个代码dispchinesephz+zt-0x80*4096+zt1-0x80*321offset//显示汉字offset=offset+2offlen=offlen+2loop++}}}3结束语由于本系统在显示时采用了环形结构算法,因此,可以达到快速、简单的汉字显示效果。 
本文档为【液晶显示在嵌入式系统中的应用编程】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
个人认证用户
言言无悔一生
暂无简介~
格式:doc
大小:51KB
软件:Word
页数:8
分类:
上传时间:2022-01-21
浏览量:1