任务名称基于AT89S52单片机的人体反应速度测试仪设计知识点
通过学习和查阅资料本项目要求掌握如下知识
1、 +5V电源原理及设计
2、单片机复位电路工作原理及设计。
3、单片机晶振电路工作原理及设计。
4、按键电路的设计。
5、驱动电路74LS07、 74LS244的特性及使用。
6、 LED的特性使用。
7、AT89S52单片机引脚。
8、单片机C语言及程序设计。
本课题建议学时60学时。
本课题的教学步骤可分为
1、下发任务书。 2学时
2、学生根据任务书等资料解决相关问题。 20学时
3、教师对相关知识的疑难问题进行讲解。 9学时
4、学生67人一组讨论并确定安装方案填写工艺卡3学时
5、学生按照工艺卡完成准备工作。 1学时
6、学生绘制电原理图、方框图、安装图、元器件明细表。 6学时
7、学生自行完成人体反应速度测试仪的安装、调试、维修。 15学时
8、对人体反应速度测试仪的制作维修情况进行评价。 2学时
9、工作任务的小结。 1学时
任务书 2个课时
一、项目概述
随着社会的发展许多交通事故都是由于人们在突发状况下不能及时作出判断而导致的。因此在面对突发事故时人的反应快慢直接影响到事情变化的好换。下面以AT89 S 52单片机为核心设计出测试人体反应速度的仪器用以测试人的反应时间 间接反应人们面对突发状况的反应能力。
二、项目要求
基于AT89 S 52单片机的人体反应速度测试仪设计要求如下
1、测试者按下测试按键后测试灯亮起测试随之开始。
1
2、在测试过程中测试者要注意观察测试灯的变化当看到测试灯熄灭时
测试者要迅速放开测试按键单片机会在数码管上显示测试者的反应时
间。
3、若测试者在测试灯熄灭之前放开测试按键则系统自动判为犯规并显
示出错信息。
三、 系统设计
以AT89 S 52单片机为核心的人体反应速度测试仪主要控制测试灯的状态通过测试按键的状态来间接计算人体反应速度。正常情况下系统运行主程序一直处于空闲等待状态直到测试者按下按键后 LED测试灯立即亮。AT89S52单片机在LED测试灯亮的同时开始计算一个随机时间在一段随机时间结束后AT89S52单片机把.LED测试灯熄灭并开始计时灯灭与测试者放开按键的时间差此计时时间用于记录被测试者的反应时间并以毫秒为时间单位在4位数码管上显示如果在LED测试灯熄灭之前提前放开测试按键则显示9999作为出错信息。
四、硬件设计
LED数码管的显示电路中采用动态数码管显示在其中P0端口控制段码低电平有效。 P2.0—P2.3端口控制位码高电平有效。 P2.3端口控制第1个数码管 P2.2端口控制第2个数码管 P2.1端口控制第3个数码管 P2.0端口控制第4个数码管。
各个数码管的段码都是P0端口的输出 即各个输入的段码都是一样的为了使其分别显示不同的数字可采用动态扫描的方式 即先只让最低位显示0经过一段延时再只让次低位显示1依次类推。 由于视觉短暂只要延时时间足够短就能够使得数码的显示看起来非常稳定清楚。
通过本课题的学习你能够独立完成声光控电子开关的制作并且可以进行它类型声光控延时电子开关的维修下图为声光控电子开关电原理图。
2
声光控延时电子开关电原理图
五、软件设计
基于AT89S52单片机的人体反应速度测试仪程序清单如下
#inc lude<stdlib.h>
#inc lude<stdio.h>
#include<.reg52.h>
Sbit key=P 1^0
Sbit led=P1^1
Typedef unsigned char byte
Typedef unsigned int word
Static byte disp[5]
Code byte table[11]={0xc0,0xF9,0xA4,0xB0,0x99,0x92,0x82,
0xF8,0xB0,0x90} //byte table[]内存放数码管
//表 0~9
Byte bot(void) //读取按键有按键被按下则{ //返回0否则返回1
If(key==0)return 0;
Els e return 1;
}
Void display(word ms) //该函数将缓存区display[]中的
//整数译码后用数码管进行显示{
Byte posi=0x01,I,j,temp;
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=dis p[1];
3
Temp=table[temp];
For(j=0;j<200;j++) //延时
{
P2=pos i; //显示xxxx毫秒形式
P 0=temp;
}
Posi*=2
}
}
Unsigned long random(void) //调用系统随机函数生成随机数{
Word rt;
Byte k=0;
Srand(50000); //种下随机数种子范围为0~50000Rt=rand(); //生成随机数
Rt=rt*rand(); //使随机数足够大能够延时足够时间Return rt;
}
Void INIT_TMR1(void)
{
TNOD=0x11;
TH1=oxfc;
TL1=0x66;
TR1=1;
}
Void delaylms(void) //延时1ms
{
INIT_TMR1();while(1)
{
If(TF1==1)
Break
}
}
Void main(void)
{
Byte k=0; //获取按键情况
4
K=bot(); //输入前先把p1口都加高电平P1=0xff; //主循环开始
While(1)
{
Word mstime=0,j;
Word r;
While(bot()); //等待按键按下否则始终等待Led=0; //按键被按下后灯亮R=random();
For(j=r;j>0;--j) //延时一段随机时间为1ms的随机倍数{
Delaylms();
K=bot();
If(k==1) //如果在灯灭前弹起按键显示最长时间作为惩罚
{
Mstime=9999;
Goto loop;
}
}
Led=1; //灯灭
INIT_TMR1(); //初始定时状态
While(1) //如果按键弹起反复进入定时状态。
//每1ms计时器溢出一次毫秒数加1{if(TH1==1)
{
TH1=0xfc;
TL1=ox18;
TR1=1;
TF1=0;
++mstime;
}
If(k=bot()) break;
}
Loop:led=1;
While(1)
{
If(k==1) //按键弹起后始终显示时间
{
K=bot();
Display(mstime);
}
Els e //若按键按下重新开始测试
5
{
Mstime=0;
P2=0xff;
Break;
}
}
}
}
流程卡 2个课时
基于AT89S52单片机的人体反应速度测试仪设计 15个课时
1、准备本项任务所需的材料、工具
2、如果不全缺哪些
6
3、根据上一项目的制作步骤进行操作。
材料明细卡
平分卡 2个课时
基于AT89S52单片机的人体反应速度测试仪设计满分100分
7
8
基于AT89 S 52单片机的人体反应速度测试仪设计的维修满分100分
工作小结 1个课时
v5net当前对香港和美国机房的走优质BGP+CN2网络的云服务器进行7折终身优惠促销,每个客户进线使用优惠码一次,额外有不限使用次数的终身9折优惠一枚!V5.NET Server提供的都是高端网络线路的机器,特别优化接驳全世界骨干网络,适合远程办公、跨境贸易、网站建设等用途。 官方网站:https://v5.net/cloud.html 7折优惠码:new,仅限新客户,每人仅限使用一次 9...
HostKvm 商家我们算是比较熟悉的国内商家,商家主要还是提供以亚洲数据中心,以及直连海外线路的服务商。这次商家有新增香港和俄罗斯两个机房的高防服务器方案。默认提供30GB防御,且目前半价优惠至4.25美元起步,其他方案的VPS主机还是正常的八折优惠。我们看看优惠活动。香港和俄罗斯半价优惠:2021fall,限购100台。通用优惠码:2021 ,八折优惠全部VPS。我们看看具体的套餐。1、香港高...
在之前的一些文章中有提到HostYun商家的信息,这个商家源头是比较老的,这两年有更换新的品牌域名。在陆续的有新增机房,价格上还是走的低价格路线,所以平时的折扣力度已经是比较低的。在前面我也有介绍到提供九折优惠,这个品牌商家就是走的低价量大为主。中秋节即将到,商家也有推出稍微更低的88折。全场88折优惠码:moon88这里,整理部分HostYun商家的套餐。所有的价格目前都是原价,我们需要用折扣码...