⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 aaa.txt

📁 利用SPCE061A实现中文 输入 利用SPCE061A实现中文输入
💻 TXT
字号:
利用SPCE061A单片机实现中文输入 
       
   

1 引言 

  中文输入是手机、PDA等手持终端的基本功能,研究基于单片机的中文输入方法,对于手持电子产品的开发具有一定的现实意义。SPCE061A是凌阳科技研发生产的性价比很高的一款十六位单片机,具有易学易用的指令系统和集成开发环境,为软件开发提供了方便的条件。本方案利用凌阳大学计划推出的SPLC701B液晶显示模组作为输入输出设备,在SPCE061A单片机上实现了拼音输入法,可实现汉字、英文字母、数字符号等文本信息的输入。本方案可以为基于单片机的产品开发、中文输入法研究等提供辅助和参考。 

2 系统硬件设计 

  对于文本输入系统,除了主控制器外,至少还要包括输入设备和显示设备。系统采用SPCE061A单片机作为主控制器,而输入和显示都通过SPLC701B液晶显示模组(集成了4×4键盘)实现,系统的硬件结构框图如图 2-1所示。 



图 2-1 系统硬件结构图 
   SPCE061A单片机作为主控芯片,负责构建拼音输入法的数据结构,并在单片机内部Flash中保存汉字的拼音编码。SPCE061A接收4×4按键输入,并通过LCD显示交互内容,从而实现用户操作界面。 

2.1 SPCE061A芯片特性 

2.1.1 SPCE061A简介 

  SPCE061A是一款基于u'nSP内核的16位单片机,其芯片特性如下: 
   ● 工作电压:内核工作电压VDD为3.0~3.6V(CPU),I/O口工作电压VDDH为VDD~5.5V(I/O); 
   ● CPU时钟:0.32MHz~49.152MHz; 
   ● 内置2K字SRAM和32K闪存ROM; 
   ● 系统处于备用状态下(时钟处于停止状态),耗电小于 2μA@3.6V ; 
   ● 具备触键唤醒的功能; 
   ● 32位通用可编程输入/输出端口; 
   ● 2个16位可编程定时器/计数器(可自动预置初始计数值); 
   ● 7通道10位电压模-数转换器(ADC)和单通道声音模-数转换器; 
   ● 2个10位DAC(数-模转换)输出通道; 
   ● 14个中断源可来自定时器A / B,时基,2个外部时钟源输入,键唤醒; 
   ● 具备串行设备接口; 
   ● 低电压复位(LVR)功和低电压监测(LVD)功能; 
   ● 内置在线仿真(ICE,In- Circuit Emulator)接口。 
   SPCE061A的内部结构框图如图 2-2所示。 


图 2-2 SPCE061A内部结构图 

2.2 SPLC701B液晶显示模组特性 

  SPLC701B液晶显示模组采用基于凌阳SPLC701B芯片的点阵液晶显示器,具有120×52显示分辨率,内置汉字字库和半角字符库,可软件调节对比度(32级),支持串行和并行控制方式。模组同时配备4×4键盘供用户使用。液晶显示器的基本特性见下表: 
表 2.1 液晶显示器特性参数 

显示模式  1. 4行10列全角字符(11×12点阵字符),同时支持半角字符(5×12点阵字符)显示。 
2. 120×52点阵图形显示。 
3. 14段图标显示。 
上述三种模式可同时显示。 
 
 
显示器尺寸  34.5 (宽)× 33.3 (高)× 1.91 (厚) mm  
可视区尺寸  30.5 (宽)× 23.4 (高) mm  
点大小  0.2 (宽)× 0.303 (高) mm  
像素尺寸  0.22 (宽)× 0.323 (高) mm  



  模组包括LCD显示器和4×4键盘两个部分,LCD与键盘可以各自独立使用,互不影响。 

2.3 硬件电路 

2.3.1 SPCE061A最小系统 

  本方案使用SPCE061A精简开发板(61板)作为单片机最小系统。61板包括SPCE061A芯片外围的基本模块,有:晶振输入模块(OSC)、锁相环外围电路(PLL)、复位电路(RESET)、指示灯(LED)等,如下图所示。 


图 2-3 SPCE061A最小系统 

2.3.2 LCD显示器 

  SPLC701B液晶显示模组提供的LCD显示器采用凌阳SPLC701B液晶驱动芯片,点阵分辨率为120*52,内置中文字库,可显示汉字、字符、图形等。该LCD显示器支持串行、8位并行、4位并行等多种接口方式,为简化电路连接,这里使用串行接口方式,如图 2-4所示。 


图 2-4 SPCE061A与LCD显示器的硬件连接 

2.3.3 4×4键盘 

  SPLC701B液晶显示模组附带4×4键盘,可直接与SPCE061A的I/O端口连接。其电路原理图如下: 


图 2-5 4×4键盘 

3 系统软件设计 

  本方案的软件系统主要包含下列模块: 
   按键扫描:扫描4×4键盘,获取键值。包括Key.asm程序文件和Key.inc、Key.h头文件。 
   LCD显示:LCD显示驱动程序,实现文本、图形显示等功能。该模块包括LCD701_Drv.asm、LCD701_Functions.c程序文件,以及LCD701_Cfg.inc、LCD701_Defs.h、LCD701_Drv.h、LCD701_Functions.h等头文件。 
   文字输入:通过4×4键盘输入汉字(拼音输入法)、字符、数字等,并在LCD上显示出来,以便于用户编辑通讯录条目。该模块包括PY_IME.c、PY_Interface.c程序文件,以及PY_Index.h、PY_MB.h、PY_IME.h、PY.h等头文件。 

3.1 各模块程序说明 

3.1.1 按键扫描模块 

  按键扫描是在TMB_128Hz中断服务程序中进的,采用逐行扫描方式获取键值。4×4键盘的左面3列采取手机按键排布方式,最右一列的4个按键分别被定义为"向上"、"向下"、"确定"和"取消",如图 3-1所示。 


图 3-1 4*4按键定义 

3.1.2 LCD显示模块 

  LCD显示部分采用SPLC701B液晶显示模组附带的驱动程序。该驱动程序的架构如图 3-2所示。 


图 3-2 LCD驱动程序架构 
   程序中用到的LCD驱动函数主要有: 
   void LCD701_Init(void); // LCD显示初始化 
   void LCD701_ClrScr(unsigned Part); // 清除屏幕显示内容 
   void LCD701_SetTextPos(unsigned Row, unsigned Col); // 设置文本显示位置 
   void LCD701_SetTextMode(unsigned TextMode); // 设置文本显示模式 
   void LCD701_Print(const unsigned char *String); // 在屏幕上打印字符串 

3.1.3 文字输入模块 

  拼音输入法是本方案的核心内容,它负责将键盘输入的数字序列转换为汉字。拼音输入法大体可以分为两个步骤:首先将键盘输入的数字序列转换为拼音编码,然后搜索到该拼音编码对应的汉字编码。 
   拼音编码以索引表的形式保存在PY_Index.h中,每个拼音编码的数据结构为: 
   typedef struct 
   { 
   const char *T9; // 按键数字序列 
   const char *PY; // 拼音编码字符串 
   const char *MB; // 该拼音对应的汉字码表地址 
   }T9PY_IDX; 
   所有的拼音编码组成一个数组常量T9PY_index[],每个拼音编码作为数组中的一个元素存在,下面是该数组的片段: 
   const T9PY_IDX T9PY_index[] ={ 
   {"2","a",PY_mb_a}, 
   {"3","e",PY_mb_e}, 
   …… …… 
   {"224","bai",PY_mb_bai}, 
   {"224","cai",PY_mb_cai}, 
   …… …… 
   } 
   当用户通过键盘输入一个数字序列后,程序将遍历拼音编码数组中的每个元素,找到与这个数字序列对应的所有拼音编码。例如输入数字"224",遍历T9PY_index数组将获得"bai"和"cai"两组拼音编码,程序将这些匹配的拼音通过LCD显示出来,供用户选择。 
   在用户选定了拼音之后,程序就可以获得该拼音编码对应的汉字码表地址。例如选择了拼音"cai",那么程序将获得该拼音拼音编码对应的汉字码表地址PY_mb_cai。汉字码表是具有相同读音的汉字组成的编码数组,例如PY_mb_cai数组的定义如下: 
   const unsigned char PY_mb_cai []={"@猜才材财裁采彩睬踩菜蔡"}; 
   程序将汉字码表数组中的所有汉字显示在LCD上,这样用户就可以通过键盘选取所需的汉字了。由于LCD可显示的字数有限,这里采用分页显示的办法,每页显示8个汉字供用户选择,并可利用键盘中的"Up"和"Dn"键上下翻页。 
   用户在录入文本时,除需要输入中文外,也可能需要输入英文、数字以及符号等。因此,将4×4键盘的一些特定按键定义为英文、数字等输入键,从而构成了完整的文本输入模块。文字输入模块的程序流程如下: 


图 3-3 文字输入模块程序流程 

4 操作说明 

  本系统实现的输入法可以方便地实现中文、英文字母、数字、符号的混合输入。与手机键盘类似,英文字母a~z分配在2~9这几个数字键上,如下图所示: 


图 4-1 按键与字母映射关系 

4.1 输入汉字 

  当输入汉字时,连续按拼音字母对应的数字键,LCD将显示所有匹配的拼音。按Up或Dn键选中所需的拼音,再按确定键即可进入汉字选择状态。LCD将分页显示该拼音对应的所有汉字,每个汉字上方有一个数字,按相应的数字键可以选中所需的汉字,按Up和Dn可上下翻页。例如,输入汉字"书",需要进行如下操作: 
   "书"字的拼音编码为"shu",因此依次按数字键"748",LCD将显示与之对应的所有拼音编码: 


图 4-2 输入拼音 
   按Up或Dn键,将光标切换到"shu"的位置,再按"确定"键,LCD将显示拼音"shu"对应的汉字列表: 


图 4-3 选择汉字 
   直接按数字键"1"即可选定汉字"书"。如果需要的汉字没有出现在当前页,则可利用Up和Dn键上下翻页。 

4.2 输入英文字母 

  以输入英文字母"r"为例,首先按"r"对应的数字键"7",LCD将显示该数字键对应的所有字母: 


图 4-4 选择英文字母 
   按Up或Dn键,将光标移动到"r"的位置,再按"0"键即可选定字母"r"。 

4.3 输入数字和符号 

  当输入数字时,需要先按数字键,再按"#"键。例如输入数字3,则依次按"3#"即可。 
此外,输入法还支持一些常用符号输入。按"1"键,LCD将显示符号列表: 


图 4-5 输入符号 
   每个符号上方有一个数字,按0~8数字键可输入对应的符号,按"#"键则输入数字"1"。例如输入符号"@",需要依次键入"03"。 
 
 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -