纬图虚拟仪器论坛

 找回密码
 立即注册
搜索
查看: 17206|回复: 1

在单片机系统中建立G B K汉字库(转)

[复制链接]
发表于 2012-7-31 18:31:48 | 显示全部楼层 |阅读模式
        使用过液晶的电子工程师普遍达成这样一个共识:当设计有大量汉字的显示系统时,愿意选取自带汉字库的液晶模块(LCM),如果必须要自行设计汉字库,总是比较头疼。其实自制硬件汉字库也不是很困难,只是对存储单元有一定的要求。常见的带字库液晶模块,所带字库一般都是一二级字库,如果需要显示罕见字(即扩展字库独有的汉字),目前市面上还没有相应的液晶产品。本文介绍
了一套单片机显示系统,可以解决上述种种问题,而且硬件结构明晰,软件设计精简合理。
1、GBK汉字内码扩展规范
        正常使用的汉字有15 000个左右,其中高频字、常用字、次常用字约7 000个,罕见字约8 000个。根据GB2312—80国家标准,把高频字、常用字、次常用字集合成汉字基本字符集,在该字符集中按照汉字使用的频度,又将其分为一级汉字3 755个,二级汉字3 008个,再加上西文字母、数字、图形符号等700个。罕见字并不在此国标中。
        GBK全名为汉字内码扩展规范,英文名Chinese In—ternal Code Specification。K 即“扩展”所对应的汉语拼音(Kuo Zhan)中“扩”字的声母。GBK 采用双字节表示,总体编码范围为8140~FEFE,首字节在81~FE,尾字节在40~FE,剔除xx7F。总计23 940个码位,共收入2l 886个汉字和图形符号,其中汉字(包括部首和构件)21 003个,图形符号883个。GBK汉字库通常被称为“扩展字库”,该标准基本上已经将所有汉字都包括在内了。
        在互联网上可以找到一个名字为GBK16的文件,这就是16×16点阵的GBK 国家标准扩展汉字库,大小为770 l12字节。
2、设计思路
        本设计充分考虑了系统的可扩展性,所以选取器件时,在容量和性能上留出了足够的空间。单片机选取AT89C51RD2,有64 KB的程序空间。片外存储器选用Samsung公司的NAND Flash K9F5608,有32 MB存储空间,扩展字库占用不到1 MB空间,其余空间可作它用。液晶使用带中文字库图形点阵液晶显示模块TNS—G320240FTDEW 一1w,可显示320×240个点阵,内建512 KB ROM,提供一、二级简繁体中文字库。
        一个16×16点阵的汉字(如喁,发音为wad,使用存储单元存储该汉字信息时,需要占用32个字节:
        OO 00 01 F8 79 O8 49 E8 49 28 49 28 4B FC 4A O4        4A F4 7A 94 4A 94 O2 F4 O2 94 O2 O4 O2 14 O2 O8
        当需要在液晶上显示这个汉字时,先要根据相对应的双字节GBK 国标码(q一0x86,w一0xB7),然后根据汉字内码的调用公式:
        字库中的位置一HANZIKU_ADDRESS+(q-0x81)×(16×12-1)+ (w/0x10-4)× 16+w%0x10式中:q为内码低8位,w为内码高8位。得出“HANZIKU_ADDRESS+0x8640”,在Flash中找到数据地址后连续读取32个字节,然后发送到液晶指定位置显示。
        再来介绍一下如何将GBK汉字库文件GBK16装载到NAND Flash中。这里介绍两种方法,都比较简单易行。第一种是使用专用编程器直接对Flash进行数据写入,需要指定汉字库的起始地址HANZIKU_ADDRESS,笔者使用的是Wellon VP一48B通用编程器。第二种是在硬件系统中加入串口,通过PC机上的第三方串口调试工具“串口调试助手SComAssistant V2.1”向单片机系统发送汉字库文件GBK16,单片机将收到的数据按照Flash的存储规则,存入存储器的指定起始空间内,起始地址HANZIKU_ADDRESS。该方法对硬件要求低,使用简便,能够按照实际需要在系统中随意调整字库的位置。


回复

使用道具 举报

发表于 2012-12-9 23:06:23 | 显示全部楼层
顶!我原本不知道是怎么回事,这篇文章让我忧了一个概念!谢谢!
回复 支持 反对

使用道具 举报

发表于 2022-11-8 12:55:47 | 显示全部楼层
讨债公司 www.zhent.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|纬图虚拟仪器

GMT+8, 2024-12-12 08:45 , Processed in 0.048500 second(s), 16 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表