任务名称基于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个课时
快快云怎么样?快快云是一家成立于2021年的主机服务商,致力于为用户提供高性价比稳定快速的主机托管服务,快快云目前提供有香港云服务器、美国云服务器、日本云服务器、香港独立服务器、美国独立服务器,日本独立服务器。快快云专注为个人开发者用户,中小型,大型企业用户提供一站式核心网络云端服务部署,促使用户云端部署化简为零,轻松快捷运用云计算!多年云计算领域服务经验,遍布亚太地区的海量节点为业务推进提供强大...
spinservers是Majestic Hosting Solutions LLC旗下站点,商家提供国外服务器租用和Hybrid Dedicated等产品,数据中心包括美国达拉斯和圣何塞机房,机器默认10Gbps端口带宽,高配置硬件,支持使用PayPal、信用卡、支付宝或者微信等付款方式。农历春节之际,商家推出了几款特别促销配置,最低双路E5-2630Lv3机器每月149美元起,下面列出几款机器...
IMIDC是一家香港本土运营商,商家名为彩虹数据(Rainbow Cloud),全线产品自营,自有IP网络资源等,提供的产品包括VPS主机、独立服务器、站群独立服务器等,数据中心区域包括香港、日本、台湾、美国和南非等地机房,CN2网络直连到中国大陆。目前主机商针对日本独立服务器做促销活动,而且提供/28 IPv4,国内直连带宽优惠后每月仅88美元起。JP Multiple IP Customize...