新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 硬件汉字库设计原理与应用

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

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

一硬件汉字库相关知识

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

此主题相关图片如下:
硬件汉字库设计原理与应用
即将字库分成94 个区每个区有94 个汉字,以位作区别每一个汉字在汉字库中有确定的区和位。编号用两个字节这就是所谓的区位码。区位码的第一个字节表示区号,第二个字节表示位号,因而只要知道了区位码就可知道该汉字在字库中的地址。每个汉字在字库中是以点阵字模形式存储的,如一般采用16x16 点阵形式,每个点用一个二进制位表示,存1 的点当显示时可以在屏上显示一个亮点,存0 的点则在屏上不显示,这样就把存某字的16 16 点阵信息直接用来在显示器上按上述原则显示,则将出现对应的汉字如一个国字的16 16 点阵字模如图2 所示。当用存储单元存储该字模信息时将需32 个字节地址在图2 的右边写出了该字模对应的字节值

此主题相关图片如下:
按此在新窗口浏览图片

3 模块特性与字模数据
汉字显示是国内应用图形模块的目的之一,目前对硬件汉字库比较关心的技术人员大多是想将其应用到图形点阵液晶显示器中,但目前有关液晶显示的资料大多数是介绍通过字模软件取出的点阵数据是如何送往液晶显示器的,因此作者在此作一下比较要在液晶屏幕上显示出这个点阵图形需要将相应的点阵数据送入液晶显示驱动器,但对于不同的液晶显示驱动器要显示同一图形所需要送入的数据排列顺序可能不同,作者曾经使用过内置D61202U 液晶显示驱动控制器和内置T6963C 液晶显示驱动控制器的液晶显示模块,同样是显示16 16 点阵的国
字则需要的点阵数据如下
HD61202U
DB 000H,0FEH,002H,00AH,08AH,08AH,08AH,0FAH
DB 08AH,08AH,08AH,00AH,002H,0FEH,000H,000H
DB 000H,0FFH,040H,048H,048H,048H,048H,04FH
DB 048H,049H,04EH,048H,040H,0FFH,000H,000H
由于HD61202U 显示存储器的特性不能将计算机内的汉字库提出直接使用,需要将其旋转90 度后再写入,也就是有些字模软件如zimo22.exe 可到www.c51bbs.com上免费下载设置为竖向倒序取模后所得的数据其生成字库的格式是前16 个字节为上半部16 8 点阵字模数据后16 个字节为下半部16x8 点阵字模数据,读者如果与图2 中的相应数据作比较可以看出如果仅仅从数据上是看不出两者的联系的,如果在这种液晶显示器上要使用硬件汉字库则读出的点阵信息必须经过处理方可送出显示增加了使用难度
T6963C
DB 000H,000H,07FH,0FCH,040H,004H,05FH,0F4H
DB 041H,004H,041H,004H,041H,004H,04FH,0E4H
DB 041H,044H,041H,024H,041H,024H,05FH,0F4H
DB 040H,004H,040H,004H,07FH,0FCH,040H,004H
这些数据也是通过字模软件得出的读者再与图2 中的32 个数据相比较可以看出两者在数值和排列顺序上都是一致的,正是这种特性使得笔者选择了内置T6963C 的液晶显示模块作为论述开发硬件汉字库的例子

二汉字库的制作

在本节中笔者将论述将16 16 点阵的宋体汉字库烧录到256KB 的存储器中的具体方法,这也是读者比较关心的问题。本例中使用了AT29C020 该产品是ATMEL 公司生产的高达256KB 的FLASH ROM ,读者也可以使用其它容量不小于256KB 的产品,但在具体电路设计时应注意引脚定义和逻辑关系,并在烧录时选择相应的型号UCDOS 软件有一个名字为HZK16 的文件,这就是16 16 的国标汉字点阵文件,在该文件中按汉字区位码从小到大依次存有:国标区位码中的所有汉字,每个汉字占用32 格字节,每个区为94 个汉字,如果显示其属性可以看出其大小为262KB 。当写入AT29C020A 时可以将多于256KB 的部分截去,实际上在国标汉字点阵字库中二级汉字排到第87 区,从第88 区开始就是空白,所以将多余部分截去不会影响实际使用。在实际操作中硬件汉字库的制作和普通的程序存储器的编程没什么不同,注意将HZK16 文件调入时要使用二进制方式打开编程并校验成功后,即可将存储器取下备用,这样一个硬件汉字库就制作好了。针对不同的应用读者也可以选用其它大容量甚至是串行数据存储器从而可以扩展硬件汉字库的使用范围。在此也一并向大家推荐容量为512KB 甚至更大的存储器除了可以存储全部的国标汉字外还可以存储8 16 的ASCII 码点阵数据以及汉字语句编码数据,使用起来更加方便。串行数据存储器如AT45DB041B 等特点是占用口线少体积小和成本低如果对于速度要求不是很高的场合非常适宜

三硬件汉字库使用电路

在本节中笔者使用PHILIPS 公司的产品 作为主控CPU ,使用内置T6963 控制器的240x128 点阵图形液晶显示器并结合硬件汉字库的使用,将一部3 万多字的小说嵌入其中,开机后就可以阅读小说。 是PHILIPS 公司于2001 年发布的一款非常优秀的单片机,该单片机是基于8 位80C51单片机的派生产品,它在完全保留80C51 指令系统和硬件结构的大框架外发生了多方面的加强扩展翻新和创新, 将原有的对外数据和程序存储器的16 位寻址机制加以利用,把片上的RAM 扩展到1K 字节,片上的FLASH EPROM 扩展到64K 字节,由于一个汉字的内码占用两个字节,所以1024 字节可以存储512 个汉字所以64KB 的闪存可以存储3 万多汉字。
本系统使用了Microtips Technology Inc.公司生产的内置Toshiba 公司生产的T6963C 的液晶显示器型号为MTG-F24128CMNHSCW 具有CCFL 背光相关接口信息如下

此主题相关图片如下:
硬件汉字库设计原理与应用


此主题相关图片如下:
按此在新窗口浏览图片
硬件设计说明
由于AT29C020 的容量为256KB 而80C51 系列微控制器只能管理64KB 的数据空间所以可以将
AT29C020 分成8 页每页32KB 占单片机系统数据空间的0000 7FFFH 剩余32KB 空间为单片机系统的其它存储器和外设
A15 反相后作为液晶显示器的片选LCD/CS P1.5 是控制液晶显示器正显和反显的该液晶显示器的
复位电平为低电平与P89C51RD2 正好相反


上一页 1 2 3 下一页

评论


相关推荐

技术专区

关闭