任务名称基于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个课时
TabbyCloud迎来一周岁的生日啦!在这一年里,感谢您包容我们的不足和缺点,在您的理解与建议下我们也在不断改变与成长。为庆祝TabbyCloud运营一周年和七夕节,TabbyCloud推出以下活动。TabbyCloud周年庆&七夕节活动官方网站:https://tabbycloud.com/香港CN2: https://tabbycloud.com/cart.php?gid=16购买链...
Chia矿机,Spinservers怎么样?Spinservers好不好,Spinservers大硬盘服务器。Spinservers刚刚在美国圣何塞机房补货120台独立服务器,CPU都是双E5系列,64-512GB DDR4内存,超大SSD或NVMe存储,数量有限,机器都是预部署好的,下单即可上架,无需人工干预,有需要的朋友抓紧下单哦。Spinservers是Majestic Hosting So...
百纵科技湖南百纵科技有限公司是一家具有ISP ICP 电信增值许可证的正规公司,多年不断转型探索现已颇具规模,公司成立于2009年 通过多年经营积累目前已独具一格,公司主要经营香港服务器,香港站群服务器,美国高防服务器,美国站群服务器,云服务器,母机租用托管!美国CN2云服务器,美国VPS,美国高防云主机,美国独立服务器,美国站群服务器,美国母机。美国原生IP支持大批量订货 合作 适用电商 亚马逊...