基于单片机的智能终端中汉字显示的处理

发布者:渤海湾最新更新时间:2012-03-08 来源: 微计算机信息 关键字:单片机  汉字库  字模 手机看文章 扫描二维码
随时随地手机看文章

引言
     近年来,以单片机以及嵌入式系统平台为基础的各种智能终端广泛应用于各行各业的专用设备和产品中,也将逐渐渗透到家用电器和各种消费类电子产品中。
     单片机以其价格低廉、技术成熟而广泛应用于各种低端产品之中,但是由于单片机的寻址能力有限,限定了其最大的存储空间。比如最常用的MCS-51单片机,其直接寻址的数据存储空间为64k字节,如果通过扩展来得到更大的存储空间,既增加了系统成本,也为数据读取操作带来了不便(对扩展区间的访问要通过端口操作实现)。所以在单片机系统的设计中,存储空间的大小是一个很重要的因素。
     在PC机上的汉字显示,是来自存储在PC机上的汉字库。汉字库中的汉字以点阵形式组成。如果以一个16x16点阵的汉字库作为基本字模库,每个汉字占32 个字节。GB2312中规定了6763个二级汉字,则需要的存储空间大体为6763×32字节,约200多K字节。显然,如果要在单片机终端上显示汉字,不可能把以上所有的“汉字库”信息都放在单片机系统的存储空间中。
     本文以我实验室独立开发的智能餐饮信息系统为例,首先介绍关于汉字显示的基础知识,然后说明在实际应用中如何对系统汉字库进行裁减,只保留需要在终端上显示的“汉字库”信息,最后介绍在实际应用中会涉及到的有关字模提取和字模转化的处理方法。

1:关于汉字显示的基础知识
    在中文WIN9X下,我们输入一个双八位字节,就得到一个汉字,就会认为这双八位字节就是对应这样的字形,这是错误的。这个双八位字节被称为汉字的内码(详见下文),内码对于字库来说,只是查找字形的索引。通过这个双八位字节可以唯一的从汉字库中查询得到其对应的汉字字形数据(字模)。对应不同编码标准的字体,内码对应了不同的字形。我们常用的是国标GB2312<<信息交换用汉字编码字符集>>,包含了最常用的简体中文文字。
    如果系统所使用的“汉字库”中每个汉字按16x16点阵模式存放,则每个汉字由16x16=256个点组成,占用16x2=32个字节的连续内存单元。每个字节有8位,每一位都有两种状态,即亮或暗,分别用1或0来表示。在16x16点阵中,用各个位的亮暗来表示一个字,凡是笔画经过的地方都为1(亮), 没有笔画的地方都为0(暗),这样就可以表示不同的汉字。
    图1 是“大”字16x16点阵模式排列放大后的结果。

 

      在PC机中,组成字模的32个字节默认的排列顺序如图2所示:每行两个字节,低字节为DB0~DB7,高字节为DB8~DB15,每字节8比特,共16行32个字节。图中标出了第1、第2个字节和第31、第32个字节的存放位置。


    于是,我们可以得到“大”字的汉字字模(32个字节,10进制表示):(1,0,1,0,1,0,1,0,1,4,255,254,1,0,2,128,2,128,2,64,4,64,4,32,8,16,16,14,96,4,0,0)

2.字模提取及数据文件下载
2.1 在实际应用中,需要进行字模提取来适应有限的存储空间
     我实验室独立开发的餐饮业信息系统中就是应用单片机来实现智能点菜终端。系统构成如图3所示:

 


     在以上系统中,终端中存储着所有的菜谱信息,操作员通过点菜终端可以浏览菜谱。简单的操作流程为:当操作员通过终端点好了菜以后,终端以无线方式将菜肴信息发送到基站,基站通过串口将数据发送给服务器,服务器对数据进行处理之后要进行入库、打印和向终端返回等操作。
      在本系统中所采用的单片机为MSC-51,带32K的外部RAM和128K的FLASH存储器。其中,128K字节的FLASH存储空间用作数据存储器,记录了菜谱、桌位等和业务相关的信息,另外有64K字节用作存储汉字库(字模)。
     GB2312中规定常用的两级汉字6763个(每个汉字有32字节),占用200多K字节的存储空间。显然,不能把汉字库中的所有汉字字模都下载到终端上,只能是选择终端需要显示的汉字的字模进行提取和下载。终端的64K存储空间可以存储大约2000个汉字。在实际应用中一般酒店的菜肴数量在 200~600之间,要用到的汉字数在400~1800之间,所以64K的存储空间足够本系统的应用。

2.2 如何进行字模提取和下载处理
     在本系统中,终端数据存储区中的字库信息、菜谱、桌位等业务信息是从服务器上下载得到的。首先,服务器中的处理程序提取相关数据并生成各个下载信息文件,然后处理程序将这些下载文件下载到终端上。系统和终端通过串口线相连,以串口通信方式将数据下传到终端的数据存储区。[page]

    字模裁减及填充终端字库下载文件流程如图4 所示:

    首先,运行在服务器上的处理程序遍历数据库中的菜谱表、桌位表等所有包含下载信息的、带有汉字的表记录。从中找到需要下载的汉字,根据这些汉字的内码,从系统字库中得到汉字的字模,经过字模转化(在后面介绍),然后保存在字库下载文件中。
    为了保证下传的汉字字模不会重复,在数据库中创建一个“汉字表”来存储每个经过筛选的汉字的信息。表中有两个字段,一个用来存储汉字的内码,另一个用来存储该汉字字模在字库下载文件中的偏移地址(终端程序可以通过某个汉字在字库下载文件中的偏移地址来唯一确定该汉字的字模存放位置)。每得到一个汉字的内码时,先到汉字表中查询表中是否已经包含了该汉字,再决定是否进行提取和下载处理。
然后,处理程序逐个遍历菜谱表、桌位表等数据表项来生成菜谱下载文件、桌位下载文件等。这些下载文件中涉及到的汉字,以该汉字的字模在终端下载字库文件中的偏移地址来标识。这样每个汉字可以用两个字节唯一标识。
    最后,处理程序将以上这些下载文件通过串口下传给终端,终端将下载文件的内容保存在数据存储区中,并记录存放字库下载文件数据区的起始地址,记为A。当需要显示汉字时,终端程序先得到该汉字在下载文件中的偏移地址,记为B,然后计算出该汉字字模的存放位置(A+B),从此位置开始连续读取32字节,就得到了该汉字字模数据,之后通过驱动液晶屏将汉字显示出来。

3.需要注意的关键技术
3.1 汉字字模的提取
    先说明一下在中文信息交换标准GB2312中涉及到的三个概念:区位码、国标码、内码。
     中文国标字符集是一个94×94的矩阵,其中每一个汉字(包括数字、英文字母和标点符号)都是二维矩阵中的某个元素。这样,每一个汉字都可以用一个二元组来表示(x,y)。其中,x是该字所在的行号,y为列号。
     GB2312在此基础上对矩阵进行划分,分为94个区,每区94位,x定义了该字所在的行号,y表示该字所在的位号,x和y均以二进制或十六进制表示。这就是“区位码”,例如:“啊”字的区位码为(0x10,0x01),表示位于16区第一位。于是汉字库中的字模存放位置(相对于字库文件头的偏移地址)可以由区位码计算得到:偏移地址=区码×94+位码。那么“啊”字的字模相对于字库文件头的偏移地址等于16×94+1=1505(十进制表示)。
     但是许多低位数字已被其它领域所占用,比如:0x06表示通信确认回答标志。为了不与已经存在的信码相混淆,GB2312在每个区位码上加上0x20,这样形成的码叫国标码。例如:“啊”字的国标码为(0x30,0x21)。
     由于通用的ASCII字符的最高位为0,为了在计算机内部和之间传输汉字时可以和ASCII码区别开来,将表示汉字的两个字节的最高位都置1。这样,相当于在国标码基础上高低字节同时加了0x80,这就是上面提到的内码。比如:“啊”字的内码为(0xB0,0xA1)。在计算机内部,用内码来唯一标识一个汉字。在程序中,通过调用系统函数取得某个汉字的ASCII字符表示,也就得到了这个汉字的内码。
     在明白了内码和区位码之间的关系后,我们可以根据某个汉字的内码计算得到该汉字的区位码;再通过区位码计算得到该汉字的字模在汉字库表中的偏移地址;从此地址开始的连续32个字节就是该汉字的字模信息。

3.2 字模转换
     图1中所示的汉字显示与字模存放的关系是PC机中的字模存储格式。而在单片机系统中,选择不同的液晶驱动器要求有不同的字模存储方式。比如我们在实际应用中,使用的是清华蓬远科贸公司的HD61202液晶驱动器。图5 指示了HD61202液晶驱动器所要求的字模存放与汉字显示的关系。图中标明了标出了第1、第2个字节和第31、第32个字节的存放位置。


图5.单片机系统汉字显示与字模存放的关系

     造成汉字显示与字模存放有这样关系是因为不同的液晶驱动器有不同的扫描显示方式。所以,为了能够将汉字正确的显示出来,针对不同的液晶驱动要做相应的字模转化。字模转化可以自编一个转化函数来实现,在写入终端字库下载文件前将32个字节的字模按位转化为需要的格式,再按字节顺序存入下载文件。
 经过转化之后,“大”字的字模(32个字节)变成:(32,32,32,32,32,32,160,127,0,64,64,32,16,12,3,0,160,32,32,32,32,48,32,0,1,6,8,16,32,96,32,0), 这就是存放在终端下载字库中的字模格式。


参考资料:
1:《单片机应用系统设计》 何立民 北京航空航天大学出版社 1994
2:《汉字编码标准与识别》

关键字:单片机  汉字库  字模 引用地址:基于单片机的智能终端中汉字显示的处理

上一篇:单片机在温度控制中的应用
下一篇:基于单片机设计的简易信号源

推荐阅读最新更新时间:2024-03-16 12:55

用AT89S52单片机设计制作的智能遥控开锁装置
本设计从低成本的角度,通过简单的数字电路、机械传动机构在已有的弹子锁上稍加改装。实现了遥控开锁的功能,且遥控编码的安全性好,通过程序解码可使安全性得到进一步的提高,同时该装置保留了钥匙开锁的功能,可在停电等特殊情况下使用。 机械传动设计 目前市场上销售的弹子锁的原理基本相同。都是通过锁芯的旋转,施加适当扭矩通过机械传动装置进行门闩开启、关闭。本装置在三保险双舌弹珠门锁上改装,待改装的门锁主要由锁体、斜舌、斜舌连杆、斜舌连动弹簧、方舌、方舌联片、方舌系统弹簧片方框、弹簧片、方舌系统支柱、外钥匙连动片轴、内钥匙转头组成。 该改装主要是内钥匙转头替换为电机驱动。将内钥匙转头卸下,可以看到有一个Ω形状的小孑L,利用现成的小孑L将电机轴
[单片机]
用AT89S52<font color='red'>单片机</font>设计制作的智能遥控开锁装置
​风口上的汽车半导体
汽车行业的这半年,是被“芯片荒”刷屏的半年。前有福特、通用因缺芯减产巨亏,后有特斯拉因芯片供应不足加州工厂暂时停产。2021年,全球车企无不笼罩在芯片短缺的阴影中。 汽车早已不仅仅是由钢铁铸就,更是由硅支撑。 这篇文章,我们挑选出了一些站在时代风口上的汽车半导体予以介绍。它们在眼下,以及不远的将来,会深刻影响汽车行业的命运。 一、MCU MCU(Microcontroller Unit)微控制单元,又名单片微型计算机,俗称单片机。MCU把CPU、内存(RAM、ROM)、计数器以及I/O等多种接口集成到一枚芯片上,形成了一个只有芯片大小,但能完成特定任务的计算控制系统。 MCU的构成形态相对简单,往往只能够胜任某
[汽车电子]
​风口上的汽车半导体
Atmel推出具有浮点单元的UC3 C系列32位AVR微控制器
微控制器 及触摸解决方案的领导厂商爱特梅尔公司(Atmel Corporation)在德国慕尼黑Electronica 2010展会上宣布推出首个带有浮点单元(floating point unit, FPU)的32位AVR微控制器( MCU )系列。新推出的AVR UC3 C MCU系列瞄准工业控制应用,具有高处理能力、真正的5V运作、高速通信和先进的安全性与可靠性的独特组合,并且采用一系列小型和微型封装供货。 IEEE 754-1985标准兼容FPU能够提高爱特梅尔AVR UC3 CPU 的计算性能、精度和动态范围。其固有的浮点计算可让设计工程师利用功能齐全的工具套件来设计传感器和控制器应用。此外,先进的数学计算
[工业控制]
2.4G无线MCU单片机TX8W7010介绍
泰芯TX8W7010 2.4G无线MCU产品介绍: 泰芯TX8W7010是一款支持2.4G无线通信功能,高性能低功耗的8051内核的无线MCU,工作主频最高为32MHz,内置4K+256字节闪存存储器(支持类 EEPROM),512字节SRAM。 TX8W7010是一款嵌入基带通信协议的单片2.4GHz 收发芯片,工作在2.4GHz~2.483GHz世界通用的ISM频段,适用于超低功耗无线应用领域。该芯片集成了射频收发器、频率合成器、多通信模式控制器、调制器、解调器等功能模块。可以对输出功率、频道选择以及协 议的设置等用途进行灵活配置。采用GFSK,FSK调制,支持2Mbps,1Mbps的数据速率,最大发射功率可以达到 8dB
[单片机]
2.4G无线<font color='red'>MCU</font><font color='red'>单片机</font>TX8W7010介绍
学习ARM和单片机哪个更实用
一般在8位 单片机 与ARM方面的嵌入式系统是有层次上的差别,ARM适用于系统复杂度较大的高级产品,如PDA、手机等应用。而8位 单片机 因架构简单,硬件资源相对较少,适用于一般的工业控制、消费性家电等等。对于一个单片机方面的软件 编程 初学者,应以HOLTEK系列或8051等8位单片机来做入门练习。而初学者应当具备软件 编程 相关知识,单片机一般软件编程是以汇编语言为主,各家有各家的语法,但大都以RISC的单片机架构为主,其中 RISC (Reduced Instruction Set Computer) 代表单片机的所有指令。都是利用一些简单的指令组成的,简单的指令代表 单片机的线路可以尽量做到最佳化,而提高执行速率。另外初学
[单片机]
51单片机入门 - 模拟PWM调制控制实验
PWM(脉冲宽度调制) 对模拟信号电平进行数字编码的方法 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 设计要求: 由于AT89系列单片机没有PWM控制器,所以通过定时器产生PWM 通过按钮控制P2.0输出高低电平的时间,占空比可调范围:0~100%,每次按下按钮以10%步进,通过示波器看到对应波形。 - - - - - - - - - - - - - - - - - -
[单片机]
51<font color='red'>单片机</font>入门 - 模拟PWM调制控制实验
【STC单片机学习】第四课:了解你的开发板(STC51)
1.4.1.开发板完全介绍 1.4.1.1、版本 (1)咱们的课程以普中科技STC89C51开发板套件V3.0(高配)为准,兼容V2.2(详细可以去第一节课看一下) (2)代码以V3.0为准,若V2.2有发现问题可以联系我 (3)单开发板售价168元(V3.0高配),如果需要可以去淘宝购买,这里不打广告。 而且普中科技在B站也有开发板配套课程,和本课程所用开发板是一样的。 链接:https://www.bilibili.com/video/av32132894/ 反响不咋滴。 1.4.1.2、配件 (1)连同开发板主板共12件,分别是:主板1个、杜邦线1卷、晶振和跳线帽1包、USB线(Android手机线)1条、步
[单片机]
【STC<font color='red'>单片机</font>学习】第四课:了解你的开发板(STC51)
在进行单片机设计时需要注意哪些事项
1.降低外时钟频率 外时钟是高频的噪声源,除能引起对本应用系统的干扰之外,还可能产生对外界的干扰,以8051单片机为例最短指令周期1μs时,外时钟是12MHz。而同样速度的Motorola单片机系统时钟只需4MHz微控制器产生的最有影响的高频噪声大约是时钟频率的3倍。 2.低噪声系列单片机 改进的技术将电源、地安排在两个相邻的引脚上,外部去耦电容在PCB设计上更容易安排。 3.时钟监测电路、看门狗技术与低电压复位 时钟监控有效与省电指令STOP是一对矛盾。只能使用其中之一。 看门狗技术是监测应用程序中的一段定时中断低电压复位技术是监测单片机电源电压,当电压低于某一值时产生复位信号。由于单片机技术的发展,单片机本身对电源电压
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved