毕业设计——基于单片机人体反应速度测试仪.doc

上传人:最*** 文档编号:1594036 上传时间:2019-10-29 格式:DOC 页数:22 大小:374.34KB
返回 下载 相关 举报
毕业设计——基于单片机人体反应速度测试仪.doc_第1页
第1页 / 共22页
毕业设计——基于单片机人体反应速度测试仪.doc_第2页
第2页 / 共22页
毕业设计——基于单片机人体反应速度测试仪.doc_第3页
第3页 / 共22页
点击查看更多>>
资源描述
沈阳工学院 毕业设计报告 题 目:基于单片机人体反应速度测试仪 院 系: 信息与控制学院 (黑三) 专 业: 通信工程 (黑三) 班级学号: 093041 07 (黑三) 学生姓名: 张 三 (黑三) 指导教师: (黑三) 成 绩: 2014 年 06 月 25 日 摘 要 本文是基于单片机人体反应速度测试描述,通过单片机测试人的反应速度。在本 设计中以 AT89S52 单片机为核心的人体反应速度测试仪,主要通过控制测试灯的状态, 在测试按键的状态来间接计算人体反应速度。正常情况下系统运行主程序一直处于空 闲等待状态,知道测试者按下按键后,LED 测试灯立即点亮。AT89S52 单片机在 LED 测试灯亮的同时开始计算一个随机时间,在一段随机时间结束后,AT89S52 单片机 把 LED 测试灯熄灭,并开始计时灯灭与测试者放开按键的时间差,此计时时间用于纪 录被测试者的反应时间,并以毫秒为时间单位在 4 位数码管上显示。如果在 LED 测试 灯灭之前提前放开测试按键,则显示 9999 作为出错信息。 设计中采用 AT89S52 单片机,其以高性能低价格的优势成为全球使用范围最广泛 的单片机之一;显示部分采用 LED 数码管的显示方式,本套系统在不影响其测试性能 的情况下,大大的节省了设计成本,是性价比较高的一款人体反应测试议。和其他测 试仪相比具有明显的价格竞争优势;同时,本设计作品的使用方法简单,只需按下按 键即可完成测试,方便测试人员的测试使用。 关键词:单片机;反应速度;AT89S52 ;LED; 数码管 Abstract This 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 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 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 digital 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 part 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 design 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 硬件部分设计 1 1.1 硬件结构设计 .2 1.2 硬件电路设计 .3 1.2.1 硬件模块选择 .3 1.2.2 硬件模块设计 .3 1.2.3 控制计算公式 .5 2 软件部分设计 6 2.1 开发环境 7 2.2 主体程序设计 7 2.2.1 主程序设计 .7 2.2.2 中断程序设计 .7 3 系统测试 8 3.1 软件测试 8 3.2 硬件测试 8 结 论 .9 参考文献 .10 附录 A .12 附录 B .13 附录 C .14 沈 阳 工 学 院 学 士 报 告 0 1 硬件部分设计 本项目以 AT89S52 单片机为核心,实现对人体反应速度的测试,主要控制测试灯 的状态,通过测试按键的状态来间接计算人体反应速度。正常情况下系统一直处于空 闲等待状态,直到测试者按下按键后,LED 测试灯立即点亮。AT89S52 单片机在 LED 测试灯亮的同时开始计算一个随机时间,在一段随机时间结束后,AT89S52 单片机把 LED 测试灯熄灭,并开始计时灯灭与测试者放开按键的时间差,此计时时间用于纪录 被测试者的反应时间,并以毫秒为时间单位在 4 位数码管上显示。如果在 LED 测试灯 灭之前提前放开测试按键,则显示 9999 作为出错信息。整体系统框图如图 1.1 所示。 图 1.1 单片机引脚图 1.1 硬件结构设计 1.1.1 AT89S52 单片机的介绍 单片机是一种集成在电路芯片,是采用超大规模集成电路技术把具有数据处理能 力的中央处理器 CPU 随机存储器 RAM、只读存储器 ROM、多种 I/O 口和中断系统、 定时器、计时器等功能集成到一块硅片上构成的一个小而完善的计算机系统。 AT89S52 是一种低功耗、高性能 CMOS8 位微控制器,具有 8K 在系统可编程 Flash 存储器。使用 Atmel 公司高密度非易失性存储器技术制造,与工业 80C51 产品 指令和引脚完全兼容。片上 Flash 允许程序存储器在系统可编程,亦适于常规编程器。 在单芯片上,拥有灵巧的 8 位 CPU 和在系统可编程 Flash,使得 AT89S52 为众多嵌入 式控制应用系统提供高灵活、超有效的解决方案。AT89S52 具有以下标准功能:8k 字 AT89C52 单片机系统 LED 数码管显示器 按键 LED 按键指示灯 沈 阳 工 学 院 学 士 报 告 1 节 Flash,256 字节 RAM,32 位 I/O 口线,看门狗定时器,2 个数据指针,三个 16 位 定时器/计数器,一个 6 向量 2 级中断结构,全双工串行口,片内晶振及时钟电路。另 外,AT89S52 可降至 0Hz 静态逻辑操作,支持 2 种软件可选择节电模式。空闲模式下, CPU 停止工作,允许 RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下, RAM 内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位 为止。8 位微控制器 8K 字节在系统可编程 Flash AT89S52。 与 MCS-51 单片机产品兼容、8K 字节在系统可编程 Flash 存储器、1000 次擦写周 期、全静态操作:0Hz 33Hz 、 三级加密程序存储器 、32 个可编程 I/O 口线 、三个 16 位定时器/计数器八个中断源、全双工 UART 串行通道、低功耗空闲和掉电模式、掉 电后中断可唤醒、看门狗定时器、双数据指针、掉电标识符。单片机引脚图如图 1.2 所示。 图 1.2 AT89S52 单片机引脚图 1.1.2 LED 发光二极管的特性 (1) 发光响应快,亮度强,高频特性好;而且随着材料的不同,数码管还能发出红、 黄、绿、蓝、橙等多种颜色的光。 沈 阳 工 学 院 学 士 报 告 2 (2) 机械性能好,体积小,重量轻,价格低廉;能与 COMS 和 TTL 电路配合使用; 使用寿命长。 (3) 工作电压低,驱动电流适中。每段电流为 510mA,一只数码管的 7 段 LED 全亮需要电流 3570mA。这样打的电流需要由驱动电路提供,因此,使用时要注意数 码管的驱动问题。 在使用中,为了给发光二极管加驱动电压,他们应有一个公共的引脚,公共的引 脚有如下两种链接方法:一、共阴极接法。把发光二极管的阴极连接在一起构成阴极 公共引脚,使用时公共引脚接地,这样阳极引脚上加高电平的发光二极管就导通点亮, 而加低电平的则不亮。二、共阳极接法。把发光二极管的阳极连接在一起作为阳极公 共引脚,使用时阳极公共引脚接+5V。这样阴极引脚上加低电平的发光二极管即可导通 点亮,二加高电平的则点不亮。 1.1.3 LED 数码管显示器显示原理 并排使用的多位数码管成为 LED 显示器。LED 显示器多采用动态显示方式,全部 数码管共用一套段码驱动电路,各位数码管的同段引脚短接后再接到对应段码的驱动 线上。显示时通过位控制信号采用扫描的方法逐位地循环点亮各位数码管。动态显示 虽然在任一时刻只有一位数码管被点亮,但是由于人眼具有的视觉残留效应,看起来 与全部数码管持续点亮的效果完全一样。 LED 显示器的动态显示需要为各位提供段码以及相应的位控制,此即通常所说的 段控和位控。把 LED 显示器段码表预先存放在存储器中,使用时通过查表就可以得到 段码。段码输出后送到公共端码线上,也可称为段控信号。而通过并行口输出的相互 独立的位码则是起选通作用的,也称位控活扫描信号,用于选择显示位。 动态显示具有硬件简单,功耗低和显示灵活性强等优点,但动态显示增加了驱动 软件的复杂性,且显示亮度较低。 1.2 硬件电路设计 LED 数码管的显示电路中采用动态数码管显示,在其中 P0 端口控制段码,低电平 有效,P2.0P2.3 端口控制位码,高电平有效。P2.3 端口控制第 1 个数码管,P2.2 端口 沈 阳 工 学 院 学 士 报 告 3 控制第 2 个数码管,P2.1 端口控制第 3 个数码管,P2.0 端口控制第 4 个数码管。 各个数码管的段码都是 P0 端口的输出,即各个数码管输入的段码都是一样的,为 了使其分别显示不同的数字,可采用动态扫描的方式,即先只让最低位显示 0,经过一 段延时,再只让次低位显示 1,以此类推。由于视觉暂留,只要延时时间足够短,就能 够使得数码的显示看起来非常稳定清楚。 1.2.1 硬件模块选择 硬件总体连接,用一只发光二极管模拟测试灯,以 AT89S52 单片机的 P1.0 端口控 制这只发光二极管、发光二极管加限流电阻+5V 电源, P1.0 端口输出低电平时,测试 灯亮,输出高电平时,测试灯灭。P1.1 端口接测试按键,P0 端口控制 LED 数码管的 七段数码显示,P2.0P2.3 控制 4 位数码管的选位。 本项目中的店铺单片机采用目前使用最广泛、成本最低廉的 AT89S52,其性能在 本设计中完全足够。 为了焊接上的方便,本设计中的 LED 数码管显示器采用四位共阳数码管。数码管 的共阳极就是把所有 LED 的阳极连接到共同接点 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. 单片机系统电路设计 沈 阳 工 学 院 学 士 报 告 4 单片机系统的设计主要包括单片机的电源设计、单片机时钟电路设计、单片机复 位电路设计等。时钟电路中采用 11.0592MHz 的晶振作为系统时钟,单片机复位电路 采用上电自动复位和按键手动复位两种方式,在 51 单片机中单片机的复位都是采用高 电平复位方式。单片机最小系统图如图 1.4 所示。 图 1.4 单片机最小系统图 2. 按键和指示灯设计 本设计的方案是通过人体去按下按键,由人体按下与松开按键的时间开判断人体 反应速度的,所以设计中必须设计按键电路,为了操作者操作更明了,设计中增加了 一个 LED 发光二极管作为按键指示。设计电路如图 1.5 所示。 沈 阳 工 学 院 学 士 报 告 5 图 1.5 LED 指示灯及按键电路图 3. 数码管驱动设计 本设计中由于采用的是三寸共阳 LED 数码管显示器,所需的驱动电流不大,在本 项目中采用低成本的 8550PNP 型三极管作为数码管的驱动,为了限制电流,防止电流 过大对数码管烧坏,设计中在数码管的段选端分别串上一个 100 欧姆的电阻,数码管 的驱动如图 1.6 所示。 图 1.6 数码管驱动电路图 1.2.3 控制计算公式 在本系统中的计算主要是针对人体反应速度的计算。在测试者按下按键后,LED 测试灯立即点亮,在灯亮一个随机时间后就通过单片机控制灯灭,这时单片机定时器 就开始计时,定时器初始值为 Time1;在测试者看到 LED 灯灭时就释放按键,此时定 时器的值为 Time2,通过计算灯灭与测试者放开按键的时间差,得出测试者的反应速 度。具体计算公式如式(1.1) V 测试 =Time2-Time1 (1.1) 式中 V 测试 为反应速度。 沈 阳 工 学 院 学 士 报 告 6 2 软件部分设计 本系统使用 AT89C51 作为控制的单片机芯片,软件设计主要分为系统初始化、振 铃检测计数、控制摘挂机、双音频信号分析处理、控制电器、密码处理(包括密码检 测和密码修改) 、信号音提示等部分,每个功能模块对于整体设计都是非常重要的,单 片机 AT89C51 通过软件程序才能很好的对外部的信息进行采集、分析和决策。系统的 主程序流程图如图 2.1 所示。 图 2.1 主程序流程图 否 是 否 是 是 否 开始 初始化 按键是否按下 While(1) 系统产生一个随机时间作为 LED 灯亮的时间 随机时间是否到 LED 灯灭 定时器开始计时 按键是否松开 数码管显示 结束 沈 阳 工 学 院 学 士 报 告 7 2.1 开发环境 本设计采用 Keil Software 公司出品的集成开发环境进行编程,其版本为 Keil Vision4。Keil Vision4 是 2009 年 2 月发布的最新版本,是针对 Windows 桌面平 台所研发的一套完整的集成开发环境,具有可视化、灵活的 Windows 窗口管理。该软 件不仅给用户提供了丰富的库函数,而且提供了功能强大的开发测试工具;既支持 C 语言编程,也支持汇编语言编程;可以完成编辑、编译、连接、测试、仿真等整个开 发流程;此外,在程序被编译之后,即可生成相应的汇编语言代码,使用户可以切身 感觉到该款软件的生成目标的代码效率是相当高的,并且多数语句生成的汇编代码更 为紧凑和容易理解,进而使得编程效率更为高效。 2.2 主体程序设计 主程序采用查询方式,当按下 T89S52 单片机为核心的人体反应速度测试仪,主要 控制测试灯的状态,通过测试按键的状态来间接计算人体反应速度。正常情况下系统 运行主程序一直处于空闲等待状态,知道测试者按下按键后,LED 测试灯立即点亮。 AT89S52 单片机在 LED 测试灯亮的同时开始计算一个随机时间,在一段随机时间结束 后,AT89S52 单片机把 LED 测试灯熄灭,并开始计时灯灭与测试者放开按键的时间差, 此计时时间用于纪录被测试者的反应时间,并以毫秒为时间单位在 4 位数码管上显示。 如果在 LED 测试灯灭之前提前放开测试按键,则显示 9999 作为出错信息。 2.2.1 设计流程 当整个系统上电时,进行一系列的初始化,初始化完毕后则通过查询的方式等待 按键按下,当按键按下后 LED 测试灯立即点亮,同时单片机通过一个函数开始计算一 个随机时间,在一段随机时间结束后,AT89S52 单片机把 LED 测试灯熄灭,并开始计 时灯灭与测试者放开按键的时间差,此计时时间用于纪录被测试者的反应时间,并以 毫秒为时间单位在 4 位数码管上显示。如果在 LED 测试灯灭之前提前放开测试按键, 则显示 9999 作为出错信息。 沈 阳 工 学 院 学 士 报 告 8 2.2.2 初始化编程 单片机上电后将首先进行的就是初始化,其中硬件初始化包括 LED 指示灯 IO 口 的初始化、按键接口的初始化、LED 数码管控制引脚的初始化;软件初始化包括中断 的初始化、定时器的初始化等等。 2.2.2 中断程序设计 定时器的定时时间是 20ms,用作扫描数码管显示,在定时器开启时,定时器开始 定时,此时主程序正常运行,当定时器的定时时间到时,主程序不在执行,开始进入 中断程序,在中断程序中,若计时了 1s 就对时间进行处理且计数标志清零,赋值给相 应的变量且 second 减 1,若没有则计数标志 count 就进行加 1,若倒计时的时间为零则 重新赋值,中断程序执行完后返回主程序。中断程序流程图如图 2.2 所示。 图 2.2 中断程序流程图 是 否 否 是 开始 定时器初始化 开启定时器 按键是否按下 按键是否松开 停止计时,关闭定时器 返回 沈 阳 工 学 院 学 士 报 告 9 3 系统测试 按照设计程序的分析,LED 数码管的动态扫描的频率是 1000HZ,在实际使用时 完全没有闪烁。在程序中,定时器 20ms 中断一次,变量 sec100 自增,中断 100 次时, 秒的显示自增,用定时器来定时,准确。另外,用按键来开启定时器,按键具有暂停 的功能。当数码管上出现提示信息时,反应者按下按键,就可以测量出反应时间,并 在数码管上显示出来。按照正常的设计理念,整个系统是能够正常工作的。 3.1 软件测试 软件调试是利用仿真工具进行在线仿真调试,除发现和解决程序错误外,也可发 现硬件故障。由于我的 P0.0P0.7 接 A0A7 在电路中接反了,故将数码管的码表进行 修改,然后才成功的。 3.2 硬件测试 硬件的调试主要是把电路各种参数调整到符合设计要求。具体步骤如下: (1)先排除硬件电路故障,包括设计性错误和工艺性故障,一般原则是先静态后动 态。 (2)利用万用表或逻辑测试仪器,检查电路中的各器件以及引脚是否连接正确,是 否有短路故障。发现有些焊点连到了一起,造成了短路,然后进行了修改。 (3)先将单片机 AT89S52 芯片取下,对电路板进行通电检查,通过观察看是没有异 常,然后用万用表测试各电源电压,这些都没有问题,接上仿真机进行联机调试观察 到各接口线路均正常。该系统由 5V 电源来驱动,上电后,整机工作电流为 65mA,电 流稳定无大的波动。经过测试与分析,此系统稳定可用。 沈 阳 工 学 院 学 士 报 告 10 结 论 本文研究与设计的人体反应测试仪采用了通用的电子元器件,利用 AT89S52 单片 机及相关的外围器件实现人体反应测试仪,利用单片机的定时器以及外部中断的原理, 将软、硬件有机地结合起来,使得系统能够正确地进行计时,同时使数码管能够正确 地显示测试结果。控制程序的单片机部分利用 C 语言编写。设计时,首先通过在线编 程,然后具体焊接硬件作品、仿真,完全实现了设计功能。本设计中,利用常规的数 码管扫描方法,通过硬件电路的具体应用和系统的仿真研究得出,本设计不仅安装简 单、成本低,更重要的是工作性能稳定,是一个实用、创新型的工程设计。 通过这次的毕业设计,我能运用已学的知识解决我在设计中遇到的问题,使自己的 动手能力和思考问题的能力得到了很大的提高。在做设计的过程中我查阅了很多的资 料,并认真的阅读这些与我的设计相关的资料,从而我的专业涵养得到了提高,知识 的储备量也有所增加。在做设计时,我复习了很多专业课的知识,这使得我的专业知 识在离校之前得到了巩固。我认为这是我在整个设计工程中得到的最好的回报。整个 设计通过了软件和硬件上的调试、仿真。我想这对于自己以后的学习和工作都会有很 大的帮助的。在这次设计中遇到了很多实际性的问题,在实际设计中才发现,书本上 理论性的东西与在实际运用中的还是有一定的出入的,所以有些问题不但要深入地理 解,而且要不断地更正以前的错误思维。对于单片机设计, 其硬件电路是比较简单的,主要是解决程序设计中的问题。而程序设计是一个很 灵活的东西,它反映了你解决问题的逻辑思维和创新能力。它才是一个设计的灵魂所 在。因此在整个设计过程中大部分时间是用在程序上面的。可以说单片机的设计是软 件和硬件的结合,二者是密不可分的。 但是,通过这次设计我也发现自己的很多不 足之处。在设计过程中我发现自己考虑问题很不全面,自己的专业知识掌握的很不牢 固,所掌握的计算机应用软件还不够多,我希望自己的这些不足之处能在今后的工作 和学习中得到改善。而且,通过这次设计,我懂得了学习的重要性,学会了坚持和努 力,这将为以后的学习做出了最好的榜样!同时,该设计也有不足之处,缺少了答题 计分等功能。我将会在以后的学习中继续学习。 沈 阳 工 学 院 学 士 报 告 11 参考文献 1 杨居义,杨尧,杨晓琴.单片机课程设计指导M.北京:清华大学出版社,2009 2 李广弟,单片机基础(第3版)M. 北京:北京航空航天大学出版社,2007 3 李朝青, 单片机原理及接口技术M.北京:北京航天航空大学出版色,2001 4 苏家健,曹柏荣,汪志锋.单片机原理及应用技术M.北京:高等教育出版社, 2003 5 潭浩强, C语言程序设计M.北京:清华大学出版社, 2005 6 李华,李东 .MCS51/98系列单片机原理与应用M.北京:机械工业出版社,1997 沈 阳 工 学 院 学 士 报 告 12 附录 A 整个系统电路原理图: 沈 阳 工 学 院 学 士 报 告 13 附录 B 硬件实物图: 沈 阳 工 学 院 学 士 报 告 14 附录 C /描 述:读取按键 byte bot(void) /读取按键,有按键被按下则返回 0,否则返回 1 if(key=0)return 0; else return 1; /描 述:将缓存区 display中的整数译码后用数码管进行显示 void display(word ms) /数码管上的显示反应时间 byte posi=0x01,i,j,temp; disp3=ms/1000; /1s disp2=(ms%1000)/100; /100ms disp1=(ms%100)/10; /10ms disp0=ms%10; /1ms for(i=0;i4;i+) /数码管显示 temp=dispi; temp=tabletemp; for(j=0;j0;-j) /延时一段随机时间,为 1 马上的随机倍数 delaylms(); k=bot(); if (k=1) /如果在灯灭前谈起按键,显示最长时间作为惩罚 mstime=9999; goto loop; led=1; /灯灭 INIT_TMR1(); /初始定时状态 while(1) /如果按键弹起,反复进入定时状态,没 1ms 计时器 溢出一次,毫秒数加 1 if(TF1=1) TH1=0xfc; TL1=0x18; TR1=1; TF1=0; +mstime; 沈 阳 工 学 院 学 士 报 告 17 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;
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


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

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


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