毕业设计论文基于单片机的单词记忆测试器

上传人:痛*** 文档编号:140139700 上传时间:2022-08-23 格式:DOC 页数:66 大小:107.50KB
收藏 版权申诉 举报 下载
毕业设计论文基于单片机的单词记忆测试器_第1页
第1页 / 共66页
毕业设计论文基于单片机的单词记忆测试器_第2页
第2页 / 共66页
毕业设计论文基于单片机的单词记忆测试器_第3页
第3页 / 共66页
资源描述:

《毕业设计论文基于单片机的单词记忆测试器》由会员分享,可在线阅读,更多相关《毕业设计论文基于单片机的单词记忆测试器(66页珍藏版)》请在装配图网上搜索。

1、毕业设计(论文)-基于单片机的单词记忆测试器 目 录第1章 绪论11.1单片机的现状1 单片机在我国的普及11.2 单片机的发展趋势2 单片机速度越来越快2 低电压与低电耗2 微型单片化2 大容量 高性能3 串行扩展技术3第2章 8051单片机 芯片的特点及引脚42.1 8051单片机 芯片的特点42.3 8051单片机的扩展及系统电路5第三章 相关软件的说明7第三章 相关软件的说明83.1 proteus8 proteus简介8 proteus功能介绍93.2 keil软件10第四章 单词记忆测试器的设计114.1 硬件模块设计11理模块11 显示模块的硬件部分介绍12 矩阵键盘154.2

2、电路原理图设计164.3 软件程序设计17 程序设计思路17盘的程序设计18 LCD12864显示模块的驱动程序19 显示字模码的提取204.3 系统软件主程序结构及其函数214.4 软件的仿真26第五章 结语28附 录 单片机单词记忆测试器C程序源代码基于单片机的单词记忆测试器摘要本论文的研究对象是基于单片机的单词记忆测试器的设计,此单词记忆测试器可以实现单词的输入并判断输入的单词是否正确,单词背完后给出正确率。该单片机单词记忆测试器为在现实生活中有着广泛的应用,特别是对学习英语方面有很大的作用。 本设计以STC89C52单片机为处理器,以12854点阵液晶屏为显示器件,并使用56距阵键盘为

3、输入设备,实现了功能全面的人机界面和高速的数据处理功能,利用单片机片上FLASH ROM,可储存10-20个英文单词和汉字,作为记忆测试用。关键词: 单片机 单词记忆测试器 AT89C52 12864液晶屏第四章 单词记忆测试器的设计4.1 硬件模块设计 本单词记忆测试器系统硬件部分分为三个模块:中央处理模块、显示模块、键盘输入模块。系统模型图如下:图4 系统硬件模块图理模块 中央处理模块选用STC89C52单片机系统组成,电路包括:STC89C52单片机、复位电路、时钟振荡电路。STC89C52单片机需在复位电路和时钟振荡电路组成的最小系统下工作,单片机引脚图如图5,外围电路如图6和图7所示

4、,时钟电路采用频率采用为12MHZ的晶振,C1、C2与晶振构成了外部振荡电路。复位电路采用电解电容与电阻串联,当系统上电时,由于电容充电,在RST端会产生一个高电平,高电平持续的时间由电容和电阻的值决定,当RESET信号为低电平时,系统为工作状态。 STC89C52具有ISP的功能,可以通过串行口直接将程序下载到单片机内。在下载程序状态下,RESET信号被拉高,系统进行程序下载,待程序下载完毕后,RESET重新拉低。用户可以通过切断电源进行手动复位,或者通过重新下载新的程序进行复位。图5 STC89C52的引脚排列图图6 时钟电路图 图7复位电路图 显示模块的硬件部分介绍显示模块采用单色点阵液

5、晶屏12864模块,该模块在点阵液晶屏基础上集成了控制器kS0108,用户只需设计好接口程序,就可让模块显示出各种字符和图像。通常我们所见到的 LCD 模块,分为几部分:LCM(玻璃)、背光、PCB 板;而背光和PCB板部分其实是可有可无的,视具体的LCD 模块而定。点阵的LCD 模块按照驱动控制器的集成方式,大可分为两种:COB 和COG;COG 其实就是将驱动控制IC 集成到了玻璃里面,这样的而后面的PCB 板上其实只是一些驱动控制IC 无法集成的电容电阻而已;COB 也就是把驱动控制IC 焊接在LCD 模块后面的PCB 板上。12864 为一块128X64 点阵的LCD 显示模块,模块上

6、的 LCM 采用COG 技术将控制(包括显存)、驱动器集成在LCM 的玻璃上,接口简单、操作方便;为方便用户的使用,在LCM 的基础上设计了12864 模块,将模块所必需的外围电容电阻集成到模块上,并引出多种形式的引线接口方便用户使用。12864 模块与各种MCU 均可进行方便简单的接口操作。LCD 的接口:一般来说,LCD 模块(带有驱动控制器)的接口多为总线的接口,不是6800 就是8080,或者是串行SPI(及类SPI 时序);除了这些总线的端口外,有的LCD 模块还引出了一些功能性的端口,如偏压调节输入、负压输出等。图8 12864 模块接口定义表显示 RAM 区映射情况:对于 LCD

7、 模块,了解清楚驱动控制IC 当中的显存与LCD 玻璃上的点的对应关系是非常重要的,这是编写LCD 的驱动程序的基础。12864 液晶显示模块的显示器(玻璃)上的显示点与驱动控制芯片中的显示缓存RAM是一一对应的;驱动控制芯片当中共有65(8 Page x 8 bit+1)X 132 个位的显示RAM 区。而显示器的显示点阵大小为64X128 点,所以实际上在液晶显示模块中有用的显示RAM 区为64 X 128 个位;按byte 为单位划分,共分为8 个Page,每个Page 为8 行,而每一行为128 个位(即128 列)。驱动控制芯片的显示RAM区每个byte的数据对应屏上的点的排列方式为

8、:纵向排列,低位在上高位在下;如图 8所示图8 驱动控制芯片的显示RAM区12864 液晶显示模块的显示屏上的每一个点都对应有控制器片内的显示缓存RAM中的一个位,显示屏上64X128 个点分别对应着显示RAM的8 个Page,每一个Page有128 个byte的空间对应。因此可知显示RAM区中的一个Page空间对应8 行的点,而该Page中的一个byte数据则对应一列(8 个点)。图9 为显示RAM区与显示屏的点映射图:图9 显示RAM区与显示屏的点映射图行、列地址:用户如要点亮 LCD 屏上的某一个点时,实际上就是对该点所对应的显示RAM 区中的某一个位进行置1 操作;所以就要确定该点所处

9、的行地址、列地址。从上图中可以看出,MzL02-12864 液晶显示模组的行地址实际上就是Page 的信息,每一个Page 应有8 行;而列地址则表示该点的横坐标,在屏上为从左到右排列,Page 中的一个Byte 对应的是一列(8行,即8 个点),达128 列。可以根据这样的关系在程序中控制 LCD 显示屏的显示。注意:MzL02-12864 的显示缓存RAM 区实际上比模块上的显示器所对应的RAM 区要大;而LCD 模块具体设置Page(有时也称页)时,屏上的位置与驱动控制IC 当中的哪里的RAM区对应,还与驱动控制IC 与屏的连接有关;所以,实际在使用时,请参考所提供的范例设置(主要是设置

10、COM 反向扫描、SEG 设置为正向扫描,以此设置方法,则每个Page 中的前三列以及最后一列是不对应在LCD 屏幕上的)。 矩阵键盘 要测试记忆的单词,就要有字母的输入接口,本接口设计为56矩阵键盘输入,接入单片机的P1口和P3口进行键盘扫描。最大程度地提高了单片机IO口的利用率,设计共30个接键,包括了26个英文字母以及四个功能键:“确定”、“不认识”、“上一个”、“下一个”。 矩阵由个轻触按键按照行列排列,连接到端口。将行线所接的单片机的I/O口作为输出端,而列线所接的I/O口则作为输入。这样,当按键没有按下时,所有的输出端都是高电平,代表无键按下。行线输出是低电平,一旦有键按下,则输入

11、线就会被拉低,这样,通过读入输入线的状态就可得知是否有键按下了。行线所接的单片机的I/O口作为输端而列线所接的I/O口则作为输图10 56矩阵键盘4.2 电路原理图设计 电路原理图设计使用集原理图设计、PCB设计、电路仿真功能为一体的PROTUES软件。以该软件设计的电路原理图图11。图11 单片机单词记忆测试器电路原理图电路设计参数:C1 C2 为20-30PF瓷片电容,与12M晶振组成时钟振荡电路;复位电路使用R1为10K电阻、C3为10uF电解电容;12864液晶模块与单片机P0口连接,因P0口为真正的三态门结构,因些作数据总线使用时要外接上拉电阻,可使用10K的排阻;按键如图的行相连,

12、列相连的矩阵接法连入单片机IO口;电路的供电为5V直流电源;D1为输入错误的状态指示灯,加220欧限流电阻连到VCC,因为STC89C51单片机IO的电流灌入能力要强于电流输出能力,因此一般使IO为低电平时点亮LED灯。4.3 软件程序设计 程序设计思路因本系统为模块化设计,为方便软件编写和移植,程序设计采用C语言,程序流程图如下:盘的程序设计矩阵键盘采用56 列与行扫描法,P1口依次接键盘的每一行,而P3口依次接键盘的每一列,程序开始先令P1全为高电平,P3口全为低电平,这样一旦矩阵键盘中有一个键按下时,就会在某一行中出现低电平,而某一列中出现高电平,程序先读P1口,以检测到有低电平来确定行

13、。再使P1全为低电平,P3口全为高电平,再读P3口,以检测到低电平来确定列。这里还要考虑按键的机械抖动问题,因为按键的机械特性,可能在按下瞬间会有一组抖动的脉冲,一般程序中采用延时方法来去抖动。实现的C程序函数如下:/* 键盘扫描程序*/unsigned char kbscan /键盘扫描 uchar hang,lie,key; /P1连行,P3连列if P1! 0xFF|P3! 0 /按键去抖动 delayms 5 ; /延时5msif P1! 0xFF|P3! 0 switch P1&0xFF /P1 扫行 case 0xFE:hang 5;break; /P1.0为第6行 case 0x

14、FD:hang 4;break; /P1.1为第5行 case 0xFB:hang 3;break; /P1.2为第4行 case 0xF7:hang 2;break; /P1.3为第3行 case 0xEF:hang 1;break; /P1.4为第2行 case 0xDF:hang 0;break; /P1.5为第1行 P1 0; /P1全低电平 P3 0xFF;/P3全高电平 switch P3&0xFF case 0xFE:lie 4;break; /P1.0为第5列case 0xFD:lie 3;break; /P0.5为第4列case 0xFB:lie 2;break; /P0.6

15、为第3列case 0xF7:lie 1;break; /P0.7为第2列case 0xEF:lie 0;break; /P0.7为第1列 P1 0xFF; /P1全高电平 P3 0; /P3全低电平while P1! 0xFF|P3! 0 ; /按键松开后才返回值key tab1hanglie; elsekey _; /没键按下返回空return key ; LCD12864显示模块的驱动程序 LCD12864显示模块的程序作为显示部分的底层程序,用户可直接调用其函数来达到驱动和显示功能。主要显示命令和显示的函数说明如下:清显示屏:void ClearLCD ,将LCD上的显示字符清空汉字的显

16、示函数:void hz_disp unsigned char x,unsigned char y,unsigned char n,unsigned char code * hz,bit flag ;其中X Y为汉字的起始坐标,n为字数,hz为存储汉字字模码(后述)的地址,flag为显示为黑还是白。英文的显示函数为:void en_disp unsigned char x,unsigned char y,unsigned char n,unsigned char code *asc,unsigned char *string,bit flag ;其中其中X Y为字母的起始坐标,n为字数,asc为

17、存储字形码(后述)的地址,flag为显示为黑还是白。LCD12864显示一个单词的示例代码如下:en_disp 6,0,8,Asc,correct:,1 ; /在第7行,第1列开始显示correct;LCD12864显示一个汉字的示例代码如下:hz_disp 0,48,1,hz1+hz_Num*32,1 ; /在第1行,第49列开始显示测试的汉字 显示字模码的提取为了使LCD12864能够显示用户存储的中文汉字和英文单词,用户必须将要显示的汉字字模及英文字母字模码存入单片机存储器中,因LCD12864只能显示点阵图形,因此存储入单片机的字模码必须是通过点阵码转换而成,为了软换更方便,设计使用了

18、字模转换软件实现汉字和英文码的取模。图12 中英文取字模软件界面例如汉字“中国”,取得的字模码为:/*- 文字: 中 -*/0x00,0x00,0xFC,0x08,0x08,0x08,0x08,0xFF,0x08,0x08,0x08,0x08,0xFC,0x08,0x00,0x00,0x00,0x00,0x07,0x02,0x02,0x02,0x02,0xFF,0x02,0x02,0x02,0x02,0x07,0x00,0x00,0x00,/*- 文字: 国 -*/0x00,0xFE,0x02,0x0A,0x8A,0x8A,0x8A,0xFA,0x8A,0x8A,0x8A,0x0A,0x02,

19、0xFE,0x00,0x00,0x00,0xFF,0x40,0x48,0x48,0x48,0x48,0x4F,0x48,0x49,0x4E,0x48,0x40,0xFF,0x00,0x00,将此码存入单片机程序存储器里,使用液晶显示的函数就可方便地显示汉字或英文字形。本单片机记忆测试系统的程序中将英文字符的字模码表以asc.h文件形式保存,为节约单片机的RAM,生成的二进制文件以只读形式储在单片机的FLASH ROM中。4.3 系统软件主程序结构及其函数系统主程序完成主循环和对各模块函数的调用,调用的文件包括:reg52.h、asc.h、 12864.h,其中reg52.h是 8051内核单片

20、机的标准头文件,定义了单片机内部各寄存器的地址,使用户编程更方便;asc.h存储了本单词记忆测试器的单词和中文汉字字模块,供显示函数调用,而12864.h为LCD12864显示屏的底层驱动程序,包括了屏显示的指令函数和显示中英文的函数。在KEIL uV3环境下将 主程序文件和reg52.h、asc.h、12864.h放在同一工程工作组中,以便主程序调用,如图13。图13 keil下的 程序工程文件主程序的函数:主程序首先进行存储变量的定义:bit ERROR; /输入字符错误标志位,输入错误为 1bit result; /输入的最终结果对错的标志位,为0是正确bit verify; /标志按过

21、一次确认键sbit ERR P27; /P2.7 口接一个指示灯警告输入错误uchar correctNUM; /统计测试正确的单词数,即得分uchar code SL10 4,4,5,3,2,4,4,3,4,3 ; /存储各测试单词的长度,如果输入的单词长度与存储的不同,也为错误为能动态地显示测试的单词,先将要测试的单词存在一个二维数组中,显示了该数组中的字符时,12864.h中的显示函数会调用 相应字符的字模码(asc.h中); /*/* 存储要测试的单词,放在ROM中/*/uchar code S105 tree , /树 rain , /雨 water, /水 fly , /飞 go

22、, /去 fish , /鱼 snow , /雪 eat , /吃 rice , /米 ice , /冰 ;该二维数组为行*列 10*5,即10行5列,10行表示有10个单词,实际根据存储ROM的大小,可以增加单词数;列数表示单词在存储器中占的字符数,以最长单词(5个字符)定义,不足5个字符的单词后补空格表示。前节介绍过键盘的输入是通过矩阵扫描的方法,通过矩阵扫描可使单片机找到按键所在的某行某列,但要得到一个英文字母值,还得在单片机返回的某行某列位置预先定义个字母值,因此5*6矩阵键盘的整个返回字母表可定义一个二维数组存储: /*/* 存储键盘的字母值 ,放在ROM中/*/uchar code

23、 tab165 a,b,c,d,e , f,g,h,i,j , k,l,m,n,o , p,q,r,s,t , u,v,w,x,y , z, 1, 2 , 3 , 4 ;例如在按下键盘时,单片机返回键盘位置为 第二行第三列,就可从上表中查出是对应位置的字母。 键盘扫描函数返回的是键值。 key tab1hanglie;进入主程序后,先对LCD12864屏进行初始化和清屏操作,然后在LCD12864屏上显示单片机单词记忆测试器的静态的图文,需要动态刷新的字符则在主循环中进行。 LCD12864_init ;/LCD12864初始化ClearLCD ;/清屏en_disp 2,1,11,Asc,I

24、NPUT WORD:,1 ; /在第3行 第21列 显示INPUT WORD: /最后的“1”表示显示为白底黑字,如是0则为黑底白字,即反显 en_disp 4,1,1,Asc, ,1 ; /在第5行,第5列开始显示 en_disp 6,0,8,Asc,correct:,1 ; /在第7行,第1列开始显示correct:en_disp 6,80,5,Asc,00/10,1 ; /在第7行 第81列显示00/10LCD12864的显示效果如下,此时系统进入单词输入测试就绪状态。在系统进入单词输入测试就绪状态后,主程序即进入while 1 的主循环中,循环进行键盘扫描,并判断键盘输入值,再与待测试

25、的单词进行比较,如果输入的字符和字符长度均与被测试的单词一致,则显示correct加1,即为加1分,并进入下一个单词的测试,测试完10个单词后,重新进入第1个单词的测试。 主程序的主循环部分代码及注释如下:while 1 KeyNumiword kbscan ; /进行矩阵按键扫描,得到扫描键盘的输入值 hz_disp 0,48,1,hz1+hz_Num*32,1 ; /在第1行,第49列开始显示测试的汉字 temp0 hz_Num+1 /10+0x30; /将十进制数转换为ASCII字符 /temp数组用来存储测试的序号 temp1 hz_Num+1 %10+0x30; /算出测试汉字的序号

26、的第一位和第二位 en_disp 0,20,1,Asc,:,1 ; /在第1行 第21列显示: en_disp 0,4,2,Asc,temp,1 ; /在第1行 第5列显示测试序号 if KeyNumiword! _ /键盘有按键按下,无按下返回的是_ if KeyNumiword 1 /如果按下了确定键 if SLhz_Num iword&verify /输入长度等于测试单词的长度,则正确 ,verify表示按下了确认后有效一次 correctNUM+ 1; if correctNUM 10 correctNUM 10; /最多10个正确的 verify 0; /标志位清零 hz_Num+;

27、 /测试下一个单词 if hz_Num 10 hz_Num 0; /最多设10个单词 temp0 correctNUM /10+0x30; /将十进制数转换为ASCII字符 temp1 correctNUM %10+0x30; /算出测试汉字的序号的第一位和第二位 en_disp 6,80,2,Asc,temp,1 ; /在第7行 第81列 iword 0; Nword 0; en_disp 4,16,8,Asc, ,1 ; /在第5行,第17列开始显示 else if KeyNumiword 2|KeyNumiword 4 /如果按下了“不认识”或“下一个”键 ,直接跳到下一个单词 resu

28、lt 0; /跳下一个时错误灯灭 ERROR 0; hz_Num+; /测试下一个单词 if hz_Num 10 hz_Num 0; /最多设10个单词 iword 0; Nword 0; en_disp 4,16,8,Asc, ,1 ; /在第5行,第17列开始显示 else if KeyNumiword 3 /如果按下了“上一个”键 ,直接跳到上一个单词 result 0; /跳下一个时错误灯灭 ERROR 0; /测试下一个单词 if hz_Num 0 hz_Num 10; /最多设10个单词 hz_Num-; iword 0; Nword 0; en_disp 4,16,8,Asc,

29、,1 ; /在第5行,第17列开始显示 else if Shz_Numiword KeyNumiword /输入的字符与测试的标准字符比较 temp0 KeyNumiword; ERROR 0; /正确就标志位置0 en_disp 4,Nword+16,1,Asc,temp,1 ; /在第5行,第17列开始显示 iword+; if iword 8 iword 0; Nword iword*8; verify 1; else temp0 KeyNumiword; ERROR 1;/错误就置1 en_disp 4,Nword+16,1,Asc,temp,1 ; /在第5行,第17列开始显示 iw

30、ord+; if iword 8 iword 0; Nword iword*8; result ERROR|result;/0表示结果正确 ERR !result; /错误指示灯 4.4 软件的仿真软件的仿真使用protues环境,在画好protues原理图后,将keil环境下生成的目标文件HEX文件载入protues中,即可进行软件仿真。因仿真软件中没有STC89C52元件 ,故可使用完全兼容的AT89C52单片机仿真。仿真的结果:输入错误时黄色LED报警:第五章 结语由于本人对单片机的认识有限,在设计过程中遇到不少困难。在设计程序方面出现不少问题,所以用了比较简单的程序运算。虽然花了几个月

31、的时间尽力把毕业做好,但由于本人能力的原因,整个系统做的并不理想,但是在整个设计的过程中我积累了不少的经验,学会一些系统的应用。我一直认为毕业设计重在过程。确实是这样的。这个毕业设计的过程,其实也就是我不断学习的过程。在这个过程中我学到了许多新的知识,能力也提高了不少。这些收获给我带来的喜悦远远超过了完成毕业设计时给我带来的喜悦。我相信,以后再做这些设计的时候一定还可以做得更好。参考文献1 何立民主编. 单片机应用文集. 北京:北京航空航天大学出版社,19942 王福瑞主编. 单片微机测控系统设计大全. 北京:北京航空航天大学出版社,19993 夏继强 沈德金主编. 单片机实验与实践教程. 北

32、京:北京航空航天大学出版社,20024 李朝青主编. PC机及单片机数据通信技术. 北京:北京航空航天大学出版社,20015 马忠梅主编. 单片机的c语言应用程序设计.北京:北京航空航天大学出版社,20036 沈美明、温冬婵主编.IBM-PC汇编语言程序设计.北京:清华大学出版社20037 何立民主编. MCS-51系列单片机应用系统设计.北京:北京航空航天大学出版社20018 刘庆江 张晓光. 一种实用的集成芯片测试仪的设计. 中国矿业大学信息与电气工程学院, 2005word memory test deviceabstractThe aim of this paper is to res

33、earch and design, is based on single chip word memory test device, this word memory test device can achieve the entry word and decide whether the words correctly, inputting words are back after accuracy. The word memory side is functional, in real life in a wide range of applications, especially for

34、 learning English has a great role. This paper studies the theory of MCU based on using the latest technology and device, design develop word memory test device scheme. And the main circuit was investigated. Among them main control chip accomplished by AT89C52 single, so as to ensure the quality of

35、the signals and flexible modulation mode, in addition, but also increased the input the wrong indicator, facilitate intuitionistic judgment input is correct or not. KEY WORDS :MCU chip word memory test device AT89C52附 录单片机单词记忆测试器C程序源代码/*/*单片机单词测试程序/*设计一个以单片机为核心的单词记忆测试器;/* 实现单词的录入(为使程序具有可演示性,单词不少于10个

36、 ;/*单词用按键控制依次在屏幕上显示,按键选择认识还是不认识,/*也可以直接进入下一个或者上一个;/*单词背完后给出正确率。/*/#define uchar unsigned char#define uint unsigned int#include #include asc.h /ASCII字模表#include 12864.h/12864液晶屏底层驱动程序bit ERROR 1; /输入字符错误标志位bit result 0; /输入结果对错的标志位,为0是正确bit verify 1;/已按了确认键后清零sbit ERR P27;uchar correctNUM; /统计测试正确的单词

37、数,即得分/*/* 存储要测试的单词,放在ROM中/*/uchar code S105 tree , /树 rain , /雨 water, /水 fly , /飞 go , /去 fish , /鱼 snow , /雪 eat , /吃 rice , /米 ice , /冰 ;uchar code SL10 4,4,5,3,2,4,4,3,4,3 ;/存储各测试单词的长度uchar KeyNum8; /储存输入的单词/*/* 存储键盘的字母值 ,放在ROM中/*/uchar code tab165 a,b,c,d,e , f,g,h,i,j , k,l,m,n,o , p,q,r,s,t ,

38、 u,v,w,x,y , z,1,2,3,4 ; /最后的 1234 键盘值为功能键, 1表示确定键,2表示不认识,3表示上一个,4表示下一个 /* 键盘扫描程序*/unsigned char kbscan /键盘扫描 uchar hang,lie,key; /P1连行,P3连列if P1! 0xFF|P3! 0 switch P1&0xFF /P1 扫行 case 0xFE:hang 5;break;/P1.0为第6行case 0xFD:hang 4;break;/P1.1为第5行case 0xFB:hang 3;break;/P1.2为第4行case 0xF7:hang 2;break;/

39、P1.3为第3行case 0xEF:hang 1;break;/P1.4为第2行case 0xDF:hang 0;break;/P1.5为第1行 P1 0; /P1全低电平 P3 0xFF;/P3全高电平switch P3&0xFF case 0xFE:lie 4;break; /P1.0为第5列case 0xFD:lie 3;break; /P0.5为第4列case 0xFB:lie 2;break; /P0.6为第3列case 0xF7:lie 1;break; /P0.7为第2列 case 0xEF:lie 0;break; /P0.7为第1列 P1 0xFF; /P1全高电平 P3 0

40、; /P3全低电平while P1! 0xFF|P3! 0 ; /按键松开后才返回值key tab1hanglie; elsekey _;return key ; /*/* 主函数/* /* /*/void main void uchar hz_Num; /用于计当前测试的是第几个词,第一个为0uchar temp8; /用于送液晶屏显示的临时变量uchar iword 0,Nword 0; /输入单词字母下一个计数 LCD12864_init ; /LCD12864初始化ClearLCD ;/清屏en_disp 2,1,11,Asc,INPUT WORD:,1 ; /在第2行 第1列 en_

41、disp 4,1,1,Asc, ,1 ; /在第5行,第2列开始显示en_disp 6,0,8,Asc,correct:,1 ; /在第7行,第1列开始显示en_disp 6,80,5,Asc,00/10,1 ; /在第7行 第81列P1 0xFF; /P1全高电平 P3 0; /P3全低电平 while 1 KeyNumiword kbscan ; /扫描键盘的输入值,没按下时返回下横线 hz_disp 0,48,1,hz1+hz_Num*32,1 ; /在第1行,第49列开始显示测试的汉字 temp0 hz_Num+1 /10+0x30; /将十进制数转换为ASCII字符 temp1 hz

42、_Num+1 %10+0x30; /算出测试汉字的序号的第一位和第二位 en_disp 0,20,1,Asc,:,1 ; /在第1行 第21列 en_disp 0,4,2,Asc,temp,1 ; /在第1行 第5列显示测试序号 if KeyNumiword! _ /键盘有按键按下 if KeyNumiword 1 /如果按下了确定键 if SLhz_Num iword&verify /输入长度等于测试单词的长度,则正确 ,verify表示按下了确认后有效一次 correctNUM+ 1; if correctNUM 10 correctNUM 10; /最多10个正确的 verify 0;

43、/标志位清零 hz_Num+; /测试下一个单词 if hz_Num 10 hz_Num 0; /最多设10个单词 temp0 correctNUM /10+0x30; /将十进制数转换为ASCII字符 temp1 correctNUM %10+0x30; /算出测试汉字的序号的第一位和第二位 en_disp 6,80,2,Asc,temp,1 ; /在第7行 第81列 iword 0; Nword 0; en_disp 4,16,8,Asc, ,1 ; /在第5行,第17列开始显示 else if KeyNumiword 2|KeyNumiword 4 /如果按下了“不认识”或“下一个”键

44、,直接跳到下一个单词 result 0; /跳下一个时错误灯灭 ERROR 0; hz_Num+; /测试下一个单词 if hz_Num 10 hz_Num 0; /最多设10个单词 iword 0; Nword 0; en_disp 4,16,8,Asc, ,1 ; /在第5行,第17列开始显示 else if KeyNumiword 3 /如果按下了“上一个”键 ,直接跳到上一个单词 result 0;/跳下一个时错误灯灭 ERROR 0; /测试下一个单词 if hz_Num 0 hz_Num 10; /最多设10个单词 hz_Num-; iword 0; Nword 0; en_dis

45、p 4,16,8,Asc, ,1 ; /在第4行,第16列开始显示 else if Shz_Numiword KeyNumiword /输入的字符与测试的标准字符比较 temp0 KeyNumiword; ERROR 0; /正确就标志位置0 en_disp 4,Nword+16,1,Asc,temp,1 ; /在第5行,第17列开始显示 iword+; if iword 8 iword 0; Nword iword*8; verify 1; else temp0 KeyNumiword; ERROR 1;/错误就置1 en_disp 4,Nword+16,1,Asc,temp,1 ; /在第

46、5行,第17列开始显示 iword+; if iword 8 iword 0; Nword iword*8; result ERROR|result;/0表示结果正确 ERR !result; /错误指示灯 /*/* ASCII字模的数据表 /* 码表从0x200x7e 即ASCII的32-127 /* 纵向取模下高位 8x16/*/unsigned char code Asc / ASCII 表 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, / - -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3

47、8,0xFC,0xFC,0x38,0x00,0x00, / -!-0x00,0x00,0x00,0x0D,0x0D,0x00,0x00,0x00,0x00,0x0E,0x1E,0x00,0x00,0x1E,0x0E,0x00, / -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0xF8,0xF8,0x20,0xF8,0xF8,0x20,0x00, / -#-0x02,0x0F,0x0F,0x02,0x0F,0x0F,0x02,0x00,0x38,0x7C,0x44,0x47,0x47,0xCC,0x98,0x00, / -$-0x03,0x06,0

48、x04,0x1C,0x1C,0x07,0x03,0x00,0x30,0x30,0x00,0x80,0xC0,0x60,0x30,0x00, / -%-0x0C,0x06,0x03,0x01,0x00,0x0C,0x0C,0x00,0x80,0xD8,0x7C,0xE4,0xBC,0xD8,0x40,0x00, / -&-0x07,0x0F,0x08,0x08,0x07,0x0F,0x08,0x00,0x00,0x10,0x1E,0x0E,0x00,0x00,0x00,0x00, / -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,

49、0xF8,0x0C,0x04,0x00,0x00, / - -0x00,0x00,0x03,0x07,0x0C,0x08,0x00,0x00,0x00,0x00,0x04,0x0C,0xF8,0xF0,0x00,0x00, / - -0x00,0x00,0x08,0x0C,0x07,0x03,0x00,0x00,0x80,0xA0,0xE0,0xC0,0xC0,0xE0,0xA0,0x80, / -*-0x00,0x02,0x03,0x01,0x01,0x03,0x02,0x00,0x00,0x80,0x80,0xE0,0xE0,0x80,0x80,0x00, / -+-0x00,0x00,0x00,0x03,0x03,0x00,0x00

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!