当前位置:首页 > 显示光电 > 显示光电
[导读]介绍了液晶显示在嵌入系统中的应用编程,给出了在液晶显示与系统接口的应用层编程中,采用环形结构算法来达到快速、简单地进行汉字代码的编码以及汉字的分页和分行显示的显示应用程序。

  摘要:介绍了液晶显示在嵌入系统中的应用编程,给出了在液晶显示与系统接口的应用层编程中,采用环形结构算法来达到快速、简单地进行汉字代码的编码以及汉字的分页和分行显示的显示应用程序。

    关键词:嵌入式系统;液晶显示;环形结构算法;汉字显示

1 引言

在嵌入系统中,一个良好的人机界面必须提供友善的菜单,同时应能实现汉字和图形显示,并应提供英文、数字输入和汉字输入功能。笔者采用香港精电公司的128×64点阵显示模块在以MPC860作为主CPU并以Nuclus PLUS为嵌入式操作系统的系统中进行液晶显示?取得了较为满意的效果。图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代码)。第一汉字定义为0X80 0X80,依此类推直至0X80 0XFF ,0X81 0X80,……,……,0XFF 0XFF ,总计可以定义128×128=16384个汉字。

一个汉字代码表可简单表示为:

hz code table?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所示是该系统的显示流程。

下面给出一个行结构:

typedef struct lcdLine

{

struct lcdLine *previous? //前一行

struct lcdLine *next? //后一行

unsigned short lineId? //行特征字

unsigned char showflag? //是否显示汉字

unsigned char start? //显示行号 ,汉字一

定是奇数行如 1,3,5,7

unsigned char lcdseg?16??

//显示的代码如是ASCII码,0X10显示0,

0X3C显示\ ?汉字为0X80 0X81 显示汉字“据”

void ?*flcdLine??struct lcdLine * plcdLine??

//处理行函数

};

由于页是由行组成的,所以页结构的定义如下:

typedef struct lcdPage

{

struct lcdLine *firstLine? //该页中的第一行

struct lcdPage *previous? //前一页

struct lcdPage *next? //后一页

unsigned short pageId? //页特征字

} lcdPage?

下面给出的是一个环行队列函数的程序代码:

VOID CSC Place On List?CS NODE **head? CS NODE *new node?

{

/* Determine if the list in non-empty. */

if ?*head?

{

/* The list is not empty. Add the new

node to the end of the list. */

new node->cs previous=?*head?

->cs previous?

(new node ->cs previous)->cs

next=new node?

new node-> cs next =?*head??

(new node->cs next)->cs previous

=new node;

}?

else

{

/* The list is empty? setup the head and

the new node. */

?*head? = new node?

new node -> cs previous = new node?

new node -> cs next = new node?

}

}

在建立了上述结构后,便可以得出行队列和页队列的组成方法:

lcdLine lcdLine?30??

lcdPage lcdPage?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; //行标识

?firstlcdLine 1?=NULL?

CSC Place On List ?&firstlcdLine 1? &lcdLine?0??? //第一页中的第一行

CSC Place On List?&firstlcdLine 1?&lcdLine?1???

CSC Place On List ?&firstlcdLine 1? &lcdLine?2???

CSC Place On List ?&firstlcdLine 1? &lcdLine?3???由于四行即可组成一个循环队列,其中lcdLine?0?指定为第一页的第一个入口行,FirstlcdLine 1与lcdLine为同一行,lcdPage?0?页的入口行为firstlcd-Line;lcdPage?0?.firstLine=firstlcdLine 1?lcdPage?0?.pageID =1001,这样,依据该方法便可以生成任意多的页。具体方法如下:

lcdpage 1=NULL?

lcdPage Place On List?&lcdpage 1? &lcdpage?0???

lcdPage Place On List?&lcdpage 1? &lcdpage?1???

lcdPage Place On List?&lcdpage 1? &lcdpage?2???

lcdPage Place On List?&lcdpage 1? &lcdpage?3???

lcdPage Place On List?&lcdpage 1? &lcdpage?4???

lcdPage Place On List?&lcdpage 1? &lcdpage?5???

这样,用五页即可组成一个循环队列,其中lcd-page_1与lcdpage?0?为同一页。

对于行的显示,最基础的行显示方法如下:

void disp lcd Line?lcdMenu *lcdm?unsigned char start? //START为行号

{

unsigned char i?loop?

unsigned char zt?zt1?

unsigned char sign?

unsigned char offset?

unsigned char offlen?

unsigned char *phz?

unsigned char z0?

phz=?unsigned char *?&hz code table?

/汉字代码初地址

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代码

{

disp self ascii?&zt?1?offset??

//在本行,显示自有的ASCII代码

if?sign==1?

{

disp self ascii?&z0?1?offset 16??

//在上一行,同一列的位置,不显示任何代码

}

offset=offset +1?

offlen=offlen +1?

loop++?

}

else

{

loop++?

zt1=lcdm->lcdseg?loop??

//取第二个代码

disp chinese??phz+?zt-0x80? *4096 +?zt1-0x80? *32??1?offset ?? //显示汉字

offset=offset + 2 ?

offlen=offlen +2?

loop++?

}

}

}

3 结束语

由于本系统在显示时采用了环形结构算法,因此,可以达到快速、简单的汉字显示效果。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭