任务名称基于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个课时
cmivps香港VPS带来了3个新消息:(1)双向流量改为单向流量,相当于流量间接扩大一倍;(2)Hong Kong 2T、Hong Kong 3T、Hong Kong 无限流量,这三款VPS开始支持Windows系统,如果需要中文版Windows系统请下单付款完成之后发ticket要求官方更改即可;(3)全场7折年付、8折月付优惠,优惠码有效期一个月!官方网站:https://www.cmivp...
数脉科技怎么样?数脉科技品牌创办于2019,由一家从2012年开始从事idc行业的商家创办,目前主营产品是香港服务器,线路有阿里云线路和自营CN2线路,均为中国大陆直连带宽,适合建站及运行各种负载较高的项目,同时支持人民币、台币、美元等结算,提供支付宝、微信、PayPal付款方式。本次数脉科技给发来了新的7月促销活动,CN2+BGP线路的香港服务器,带宽10m起,配置E3-16G-30M-3IP,...
10GBIZ服务商经常有看到隔壁的一些博客分享内容,我翻看网站看之前有记录过一篇,只不过由于服务商是2020年新成立的所以分享内容比较谨慎。这不至今已经有将近两年的服务商而且云服务产品也比较丰富,目前有看到10GBIZ服务商有提供香港、美国洛杉矶等多机房的云服务器、独立服务器和站群服务器。其中比较吸引到我们用户的是亚洲节点的包括香港、日本等七星级网络服务。具体我们看看相关的配置和线路产品。第一、香...