您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 其它行业文档 > 基于AVR单片机的嵌入式拼音输入法
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个拼音组合的查询表,然后建立汉字字模二维数组,存放所有拼音组合对应的汉字字模。程序通过brige数组将由数字组合得到拼音组合再由拼音组合得到最终的汉字字模。由于Atmeg16的存储容量只有16KB(Flash),而汉字字模数组的大小约为220KB,所以我们没有将所有汉字字模都存储到Flash中,只是实现了一部分汉字字模。如果需要进一步扩展,可以用512KB的外部扩展FLASH作为汉字字模存储载体,与meg16的PC口连接,存储3783个一级汉字的字模。软件流程图:四、设计总结一、课程设计心得整个设计由初期的定题到硬件准备到软件编写调试,前后大约用了一个月的时间。在定题之后前期的资料搜集比较困难,因为网上相应的资料很少,所以整个实现思路基本是我们自己琢磨推敲出来的。1.关于硬件:硬件的采购比较简单,市场上都有相应的LCD、键盘按键以及显示初始化界面显示主文本界面有按键按下符合要求的按键输入显示选择拼音界面选定某一拼音组合显示汉字选择界面选定某一汉字万用线路板等,但是将各个部件整合的过程并不简单,特别是LCD引脚比较多,而且需要不同大小的电源供电及相应的保护电阻,因而焊接起来比较费力。2.关于软件:软件流程的编写比较复杂,虽然有着清晰的编程思路,但是程序中涉及的函数和变量都相当的多,所以还是有一定难度的。最棘手的部分便是LCD驱动的编写及调试,需要注意很多问题,如寄存器方向、使能信号的控制以及时序等等。我们曾考虑使用外部扩展Flash或EEPROM,但考虑到时间比较紧张,而且我们已将拼音输入法完整实现,字数多少只是一个存储容量问题,没有技术难点,所以我们最终没有进行扩展。3.关于调试:最终的成体调试也是相当耗时的,各个软硬件部分拼接起来之后必然会有这样那样的问题,此时查找并解决问题是需要很大的耐心的。总的来说,我们的这个LCD显示---拼音输入法设计是比较成功的,我们已经实现了基本的拼音输入及回显功能。当然,在次基础上还可以做进一步的改进,如在汉字输入方面,可以增添拼音输入法的联想功能、记忆功能等,也可通过扩展存储将汉字字库进一步扩大到7000个;在显示方面,可以扩展到LCD大屏幕显示,可以实现LCD任意内容的显示等等。在整个设计流程中,我们查阅了很多资料,学习到了很多有使用价值的东西,已经能够独立完成LCD和键盘的调试,对Atmeg16单片机也有了更深入的认识。五、参考文献[1].张立科《单片机典型外围器件及应用实例》.人民邮电出版社[2].周润景张丽娜《基于PROTEUS的AVR单片机设计与仿真》.北京航空航天大学出版社[3].马潮《基于AVR单片机的嵌入式系统原理与实践应用》[4].金春林邱慧芳张皆喜《AVR系列单片机――C语言编程与应用实例》.清华大学出版社
本文标题:基于AVR单片机的嵌入式拼音输入法
链接地址:https://www.777doc.com/doc-28427 .html