硬件汉字库方案与应用.docx
- 文档编号:11770868
- 上传时间:2023-06-02
- 格式:DOCX
- 页数:14
- 大小:22.38KB
硬件汉字库方案与应用.docx
《硬件汉字库方案与应用.docx》由会员分享,可在线阅读,更多相关《硬件汉字库方案与应用.docx(14页珍藏版)》请在冰点文库上搜索。
硬件汉字库方案与应用
硬件汉字库设计原理与应用
青岛海洋大学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每个汉字为2字节每行15个汉字需30字节
PRHZ3:
CLRA
MOVCA,@A+DPTR
MOV@R0,A
INCR0
INCDPTR
DJNZR7,PRHZ3
PUSHDPH
PUSHDPL
MOVO_X,#00H
MOVR0,#0E0H
MOVCOUNT_X,#15
LCD112:
MOV24H,@R024H和25H为暂存缓冲存内码
INCR0
MOV25H,@R0
INCR0
MOVA,24H
CLRC
SUBBA,#0A1H转换为区位码
MOV24H,A
MOVA,25H
CLRC
SUBBA,#0A1H
MOV25H,A
MOVA,R0
PUSHACC
LCALLDPONHZ取字模数据并存入0C0H开始的寄存器
LCALLWRI_CC送出显示
POPACC
MOVR0,A
INCO_X
INCO_X
DJNZCOUNT_X,LCD1121行汉字送完跳转
MOVA,O_Y
ADDA,#10H
MOVO_Y,A
MOVA,O_Y
CJNEA,#80H,LOOP
MOVO_Y,#00H
LCALLDELAY送完1屏后延长时间以便于阅读
LCALLDELAY
LCALLDELAY
LCALLDELAY
LCALLDELAY
LCALLDELAY
POPDPL
POPDPH
PUSHDPH
PUSHDPL
MOVA,DPH
SUBBA,#0DFH小说结尾地址如果是结尾则复位重新开始
JNCRST1
JMPLOOP
RST1:
MOVA,DPL
SUBBA,#2AH
JNCRST
JMPLOOP
RST:
JMPSTART
DPONHZ:
MOVA,24H取字模数据至0C0H开始的内部存储区
MOVB,#94
MULAB
ADDA,25H
MOV25H,A
CLRA
ADDCA,B
MOV24H,A
CLRC
RRCA
CLRC
RRCA
MOVP1,A
LCALLRL245
CLR24H.7
MOVDPH,24H
MOVDPL,25H
MOVR2,#32
MOVR1,#0C0H
DPHZ2:
MOVXA,@DPTR
INCDPTR
MOV@R1,A
INCR1
DJNZR2,DPHZ2
RET
RL245:
MOVR7,#0524H25H左移5位
RLL1:
CLRC
MOVA,25H
RLCA
MOV25H,A
MOVA,24H
RLCA
MOV24H,A
DJNZR7,RLL1
RET
R_ST:
MOVDPTR,#C_ADD读状态
MOVXA,@DPTR
RET
ST01:
LCALLR_ST读写一数据前
JNBACC.0,ST01
JNBACC.1,ST01
RET
ST2:
LCALLR_ST连续读前
JNBACC.2,ST2
RET
ST3:
LCALLR_ST连续写前
JNBACC.3,ST3
RET
ST6:
LCALLR_ST
JBACC.6,ERR
RET
ERR:
LJMPST6
PR1:
LCALLST01
MOVA,DAT1
LCALLPR13
PR11:
LCALLST01
MOVA,DAT2
LCALLPR13
PR12:
LCALLST01
MOVA,COM
LJMPPR14
PR13:
MOVDPTR,#D_ADD
PR14:
MOVX@DPTR,A
RET
PR2:
LCALLST01
MOVDPTR,#D_ADD
MOVXA,@DPTR
MOVDAT2,A
RET
INT:
MOVDAT1,#00H初始化设置子程序
MOVDAT2,#00H
MOVCOM,#40H
LCALLPR1
MOVDAT1,#20H
MOVDAT2,#00H
MOVCOM,#41H
LCALLPR1
MOVDAT1,#00H
MOVDAT2,#08H
MOVCOM,#42H
LCALLPR1
MOVDAT1,#20H
MOVDAT2,#00H
MOVCOM,#43H
LCALLPR1
MOVCOM,#0A7H
LCALLPR12
MOVCOM,#80H
LCALLPR12
MOVCOM,#9CH
LCALLPR12
RET
CLEAR:
MOVDAT1,#00H设置显示存储器首地址
MOVDAT2,#00H
MOVCOM,#24H
LCALLPR1
MOVR3,#00H设置循环量8K字节
MOVR4,#20H
MOVCOM,#0B0H设置自动写方式
LCALLPR12
CLEAR1:
LCALLST3判状态位S2
MOVA,#00H置数据0
LCALLPR13写入数据
DJNZR3,CLEAR1循环
DJNZR4,CLEAR1
MOVCOM,#0B2H设置自动写结束指令
LCALLPR12
RET
WRI_CC:
PUSHO_X将字模数据送出显示
PUSHO_Y
MOVA,O_Y
MOVB,#20H
MULAB
ADDA,O_X
MOVO_X,A
MOVA,B
ADDCA,#08H
MOVO_Y,A
MOVR0,#0C0H
MOVCOUNT,#10H
WRI_CC1:
MOVDAT1,O_X
MOVDAT2,O_Y
MOVCOM,#24H
LCALLPR1
MOVA,@R0
MOVDAT2,A
INCR0
MOVA,@R0
INCR0
MOVDAT1,A
MOVCOM,#0C0H
LCALLPR11
MOVDAT2,DAT1
LCALLPR11
MOVA,#20H
ADDA,O_X
MOVO_X,A
CLRA
ADDCA,O_Y
MOVO_Y,A
DJNZCOUNT,WRI_CC1
POPO_Y
POPO_X
RET
DL1MS:
MOVR4,#0C0H
DLY1:
NOP
DJNZR4,DLY1
RET
DL10MS:
CALLDL1MS
CALLDL1MS
CALLDL1MS
CALLDL1MS
CALLDL1MS
CALLDL1MS
CALLDL1MS
CALLDL1MS
CALLDL1MS
CALLDL1MS
RET
DELAY:
MOVR5,#0C8H。
延时1秒
DL5MS:
MOVR4,#0FAH
DLY:
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
DJNZR4,DLY
DJNZR5,DL5MS
RET
INCLUDE'MENG.ASM'
END
MENG.ASM的开头部分如下所示由于该篇科幻小说太长故只列出了开头每行为15个汉字标点
符号全部采用全角
TABLE:
DB'第一章单杰圣士'
DB'邦托乌是矗立大地的最伟'
DB'大的都会地球上历史最悠久的城'
DB'市自三千二百五十年前地球上'
DB'所有的民族由经济共同体发展至政'
DB'治大统一的国家代表中央权力核'
DB'心的联邦政府便在这从未有过的'
DB'宏伟都会里成立'
DB'邦托乌的存在代表了旧'
DB'有文明的消失再没有国界宗教'
DB'民族这类使人世纷争永无休止的'
DB'因素存在着'
DB'经过毁灭性的战争后联邦国'
DB'象浴火后的凤凰获得新的生命'
DB'在联邦政府强有力的统治下这饱'
DB'经劫难的星球终于出现了前所未'
DB'有的长治久安'
DB'邦托乌外还有四十八个大'
DB'城市全球二十多亿人便聚居在这'
DB'些城市里城市外是受到核污染和'
DB'宇宙射线侵袭的废墟据联邦政府'
DB'的宣告它们已不适合任何生命的'
DB'繁衍邦托乌里最著名的建筑物'
DB'是联邦政府元首和部长们办公的'
DB'三角大楼这与众不同的建筑物'
DB'是世界上最高的建筑物亦是人'
DB'类建筑技术的顶尖杰作联邦政府'
DB'的建筑法令内明文规定不准'
DB'建造比她更高的建筑物使她永背'
DB'着最伟大的美誉'
DB'人们都唤她作金字塔'
DB'她代表一个伟大时代的产生'
DB'象征古老智慧变成被嘲弄和讪笑对'
DB'象的年代君临大地'
只要遵守该格式将全部内容录入经汇编无误后,将生成的BIN文件写入P89C51RD2并保证整个硬件
电路正确那么上电复位后就请欣赏您的科幻小说吧
参考文献
[1]徐卓农,张永忠.单片机系统中的汉字显示.单片机与嵌入式系统应用.2001(7>:
3134
[2]李维提,郭强.液晶显示应用技术.第1版.北京:
电子工业出版社.2000.3
[3]王士元.C高级实用程序设计.第1版.北京清华大学出版社.1996.6
[4]P89C51RX2DATASHEET.PhilipsSemiconductors.2001.
[5]MTG-F24128CMNHSCW,LCDMODULESPECIFICATIONFORCUSTOMERSAPPROVAL.MicrotipsTechnology
Inc.1999.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 硬件 汉字库 方案 应用