1、沈阳工学院毕业设计汇报 题 目:基于单片机人体反应速度测试仪院 系: 信息和控制学院 (黑三) 专 业: 通信工程 (黑三) 班级学号: 093041 07 (黑三) 学生姓名: 张 三 (黑三) 指导老师: (黑三) 成 绩: 年 06 月 25日摘 要本文是基于单片机人体反应速度测试描述,经过单片机测试人反应速度。在本设计中以AT89S52单片机为关键人体反应速度测试仪,关键经过控制测试灯状态,在测试按键状态来间接计算人体反应速度。正常情况下系统运行主程序一直处于空闲等候状态,知道测试者按下按键后,LED测试灯立即点亮。AT89S52单片机在LED测试灯亮同时开始计算一个随机时间,在一段随
2、机时间结束后,AT89S52单片机 把LED测试灯熄灭,并开始计时灯灭和测试者放开按键时间差,此计时时间用于纪录被测试者反应时间,并以毫秒为时间单位在4位数码管上显示。假如在LED测试灯灭之前提前放开测试按键,则显示9999作为犯错信息。设计中采取AT89S52单片机,其以高性能低价格优势成为全球使用范围最广泛单片机之一;显示部分采取LED数码管显示方法,本套系统在不影响其测试性能情况下,大大节省了设计成本,是性价比较高一款人体反应测试议。和其它测试仪相比含有显著价格竞争优势;同时,本设计作品使用方法简单,只需按下按键即可完成测试,方便测试人员测试使用。关键词:单片机;反应速度;AT89S52
3、 ;LED; 数码管AbstractThis article is based on single chip microcomputer human reaction speed tests described, through the single chip microcomputer test response speed. AT89S52 MCU as the core in the design of the human body reaction velocity tester, mainly by controlling the state of the test lamp, in
4、 the state of the test button to indirect calculation of human body reaction speed. System normal operation of the main program has been idle waiting state, know the tester after press the button, the LED test lamp light up immediately. AT89S52 single chip microcomputer in LED to test the lights at
5、the same time began to calculate a random time, at the end of a random time, AT89S52 single chip microcomputer test the LED lights, and start timing lights and testers release button lag, this timer is used to record the subjects reaction time, and in milliseconds as the unit of time in the four dig
6、ital tube display. If the LED test before the lights went out early release test button, 9999 as the error message is displayed.Design USES AT89S52 single chip microcomputer, its to high performance low price advantage to become one of the world scope the most widely used microcontroller; Display pa
7、rt adopts LED digital tube display, this set of system in the case of does not affect the test performance, greatly save the design cost, is the high cost performance of a human reaction test. Compared with other tester has obvious price competitive advantage; At the same time, the use of this desig
8、n method is simple, just press the button to complete the test, the convenience for the testers test.Keywords: Single chip microcomputer; Reaction Speed; AT89S52; LED; Digital tube目 录1 硬件部分设计11.1硬件结构设计21.2硬件电路设计31.2.1硬件模块选择31.2.2硬件模块设计3 1.2.3控制计算公式52 软件部分设计62.1 开发环境72.2 主体程序设计72.2.1主程序设计72.2.2中止程序设计
9、73 系统测试83.1 软件测试83.2 硬件测试8结 论9参考文件10附录 A12附录 B13附录 C141 硬件部分设计本项目以AT89S52单片机为关键,实现对人体反应速度测试,关键控制测试灯状态,经过测试按键状态来间接计算人体反应速度。正常情况下系统一直处于空闲等候状态,直到测试者按下按键后,LED测试灯立即点亮。AT89S52单片机在LED测试灯亮同时开始计算一个随机时间,在一段随机时间结束后,AT89S52单片机把LED测试灯熄灭,并开始计时灯灭和测试者放开按键时间差,此计时时间用于纪录被测试者反应时间,并以毫秒为时间单位在4位数码管上显示。假如在LED测试灯灭之前提前放开测试按键
10、,则显示9999作为犯错信息。整体系统框图图1.1所表示。 AT89C52 单片机系统 LED数码管显示器按键 LED 按键指示灯图1.1 单片机引脚图1.1硬件结构设计1.1.1 AT89S52单片机介绍单片机是一个集成在电路芯片,是采取超大规模集成电路技术把含有数据处理能力中央处理器CPU随机存放器RAM、只读存放器ROM、多个I/O口和中止系统、定时器、计时器等功效集成到一块硅片上组成一个小而完善计算机系统。AT89S52是一个低功耗、高性能CMOS8位微控制器,含有 8K 在系统可编程Flash 存放器。使用Atmel 企业高密度非易失性存放器技术制造,和工业80C51 产品指令和引脚
11、完全兼容。片上Flash许可程序存放器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧8位CPU和在系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、超有效处理方案。AT89S52含有以下标准功效:8k字节Flash,256字节RAM,32 位I/O口线,看门狗定时器,2 个数据指针,三个16位定时器/计数器,一个6向量2级中止结构,全双工串行口,片内晶振立即钟电路。另外,AT89S52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU停止工作,许可RAM、定时器/计数器、串口、中止继续工作。掉电保护方法下,RAM内容被保留,振荡器被冻结,单
12、片机一切工作停止,直到下一个中止或硬件复位为止。8位微控制器8K字节在系统可编程Flash AT89S52。和MCS-51单片机产品兼容、8K字节在系统可编程Flash存放器、1000次擦写周期、全静态操作:0Hz33Hz、三级加密程序存放器、32个可编程I/O口线、三个16位定时器/计数器八个中止源、全双工UART串行通道、低功耗空闲和掉电模式、掉电后中止可唤醒、看门狗定时器、双数据指针、掉电标识符。单片机引脚图图1.2 所表示。图1.2 AT89S52单片机引脚图1.1.2 LED发光二极管特征(1) 发光响应快,亮度强,高频特征好;而且伴随材料不一样,数码管还能发出红、黄、绿、蓝、橙等多
13、个颜色光。(2) 机械性能好,体积小,重量轻,价格低廉;能和COMS和TTL电路配合使用;使用寿命长。(3) 工作电压低,驱动电流适中。每段电流为510mA,一只数码管7段LED全亮需要电流3570mA。这么打电流需要由驱动电路提供,所以,使用时要注意数码管驱动问题。在使用中,为了给发光二极管加驱动电压,她们应有一个公共引脚,公共引脚有以下两种链接方法:一、共阴极接法。把发光二极管阴极连接在一起组成阴极公共引脚,使用时公共引脚接地,这么阳极引脚上加高电平发光二极管就导通点亮,而加低电平则不亮。二、共阳极接法。把发光二极管阳极连接在一起作为阳极公共引脚,使用时阳极公共引脚接+5V。这么阴极引脚上
14、加低电平发光二极管即可导通点亮,二加高电平则点不亮。1.1.3 LED数码管显示器显示原理并排使用多位数码管成为LED显示器。LED显示器多采取动态显示方法,全部数码管共用一套段码驱动电路,各位数码管同段引脚短接后再接到对应段码驱动线上。显示时经过位控制信号采取扫描方法逐位地循环点亮各位数码管。动态显示即使在任一时刻只有一位数码管被点亮,不过因为人眼含有视觉残留效应,看起来和全部数码管连续点亮效果完全一样。 LED显示器动态显示需要为各位提供段码和对应位控制,此即通常所说段控和位控。把LED显示器段码表预先存放在存放器中,使用时经过查表就能够得到段码。段码输出后送到公共端码线上,也可称为段控信
15、号。而经过并行口输出相互独立位码则是起选通作用,也称位控活扫描信号,用于选择显示位。动态显示含有硬件简单,功耗低和显示灵活性强等优点,但动态显示增加了驱动软件复杂性,且显示亮度较低。1.2 硬件电路设计LED数码管显示电路中采取动态数码管显示,在其中P0端口控制段码,低电平有效,P2.0P2.3端口控制位码,高电平有效。P2.3端口控制第1个数码管,P2.2端口控制第2个数码管,P2.1端口控制第3个数码管,P2.0端口控制第4个数码管。各个数码管段码全部是P0端口输出,即各个数码管输入段码全部是一样,为了使其分别显示不一样数字,可采取动态扫描方法,即先只让最低位显示0,经过一段延时,再只让次
16、低位显示1,以这类推。因为视觉暂留,只要延时时间足够短,就能够使得数码显示看起来很稳定清楚。1.2.1 硬件模块选择硬件总体连接,用一只发光二极管模拟测试灯,以AT89S52单片机P1.0端口控制这只发光二极管、发光二极管加限流电阻+5V电源,P1.0端口输出低电平时,测试灯亮,输出高电平时,测试灯灭。P1.1端口接测试按键,P0端口控制LED数码管七段数码显示,P2.0P2.3控制4位数码管选位。本项目中店铺单片机采取现在使用最广泛、成本最低廉AT89S52,其性能在本设计中完全足够。为了焊接上方便,本设计中LED数码管显示器采取四位共阳数码管。数码管共阳极就是把全部LED阳极连接到共同接点
17、com,而每个LED阴极分别为a、b、c、d、e、f、g及dp(小数点);共阴极则是把全部LED阴极连接到共同接点com,而每个LED阳极分别为a、b、c、d、e、f、g及dp(小数点),以下图所表示。图中8个LED分别和上面那个图中ADP各段相对应,经过控制各个LED亮灭来显示数字。数码管内部示意图图1.3所表示。图1.3 数码管内部示意图1.2.2 硬件模块设计1. 单片机系统电路设计单片机系统设计关键包含单片机电源设计、单片机时钟电路设计、单片机复位电路设计等。时钟电路中采取11.0592MHz晶振作为系统时钟,单片机复位电路采取上电自动复位和按键手动复位两种方法,在51单片机中单片机复
18、位全部是采取高电平复位方法。单片机最小系统图图1.4所表示。图1.4 单片机最小系统图2. 按键和指示灯设计本设计方案是经过人体去按下按键,由人体按下和松开按键时间开判定人体反应速度,所以设计中必需设计按键电路,为了操作者操作更明了,设计中增加了一个LED发光二极管作为按键指示。设计电路图1.5所表示。图1.5 LED指示灯及按键电路图3. 数码管驱动设计本设计中因为采取是三寸共阳LED数码管显示器,所需驱动电流不大,在本项目中采取低成本8550PNP型三极管作为数码管驱动,为了限制电流,预防电流过大对数码管烧坏,设计中在数码管段选端分别串上一个100欧姆电阻,数码管驱动图1.6所表示。图1.
19、6 数码管驱动电路图1.2.3 控制计算公式在本系统中计算关键是针对人体反应速度计算。在测试者按下按键后,LED测试灯立即点亮,在灯亮一个随机时间后就经过单片机控制灯灭,这时单片机定时器就开始计时,定时器初始值为Time1;在测试者看到LED灯灭时就释放按键,此时定时器值为Time2,经过计算灯灭和测试者放开按键时间差,得出测试者反应速度。具体计算公式如式(1.1) V测试 =Time2-Time1 (1.1)式中V测试为反应速度。 2 软件部分设计本系统使用AT89C51作为控制单片机芯片,软件设计关键分为系统初始化、振铃检测计数、控制摘挂机、双音频信号分析处理、控制电器、密码处理(包含密码
20、检测和密码修改)、信号音提醒等部分,每个功效模块对于整体设计全部是很关键,单片机AT89C51经过软件程序才能很好对外部信息进行采集、分析和决议。系统主程序步骤图图2.1所表示。否是否是是否开始初始化按键是否按下While(1)系统产生一个随机时间作为LED灯亮时间随机时间是否到LED灯灭定时器开始计时按键是否松开数码管显示结束图2.1 主程序步骤图2.1 开发环境本设计采取Keil Software企业出品集成开发环境进行编程,其版本为Keil Vision4。Keil Vision4是2月公布最新版本,是针对Windows桌面平台所研发一套完整集成开发环境,含有可视化、灵活Windows窗
21、口管理。该软件不仅给用户提供了丰富库函数,而且提供了功效强大开发测试工具;既支持C语言编程,也支持汇编语言编程;能够完成编辑、编译、连接、测试、仿真等整个开发步骤;另外,在程序被编译以后,即可生成对应汇编语言代码,使用户能够切身感觉到该款软件生成目标代码效率是相当高,而且多数语句生成汇编代码更为紧凑和轻易了解,进而使得编程效率更为高效。2.2 主体程序设计 主程序采取查询方法,当按下T89S52单片机为关键人体反应速度测试仪,关键控制测试灯状态,经过测试按键状态来间接计算人体反应速度。正常情况下系统运行主程序一直处于空闲等候状态,知道测试者按下按键后,LED测试灯立即点亮。AT89S52单片机
22、在LED测试灯亮同时开始计算一个随机时间,在一段随机时间结束后,AT89S52单片机把LED测试灯熄灭,并开始计时灯灭和测试者放开按键时间差,此计时时间用于纪录被测试者反应时间,并以毫秒为时间单位在4位数码管上显示。假如在LED测试灯灭之前提前放开测试按键,则显示9999作为犯错信息。2.2.1 设计步骤当整个系统上电时,进行一系列初始化,初始化完成后则经过查询方法等候按键按下,当按键按下后LED测试灯立即点亮,同时单片机经过一个函数开始计算一个随机时间,在一段随机时间结束后,AT89S52单片机把LED测试灯熄灭,并开始计时灯灭和测试者放开按键时间差,此计时时间用于纪录被测试者反应时间,并以
23、毫秒为时间单位在4位数码管上显示。假如在LED测试灯灭之前提前放开测试按键,则显示9999作为犯错信息。 2.2.2 初始化编程 单片机上电后将首优异行就是初始化,其中硬件初始化包含LED指示灯IO口初始化、按键接口初始化、LED数码管控制引脚初始化;软件初始化包含中止初始化、定时器初始化等等。2.2.2 中止程序设计定时器定时时间是20ms,用作扫描数码管显示,在定时器开启时,定时器开始定时,此时主程序正常运行,当定时器定时时间到时,主程序不在实施,开始进入中止程序,在中止程序中,若计时了1s就对时间进行处理且计数标志清零,赋值给对应变量且second减1,若没有则计数标志count就进行加
24、1,若倒计时时间为零则重新赋值,中止程序实施完后返回主程序。中止程序步骤图图2.2所表示。是否否是开始定时器初始化开启定时器按键是否按下按键是否松开停止计时,关闭定时器返回图2.2 中止程序步骤图3 系统测试 根据设计程序分析,LED数码管动态扫描频率是1000HZ,在实际使用时完全没有闪烁。在程序中,定时器20ms中止一次,变量sec100自增,中止100次时,秒显示自增,用定时器来定时,正确。另外,用按键来开启定时器,按键含有暂停功效。当数码管上出现提醒信息时,反应者按下按键,就能够测量出反应时间,并在数码管上显示出来。根据正常设计理念,整个系统是能够正常工作。3.1 软件测试软件调试是利
25、用仿真工具进行在线仿真调试,除发觉和处理程序错误外,也可发觉硬件故障。因为我P0.0P0.7接A0A7在电路中接反了,故将数码管码表进行修改,然后才成功。3.2 硬件测试硬件调试关键是把电路多种参数调整到符合设计要求。具体步骤以下:(1)先排除硬件电路故障,包含设计性错误和工艺性故障,通常标准是先静态后动态。(2)利用万用表或逻辑测试仪器,检验电路中各器件和引脚是否连接正确,是否有短路故障。发觉有些焊点连到了一起,造成了短路,然后进行了修改。(3)先将单片机AT89S52芯片取下,对电路板进行通电检验,经过观察看是没有异常,然后用万用表测试各电源电压,这些全部没有问题,接上仿真机进行联机调试观
26、察到各接口线路均正常。该系统由5V电源来驱动,上电后,整机工作电流为65mA,电流稳定无大波动。经过测试和分析,此系统稳定可用。结 论本文研究和设计人体反应测试仪采取了通用电子元器件,利用AT89S52单片机及相关外围器件实现人体反应测试仪,利用单片机定时器和外部中止原理,将软、硬件有机地结合起来,使得系统能够正确地进行计时,同时使数码管能够正确地显示测试结果。控制程序单片机部分利用C语言编写。设计时,首先经过在线编程,然后具体焊接硬件作品、仿真,完全实现了设计功效。本设计中,利用常规数码管扫描方法,经过硬件电路具体应用和系统仿真研究得出,本设计不仅安装简单、成本低,更关键是工作性能稳定,是一
27、个实用、创新型工程设计。经过这次毕业设计,我能利用已学知识处理我在设计中碰到问题,使自己动手能力和思索问题能力得到了很大提升。在做设计过程中我查阅了很多资料,并认真阅读这些和我设计相关资料,从而我专业涵养得到了提升,知识贮备量也有所增加。在做设计时,我复习了很多专业课知识,这使得我专业知识在离校之前得到了巩固。我认为这是我在整个设计工程中得到最好回报。整个设计经过了软件和硬件上调试、仿真。我想这对于自己以后学习和工作全部会有很大帮助。在这次设计中碰到了很多实际性问题,在实际设计中才发觉,书本上理论性东西和在实际利用中还是有一定出入,所以有些问题不仅要深入地了解,而且要不停地更正以前错误思维。对
28、于单片机设计,其硬件电路是比较简单,关键是处理程序设计中问题。而程序设计是一个很灵活东西,它反应了你处理问题逻辑思维和创新能力。它才是一个设计灵魂所在。所以在整个设计过程中大部分时间是用在程序上面。能够说单片机设计是软件和硬件结合,二者是密不可分。 不过,经过这次设计我也发觉自己很多不足之处。在设计过程中我发觉自己考虑问题很不全方面,自己专业知识掌握很不牢靠,所掌握计算机应用软件还不够多,我期望自己这些不足之处能在以后工作和学习中得到改善。而且,经过这次设计,我知道了学习关键性,学会了坚持和努力,这将为以后学习做出了最好楷模!同时,该设计也有不足之处,缺乏了答题计分等功效。我将会在以后学习中继
29、续学习。参考文件1 杨居义,杨尧,杨晓琴.单片机课程设计指导M.北京:清华大学出版社,2 李广弟,单片机基础(第3版)M.北京:北京航空航天大学出版社,3 李朝青, 单片机原理及接口技术M.北京:北京航天航空大学出版色,4 苏家健,曹柏荣,汪志锋.单片机原理及应用技术M.北京:高等教育出版社,5 潭浩强,C语言程序设计M.北京:清华大学出版社,6 李华,李东.MCS51/98系列单片机原理和应用M.北京:机械工业出版社,1997附录 A整个系统电路原理图:附录 B硬件实物图:附录 C/描述:读取按键bytebot(void)/读取按键,有按键被按下则返回0,不然返回1 if(key=0)ret
30、urn0;elsereturn1;/描述:将缓存区display中整数译码后用数码管进行显示voiddisplay(wordms)/数码管上显示反应时间byteposi=0x01,i,j,temp; disp3=ms/1000;/1sdisp2=(ms%1000)/100;/100msdisp1=(ms%100)/10;/10msdisp0=ms%10;/1ms for(i=0;i4;i+)/数码管显示 temp=dispi; temp=tabletemp; for(j=0;j0;-j)/延时一段随机时间,为1立即随机倍数delaylms();k=bot();if(k=1)/假如在灯灭前谈起按
31、键,显示最长时间作为处罚 mstime=9999; gotoloop; led=1;/灯灭INIT_TMR1();/初始定时状态while(1)/假如按键弹起,反复进入定时状态,没1ms计时器溢出一次,毫秒数加1 if(TF1=1) TH1=0xfc; TL1=0x18; TR1=1; TF1=0; +mstime; if(k=bot() break; loop:led=1 while(1) if(k=1)/按键弹开后一直显示时间 k=bot(); display(mstime); else/若按键按下,重新开始测试 while(1) if(k=1)/按键弹开后一直显示时间 k=bot(); display(mstime); else/若按键按下,重新开始测试 mstime=0; P2=0xff; break;