A. 键盘扫描程序
采用了矩阵式键盘常用的行扫描查询法。根据行列线交叉点定位按键,然后
根据按键编码查询得到该键的定义。read_keyboard()函数将返回一个 unsigned
char 类型的值(0、1、2、3、4、5、6、7、8、9、*、#),程序可以通过调用该
函数而得到键盘的输入。
B. LCD 显示程序
通过查询 LCD 的手册了解其各个寄存器及引脚的定义,编写 LCD 的驱动程
序。驱动程序主要包括以下几个函数:
Check_busy() 检查 LCD 是否处于忙状态,只有其空闲时才可以进行数据或命
令的读写。
Disp_init() LCD 初始化
Disp_clear() LCD 显示屏清空
Write_com() 向 LCD 写命令
Write_data() 向 LCD 写数据
Read_date() 从 LCD 读数据
Write_char() 在 LCD 指定位置上显示一个字符
Write_word() 在 LCD 指定位置上显示一个汉字
C. 流程控制主程序
这是拼音输入法设计的主要部分,通过该程序完成了对输入、查询及输出的
整个流程。该主控程序主要分为以下几个部分:
1) 接受键盘的输入并得到一个数字的组合,如“24”
2) 由数字组合得到相应的拼音组合,在“24”的情况下,将得到“ai”
“bi”“ci”三个拼音组合并显示在 LCD 上
3) 通过按键选择某一个拼音,将查询得到该拼音对应的所有汉字并显示在
LCD 上
4) 选择相应的汉字,它将显示在文本区域,从而继续进入下一个汉字的输
入流程
为了实现以上流程,我们需要用到一个数据结构,它是一个查询表,可以将数字
组合、拼音组合及相应的汉字字模表联系起来,该数据结构由以下结构体实现:
struct index
{
char *num; 数字组合的指针
char *py; 拼音组合的指针
char **pymb; 汉字字模的指针
char cha; 该拼音组合对应的汉字数
};
建立 index 类型的数组 brige,存放 410 个拼音组合的查询表,然后建立汉字
字模二维数组,存放所有拼音组合对应的汉字字模。程序通过 brige 数组将由数
字组合得到拼音组合再由拼音组合得到最终的汉字字模。