硬件汉字库设计原理与应用.docx

上传人:b****3 文档编号:2940539 上传时间:2022-11-16 格式:DOCX 页数:12 大小:144.21KB
下载 相关 举报
硬件汉字库设计原理与应用.docx_第1页
第1页 / 共12页
硬件汉字库设计原理与应用.docx_第2页
第2页 / 共12页
硬件汉字库设计原理与应用.docx_第3页
第3页 / 共12页
硬件汉字库设计原理与应用.docx_第4页
第4页 / 共12页
硬件汉字库设计原理与应用.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

硬件汉字库设计原理与应用.docx

《硬件汉字库设计原理与应用.docx》由会员分享,可在线阅读,更多相关《硬件汉字库设计原理与应用.docx(12页珍藏版)》请在冰豆网上搜索。

硬件汉字库设计原理与应用.docx

硬件汉字库设计原理与应用

硬件汉字库设计原理与应用

 

青岛海洋大学PHILIPS单片机实验室綦声波刘滨马志强

摘要:

本文论述了硬件汉字库的基本原理和具体制作步骤并利用P89C51RD2作为主控CPU240x128点阵的液晶和硬件汉字库将一部科幻小说嵌入其中开机后即可阅读文章中给出了具体的电路和相应的软件

关键词:

硬件汉字库液晶显示P89C51RD2

_______________________

随着液晶显示技术的发展和应用,越来越多的开发人员希望在自己开发的仪器设备中使用液晶屏幕来显示汉字,通常的汉字显示方式是先根据所需要的汉字提取汉字点阵如16x16点阵,将点阵文件存入ROM形成新的汉字编码,而在使用时则需要先根据新的汉字编码组成语句再由MCU根据新编码提取相应的点阵进行汉字显示,在这种显示方式中如果使用的汉字数量较大或语句较多时,利用汉字的新编码组成语句将是一件繁琐而枯燥的工作。

如果有新的汉字加入那么汉字库的维护也成问题,而我们日常生活的一些手持工具上如手机快译通等等它们可以任意输入汉字不仅灵活性大而且检索速度快,这其中的主要原因就是在这些设备中固化了硬件汉字库。

而半导体技术的发展使得大容量FLASHROM的价格大大下降从而使用硬件汉字库的仪器设备的成本大大下降,因此越来越多的技术开发人员开始关注起硬件汉字库希望能在自己开发的设备中设计并使用硬件汉字库,达到加快产品开发速度降低软件成本的目的。

一硬件汉字库相关知识

1汉字机内码国标码和区位码

在PC机的文本文件中,汉字是以机内码的形式存储的。

每个汉字占用两个字节长度为了和ASCII码区别,范围从十六进制的0A1H开始小于80H的为ASCII码,将机内码每个字节的最高位屏蔽掉,再以十六进制的形式显示出来则为国标码。

将机内码的每个字节各减去0A0H再以十进制显示出来,即为该汉字的区位码。

例如"国"字的机内码国标码和区位码如表1所示

表1国字的机内码国标码和区位码

类别数值高位字节低位字节

机内码B9FAH1011100111111010

国标码397AH0011100101111010

区位码195AH0001100101011010

即区位码机内码0A0AOH就国字而言其区位码和机内码的关系为

195AH区位码0B9FAH机内码0A0A0H

记住这个关系是我们理解下面有关程序的关键

2国标汉字字符集与区位码

根据对汉字使用频率程度的研究可把汉字分成高频字约100个常用字约3000个次常用

字约4000字罕见字约8000个和死字约45000个即正常使用的汉字达15000个。

我国1981

年公布了通讯用汉字字符集基本集及其交换码标准GB2312-80方案,把高频字常用字和次常用字集合成汉字基本字符集共6763个,在该字符集中按汉字使用的频度又将其分为一级汉字3755个,按拼音排序二级汉字3008个,按部首排序再加上西文字母数字图形符号等700个,国家标准的汉字字符集GB2312-80在汉字操作系统中是以汉字库的形式提供的汉字库结构作了统一规定如图1所示

此主题相关图片如下:

即将字库分成94个区每个区有94个汉字,以位作区别每一个汉字在汉字库中有确定的区和位。

编号用两个字节这就是所谓的区位码。

区位码的第一个字节表示区号,第二个字节表示位号,因而只要知道了区位码就可知道该汉字在字库中的地址。

每个汉字在字库中是以点阵字模形式存储的,如一般采用16x16点阵形式,每个点用一个二进制位表示,存1的点当显示时可以在屏上显示一个亮点,存0的点则在屏上不显示,这样就把存某字的1616点阵信息直接用来在显示器上按上述原则显示,则将出现对应的汉字如一个国字的1616点阵字模如图2所示。

当用存储单元存储该字模信息时将需32个字节地址在图2的右边写出了该字模对应的字节值

此主题相关图片如下:

3液晶显示模块特性与字模数据

汉字显示是国内应用图形液晶显示模块的目的之一,目前对硬件汉字库比较关心的技术人员大多是想将其应用到图形点阵液晶显示器中,但目前有关液晶显示的资料大多数是介绍通过字模软件取出的点阵数据是如何送往液晶显示器的,因此作者在此作一下比较要在液晶屏幕上显示出这个点阵图形需要将相应的点阵数据送入液晶显示驱动器,但对于不同的液晶显示驱动器要显示同一图形所需要送入的数据排列顺序可能不同,作者曾经使用过内置D61202U液晶显示驱动控制器和内置T6963C液晶显示驱动控制器的液晶显示模块,同样是显示1616点阵的国

字则需要的点阵数据如下

HD61202U

DB000H,0FEH,002H,00AH,08AH,08AH,08AH,0FAH

DB08AH,08AH,08AH,00AH,002H,0FEH,000H,000H

DB000H,0FFH,040H,048H,048H,048H,048H,04FH

DB048H,049H,04EH,048H,040H,0FFH,000H,000H

由于HD61202U显示存储器的特性不能将计算机内的汉字库提出直接使用,需要将其旋转90度后再写入,也就是有些字模软件如zimo22.exe可到上免费下载设置为竖向倒序取模后所得的数据其生成字库的格式是前16个字节为上半部168点阵字模数据后16个字节为下半部16x8点阵字模数据,读者如果与图2中的相应数据作比较可以看出如果仅仅从数据上是看不出两者的联系的,如果在这种液晶显示器上要使用硬件汉字库则读出的点阵信息必须经过处理方可送出显示增加了使用难度

T6963C

DB000H,000H,07FH,0FCH,040H,004H,05FH,0F4H

DB041H,004H,041H,004H,041H,004H,04FH,0E4H

DB041H,044H,041H,024H,041H,024H,05FH,0F4H

DB040H,004H,040H,004H,07FH,0FCH,040H,004H

这些数据也是通过字模软件得出的读者再与图2中的32个数据相比较可以看出两者在数值和排列顺序上都是一致的,正是这种特性使得笔者选择了内置T6963C的液晶显示模块作为论述开发硬件汉字库的例子

二汉字库的制作

在本节中笔者将论述将1616点阵的宋体汉字库烧录到256KB的存储器中的具体方法,这也是读者比较关心的问题。

本例中使用了AT29C020该产品是ATMEL公司生产的高达256KB的FLASHROM,读者也可以使用其它容量不小于256KB的产品,但在具体电路设计时应注意引脚定义和逻辑关系,并在烧录时选择相应的型号UCDOS软件有一个名字为HZK16的文件,这就是1616的国标汉字点阵文件,在该文件中按汉字区位码从小到大依次存有:

国标区位码中的所有汉字,每个汉字占用32格字节,每个区为94个汉字,如果显示其属性可以看出其大小为262KB。

当写入AT29C020A时可以将多于256KB的部分截去,实际上在国标汉字点阵字库中二级汉字排到第87区,从第88区开始就是空白,所以将多余部分截去不会影响实际使用。

在实际操作中硬件汉字库的制作和普通的程序存储器的编程没什么不同,注意将HZK16文件调入时要使用二进制方式打开编程并校验成功后,即可将存储器取下备用,这样一个硬件汉字库就制作好了。

针对不同的应用读者也可以选用其它大容量甚至是串行数据存储器从而可以扩展硬件汉字库的使用范围。

在此也一并向大家推荐容量为512KB甚至更大的存储器除了可以存储全部的国标汉字外还可以存储816的ASCII码点阵数据以及汉字语句编码数据,使用起来更加方便。

串行数据存储器如AT45DB041B等特点是占用口线少体积小和成本低如果对于速度要求不是很高的场合非常适宜

三硬件汉字库使用电路

在本节中笔者使用PHILIPS公司的产品P89C51RD2作为主控CPU,使用内置T6963控制器的240x128点阵图形液晶显示器并结合硬件汉字库的使用,将一部3万多字的小说嵌入其中,开机后就可以阅读小说。

P89C51RD2是PHILIPS公司于2001年发布的一款非常优秀的单片机,该单片机是基于8位80C51单片机的派生产品,它在完全保留80C51指令系统和硬件结构的大框架外发生了多方面的加强扩展翻新和创新,P89C51RD2将原有的对外数据和程序存储器的16位寻址机制加以利用,把片上的RAM扩展到1K字节,片上的FLASHEPROM扩展到64K字节,由于一个汉字的内码占用两个字节,所以1024字节可以存储512个汉字所以64KB的闪存可以存储3万多汉字。

本系统使用了MicrotipsTechnologyInc.公司生产的内置Toshiba公司生产的T6963C的液晶显示器型号为MTG-F24128CMNHSCW具有CCFL背光相关接口信息如下

此主题相关图片如下:

此主题相关图片如下:

硬件设计说明

由于AT29C020的容量为256KB而80C51系列微控制器只能管理64KB的数据空间所以可以将

AT29C020分成8页每页32KB占单片机系统数据空间的00007FFFH剩余32KB空间为单片机系统的

其它存储器和外设

A15反相后作为液晶显示器的片选LCD/CSP1.5是控制液晶显示器正显和反显的该液晶显示器的

复位电平为低电平与P89C51RD2正好相反

四显示原理与软件编制

在第一节中我们已经得出国字的区位码为195AH换算成十进制为2590,即国字的点阵位

于第25区的第90个字的位置,相当于在文件HZK16中的位置为32[(25-1)94(90-1)]75040B以后的32个字节为国的显示点阵。

在本系统中AT29C020的A15A17分别连接到P1口的P1.0P1.1和P1.2作为页选择控制A0

A14直接连接单片机的A0A14利用MOVX指令连续取32个字节送LCD的相应位置就能实现正确的汉字显示。

由于240128点阵的LCD显示器每行只能显示15个汉字1616点阵汉字所以可以将需要显示的语句按15个汉字为1行进行编写标点符号要用全角不足15个汉字的则补空格这就是下面软件中的MENG.ASM中的内容

为方便读者将已经通过汇编的有关程序列出有关LCD的具体使用方法请见文献[2]

主程序

C_ADDEQU8001H液晶命令地址

D_ADDEQU8000H液晶数据地址

DAT1EQU30H

DAT2EQU31H

COMEQU32H

CODE1EQU33H

COUNTEQU34H

O_YEQU35H

O_XEQU36H

COUNT_XEQU37H

ORG0000H

SJMPSTART

ORG0030H

START:

MOVSP,#60H

ORLAUXR,#02HEXTRAM位1访问外部数据存储器

ANLAUXR1,#0FHENBOOT=0访问到FLASH

CLRP1.5正显

LCALLINT初始化设置子程序

LCALLCLEAR清屏

MOVDPTR,#TABLE科幻小说的开头

MOVO_Y,#00H

PUSHDPH

PUSHDPL

LOOP:

POPDPL

POPDPH

MOVR0,#0E0H字模数据暂存区

MOVR7,#30每

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 法律文书 > 调解书

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1