人体反应速度测试仪制作报告.docx
《人体反应速度测试仪制作报告.docx》由会员分享,可在线阅读,更多相关《人体反应速度测试仪制作报告.docx(13页珍藏版)》请在冰豆网上搜索。
人体反应速度测试仪制作报告
人体反应速度测试仪制作报告
学院:
学生:
设计框图:
硬件部分
直流5V稳压电源模块——
方案:
用7805芯片实现电源模块,7805部分参数如下——
电路图如下
通过multisim仿真软件将元件参数确定,节省了调试时间,并且一次完成焊接,使电路美观实用。
整个系统共用一个电源使系统不需要在接参考地。
红外感应模块——
方案:
核心是LM339比较器集成芯片,部分参数如下——
控制电路虽说只用了其中一部分,但集成芯片比较可靠,而且多部分集成使得焊接时少一些后顾之忧,提高板子利用程度。
利用红外对管分压的变化加上LM339对电压的放大实现负跳变信号的引入,完成本身开关控制的功能。
电路图如下——
单片机系统(CPU模块)
方案——
使用芯片STC89C52RC,此芯片是一款低价,低功耗,而且内存充足的单片机。
最小系统如图
晶振为11.0592MHz。
作为处理器,应用其定时器中断,引脚电平检测,外围电路有三极管放大电路(使其足以驱动蜂鸣器)等。
控制流程
显示系统
方案——
此系统采用1602液晶显示屏,1602不能显示汉字等复杂字符,但足以满足本题需要,并且使用简单。
流程设计如上图。
代码如下
#include
sbitRed=P1^0;
sbitGreen=P1^1;
sbitrs=P2^0;
sbitrw=P2^1;
sbiten=P2^2;
sbitBUZZER=P2^3;
sbits1=P2^4;
unsignedchartt=0,miao=30;
unsignedcharcodeb[]={"ms"};
voiddelay(unsignedintz)
{
unsignedintx,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
voidbuzzer()
{
BUZZER=1;
delay(500);
BUZZER=0;
delay(500);
}
voidred()
{
while
(1)
{
Red=0;
delay(500);
Red=1;
delay(500);
}
}
voidwrite_com(unsignedcharcom)
{
rs=0;
rw=0;
en=0;
P0=com;
delay(5);
en=1;
delay(5);
en=0;
}
voidwrite_data(unsignedchardate)
{
rs=1;
rw=0;
P0=date;
delay(5);
en=1;
delay(5);
en=0;
}
voidwrite_sfm(unsignedchardate)
{
unsignedcharshi,ge;
shi=date/10;
ge=date%10;
write_com(0x80+4);
write_data(0x30+shi);
write_data(0x30+ge);
}
voidinit()
{
unsignedchari;
write_com(0x38);
delay
(1);
write_com(0x0c);
delay
(1);
write_com(0x06);
delay
(1);
write_com(0x01);
delay
(1);
i=0;
write_com(0x80+0x40+10);
while(b[i]!
='\0')
{
write_data(b[i]);
i++;
}
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
EX0=1;
IT0=0;
TR0=0;
delay
(1);
}
voidmain()
{
BUZZER=0;
init();
while
(1)
{
if(s1==0)
break;
}
TR0=1;
Red=0;
write_sfm(30);
while(miao!
=0)
{
if(tt==20)
{
tt=0;
miao--;
write_sfm(miao);
}
}
ET0=0;
TR0=0;
TH0=(65536-1000)/256;
TL0=(65536-1000)%256;
EA=1;
ET0=1;
TR0=1;
buzzer();
Red=1;
Green=0;
while
(1);
}
voidtime()interrupt1
{
if(miao!
=0)
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
tt++;
}
elseif(miao==0)
{
TH0=(65536-1000)/256;
TL0=(65536-1000)%256;
tt++;
}
}
voidintersvr0()interrupt0
{
unsignedchardate;
unsignedcharbai;
unsignedcharshi;
unsignedcharge;
if(miao!
=0)
{
buzzer();
buzzer();
buzzer();
red();
}
elseif(miao==0)
{
date=tt;
bai=date/100;
shi=(date%100)/10;
ge=(date%100)%10;
write_com(0x80+0x40+4);
write_data(0x30+bai);
write_data(0x30+shi);
write_data(0x30+ge);
}
}
系统测试
将各个组件组装完成系统,上电后按下开关复位的同时用手挡住红外开关,液晶显示屏上显示
---------------------------------------------------ms----------------------------------------------------------
按下按键开关,30秒倒计时,并于液晶显示屏显示,同时红灯亮,30秒过程中如果移开手,蜂鸣器响3声,红灯闪烁;一直挡住红外开关直至30秒结束,蜂鸣器响一声,绿灯亮,移开手显示
-------------------------------00----------------------------------------------------------------------------------------------------------------------------------------------------------169ms------------------------------------------------------------
测试完毕。
设计总结
该系统基本实现了题目中基本要求部分,由于时间等因素,发挥部分没有完成,所以系统并没有发挥要求部分。
犯规报警,反应测试均较好完成。
过程中遇到了许多问题,比如电路焊接出现虚焊,电路板规划不够合理等,不过在我组成员通过查询资料,询问学长等各种方式将其全部解决。