资源预览内容
第1页 / 共6页
第2页 / 共6页
第3页 / 共6页
第4页 / 共6页
第5页 / 共6页
第6页 / 共6页
亲,该文档总共6页全部预览完了,如果喜欢就下载吧!
资源描述
基于AVR单片机的嵌入式拼音输入法一、设计背景随着近年来嵌入式设备的广泛应用,人们对其要求变的丰富多样,而不仅限于简单的操纵操作了。越来越多的界面友好,富有人性化的设计开始显现在嵌入式设备上,如智能手机收发电子邮件、编写文档、车教GPS导航查询等等。所有的这些都离不开人机交互,因而嵌入式设备的汉字输入法应运而生,足以满足人们对复杂信息的处理交换要求,而且更加直观易用。二、设计思路关于市面上现有的嵌入式设备,其拼音输入法大多数是基于操作系统的,如智能手机等设备基于Windows或Linux操作系统,一样的手机也多基于简化Linux系统,即使是电子词典等设备也有其单独设计的简化操作系统。基于操作系统下的输入法设计是比较简单的,因为许多底层函数接口都差不多由操作系统提供给设计者了,只需要通过调用相应的函数就能够完成输入法的设计。我们所完成的汉字拼音输入法是基于AVRAtmegl6单片机的,限于硬件的规格,其本身没有操作系统,也不太可能在其上扩展操作系统,因此在设计时是相对困难的,从最底层的LCD显示函数、键盘输入函数到拼音查找字模检索算法等都需要一一设计完成。而据我们了解,在现行的不具备操作系统的嵌入式设备中,专门少有差不多完整并成功开发的汉字拼音输入法,但这些设备有时是需要人机交互的,汉字拼音输入法将使其易用性大大提高。因此,我们的设计补偿了现有市场的一个空白,而其设计思路完全能够应用的其它任何不具备操作系统的简单的嵌入式设备中去,在较小的资源占用下就能够完成拼音输入法的设计,满足人们与简单设备的交互要求。三、设计方法1,硬件设计A.微程序操纵模块采纳Atmel公司的Atmaga16单片机作为主操纵器。Atmaga16是一个低功耗,高性能的8位单片机,片内含16k空间的可反复擦写100,000次的Flash储备器,具有Kbytes的随机存取数据储备器(RAM),32个IO口,2个8位可编程定时计数器,1个16位可编程定时计数器,四通道PWM,内置8路10位ADC,硬件SPI和TWI,可编程看门狗电路,抗干扰能力强,可在电磁干扰环境下工作。且Mega系列的单片机能够在线编程、调试,方便地实现程序的下载与整机的调试。B.输入模块采纳自制的4X3矩阵式12键键盘作为输入设备,与Atmaga16的PD口连接。C.输出模块使用采纳了ks0108操纵器的12864液晶屏幕作为输出设备,可显示4行8列共32个16X16点阵汉字。下图为系统电路图pkgpetffl,lAKliFA:皿MUPBW:(MKWU必明U网NOT肛*M度1毕:,lOCTfPWK-T由3KDCDAVuXTM2(TMCWC7XIX!(TOCIK6血即CWC5poimci(TO1K4HTiINTOIro?rm(TCKJK-2(SOUK!网wSUJKOMKH).W2K7AImu16 ?:NKSI下图为键盘功能图1选择2abc3deF456ghijklmno789pqrstuuwxpz0It删除笈位右翻T2,软件设计A.键盘扫描程序采纳了矩阵式键盘常用的行扫描查询法。依照行列线交叉点定位按键,然后依照按键编码查询得到该键的定义。read_keyboard()函数将返回一个unsignedchar类型的值(0、1、2、3、4、5、6、7、8、9、*、#),程序能够通过调用该函数而得到键盘的输入。B.LCD显示程序Check_busy() 令的虚写。Disp_init() Disp_clear() Write_com() Write_data() Read_date() Write_char() Write_word()通过查询LCD的手册了解其各个寄存器及引脚的定义,编写LCD的驱动程序。驱动程序要紧包括以下几个函数:检查LCD是否处于忙状态,只有其闲暇时才能够进行数据或命LCD初始化LCD显示屏清空向LCD写命令向LCD写数据从LCD读数据在LCD指定位置上显示一个字符在LCD指定位置上显示一个汉字C.流程操纵主程序这是拼音输入法设计的要紧部分,通过该程序完成了对输入、查询及输出的整个流程。该主控程序要紧分为以下几个部分:1)同意键盘的输入并得到一个数字的组合,如“24”2)由数字组合得到相应的拼音组合,在“24”的情形下,将得到“ai”“bi”“ci”三个拼音组合并显示在LCD上3)通过按键选择某一个拼音,将查询得到该拼音对应的所有汉字并显示在LCD4)选择相应的汉字,它将显示在文本区域,从而连续进入下一个汉字的输入流程为了实现以上流程,我们需要用到一个数据结构,它是一个查询表,能够将数字组合、拼音组合及相应的汉字字模表联系起来,该数据结构由以下结构体实现:structindexchar*num;数字组合的指针char*py;拼音组合的指针char*pymb;汉字字模的指针charcha;该拼音组合对应的汉字数);建立index类型的数组brige,存放410个拼音组合的查询表,然后建立汉字字模二维数组,存放所有拼音组合对应的汉字字模。程序通过brige数组将由数字组合得到拼音组合再由拼音组合得到最终的汉字字模。由于Atmegl6的储备容量只有16KB(Hash),而汉字字模数组的大小约为220KB,因此我们没有将所有汉字字模都储备到Flash中,只是实现了一部分汉字字模。假如需要进一步扩展,能够用512KB的外部扩展FLASH作为汉字字模储备教体,与meg16的PC连接,储备3783个一级汉字的字模。软件流程图:显示初始化界面有按键按下显示主文本界而符合要求的按键输入显示选择拼音界而选定某一拼音组合显示汉字选择界而选定某一汉字四、设计总结一、课程设计心得整个设计由初期的定题到硬件预备到软件编写调试,前后大约用了一个月的时刻。在定题之后前期的资料搜集比较困难,因为网上相应的资料专门少,因此整个实现思路差不多是我们自己琢磨推敲出来的。L关于硬件:硬件的采购比较简单,市场上都有相应的LCD、键盘按键以及万用线路板等,然而将各个部件整合的过程并不简单,专门是LCD引脚比较多,而且需要不同大小的电源供电及相应的爱护电阻,因而焊接起来比较费劲。2关于软件:软件流程的编写比较复杂,尽管有着清晰的编程思路,然而程序中涉及的函数和变量都相当的多,因此依旧有一定难度的。最棘手的部分便是LCD驱动的编写及调试,需要注意专门多问题,如寄存器方向、使能信号的操纵以及时序等等。我们曾考虑使用外部扩展Flash或EEPROM,但考虑到时刻比较紧张,而且我们已将拼音输入法完整实现,字数多少只是一个储备容量问题,没有技术难点,因此我们最终没有进行扩展。3.关于调试:最终的成体调试也是相当耗时的,各个软硬件部分拼接起来之后必定会有如此那样的问题,现在查找并解决问题是需要专门大的耐心的。总的来说,我们的那个LCD显示一拼音输入法设计是比较成功的,我们差不多实现了差不多的拼音输入及回显功能。因此,在次基础上还能够做进一步的改进,如在汉字输入方面,能够增加拼音输入法的联想功能、经历功能等,也可通过扩展储备将汉字字库进一步扩大到7000个;在显示方面,能够扩展到LCD大屏幕显示,能够实现LCD任意内容的显示等等。在整个设计流程中,我们查阅了专门多资料,学习到了专门多有使用价值的东西,差不多能够独立完成LCD和键盘的调试,对Atmegl6单片机也有了更深入的认识。五、参考文献1 .张立科单片机典型外围器件及应用实例.人民邮电出版社2 .周润景张丽娜基于PROTEUS的AVR单片机设计与仿真.北京航空航天大学出版社3 .马潮基于AVR单片机的嵌入式系统原理与实践应用4 .金春林邱慧芳张皆喜AVR系列单片机一一C语言编程与应用实例.清华大学出版社
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号