硬件汉字库设计原理与应用_第1页
硬件汉字库设计原理与应用_第2页
硬件汉字库设计原理与应用_第3页
硬件汉字库设计原理与应用_第4页
硬件汉字库设计原理与应用_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、硬件汉字库设计原理与应用          摘要:本文论述了硬件汉字库的基本原理和具体制作步骤并利用P89C51RD2 作为主控CPU 240x128点阵的液晶和硬件汉字库将一部科幻小说嵌入其中开机后即可阅读文章中给出了具体的电路和相应的软件关键词:硬件汉字库 液晶显示 P89C51RD2随着液晶显示技术的发展和应用,越来越多的开发人员希望在自己开发的仪器设备中使用液晶屏幕来显示汉字,通常的汉字显示方式是先根据所需要的汉字提取汉字点阵如16x16 点阵,将点阵文件存入ROM 形成新的汉字编码,而在使用时则

2、需要先根据新的汉字编码组成语句再由MCU 根据新编码提取相应的点阵进行汉字显示,在这种显示方式中如果使用的汉字数量较大或语句较多时,利用汉字的新编码组成语句将是一件繁琐而枯燥的工作。如果有新的汉字加入那么汉字库的维护也成问题,而我们日常生活的一些手持工具上如手机快译通等等它们可以任意输入汉字不仅灵活性大而且检索速度快,这其中的主要原因就是在这些设备中固化了硬件汉字库。而半导体技术的发展使得大容量FLASH ROM 的价格大大下降从而使用硬件汉字库的仪器设备的成本大大下降,因此越来越多的技术开发人员开始关注起硬件汉字库希望能在自己开发的设备中设计并使用硬件汉字库,达到加快产品开发速度降低软件成本

3、的目的。一硬件汉字库相关知识1 汉字机内码国标码和区位码在PC 机的文本文件中,汉字是以机内码的形式存储的。每个汉字占用两个字节长度为了和ASCII码区别,范围从十六进制的0A1H 开始小于80H 的为ASCII 码,将机内码每个字节的最高位屏蔽掉,再以十六进制的形式显示出来则为国标码。将机内码的每个字节各减去0A0H 再以十进制显示出来,即为该汉字的区位码。例如"国"字的机内码国标码和区位码如表1 所示表1 国字的机内码国标码和区位码类别数值高位字节低位字节机内码B9FAH 1 0 1 1 1 0 0 1 1 1 1 1 1 0 1 0国标码397AH 0 0 1 1 1

4、 0 0 1 0 1 1 1 1 0 1 0区位码195AH 0 0 0 1 1 0 0 1 0 1 0 1 1 0 1 0即区位码机内码0A0AOH 就国字而言其区位码和机内码的关系为195AH 区位码0B9FAH 机内码0A0A0H记住这个关系是我们理解下面有关程序的关键2 国标汉字字符集与区位码根据对汉字使用频率程度的研究可把汉字分成高频字约100 个常用字约3000 个次常用字约4000 字罕见字约8000 个和死字约45000 个即正常使用的汉字达15000 个。我国1981年公布了通讯用汉字字符集基本集及其交换码标准GB2312-80 方案,把高频字常用字和次常用字集合成汉字基本字

5、符集共6763 个,在该字符集中按汉字使用的频度又将其分为一级汉字3755 个,按拼音排序二级汉字3008 个,按部首排序再加上西文字母数字图形符号等700 个,国家标准的汉字字符集GB2312-80 在汉字操作系统中是以汉字库的形式提供的汉字库结构作了统一规定如图1 所示此主题相关图片如下:即将字库分成94 个区每个区有94 个汉字,以位作区别每一个汉字在汉字库中有确定的区和位。编号用两个字节这就是所谓的区位码。区位码的第一个字节表示区号,第二个字节表示位号,因而只要知道了区位码就可知道该汉字在字库中的地址。每个汉字在字库中是以点阵字模形式存储的,如一般采用16x16 点阵形式,每个点用一个

6、二进制位表示,存1 的点当显示时可以在屏上显示一个亮点,存0 的点则在屏上不显示,这样就把存某字的16 16 点阵信息直接用来在显示器上按上述原则显示,则将出现对应的汉字如一个国字的16 16 点阵字模如图2 所示。当用存储单元存储该字模信息时将需32 个字节地址在图2 的右边写出了该字模对应的字节值此主题相关图片如下:3 液晶显示模块特性与字模数据汉字显示是国内应用图形液晶显示模块的目的之一,目前对硬件汉字库比较关心的技术人员大多是想将其应用到图形点阵液晶显示器中,但目前有关液晶显示的资料大多数是介绍通过字模软件取出的点阵数据是如何送往液晶显示器的,因此作者在此作一下比较要在液晶屏幕上显示出

7、这个点阵图形需要将相应的点阵数据送入液晶显示驱动器,但对于不同的液晶显示驱动器要显示同一图形所需要送入的数据排列顺序可能不同,作者曾经使用过内置D61202U 液晶显示驱动控制器和内置T6963C 液晶显示驱动控制器的液晶显示模块,同样是显示16 16 点阵的国字则需要的点阵数据如下HD61202UDB 000H,0FEH,002H,00AH,08AH,08AH,08AH,0FAHDB 08AH,08AH,08AH,00AH,002H,0FEH,000H,000HDB 000H,0FFH,040H,048H,048H,048H,048H,04FHDB 048H,049H,04EH,048H,0

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

9、HDB 041H,004H,041H,004H,041H,004H,04FH,0E4HDB 041H,044H,041H,024H,041H,024H,05FH,0F4HDB 040H,004H,040H,004H,07FH,0FCH,040H,004H这些数据也是通过字模软件得出的读者再与图2 中的32 个数据相比较可以看出两者在数值和排列顺序上都是一致的,正是这种特性使得笔者选择了内置T6963C 的液晶显示模块作为论述开发硬件汉字库的例子二汉字库的制作在本节中笔者将论述将16 16 点阵的宋体汉字库烧录到256KB 的存储器中的具体方法,这也是读者比较关心的问题。本例中使用了AT29C0

10、20 该产品是ATMEL 公司生产的高达256KB 的FLASH ROM ,读者也可以使用其它容量不小于256KB 的产品,但在具体电路设计时应注意引脚定义和逻辑关系,并在烧录时选择相应的型号UCDOS 软件有一个名字为HZK16 的文件,这就是16 16 的国标汉字点阵文件,在该文件中按汉字区位码从小到大依次存有:国标区位码中的所有汉字,每个汉字占用32 格字节,每个区为94 个汉字,如果显示其属性可以看出其大小为262KB 。当写入AT29C020A 时可以将多于256KB 的部分截去,实际上在国标汉字点阵字库中二级汉字排到第87 区,从第88 区开始就是空白,所以将多余部分截去不会影响实

11、际使用。在实际操作中硬件汉字库的制作和普通的程序存储器的编程没什么不同,注意将HZK16 文件调入时要使用二进制方式打开编程并校验成功后,即可将存储器取下备用,这样一个硬件汉字库就制作好了。针对不同的应用读者也可以选用其它大容量甚至是串行数据存储器从而可以扩展硬件汉字库的使用范围。在此也一并向大家推荐容量为512KB 甚至更大的存储器除了可以存储全部的国标汉字外还可以存储8 16 的ASCII 码点阵数据以及汉字语句编码数据,使用起来更加方便。串行数据存储器如AT45DB041B 等特点是占用口线少体积小和成本低如果对于速度要求不是很高的场合非常适宜三硬件汉字库使用电路在本节中笔者使用PHIL

12、IPS 公司的产品P89C51RD2 作为主控CPU ,使用内置T6963 控制器的240x128 点阵图形液晶显示器并结合硬件汉字库的使用,将一部3 万多字的小说嵌入其中,开机后就可以阅读小说。P89C51RD2 是PHILIPS 公司于2001 年发布的一款非常优秀的单片机,该单片机是基于8 位80C51单片机的派生产品,它在完全保留80C51 指令系统和硬件结构的大框架外发生了多方面的加强扩展翻新和创新,P89C51RD2 将原有的对外数据和程序存储器的16 位寻址机制加以利用,把片上的RAM 扩展到1K 字节,片上的FLASH EPROM 扩展到64K 字节,由于一个汉字的内码占用两个

13、字节,所以1024 字节可以存储512 个汉字所以64KB 的闪存可以存储3 万多汉字。本系统使用了Microtips Technology Inc.公司生产的内置Toshiba 公司生产的T6963C 的液晶显示器型号为MTG-F24128CMNHSCW 具有CCFL 背光相关接口信息如下此主题相关图片如下:此主题相关图片如下:硬件设计说明由于AT29C020 的容量为256KB 而80C51 系列微控制器只能>' target='_blank' class='infotextkey'>管理64KB 的数据空间所以可以将AT29C020 分

14、成8 页每页32KB 占单片机系统数据空间的0000 7FFFH 剩余32KB 空间为单片机系统的其它存储器和外设A15 反相后作为液晶显示器的片选LCD/CS P1.5 是控制液晶显示器正显和反显的该液晶显示器的复位电平为低电平与P89C51RD2 正好相反四显示原理与软件编制在第一节中我们已经得出国字的区位码为195AH 换算成十进制为2590 ,即国字的点阵位于第25 区的第90 个字的位置,相当于在文件HZK16 中的位置为32 (25-1) 94 (90-1) 75040B 以后的32 个字节为国的显示点阵。在本系统中AT29C020 的A15 A17 分别连接到P1 口的P1.0

15、P1.1 和P1.2 作为页选择控制A0A14 直接连接单片机的A0 A14 利用MOVX 指令连续取32 个字节送LCD 的相应位置就能实现正确的汉字显示。由于240 128 点阵的LCD 显示器每行只能显示15 个汉字16 16 点阵汉字所以可以将需要显示的语句按15 个汉字为1 行进行编写标点符号要用全角不足15 个汉字的则补空格这就是下面软件中的MENG.ASM 中的内容为方便读者将已经通过汇编的有关程序列出有关LCD 的具体使用方法请见文献2主程序C_ADD EQU 8001H 液晶命令地址D_ADD EQU 8000H 液晶数据地址DAT1 EQU 30HDAT2 EQU 31HC

16、OM EQU 32HCODE1 EQU 33HCOUNT EQU 34HO_Y EQU 35HO_X EQU 36HCOUNT_X EQU 37HORG 0000HSJMP STARTORG 0030HSTART: MOV SP, #60HORL AUXR, #02H EXTRAM 位1 访问外部数据存储器ANL AUXR1, #0FH ENBOOT=0 访问到FLASHCLR P1.5 正显LCALL INT 初始化设置子程序LCALL CLEAR 清屏MOV DPTR, #TABLE 科幻小说的开头MOV O_Y, #00HPUSH DPHPUSH DPLLOOP: POP DPLPOP

17、DPHMOV R0, #0E0H 字模数据暂存区MOV R7, #30 每个汉字为2 字节每行15 个汉字需30 字节PRHZ3: CLR AMOVC A, A+DPTRMOV R0,AINC R0INC DPTRDJNZ R7, PRHZ3PUSH DPHPUSH DPLMOV O_X, #00HMOV R0, #0E0HMOV COUNT_X, #15LCD112: MOV 24H, R0 24H 和25H 为暂存缓冲存内码INC R0MOV 25H, R0INC R0MOV A, 24HCLR CSUBB A, #0A1H 转换为区位码MOV 24H, AMOV A, 25HCLR CS

18、UBB A, #0A1HMOV 25H, AMOV A, R0PUSH ACCLCALL DPONHZ 取字模数据并存入0C0H 开始的寄存器LCALL WRI_CC 送出显示POP ACCMOV R0, AINC O_XINC O_XDJNZ COUNT_X,LCD112 1 行汉字送完跳转MOV A, O_YADD A, #10HMOV O_Y, AMOV A, O_YCJNE A, #80H,LOOPMOV O_Y, #00HLCALL DELAY 送完1 屏后延长时间以便于阅读LCALL DELAYLCALL DELAYLCALL DELAYLCALL DELAYLCALL DELAY

19、POP DPLPOP DPHPUSH DPHPUSH DPLMOV A, DPHSUBB A, #0DFH 小说结尾地址如果是结尾则复位重新开始JNC RST1JMP LOOPRST1: MOV A, DPLSUBB A, #2AHJNC RSTJMP LOOPRST: JMP STARTDPONHZ: MOV A, 24H 取字模数据至0C0H 开始的内部存储区MOV B, #94MUL ABADD A, 25HMOV 25H, ACLR AADDC A, BMOV 24H, ACLR CRRC ACLR CRRC AMOV P1, ALCALL RL245CLR 24H.7MOV DPH,

20、 24HMOV DPL, 25HMOV R2, #32MOV R1, #0C0HDPHZ2: MOVX A, DPTRINC DPTRMOV R1, AINC R1DJNZ R2, DPHZ2RETRL245: MOV R7, #05 24H25H 左移5 位RLL1: CLR CMOV A, 25HRLC AMOV 25H,AMOV A, 24HRLC AMOV 24H, ADJNZ R7, RLL1RETR_ST: MOV DPTR, #C_ADD 读状态MOVX A, DPTRRETST01: LCALL R_ST 读写一数据前JNB ACC.0, ST01JNB ACC.1, ST01

21、RETST2: LCALL R_ST 连续读前JNB ACC.2, ST2RETST3: LCALL R_ST 连续写前JNB ACC.3, ST3RETST6: LCALL R_STJB ACC.6, ERRRETERR: LJMP ST6PR1: LCALL ST01MOV A, DAT1LCALL PR13PR11: LCALL ST01MOV A, DAT2LCALL PR13PR12: LCALL ST01MOV A, COMLJMP PR14PR13: MOV DPTR, #D_ADDPR14: MOVX DPTR, ARETPR2: LCALL ST01MOV DPTR, #D_

22、ADDMOVX A, DPTRMOV DAT2, ARETINT: MOV DAT1, #00H 初始化设置子程序MOV DAT2, #00HMOV COM, #40HLCALL PR1MOV DAT1, #20HMOV DAT2, #00HMOV COM, #41HLCALL PR1MOV DAT1, #00HMOV DAT2, #08HMOV COM, #42HLCALL PR1MOV DAT1, #20HMOV DAT2, #00HMOV COM, #43HLCALL PR1MOV COM, #0A7HLCALL PR12MOV COM, #80HLCALL PR12MOV COM, #

23、9CHLCALL PR12RETCLEAR: MOV DAT1, #00H 设置显示存储器首地址MOV DAT2, #00HMOV COM, #24HLCALL PR1MOV R3, #00H 设置循环量8K 字节MOV R4, #20HMOV COM, #0B0H 设置自动写方式LCALL PR12CLEAR1: LCALL ST3 判状态位S2MOV A, #00H 置数据0LCALL PR13 写入数据DJNZ R3, CLEAR1 循环DJNZ R4, CLEAR1MOV COM, #0B2H 设置自动写结束指令LCALL PR12RETWRI_CC: PUSH O_X 将字模数据送出

24、显示PUSH O_YMOV A, O_YMOV B, #20HMUL ABADD A, O_XMOV O_X, AMOV A, BADDC A, #08HMOV O_Y, AMOV R0, #0C0HMOV COUNT, #10HWRI_CC1:MOV DAT1, O_XMOV DAT2, O_YMOV COM, #24HLCALL PR1MOV A, R0MOV DAT2,AINC R0MOV A, R0INC R0MOV DAT1, AMOV COM, #0C0HLCALL PR11MOV DAT2, DAT1LCALL PR11MOV A, #20HADD A, O_XMOV O_X,

25、ACLR AADDC A, O_YMOV O_Y, ADJNZ COUNT, WRI_CC1POP O_YPOP O_XRETDL1MS: MOV R4,#0C0HDLY1: NOPDJNZ R4,DLY1RETDL10MS: CALL DL1MSCALL DL1MSCALL DL1MSCALL DL1MSCALL DL1MSCALL DL1MSCALL DL1MSCALL DL1MSCALL DL1MSCALL DL1MSRETDELAY: MOV R5,#0C8H ;延时1 秒DL5MS: MOV R4,#0FAHDLY: NOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOP

26、DJNZ R4,DLYDJNZ R5,DL5MSRETINCLUDE 'MENG.ASM'ENDMENG.ASM 的开头部分如下所示由于该篇科幻小说太长故只列出了开头每行为15 个汉字标点符号全部采用全角TABLE: DB ' 第一章单杰圣士'DB ' 邦托乌是矗立大地的最伟'DB '大的都会地球上>' target='_blank' class='infotextkey'>历史最悠久的城'DB '市自三千二百五十年前地球上'DB '所有的民族由>' target='_blank' class='infotextkey'>经济共同体发展至政'DB '治大统一的国家代表中央权力核'DB '心的联邦政府便在这从未有过的'DB '宏伟都会里成立'DB ' 邦托乌的存在代表了旧'DB '有文明的消失再没有国界宗教'DB ' 民族这类使人世纷争永无休止的'DB '因素存在着'DB ' 经过毁灭性的战

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论