基于单片机的单词记忆测试器的设计(编辑修改稿)内容摘要:
大学出版社2003[7] 何立民主编. :北京航空航天大学出版社2001[8] 刘庆江 张晓光. 一种实用的集成芯片测试仪的设计. 中国矿业大学信息与电气工程学院, 200518word memory test deviceabstractThe aim of this paper is to research 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 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 acplished by AT89C52 single, so as to ensure the quality of 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个);/**单词用按键控制依次在屏幕上显示,按键选择认识还是不认识,/**也可以直接进入下一个或者上一个;/**单词背完后给出正确率。 /*************************************************************************/define uchar unsigned chardefine uint unsigned intinclude include //ASCII字模表include //12864液晶屏底层驱动程序bit ERROR=1。 //输入字符错误标志位bit result=0。 //输入结果对错的标志位,为0是正确bit verify=1。 //已按了确认键后清零sbit ERR=P2^7。 uchar correctNUM。 //统计测试正确的单词数,即得分/*****************************************/** 存储要测试的单词,放在ROM中/****************************************/uchar code S[10][5]={ tree , //树 rain , //雨 water, //水 fly , //飞 go , //去 fish , //鱼 snow , //雪 eat , //吃 rice , //米 ice , //冰 }。 uchar code SL[10]={4,4,5,3,2,4,4,3,4,3}。 //存储各测试单词的长度uchar KeyNum[8]。 //储存输入的单词/*****************************************/** 存储键盘的字母值 ,放在ROM中/****************************************/uchar code tab1[6][5]={{39。 a39。 ,39。 b39。 ,39。 c39。 ,39。 d39。 ,39。 e39。 }, {39。 f39。 ,39。 g39。 ,39。 h39。 ,39。 i39。 ,39。 j39。 }, {39。 k39。 ,39。 l39。 ,39。 m39。 ,39。 n39。 ,39。 o39。 }, {39。 p39。 ,39。 q39。 ,39。 r39。 ,39。 s39。 ,39。 t39。 }, {39。 u39。 ,39。 v39。 ,39。 w39。 ,39。 x39。 ,39。 y39。 }, {39。 z39。 ,1,2,3,4}}。 //最后的 1234 键盘值为功能键, 1表示确定键,2表示不认识,3表示上一个,4表示下一个 /*************************************************** 键盘扫描程序*************************************************/unsigned char kbscan() //键盘扫描 { uchar hang,lie,key。 //P1连行,P3连列 if(P1!=0xFF||P3!=0) { switch(P1amp。 0xFF) //P1 扫行 { case 0xFE:hang=5。 break。 // case 0xFD:hang=4。 break。 // case 0xFB:hang=3。 break。 // case 0xF7:hang=2。 break。 // case 0xEF:hang=1。 break。 // case 0xDF:hang=0。 break。 // } P1=0。 //P1全低电平 P3=0xFF。 //P3全高电平 switch(P3amp。 0xFF) { case 0xFE:lie=4。 break。 // case 0xFD:lie=3。 break。 // case 0xFB:lie=2。 break。 // case 0xF7:lie=1。 break。 // case 0xEF:lie=0。 break。 // } P1=0xFF。 //P1全高电平 P3=0。 //P3全低电平 while(P1!=0xFF||P3!=0)。 //按键松开后才返回值 key=tab1[hang][lie]。 } else key=39。 _39。 return (key)。 }/************************************************************************/** 主函数/** /** /*************************************************************************/void main(void){ uchar hz_Num。 //用于计当前测试的是第几个词,第一个为0 uchar temp[8]。 //用于送液晶屏显示的临时变量 uchar iword=0,Nword=0。 //输入单词字母下一个计数 LCD12864_init()。 //LCD12864初始化 ClearLCD()。 //清屏 en_disp(2,1,11,Asc,INPUT WORD:,1)。 //在第2行 第1列 en_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) { KeyNum[iword]=kbscan()。 //扫描键盘的输入值,没按下时返回下横线 hz_disp(0,48,1,hz1+hz_Num*32,1)。 //在第1行,第49列开始显示测试的汉字 temp[0]=(hz_Num+1)/10+0x30。 //将十进制数转换为ASCII字符 temp[1]=(hz_Num+1)%10+0x30。 //算出测试汉字的序号的第一位和第二位 en_disp(0,20,1,Asc,:,1)。 //在第1行 第21列 en_disp(0,4,2,Asc,temp,1)。 //在第1行 第5列 显示测试序号 if(KeyNum[iword]!=39。 _39。 ) //键盘有按键按下 { if(KeyNum[iword]==1) //如果按下了确定键 { if(SL[hz_Num]==iwordamp。 amp。 verify) //输入长度等于测试单词的长度,则正确 ,verify表示按下了确认后有效一次 { correctNUM+=1。 if(correctNUM10) { correctNUM=10。 //最多10个正确的 } verify=0。 //标志位清零 hz_Num++。 //测试下一个单词 if(hz_Num==10) hz_Num=0。 //最多设10个单词 temp[0]=(correctNUM)/10+0x30。 //将十进制数转换为ASCII字符 temp[1]=(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(KeyNum[iword]==2||KeyNum[iword]==4)//如果按下了“不认识”或“下一个”键 ,直接跳到下一个单词 { 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(KeyNum[iword]==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, ,1)。 //在第4行,第16列开始显示 } else if(S[hz_Num][iword]==KeyN。基于单片机的单词记忆测试器的设计(编辑修改稿)
相关推荐
双光路由两对发射器和接收器组成。 两对收、发装置分别相对,是为了消除交叉误射;多光路构成警戒面;反射单光路构成警戒区。 课题研究的主要内容 本论文利用单片机、太阳能光伏发电模块、无线模块及红外对射管设计一个太阳能无线对射防盗系统,用 c语言编写出实现太阳能无线对射防盗的程序源代码。 具体包括以下几个方面 : (1)研究 太阳能无线对射防盗系统 的实现方法,确定合理的设计方案,方案经济实用;
3个 12 位ADC, 转换时间仅为1us ,速度快 转换范围: 0到 具有 3 倍采样和保持功能 自带温度传感器 2通道 12位 D/A 转换器 DMA: 12 通道 DMA 控制器 毕业论文 15 DMA(Direct Memory Access,直接内存存取 ),灵活的 12 路通用 DMA( DMA1 上有 7个通道、 DMA2 上有 5 个通道)可以管理存储器到存储器
时钟 /RAM 的读 /写数据以一个字节或多达 31个字节的字符组方式通信。 DS1302 工作时功耗很低 , 保持数据和时钟信息时功率小于 1mW, 其 外部管脚如图 32 所示。 4 图 32 DS1302外部管脚 DS1302 是由 DS1202 改进而来增加了以下的特性 : 双电源管脚用于主电源和备份电源 , 供应 Vcc1 为可编程涓 流充电电源 ; 附加七个字节存储器 ,
三极管,如 901 9013 等。 优点:易于控制。 缺点:浪费单片机的管脚资源,稳定性差。 方案 2:选择模拟开关芯片。 优点:易于控 制,节约单片机管脚资源,产品已经非常成熟,稳定性好,易于采购。 理想的多路开关其开路电阻为无穷大,其导通时的电阻为零此外,还希望它切换速度快,噪音小,寿命长,工作可靠。 在计算机控制系统中多采用集成电路多路开关,其种类、型号都比较多,有 8 通道、 16 通道
理的利用监控人员,不至于造成某些人员无事可干的 现象,又防止事故发生时无人监控的现象等等方面还尚有不足,另外由于我国处于发展阶段,资金问题也是一个考虑的问题,本系统则是对以上情况设计的。 本文的主要工作 STM32F4 核心平台各功能模块能正常运行;对一些突发事件,如超速、空气质量、超载等情况能实时做出处理; Labview 平台设计的系统能实时接收数据并处理数据,在地图上能显示校车的正确位置
如果两个值同样接近原值,那么根据 IEEE754 标准,系统应该选择最后一个有效数字为“ 0”的那个值作为舍入结果。 (round toward +∞ ):结果被舍入成最接近原值而又大于或等于原值的可表示数。 (round toward ∞ ):结果被舍入成最接近原值而又小于或等于原值的可表示数。 (round toward 0):结果被舍入成最接近原值 而又绝对值又小于或等于原值的可表示数。