LCD显示-----拼音输入法成员:梁林荣孙丰沛任祥祥一、设计背景随着近年来嵌入式设备的广泛应用,人们对其要求变的丰富多样,而不仅限于简单的控制操作了。越来越多的界面友好,富有人性化的设计开始出现在嵌入式设备上,如智能手机收发电子邮件、编写文档、车载GPS导航查询等等。所有的这些都离不开人机交互,因而嵌入式设备的汉字输入法应运而生,足以满足人们对复杂信息的处理交换要求,而且更加直观易用。二、设计思路对于市面上现有的嵌入式设备,其拼音输入法大多数是基于操作系统的,如智能手机等设备基于Windows或Linux操作系统,一般的手机也多基于简化Linux系统,即使是电子词典等设备也有其单独设计的简化操作系统。基于操作系统下的输入法设计是比较简单的,因为许多底层函数接口都已经由操作系统提供给设计者了,只需要通过调用相应的函数就可以完成输入法的设计。我们所完成的汉字拼音输入法是基于AVRAtmeg16单片机的,限于硬件的规格,其本身没有操作系统,也不太可能在其上扩展操作系统,所以在设计时是相对困难的,从最底层的LCD显示函数、键盘输入函数到拼音查找字模检索算法等都需要一一设计完成。而据我们了解,在现行的不具备操作系统的嵌入式设备中,很少有已经完整并成功开发的汉字拼音输入法,但这些设备有时是需要人机交互的,汉字拼音输入法将使其易用性大大提高。因此,我们的设计弥补了现有市场的一个空白,而其设计思路完全可以应用的其它任何不具备操作系统的简单的嵌入式设备中去,在较小的资源占用下就可以完成拼音输入法的设计,满足人们与简单设备的交互要求。三、设计方法1,硬件设计A.微程序控制模块采用Atmel公司的Atmaga16单片机作为主控制器。Atmaga16是一个低功耗,高性能的8位单片机,片内含16k空间的可反复擦写100,000次的Flash存储器,具有1Kbytes的随机存取数据存储器(RAM),32个IO口,2个8位可编程定时计数器,1个16位可编程定时计数器,四通道PWM,内置8路10位ADC,硬件SPI和TWI,可编程看门狗电路,抗干扰能力强,可在电磁干扰环境下工作。且Mega系列的单片机可以在线编程、调试,方便地实现程序的下载与整机的调试。B.输入模块采用自制的4×3矩阵式12键键盘作为输入设备,与Atmaga16的PD口连接。C.输出模块使用采用了ks0108控制器的12864液晶屏幕作为输出设备,可显示4行8列共32个16×16点阵汉字。下图为系统电路图下图为键盘功能图2,软件设计A.键盘扫描程序采用了矩阵式键盘常用的行扫描查询法。根据行列线交叉点定位按键,然后根据按键编码查询得到该键的定义。read_keyboard()函数将返回一个unsignedchar类型的值(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)选择相应的汉字,它将显示在文本区域,从而继续进入下一个汉字的输入流程为了实现以上流程,我们需要用到一个数据结构,它是一个查询表,可以将数字组合、拼音组合及相应的汉字字模表联系起来,该数据结构由以下结构体实现:structindex{char*num;数字组合的指针char*py;拼音组合的指针char**pymb;汉字字模的指针charcha;该拼音组合对应的汉字数};建立index类型的数组brige,存放410个拼音组合的查询表,然后建立汉字字模二维数组,存放所有拼音组合对应的...