人体反应速度测试仪 毕业设计Word格式.docx

上传人:b****3 文档编号:18519282 上传时间:2022-12-18 格式:DOCX 页数:17 大小:228.26KB
下载 相关 举报
人体反应速度测试仪 毕业设计Word格式.docx_第1页
第1页 / 共17页
人体反应速度测试仪 毕业设计Word格式.docx_第2页
第2页 / 共17页
人体反应速度测试仪 毕业设计Word格式.docx_第3页
第3页 / 共17页
人体反应速度测试仪 毕业设计Word格式.docx_第4页
第4页 / 共17页
人体反应速度测试仪 毕业设计Word格式.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

人体反应速度测试仪 毕业设计Word格式.docx

《人体反应速度测试仪 毕业设计Word格式.docx》由会员分享,可在线阅读,更多相关《人体反应速度测试仪 毕业设计Word格式.docx(17页珍藏版)》请在冰豆网上搜索。

人体反应速度测试仪 毕业设计Word格式.docx

单片机以其较高的性价比、较高的集成度、较高可靠性、较强控制功能以与低电压、低功耗、偏于携带等优点收到广阔用户的青睐。

MCS-51系列单片机以其典型的结构和完善的总线专用存放器的集中管理,众多的逻辑位操作功能与面向控制的丰富指令系统,堪称为一代“名机〞,为以后的其他单片机开展奠定了根底。

MCS-51系列单片机具有品种全、兼容性强、软硬件资料丰富等特点,因此应用非常广泛,直到现在MCS-51系列单片机仍为单片机中的主流机型,也是高档单片机的根底。

8051是MCS-51系列单片机中的代表产品,它部集成了功能强大的中央处理器,包含了硬件乘除法器、21个专用控制存放器、4KB的程序存储器、128字节的数据存储器、4组8位的并行口、两个16位的可编程定时/计数器、一个全双工的串行口以与布尔处理器。

8051中集成了完善的各种中断源,用户可十分方便的控制和使用其功能,使得它的应用围加大,可以说它可以满足绝大局部的应用场合。

2.3MCS-8051单片机引脚图

MCS-8051单片机采用40条引脚的双列直插式封装,引脚配置如图2—1所示。

单片机电源引脚接入单片机的工作电源:

VCC引脚接+5V电源,VSS引脚接地。

单片机时钟由引脚XTAL1和XTAL2接外部时钟配置电路组成。

单片机复位,当振荡器运行时,在RST引脚加上两个机器周期的高电平使单片机复位。

MCS-8051单片机具有4个8位的输入/输出口,P0、P1、P2和P3口。

P0口是双向8位三态I/O口,此口常作为地址总线低8位与数据总线分时复用口,可带8个LSTTL负载。

P1口是8位准双向I/O口,可带4个LSTTL负载。

P2口是8位准双向I/O口,常作地址总线高8位使用,可驱动4个LSTTL负载。

P3口是8位准双向I/O口,为双功能复用口,可驱动4个LSTTL负载。

2.4数码管显示器

2.4.1数码管显示器的特性

1.发光响应快,亮度强,高频特性好;

而且随着材料的不同,数码管还能发出红、黄、绿、蓝、橙等多种颜色的光。

图2—1MCS-8051单片机引脚图

2.机械性能好,体积小,重量轻,价格低廉;

能与S和TTL电路配合使用;

使用寿命长。

3.工作电压低,驱动电流适中。

每段电流为5~10mA,一只数码管的8段LED全亮需要电流35~70mA。

这样打的电流需要由驱动电路提供,因此,使用时要注意数码管的驱动问题。

在使用中,为了给发光二极管加驱动电压,他们应有一个公共的引脚,公共的引脚有如下两种方法:

一、共阴极接法。

把发光二极管的阴极连接在一起构成阴极公共引脚,使用时公共引脚接地,这样阳极引脚上加高电平的发光二极管就导通点亮,而加低电平的如此不亮。

二、共阳极接法。

把发光二极管的阳极连接在一起作为阳极公共引脚,使用时阳极公共引脚接+5V。

这样阴极引脚上加低电平的发光二极管即可导通点亮,而加高电平的如此点不亮。

本课题采用SR410561K四位一体数码管,为共阳极接法,位选信号位高电平有效,段码信号为低电平有效。

2.4.2数码管的显示原理

并排使用的多位数码管组成数码管显示器。

数码管显示器多采用动态显示方式,全部数码管共用一套段码驱动电路,各位数码管的同段引脚短接后再接到对应段码的驱动线上。

显示时通过位控制信号采用扫描的方法逐位地循环点亮各位数码管。

动态显示虽然在任一时刻只有一位数码管被点亮,但是由于人眼具有的视觉残留效应,看起来与全部数码管持续点亮的效果完全一样。

数码管显示器的动态显示需要为各位提供段码以与相应的位控制,此即通常所说的段控和位控。

把数码管显示器段码表预先存放在存储器中,使用时通过查表就可以得到段码。

段码输出后送到公共端码线上,也可称为段控信号。

而通过并行口输出的相互独立的位码如此是起选通作用的,也称位控活扫描信号,用于选择显示位。

动态显示具有硬件简单,功耗低和显示灵活性强等优点。

但动态显示增加了驱动软件的复杂性,且显示亮度较低。

2.4.3数码管显示器段码

SR410561K四位一体数码管采用共阳极接法,单个数码管如图2—2所示。

图2—2八段数码管

如此数码管段码如表2—1所示。

表2—1数码管段码

显示数字

Dpgfedcba

段码

11000000

c0

1

11111001

f9

2

10100100

a4

3

10110000

b0

4

10011001

99

5

10010010

92

6

10000010

82

7

11111000

f8

8

10000000

80

9

10010000

90

A

10001000

88

b

10000011

83

C

11000110

c6

d

10100001

a1

E

10000110

86

F

10001110

8e

2.5定时器

2.5.1定时器工作原理

在MCS-8051单片机集成了两个16位的定时器/计数器T0和T1,其根本工作原理是加1计数,即对指定的脉冲信号进展加1操作,直到出现溢出为止。

当T0和T1作为定时器使用时,其计数脉冲信号取自单片机部的时钟信号,每个机器周期产生一个计数脉冲,使计数器加1。

T0和T1分别有两个8位的计数器组成,其中T0由特殊功能存放器TH0与TL0组成,而T1如此由特殊功能存放器TH1与TL1组成。

这四个存放器用来存储定时或计数使用的初值,所以也被称为时间常数存储器。

特殊功能存放器TMOD和TCON完成对定时器/计数器的控制功能。

2.5.2定时器的控制

MCS-8051单片机的定时功能是由特殊功能存放器TH0,TL0,TH1,TL1,TMOD和TCON完成的。

特殊功能存放器TMOD用于确定定时器的工作方式,格式如下:

D7

D6

D5

D4

D3

D2

D1

D0

GATE

C/T

M1

M0

其中,前4位用于控制T1的工作方式,后四位用于控制T0的工作方式。

本课题仅使用T1作为定时器,选择工作方式为方式1,即为选择T1为16为定时器。

如此TMOD的值应设置为00010000B,即TMOD=0x10。

特殊功能存放器TCON用于用于控制定时器的启动和停止技术,同时包含了定时器的状态,可进展位寻址。

格式如下:

TF1

TR1

TF0

TR0

IE1

IT1

IE0

IT0

本课题中用到的控制位有TI的控制位TR1和TF1,无需中断控制。

TR1为T1运行控制位,假如TR1=1,允许T1计数,假如TR1=0,禁止T1计数。

TF1为T1计数溢出标志值,当T1被允许计数后,T1从初值开始加1计数,最高位产生溢出时,TF1由硬件置1,TF1的信息可由软件查询。

2.5.3定时器初值的设定

本课题中,设置初值使T1的定时周期为1ms。

当红灯熄灭后,定时器开始工作,每1ms定时器产生一次溢出,使数码管要显示的反响时间以毫秒为单位加1,达到使数码管显示人体反响时间的目的。

T1采用工作方式1定时,时钟频率采用6MHz,如此计数初值:

x=216-6×

106×

10-3/12=65536-6000/12=65036

化为二进制x=01100B,如此计数初值应为TH1=0xfe,TL1=0x0c。

第三章总体方案设计

3.1总体方案

数码管的显示电路中采用动态数码管显示。

采用MCS-8051单片机的P0端口〔P0.0~P0.7端口〕控制段码,低电平有效。

P2.0~P2.3端口控制4位数码管的位选择,高电平有效。

〔P2.3端口控制第1个数码管,P2.2端口控制第2个数码管,P2.1端口控制第3个数码管,P2.0端口控制第4个数码管)。

各个数码管的段码都是P0端口的输出,即各个数码管输入的段码都是一样的,为了使其分别显示不同的数字,可采用动态扫描的方式,即先只让最低位显示,经过一段延时,再只让次低位显示,以此类推。

由于视觉暂留,只要延时时间足够短,就能够使得数码的显示看起来非常稳定清楚。

3.2功能模块框图

人体反响速度测试仪的功能模块框图如图3—1所示。

硬件电路由MCS-8051单片机、电源电路、测试按钮和测试灯电路、晶振电路、复位电路、驱动电路、反相电路以与数码管显示电路组成。

图3—1人体反响速度测试仪功能模块框图

第四章系统硬件设计

4.1硬件连接图

4.1.1测试按钮与测试灯电路

MCS-8051单片机的P1.0端口控制一个发光二极管,即为测试红灯。

发光二极管加限流电阻接+5V电源,当单片机的P1.0端口输出低电平时,红灯亮,输出高电平时,红灯灭。

P1.1端口接“开始〞按钮,按钮另一端接地。

假如按钮按下,如此P1.1口输入低电平,否如此输入高电平。

4.1.2数码管显示电路

数码管采用SR410561K四位一体数码管。

MCS-8051单片机的P0口的8个端口〔P0.0~P0.7〕控制数码管的八段数码显示。

P0口8位输出经限流电阻接入到数码管显示器的段码端口。

数码管采用共阳极接法,低电平有效。

限流电阻的接入是由于在应用数码管进展显示时,首先需要考虑的问题是驱动电流,与发光二极管一样,数码管的发光段也需要串联限流电阻,串联限流电阻的组织越大,电流越小,亮度越低;

电阻阻值越小,电流越大,亮度越高。

在使用限流电阻时需要在每一个线段上都串联限流电阻,而不要在公共端上串联一个限流电阻,否如此在显示不同的数字时,会造成数码管亮度的不同。

单片机P2口的P2.0~P2.3控制4位数码管的位选,P2口输出经限流电阻后需进展反相,反相之后经驱动电路接入到数码管显示器的位选端。

4.1.3晶振电路

时钟是单片机的心脏,单片机各功能部件的运行都是以时钟频率为基准,有条不紊地一拍一拍地工作。

因此,时钟频率直接影响单片机的速度,时钟电路的质量也直接影响单片机系统的运行。

单片机必须在时钟的驱动下才能正常工作。

MCS-8051单片机的时钟可以由部方式或外部方式产生。

本课题采用部方式的晶振电路,如图4—1所示,一般选用石英晶体振荡器。

利用MCS-8051单片机部的震荡电路,并在XTAL1和XTAL2两脚间外接晶体以与电容C1和C2构成的并联谐振电路,使部振荡器产生自激振荡。

组成时钟电路的晶体振荡器的频率大小决定了单片机系统的工作频率,即决定着单片机的工作速度,本课题时钟频率采用6MHz。

图4—1晶振电路

4.1.4复位电路

采用上电自动复位电路,工作原理是:

通电瞬间,RC电路充电,RST端出现正脉冲,只要RST端保持10ms以上的高电平,就能使单片机有效复位。

当晶振频率选用6MHz时,C取22uF,R取1k欧,如图4—2所示。

图4—2复位电路

4.1.5驱动电路

用四个PNP数码管作为每一位数码管的驱动电路,这样使得数码管电流更大,亮度更亮。

P2.0~P2.3控制数码管显示器的四个位,当相应的端口变为高电平时,经反相器变为低电平,驱动相应的三极管会导通,+5V通过相应的驱动三极管给数码管相应的位供电,这时只要P0口送出相应的显示段码,数码管就能显示出所需数值,即显示定时器的计时数值。

4.1.6反相电路

由于程序中设置P2口输出的位选信号为高电平,使驱动三极管导通应使用低电平,即在位选信号输出线路中限流电阻后应接入反相器。

本课题反相器采用74LS04反相器。

74LS04芯片为6非门(反相器),部含有6个s反相器,74LS04的作用就是反相。

反相器输出三极管驱动电路接入到数码管位选端口。

74LS04如图4—3所示。

图4—374LS04反相器

4.2实现方法

主程序采用查询方式,当按钮按下时,MCS-8051单片机使LED灯亮起的同时调用随机函数产生一个随机时间,单片机利用产生的这个随机时间计时。

计时时间到,MCS-8051单片机输出使P1.0端口为高电平,LED测试灯熄灭,MCS-8051单片机进展新的一轮计时,当测试者松开按钮时,计时时间停止,单片机把这个计时时间送往数码管显示电路显示。

当MCS-8051单片机第一轮的计时时间还未到时,假如按钮松开,如此单片机输出错误提示,使数码管显示为9999。

4.3详细流程图

图4—1详细流程图

第五章程序代码编写

5.1按钮电路的实现

描述:

读取按钮当前的状态

bytebot(void)//按钮状态,假如按钮被按下如此返回0,否如此返回1

{

if(key==0)

return0;

elsereturn1;

}

5.2四位数码管显示电路的实现

数码管进展显示反响时间

voiddisplay(wordms)//数码管上的显示反响时间

byteposi=0x01,i,j,temp;

//posi初始化选择为最低位

disp[3]=ms/1000;

//1s

disp[2]=(ms%1000)/100;

//100ms

disp[1]=(ms%100)/10;

//10ms

disp[0]=ms%10;

//1ms

for(i=0;

i<

4;

i++)//数码管显示

{

temp=disp[i];

temp=table[temp];

for(j=0;

j<

200;

j++)

P2=posi;

//P2口进展位选择

P0=temp;

//P0口进展段选择

}

posi=posi*2;

//posi二进制向左移动一位,选择下一位

5.3随机函数的实现

用随机函数产生一个随机数,为随机时间,即按钮按下到红灯熄灭的时间

unsignedlongrandom(void)//生成随机数

{

wordrt;

srand(50000);

//产生的随机数的围为0-50000

rt=rand();

//产生一个随机数

returnrt;

5.4定时器程序的实现

定时器初始化程序

voidINIT_T1(void)

TMOD=0x10;

//定时器1为工作方式1

TH1=0xfe;

//定时器1的周期为1ms

TL1=0x0c;

TR1=1;

//启动定时器1

voidlms(void)//1ms产生一次溢出

INIT_T1();

while

(1)

if(TF1==1)//等待定时器1溢出

break;

5.5主函数的实现

#defineledP1^0

#definekeyP1^1

voidmain(void)

unsignedcharcodetable[16]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,

0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e}

bytek=0;

k=bot();

//获取按钮情况,k=0为按钮被按下

wordmstime=0;

P1=0xff;

//P1口预制高电平,红灯熄灭〔P1.0〕

while

(1)

{

wordmstime=0,j;

wordr,j;

while(bot());

//等到按钮被按下,循环条件为0,跳出该循环

led=0;

//按键被按下后,灯亮

r=random();

//产生随机时间

for(j=r;

j>

0;

j--)//使红灯在该时间为亮

lms();

if(k==1)//如果测试者在红灯熄灭前松开按钮按钮

mstime=9999;

//使数码管显示9999出错信息

led=1;

//红灯熄灭

gotoloop;

led=1;

//随机延时完毕,红灯熄灭

INIT_T1();

//定时器1初始化

if(TF1==1)//定时器每1ms产生一次溢出

TF1=0;

//溢出位复位

mstime=mstime+1;

//计时时间增加1ms

if(bot())break;

//测试者松开按钮,计时完毕

loop:

if(k==1)//按键弹开后始终显示时间

display(mstime);

else//假如按键按下,重新开始测试

mstime=0;

P2=0xff;

5.6总程序

bytebot(void)

voiddisplay(wordms)

for(i=0;

i++)

unsignedlongrandom(void)

voidlms(void)

if(TF1==1)

j--)

if(k==1)

if(bot())

break;

loop:

if(k==1)

else

第六章结论

经过两周的制作,完成了人体反响速度测试仪的设计,达到了预定的要求。

这次课程设计给我们提供了一个应用自己所学知识去勇于创新和实际的平台。

一开始做人体速度测试仪的设计是觉得看起来会比拟简单,但是真正做起来才发现其实还是比拟困难的,毕竟在这一方面的技术有限。

第一周前两天进展了资料查阅了解,第三天开始编辑说明书,同时进展电路图的构思理解。

从通过理论设计,再到确定具体方案,成型。

整个过程都需要充分利用所学的知识进展思考、借鉴。

可以说,这次课程设计是对前面所学知识进展的一次比拟综合的检验。

总的来说,这次课程设计虽然很累,但却是苦中有乐,非常充实。

在这次实习中,正确的思路是很重要的,只有你的设计思路是正确的,你的设计才有可能成功。

这次能那么成功的完成我的设计,要感教师和同学们的帮助,教师、胡教师能在百忙之中来知道我,每当我遇到棘手的问题,教师总能给我最好的建议,教我改良的方法,不厌其烦的指出我在设计中存在的问题和错误,是我更好的完成设计。

在理解程序的时候也请教了同学,他们也很热情的回答我的问题,让我在这次实习中不会觉得那么孤立无援。

这次的实习也让我学到了很多东西,对很多单片机方面的知识有了更深的了解,并且能够运用到实践中了。

原来实习不尽可以锻炼我们的动手能力,而且能够让我们学到更多的理论知识,也觉得很

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1