反应测试仪-单片机原理及应用课程设计_第1页
反应测试仪-单片机原理及应用课程设计_第2页
反应测试仪-单片机原理及应用课程设计_第3页
反应测试仪-单片机原理及应用课程设计_第4页
反应测试仪-单片机原理及应用课程设计_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

课程设计报告课程名称: 单片机原理及应用课程设计设计题目: 反应测试仪 系 别: 通信与控制工程系 专 业: 电子信息工程 班 级: 学生姓名: 学 号: 起止日期: 指导教师: 教研室主任: 15指导教师评语: 指导教师签名: 年 月 日成绩评定项 目权重成绩1、设计过程中出勤、学习态度等方面0.22、课程设计质量与答辩0.53、设计报告书写及图纸规范程度0.3总 成 绩 教研室审核意见:教研室主任签字: 年 月 日教学系审核意见: 主任签字: 年 月 日摘 要反应测试仪能够定量的测试人的反映速度。利用这种仪器,可以在人才的选拔中起到积极的作用。本设计以数字集成电路技术为基础,单片机技术为核心,介绍了一种简单反应测试仪的设计与制作,以STC89C52单片机的外中断0外接开关作为按键,程序运行后会在数码管上显示,然后计时,当数码管显示提示信号,提示实验者立即按键,如果实验者在看到提示信号时立即按下键,则数码管会动态显示实验者的反应时间。本设计能在不清零的情况连续使用,并且能比较两次测试中反应时间短的,由数码管进行显示。关键词:晶体振荡器;数码管;定时器;中断 目 录1 设计任务与要求12 方案设计与论证13 硬件单元电路设计与参数计算23.1 复位电路23.2 时钟电路33.3 数码管显示电路43.4 单片机定时器的使用54、软件设计与流程图54.1反应测试仪器主程序流程图54.2.定时器0的中断程序流程图75 总电路及元器件清单75.1 整体电路仿真图以及仿真结果分析75.2 元件清单95.3 软件调试96 性能测试与分析97 总结与致谢10参考文献11附录:程序清单12 基于STC89C52的反应测试仪设计1 设计任务与要求利用单片机作为控制核心,完成快速反应时间的测试。具体要求如下:基本部分:(1)能够测量出连续两次按键的间隔时间。(2) 要求能够在不清零的情况连续使用。(3) 由数码管进行显示。测试部分:第一次按键后,分别在10秒、1分钟进行按键测试,并能测试人的最快反应速度测试。2 方案设计与论证近年来随着计算机在社会领域的渗透,单片机的应用正在不断地走向深入,同时带动传统控制检测日新月益更新。反应测试仪能够定量的测试人的反映速度。利用这种仪器,可以在人才的选拔中起到积极的作用。例如选择少年体育运动员、舞蹈、杂技、魔术学员及其他要求机敏素质的培养对象时,可以提供科学的数据。所以,反应测试仪的潜在实用价值极大。当然,设计反应测试仪的方法很多,以下是两个设计方案。方案一:基于STC89C52单片机的LCD液晶显示模块1602显示的反应测试仪。主要是以单片机来控制,用按键来启动和暂停测试仪,LCD1602液晶作为显示模块来显示测试时间。方案二:基于STC89C52单片机的数码管显示模块显示的倒计时器。主要是以单片机来控制,用按键来启动和暂停测试仪。此电路对于反应测试仪中的LED数码管示器来说,采用以软件为主的接口方法,即不使用专门的硬件译码器,而采用软件程序进行译码。方案比较:通过以上两个方案,我们发现,方案二总体比方案一好。首先方案一虽然硬件电路简单,但造价较高,且在编写程序实现所要求的功能时较难,而方案二所用的显示模块是比较熟悉的数码管,编写程序是相对容易,且电路造价不高,因此,综合考虑之后决定采用方案二。3 硬件单元电路设计与参数计算LED数码管反应测试仪以STC89C52单片机为核心,起着控制作用,另外系统中使用8255A芯片作为扩展I/O作用。系统包括四位数码管显示电路,按键电路,复位电路,时钟电路。测试仪的总体框图如下图1所示:8255ASTC89C52数码管显示复位电路按键电路模块图1 测试仪的总体框图3.1 复位电路复位是单片机的初始化操作,只需给STC89C52的复位引脚RST加上大于2个机器周期(即24个时钟振荡周期)的高电平就可得单片机复位,复位时,PC初始化为0000H,使单片机从OUT单元开始执行程序。除了进入系统的正常初始化之外由于程序运行出错或操作错误而使系统处于死锁状态,为摆脱死锁状态,也需按复位键使得RST脚为高电平,使单片机重新启动。在系统中,有时会出现显示不正常,也为了调试方便,我们需要设计一个复位电路,STC89S52单片机复位电路共有上电复位、按键电平复位和按键脉冲复位。本系统是的复位电路主要完成系统的上电复位和系统在运行时用户的按键复位功能。复位电路可由简单的RC电路构成,也可使用其它的相对复杂,但功能更完善的电路。本系统采用的电路如图2所示。工作原理是:上电瞬间,RC电路充电,RESET引脚端出现正脉冲,只要RESET保持10ms以上高电平,就能使单片机有效的复位。当时钟频率选用12MHz时,C取10uF,R取10K。上电自动复位电路由上电瞬间C与R构成充电电路,RESET端的电位与电源Vcc相同,随着充电电流的减少,RESET的电位逐渐下降。图中RC时间常数越大,上电时RESET端保持高电平的时间越长,图中这组参数足以保证复位操作。若复位电路失效,加电后CPU从一个随机的状态开始工作,系统就不能正常运行。图中的按键S17的功能是按键复位,按下S17键时RST为高电平,只要保持10ms以上的高电平,就可以时单片机复位。按键复位用在系统运行时的复位,使系统重新运行。复位电路如下图2所示。图2 复位电路原理图3.2 时钟电路在MCS-51单片机应用系统中,往往需要走时准确的实时时钟为多通道数据采集及实时控制提供精确的时间基准和同步信号。软件时钟具有硬件开销小,成本低,外围电路简单等优点,但由于时钟是依靠软件延时实现的,在运行过程中不仅要占用大量的CPU时间,而且计时精度低,走时误差较大,因此,在电路设计过程中,时钟电路有一定的要求。时钟是单片机的心脏,单片机各功能部件的运行都是以时钟频率为基准,有条不紊地一拍一拍地工作。因此,时钟频率直接影响单片机的速度,时钟电路的质量也直接影响单片机系统稳定性。常用的时钟电路有两种方式,一种是内部时钟方式,另一种是外部时钟方式。单片机必须在时钟的驱动下才能工作。在单片机内部有一个时钟振荡电路,只要外界一个振荡源就能产生一定的时钟信号送到单片机内部的各个单元,决定单片机的工作速度。本系统使用的是内部时钟方式。时钟电路如下图3所示。一般选用石英晶体振荡器。此电路在加电大约延迟10ms后振荡器起振,在XTAL2引脚产生幅度为3V左右的正弦波时钟信号,其振荡频率主要由石英晶振的频率确定。电路中两个电容C1、C2的作用有两个:一是帮助振荡器起振;二是对振荡器的频率进行微调。本系统的C1、C2的值为30pf。图3时钟电路原理图3.3 数码管显示电路本系统采用六位七段共阳数码显示管,由8255芯片的PA口控制数码管的位选,PB口输出数据给数码管5。其数码管段值控制如下表1所示:表1 数码管段值控制段值gcdpdebfaPB控制位PB7PB6PB5PB4PB3PB2PB1PB0在这里我们使用的是8段数码管显示(包含小数点),通常在显示上我们采用的方法一般包括两种:一种是静态显示,另一种是动态显示。其中静态显示的特点是显示稳定不闪烁,程序编写简单,但占用端口资源多,所耗得电能较大;动态显示的特点是显示稳定性没静态好,程序编写复杂,但是相对静态显示而言占用端口资源少。在本设计中,为了减少端口资源,降低电能消耗,采用的是动态显示方法。该设计知数码管显示电路要用到4位数码管。考虑到到数码管的段和位比较多,本系统用8255A作为扩展端口芯片。数码管有段选和位选控制,在此电路中有4个位选,8个段选(每一个数码管的段选进行并联)。分别用8255芯片的PA口和PB口进行四位数码管的控制,而用单片机的PB口来控制段。电路中用了四个PNP来控制数码管的位选的开关,PNP在这起开关的作用。电路如下图4所示。 图4数码管显示电路原理图3.4 单片机定时器的使用本系统所用到的STC89C52有2个16位的定时器,而本系统只用到了定时器0,所使用的工作方式是定时器工作方式1,方式1时16位计数结构的工作方式,计数器由TH0或TH1的全部8位和TL0或TL1的全部8位构成。使用工作方式1功能时,定时时间计算公式是:(65536-计数初值)*机器周期 机器周期=晶振周期*124、软件设计与流程图4.1反应测试仪器主程序流程图 程序开始时先初始化定时器0、定时器1、外部中断0,给定时器装初值,定 时时间都是是10ms,再初始化8255芯片。进入while循环函数,显示时间等待开启定时器0。若外部中断0有请求,则进入中断程序开启定时0,执行完中断再返回。若定时器0有中断请求,进入中断进行时间处理,再返回。若定时器1有中断请求,进行反应时间处理,然后显示反应时间,若SP1键按下,则跳出该中断程序,返回主程序,图5所示。N设定时器0,1工作方式,且打开外中断0与1给定时器0设初值初始化8255芯片进入while循环显示初始时间等待中断 开始 结束关闭定时器0,转到 测反应速度程序有键INT0按下?启动定时器0 有键INT1按下?若定义的SP1按下跳出中断计时 YNY图5 测试仪主程序流程4.2 定时器0的中断程序流程图定时器0的定时时间是10ms,用作扫描数码管显示,在定时器0开启时,定时器0开始定时,此时主程序正常运行,当定时器0的定时时间到时,主程序不在执行,开始进入中断程序,在中断程序中,若计时了1s就对时间进行处理且计数标志清零,赋值给相应的变量且second减1,若没有则计数标志count就进行加1,若倒计时的时间为零则重新赋值,中断程序执行完后返回主程序。如图6所示。图6 定时器0的中断程序流程图5 总电路及元器件清单5.1整体电路仿真图以及仿真结果分析系统仿真用的是Proteus软件,可通过仿真显示出所设计系统的功能,对于程序的调试等有很大的帮助。系统仿真时首先在使用Keil C 译码器,把所写的程序进行编译,同时在仿真器里设置生成HEX文件,编译无错误进行Proteus仿真。等所有的原件都连接完成后可以把Keil C编译生成的无错误文件加载到AT89C52中,方法是,右键点中器件然后再用左键点击,出来一个对话框在program file后选择要添加的文件,文件要求必须是HEX文件。然后可以点击运行观察现象,看与自己设置的是否符合,如果不相符再查找错误进行修改,一般的错误都是程序中的,所以要认真的读取程序的每一个部分。系统的仿真图如下图7所示。图7 测试仪仿真图启动Proteus软件的play按钮,出现如上图8所示,以上矩阵键盘设定倒计时初值和倒计时最大初值范围选择。按下相应的键,数码管上显示相应的计数范围开始计时,当定时中断到时,数码管上的数值减1,也就是1S计时时间到了。当全为0时,数码管上的数值自动加载为最大计数范围的值。从仿真图可知,本系统的程序已达到要求。在此电路系统的仿真中,应该注意的问题有数码管的Minimum Trigger Time项设定的值要合适,此电路中设定为1us。还有就是在程序中数码管的扫描时间要合适。以保证数码管显示稳定,不闪烁。5.2 元件清单 表2 元器件清单名称参数和型号数量单片机STC89C521块PNP三极管S85504个电阻1K16个数码管共阳数码管器4个瓷片电容30PF2个晶振12M1个电解电容10uf1个微动开关18个5.3软件调试用到了Keil C软件,集成调试环境,集成了编辑器、译码器、调试器,支持软件模拟,支持项目管理功能强大的观察窗口,支持所有的数据类型。树状结构显示,一目了然,支持ASM(汇编)、C语言多模块源程序混合调试,在直接修改、编译、调试源程序,错误指令定位。功能很强大,用于对程序的调试和编辑。本系统的程序的编写就是在Keil C软件中完成的,在程序中用到了两个定时器,为了使倒计时的时间准确,必须计算对定时器的初值,当程序完成之后,生成HEX文件。再利用Proteus软件进行仿真。经过仿真,程序符合题目的要求。6 性能测试与分析按照设计程序的分析,LED数码管的动态扫描的频率是1000HZ,在实际使用时完全没有闪烁。在程序中,定时器10ms中断一次,变量 sec100自增,中断100次时,秒的显示自增,用定时器来定时,准确。另外,用外中断0开启定时器,外中断0还具有暂停的功能。当数码管上出现提示信息时,反应者按下按键,就可以测量出反应时间,并在数码管上显示出来。该系统由5V电源来驱动,经过测试与分析,此系统稳定可用。7 总结与致谢 身为电子专业的学生,设计是我们将来必需具备的技能。而这次课程设计恰恰给我们提供了一个应用自己所学知识去勇于创新和实践的平台。从通过理论设计,到仿真软件仿真,再到确定具体方案,最后到调试电路、成型。整个过程都需要我充分利用所学的知识进行思考、借鉴。可以说,本次课程设计是针对前面所学的知识进行的一次比较综合的检验。总的来说,这次课程设计虽然很累,但却是苦中有乐,非常充实。在这次实习中,正确的思路是很重要的,只有你的设计思路是正确的,那你的设计才有可能成功。因此我们在设计前必须做好充分的准备,认真查找详细的资料,为我们设计的成功打下坚实的基础,所以跑图书馆和上网查资料成为了我每天的必修课。 本次课程设计不仅培养了我们的科学严谨的学习态度,使我们认识到不管做任何事都要付出一定的努力,才会有大的收获。同时也让我们领略到电子技术科学知识领域的广袤。相信这次课程设计过后,我们的理论水平和实践动手能力都会有一个质的飞跃,也为今后的实践课程及毕业设计打下了坚实的基础。要做好本次的课程设计,熟练地掌握课本上的理论知识是前提。这样才能对试验中出现的问题进行一定的分析和解决。当然能完成本次设计,更离不开老师辛勤地指导,老师能在百忙中来指导我,每当我遇到了棘手的问题,老师总能给我最好的建议,教我改进得方法,不厌其烦地指出我在设计中存在的问题和错误,使我能更好地完成设计。正是老师不厌其烦的指导和每天下午的讲解,让我的设计思路越发清晰,明朗,清除了应该从哪些方面着手,工作。同时还要感谢在这样课程设计中给我提供的帮助的同学,是你们让我能更好的完成这次设计。这次课程设计对我来说有着深远的意义,让我对未来的路又看得清楚了些。在此我要深深的感谢那些传授我知识的老师们,是你们无私的奉献,才会有如今掌握一定知识的我们;要感谢父母一直给我的支持,感谢他们的关怀;还要感谢同学对我的鼓励,感谢搭档对我的认可,让我能尽情的发挥我的能力,激扬去验证自己的想法。参考文献1 朱定华,戴汝平.单片微机原理与应用.(M) 北京:清华大学出版社,20032 楼然苗,李光飞.单片机课程设计指导.(B).北京航空航天大学出版社,20073 李凤霞,刘桂山, 薛庆.C语言程序设计(第二版).北京理工大学出版社,20084 张鑫,华臻,陈书谦.单片机原理及应用(A). 北京电子工业出版社,20055 韩存梅.反应测试仪的原理及设计J.中央民族大学学报(自然科学版),2009 附录:程序清单#include#include#define a8255A XBYTE0xd1ff#define a8255B XBYTE0xd2ff#define a8255CON XBYTE0xd6ff unsigned char Dis_qianwei;unsigned char Dis_baiwei;unsigned char Dis_shiwei;unsigned char Dis_gewei;code unsigned char tab=0xA0,0xBB,0x62,0x2A,0x39,0x2C, 0x24,0xBA,0x20,0x28,; /共阳数码管 0-9 unsigned char Dis_fenShiwei=0xa0;/定义分十位unsigned char Dis_fenGewei=0xa0; /定义个位unsigned char Dis_miaoShiwei=0xa0;/定义秒十位unsigned char Dis_miaoGewei=0xa0; /定义秒个位unsigned char second=0,fen=0,count; /定义全局变量unsigned int second1=0;sbit SP1=P32;void delay(unsigned int cnt) /数码管动态扫描延时子程序 while(-cnt);void fenshiwei() /显示分十位 a8255B=Dis_fenShiwei; a8255A=0xfe;/打开第一数码管 delay(300); /短暂延时void fengewei() /显示分个位 a8255B=Dis_fenGewei; a8255A=0xfd; /打开第二数码管 delay(300); /短暂延时void jiange() /显示分钟与秒钟之间的间隔- a8255B=0x7f; a8255A=0xfb; /打开第三数码管 delay(300); /短暂延时void miaoshiwei()/显示秒十位 a8255B=Dis_miaoShiwei; a8255A=0xf7; /打开第四个数码管 delay(300); /短暂延时void miaogenwei() /显示秒个位 a8255B=Dis_miaoGewei; a8255A=0x2f;/打开第五数码管 delay(300);main()TMOD |=0x01;/定时器设置 10ms in 12M crystal,工作在模式1,16位定时TH0=0xd8;TL0=0xf0;IE= 0x8f; /打开中断IT0=1; /外部中断为电平跳变中断IT1=1;TR0=0;a8255CON=0x81; /8255控制字while(1) fenshiwei();/调用显示分钟十位子程序 fengewei(); /调用显示分钟个位子程序 jiange(); /调用显示中间间隔子程序 miaoshiwei(); /调用显示秒钟十位子程序 miaogenwei(); /调用显示秒钟十位子程序 /* 定时器中断函数 */void int0(void) interrupt 0 using 1 /外部中断0子程序,用于暂停

温馨提示

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

评论

0/150

提交评论