基于AT89S52单片机的人体反应速度测试仪Word文档格式.docx

上传人:b****2 文档编号:612024 上传时间:2023-04-29 格式:DOCX 页数:16 大小:113.34KB
下载 相关 举报
基于AT89S52单片机的人体反应速度测试仪Word文档格式.docx_第1页
第1页 / 共16页
基于AT89S52单片机的人体反应速度测试仪Word文档格式.docx_第2页
第2页 / 共16页
基于AT89S52单片机的人体反应速度测试仪Word文档格式.docx_第3页
第3页 / 共16页
基于AT89S52单片机的人体反应速度测试仪Word文档格式.docx_第4页
第4页 / 共16页
基于AT89S52单片机的人体反应速度测试仪Word文档格式.docx_第5页
第5页 / 共16页
基于AT89S52单片机的人体反应速度测试仪Word文档格式.docx_第6页
第6页 / 共16页
基于AT89S52单片机的人体反应速度测试仪Word文档格式.docx_第7页
第7页 / 共16页
基于AT89S52单片机的人体反应速度测试仪Word文档格式.docx_第8页
第8页 / 共16页
基于AT89S52单片机的人体反应速度测试仪Word文档格式.docx_第9页
第9页 / 共16页
基于AT89S52单片机的人体反应速度测试仪Word文档格式.docx_第10页
第10页 / 共16页
基于AT89S52单片机的人体反应速度测试仪Word文档格式.docx_第11页
第11页 / 共16页
基于AT89S52单片机的人体反应速度测试仪Word文档格式.docx_第12页
第12页 / 共16页
基于AT89S52单片机的人体反应速度测试仪Word文档格式.docx_第13页
第13页 / 共16页
基于AT89S52单片机的人体反应速度测试仪Word文档格式.docx_第14页
第14页 / 共16页
基于AT89S52单片机的人体反应速度测试仪Word文档格式.docx_第15页
第15页 / 共16页
基于AT89S52单片机的人体反应速度测试仪Word文档格式.docx_第16页
第16页 / 共16页
亲,该文档总共16页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

基于AT89S52单片机的人体反应速度测试仪Word文档格式.docx

《基于AT89S52单片机的人体反应速度测试仪Word文档格式.docx》由会员分享,可在线阅读,更多相关《基于AT89S52单片机的人体反应速度测试仪Word文档格式.docx(16页珍藏版)》请在冰点文库上搜索。

基于AT89S52单片机的人体反应速度测试仪Word文档格式.docx

数码管

目录

1课题综述1

1.1课题来源1

1.2预期目标1

1.3面对的问题1

1.4需解决的关键技术1

2系统分析1

2.1涉及的基础知识1

2.2总体方案3

2.3功能模块框图4

3系统设计4

3.1硬件连接图4

3.2实现方法5

3.3详细流程图5

4代码编写6

4.1按键电路的实现6

4.24位LED数码管显示电路的实现7

4.3随机函数的实现7

4.4中断程序的实现8

4.5主函数的实现8

5程序调试10

6运行与测试11

6.1硬件测试11

6.2软件测试11

总结12

参考文献13

1课题综述

1.1课题来源

许多交通事故都是由于人们在突发情况下不能及时做出判断而导致的。

我们学习的是单片机理论知识,而课程设计则是对我们学习的理论知识的时间和巩固。

1.2预期目标

基于AT89S52单片机的人体反应速度测试仪设计要求如下:

(1)测试者按下测试按键后,测试灯亮起,测试随子开始。

(2)在测试过程中,测试者要注意观察测试灯的变化,当看到测试灯熄灭时,测试者要迅速放开测试按钮,单片机会在数码管上显示测试者的反应时间。

(3)若测试者在测试灯熄灭之前放开测试按键,则系统自动判为犯规,并显示出错信息。

1.3面对的问题

(1)对AT89S51单片机的了解和应用

(2)对LED数码管的特性的了解和使用

1.4需解决的关键技术

本项目主要通过控制测试灯的状态,通过测试按键的状态来间接计算人体反应速度。

要了解每一段数码管与AT89S52个引脚的连接,各个芯片的输入输出关系,必须通过查阅资料确定。

必须了解LED显示器的显示原理。

2系统分析

2.1涉及的基础知识

通过学习和查阅资料,本项目需要掌握和了解如下知识:

·

+5V电源原理及设计。

单片机复位电路工作原理及设计。

单片机晶振电路工作原理及设计。

测试按键电路设计。

驱动电路74LS07、74LS244的特性及使用。

LED的特性及使用。

AT89S52单片机引脚。

单片机C语言及程序设计。

2.1.1AT89S51单片机简介

功能特性:

AT89S52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。

使用Atmel公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。

片上Flash允许程序存储器在系统可编程,亦适于常规编程器。

在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。

AT89S52具有以下标准功能:

8k字节Flash,256字节RAM,32位I/O口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。

另外,AT89S52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。

空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。

掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。

8位微控制器8K字节在系统可编程FlashAT89S52。

主要性能:

与MCS-51单片机产品兼容、8K字节在系统可编程Flash存储器、1000次擦写周期、全静态操作:

0Hz~33Hz 

、 

三级加密程序存储器 

、32个可编程I/O口线 

、三个16位定时器/计数器八个中断源、全双工UART串行通道、低功耗空闲和掉电模式、掉电后中断可唤醒、看门狗定时器、双数据指针、掉电标识符。

图2-1AT89S52引脚图

2.1.2LED显示器的特性

(1)发光响应快,亮度强,高频特性好;

而且随着材料的不同,数码管还能发出红、黄、绿、蓝、橙等多种颜色的光。

(2)机械性能好,体积小,重量轻,价格低廉;

能与COMS和TTL电路配合使用;

使用寿命长。

(3)工作电压低,驱动电流适中。

每段电流为5~10mA,一只数码管的7段LED全亮需要电流35~70mA。

这样打的电流需要由驱动电路提供,因此,使用时要注意数码管的驱动问题。

在使用中,为了给发光二极管加驱动电压,他们应有一个公共的引脚,公共的引脚有如下两种链接方法:

一、共阴极接法。

把发光二极管的阴极连接在一起构成阴极公共引脚,使用时公共引脚接地,这样阳极引脚上加高电平的发光二极管就导通点亮,而加低电平的则不亮。

二、共阳极接法。

把发光二极管的阳极连接在一起作为阳极公共引脚,使用时阳极公共引脚接+5V。

这样阴极引脚上加低电平的发光二极管即可导通点亮,二加高电平的则点不亮。

2.1.3LED显示器显示原理、

并排使用的多位数码管成为LED显示器。

LED显示器多采用动态显示方式,全部数码管共用一套段码驱动电路,各位数码管的同段引脚短接后再接到对应段码的驱动线上。

显示时通过位控制信号采用扫描的方法逐位地循环点亮各位数码管。

动态显示虽然在任一时刻只有一位数码管被点亮,但是由于人眼具有的视觉残留效应,看起来与全部数码管持续点亮的效果完全一样。

LED显示器的动态显示需要为各位提供段码以及相应的位控制,此即通常所说的段控和位控。

把LED显示器段码表预先存放在存储器中,使用时通过查表就可以得到段码。

段码输出后送到公共端码线上,也可称为段控信号。

而通过并行口输出的相互独立的位码则是起选通作用的,也称位控活扫描信号,用于选择显示位。

动态显示具有硬件简单,功耗低和显示灵活性强等优点,但动态显示增加了驱动软件的复杂性,且显示亮度较低。

2.2总体方案

LED数码管的显示电路中采用动态数码管显示,在其中P0端口控制段码,低电平有效,P2.0~P2.3端口控制位码,高电平有效。

P2.3端口控制第1个数码管,P2.2端口控制第2个数码管,P2.1端口控制第3个数码管,P2.0端口控制第4个数码管。

各个数码管的段码都是P0端口的输出,即各个数码管输入的段码都是一样的,为了使其分别显示不同的数字,可采用动态扫描的方式,即先只让最低位显示0,经过一段延时,再只让次低位显示1,以此类推。

由于视觉暂留,只要延时时间足够短,就能够使得数码的显示看起来非常稳定清楚。

2.3功能模块框图

        图2-1人体反应速度测试仪框图

3系统设计

3.1硬件连接图

用一只发光二极管模拟测试灯,以AT89S52单片机的P1.0端口控制这只发光二极管、发光二极管加限流电阻接+5V电源,P1.0端口输出低电平时,测试灯亮,输出高电平时,测试灯灭。

P1.1端口接测试按键,P0端口控制LED数码管的七段数码显示,P2.0~P2.3控制4位数码管的位选。

   图3-1人体反应测速仪电路原理图

3.2实现方法

主程序采用查询方式,当测试按键按下时,AT89S52单片机使LED测试灯亮起的同时调用随机函数产生一个随机时间,AT89S52单片机利用这个随机时间计时。

计时时间到,AT89S52单片机产生一个输出使单片机的P1.1端口为低电平,LED测试灯熄灭,AT89S52单片机进行新的一轮计时,送开测试按键,计时时间停止,把这个计时时间送往数码管显示电路显示。

当AT89S52单片机第一轮的计时时间还未到时,若测试按键松开,AT89S52单片机9999送往数码管显示电路显示。

3.3详细流程图

人体反应速度测试仪程序流程图,如图3-2所示。

图3-2程序流程图

4代码编写

4.1按键电路的实现

描述:

读取按键

bytebot(void)//读取按键,有按键被按下则返回0,否则返回1

{

if(key==0)return0;

elsereturn1;

}

4.24位LED数码管显示电路的实现

将缓存区display[]中的整数译码后用数码管进行显示

voiddisplay(wordms)//数码管上的显示反应时间

byteposi=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=disp[i];

temp=table[temp];

for(j=0;

j<

200;

j++)//延时

P2=posi;

//显示xxxx秒形式

P0=temp;

}

posi*=2;

4.3随机函数的实现

调用系统随机函数

unsignedlongrandom(void)//生成随机数

wordrt;

bytek=0;

srand(50000);

//种下随机数种子,范围0-50000

rt=rand();

//生成随机熟

rt=rt*rand();

//使随机数足够大,能够延时足够时间

returnrt;

4.4中断程序的实现

描述:

定时器初始化子程序

voidINIT_TMR1(void)

TMOD=0x11;

TH1=0xfc;

TL1=0x66;

TR1=1;

voiddelaylms(void)//延时1ms

INIT_TMR1();

while

(1)

if(TF1==1)

break;

4.5主函数的实现

voidmain(void)

k=bot();

//获取按键情况

P1=0xff;

//输入前先把P1口都加高电平

while

(1)//主循环开始

{

wordmstime=0,j;

wordr;

while(bot());

//等待按键按下,否则始终等待

led=0;

//按键被按下后,灯亮

r=random();

for(j=r;

j>

0;

--j)//延时一段随机时间,为1马上的随机倍数

delaylms();

if(k==1)//如果在灯灭前谈起按键,显示最长时间作为惩罚

mstime=9999;

gotoloop;

led=1;

//灯灭

INIT_TMR1();

//初始定时状态

while

(1)//如果按键弹起,反复进入定时状态,没1ms计时器溢出一次,毫秒数加1

TL1=0x18;

TF1=0;

++mstime;

if(k=bot())break;

loop:

led=1;

if(k==1)//按键弹开后始终显示时间

display(mstime);

else//若按键按下,重新开始测试

mstime=0;

P2=0xff;

5程序调试

程序调试一般是一个一个模块地进行,一个一个子程序地调试,最后联起来统调。

在单片机上把各模块程序分别进行调试使其正确无误,可以用系统编程器将程序固化到AT89S52的FLASHROM中,接上电源脱机运行。

调试代码没有出现太大的问题,主要对数码管的码表进行了修改。

6运行与测试

6.1硬件测试

硬件的调试主要是把电路各种参数调整到符合设计要求。

具体步骤如下:

(1)先排除硬件电路故障,包括设计性错误和工艺性故障,一般原则是先静态后动态。

(2)利用万用表或逻辑测试仪器,检查电路中的各器件以及引脚是否连接正确,是否有短路故障。

发现有些焊点连到了一起,造成了短路,然后进行了修改。

(3)先将单片机AT89S52芯片取下,对电路板进行通电检查,通过观察看是没有异常,然后用万用表测试各电源电压,这些都没有问题,接上仿真机进行联机调试观察到各接口线路均正常。

6.2软件测试

软件调试是利用仿真工具进行在线仿真调试,除发现和解决程序错误外,也可发现硬件故障。

由于我的P0.0~P0.7接A0~A7在电路中接反了,故将数码管的码表进行修改,然后才成功的。

总结

本次单片机实习合算起来总共有两周的时间。

之前的一周主要工作是画原理图和焊接电路,后一周主要就是完成软件测试和对硬件中错误的修改。

一开始选择做人体速度测试仪的设计是因为觉得看起来会比较简单,但是真正做起来才发现其实还是比较困难的,毕竟在这一方面的技术有限。

在画电路图的时候就会有很多困难,特别是封装这一块,不过有老师和同学们的帮助我还是成功的完成了。

焊接电路方面由于没有太多经验所以函的不是很美观,其实主要对各个芯片的输入输出和各个引脚的功能不太了解,所以一开始都会焊错。

当基本完成的时兴高采烈的测试是否成功的时候,发现没有成功。

自己在那一直苦恼到底哪里错了呢,实在搞不明白,后来经过老师的提点后发现错误并进行了修改。

最后LED测试灯和测试按键电路终于对了,可是数码管显示总是存在问题,程序又没有错,电路也检查过,没有短路想象,并重新与原理图对照检查了一遍,还是没有发现。

还是跑去问老师了,老师吧整体电路都看了下并检查了我的电路,发现原来线路接反了,原理图就有问题的。

那改的话就很麻烦了,老师说不用改电路了,教我把程序改了下,最后终于成功完成了我的设计。

这次能那么成功的完成我的设计,要感谢老师和同学们的帮助,在理解程序的时候也请教了同学,他们也很热情的回答我的问题,让我在这次实习中不会觉得那么孤立无援。

这次的实习也让我学到了很多东西,对很多单片机方面的知识有了更深的了解,并且能够运用到实践中了。

原来实习不尽可以锻炼我们的动手能力,而且能够让我们学到更多的理论知识,也觉得很充实。

最后我还要感谢学校给我这次实习的机会,和同学老师一起走过的这段时间深深地刻在我的脑海里。

希望自己以后对待别的事情也可以这么认真。

参考文献

1杨居义,杨尧,杨晓琴.单片机课程设计指导.北京:

清华大学出版社,2009

2李广弟,单片机基础(第3版).北京:

北京航空航天大学出版社,2007

3李朝青,单片机原理及接口技术.北京:

北京航天航空大学出版色,2001

4苏家健,曹柏荣,汪志锋.单片机原理及应用技术.北京:

高等教育出版社,2003

5潭浩强,C语言程序设计.北京:

清华大学出版社,2005

6李华,李东.MCS51/98系列单片机原理与应用.北京:

机械工业出版社,1997

指导教师评语

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2