基于LPC2138的中文输入系统设计
扫描二维码
随时随地手机看文章
摘要:给出一种基于Philips公司的ARM7微控制器LPC2138的中文输入系统的设计方法。系统采用4×4接口键盘、LCM240128图形液晶模块以及存储器等实现T9中文输入法,可以进行汉字、英文、数字符号等文本信息的输入。该中文输入系统可广泛地应用于各类电子设备的研发,具有较高实用价值。
关键词:ARM7;LPC2138;中文输入
引言
目前,以液晶和数字键盘实现的人机交互式界面在智能终端中广泛采用。在不同的应用场合,对人机界面的要求也不同,一些情况下只要求简单参数的显示和选择,而在一些信息终端中还要求中文的输入。因此,研究基于单片机的中文输入方法,对于各类电子装置的开发具有一定的现实意义。本系统基于ARM7微控制器LPC2138,通过扩展4×4键盘和液晶实现了T9中文输入系统的设计。
1 LPC2138简介
Philips公司的32位ARM7微控制器LPC2138具有强大的存储空间,内嵌32 KB片内静态RAM和512 KB的Flash存储器;可以实现在系统可编程(ISP)、在应用可编程(IAP);2个8路10位A/D转换器,1个D/A转换器,转换迅速准确;引脚资源丰富,多达47个可承受5 V电压的通用I/O口;多个串行接口,包括2个16C550工业标准UART、2个高速I2C接口、SPI,以及具有缓冲作用和数据长度可变功能的SSP协议。LPC2138可以移植μC/0S-II操作系统,软件的可移植性好,工作可靠。
2 硬件系统
2.1 系统体系结构
一个完整的文本输入系统由主控器、输入设备和显示设备3部分构成。本系统结构如图1所示。采用LPC2138芯片作为主控器,扩展4×4接口键盘作为输入设备,扩展LCM240128图形液晶模块作为显示设备。此外,系统还扩展了E2PROM AT24C256作为字库字模数据存储芯片。
2.2 4×4键盘电路
如图2所示,系统扩展4×4简易键盘,通过行列扫描的方式读取键值。数字、字母、符号等共用同一套键盘,具有多种切换模式,供用户选择。“1”键可调用符号输入函数;“O”和“#”键分别实现字母和汉字、数字和汉字之间的切换;“*”键可实现输入字符的退格;“↑ ”“↓”键可以对输出拼音列表进行光标移动,以及对汉字列表进行翻页操作;“确定”和“取消”键分别实现拼音和汉字输入的确认和取消。按键功能定义如图3所示。
2.3 存储模块电路
利用ARM7的I2C总线扩展E2PROM AT24C256,接口电路如图4所示。AT24C256存储空间32 KB,作为字库存储芯片来存储24×24国标二级字库字模数据。通过获取汉字字模数据,实现图形液晶模块对汉字的显示。
2.4 液晶模块电路
液晶模块电路如图5所示。采用图形液晶显示模块LCM240128作为显示设备。其内部不含中文字库,配合字库存储芯片AT24C256可以实现24×24中文汉字的输入。
3 软件系统
T9拼音输入系统软件部分的主要任务是将键盘输入的数字序列转换成汉字。其主要由3部分构成:
①将键盘输入的数字序列转换为拼音编码;
②根据拼音编码找到对应的汉字编码;
③根据汉字编码找到二级字库存储芯片中对应的汉字字模数据的首地址。
3.1 拼音、汉字表格式定义
在程序中,拼音编码的数据格式如下:
拼音编码索引表的定义为一个常量数组,每一个拼音的编码都作为一个元素存在。其格式如下:
汉字编码表为多个常量数组构成。其格式如下:
汉字编码表中,每一个汉字对应1个ACSII码,根据ASCII码可以分离出汉字在汉字内码表的行、列位置,用于查找字库中对应汉字的字模的首地址。
3.2 汉字库字模首地址查询
汉字内码是一个4位十六进制数,区位码是一个4位的十进制数,每个汉字内码或区位码都对应着一个唯一的汉字或符号。图6(a)和6(b)分别为区位码表和汉字内码表。其对应关系为:汉字内码列=区码+0xaO;汉字内码行=位码+0xaO。
在E2PROM中,二级字库字模的存储格式为一维数组,而在汉字输出匹配时采用的是汉字内码格式(2个十六进制数表示),所以需要将汉字内码的行和列二维地址换算成一维地址,从而对应找到24x 24字库中汉字字模的起始位置。
对于最终匹配好的汉字编码表中的汉字,取出其汉字内码的行和列分别作为code_a和code_b(以“白”字为例,其汉字内码为B0D7,则code_a=0xb0、code_b=0xd7)。则其对应的存储器中24×24汉字字模首地址的计算关系为:存储器中汉字字模首地址=[(code_a一0xal)+(code_b一0xb0)×94]×(24×24/8)。
3.3 文字输入判断
T9键盘输入时,需要对键值进行一系列的判断。根据功能的不同,分别需要对数字键、翻页键、退格键、数字/汉字切换键、字母/汉字切换键、符号键以及确定、取消键进行顺次的判断。其判断流程如图7所示。
3.4 数字、拼音和汉字匹配输出
拼音编码索引表和汉字编码数组是一一对应的,如何实现对输入数字序列与拼音列表之间的映射、拼音与汉字列表之间的映射、汉字与字库芯片中汉字字模之间的映射是该系统的核心问题。
如图8所示,数字、拼音和汉字匹配输出程序步骤(以‘白’字为例):
①系统针对于所输入的数字序列“224”,在拼音编码索引表中进行匹配,得到两个拼音“bai”和“cai”;
②通过光标选择“bai”后,在拼音编码索引表中可以获得汉字编码表中对应汉字的位置,即T9PY_IDX数组中的*hz_bai;
③在汉字编码表中获取hz_bai[]数组数据,送屏幕进行显示“白百摆败拜佰柏稗”;
④通过数字键选择对应的汉字后,获取该汉字的ASCII码BOD7;
⑤将汉字内码的ASCII码通过汉字内码地址的转换,找到存储芯片中该汉字字模数据的首地址,将字模数据送液晶显示,完成一个汉字的输入。
结语
本文介绍了基于Philips公司的ARM7微控制器LPC2138的T9中文输入系统的设计方法,实现了汉字、英文字母、数字符号等文本信息的输入。本方案可以为基于单片机的产品开发、中文输入法研究等提供参考,具有一定的实用价值。