单片机原理 人体反应测速
一种基于单片机的人体对外界刺激反应时间测量装置[实用新型专利]
![一种基于单片机的人体对外界刺激反应时间测量装置[实用新型专利]](https://img.taocdn.com/s3/m/0b6d62a4e518964bce847c7d.png)
专利名称:一种基于单片机的人体对外界刺激反应时间测量装置
专利类型:实用新型专利
发明人:王佐,钟光录,赵承星
申请号:CN201120422259.7
申请日:20111031
公开号:CN202386696U
公开日:
20120822
专利内容由知识产权出版社提供
摘要:本实用新型涉及人体反应测量装置,特别是一种基于单片机的人体对外界刺激反应时间测量装置。
包括有光敏传感器、带有定时器的单片机和按键,按键与单片机连接,光敏传感器与单片机连接,所述的电脑主机与单片机连接,单片机与电脑主机之间设有USB转UART接口模块。
本实用新型具有高精度、操作简单、适应范围广的特点。
申请人:王佐
地址:723000 陕西省汉中市汉台区朝阳路陕西理工学院物理系
国籍:CN
更多信息请下载全文后查看。
基于单片机的测速仪的设计与实现

基于单片机的测速仪的设计与实现在现代科技飞速发展的时代,测速仪在各个领域都有着广泛的应用,比如交通管理、工业生产、运动竞技等。
而基于单片机的测速仪因其成本低、性能稳定、易于实现等优点,成为了测速领域的重要研究方向。
一、测速仪的工作原理要理解基于单片机的测速仪的设计,首先需要了解其工作原理。
常见的测速方法有多种,如激光测速、雷达测速、编码器测速等。
在本次设计中,我们采用了编码器测速的方法。
编码器是一种能够将机械运动转换为电信号的装置。
当被测物体运动时,带动编码器旋转,编码器会输出一系列的脉冲信号。
通过测量这些脉冲信号的频率,就可以计算出被测物体的速度。
二、单片机的选择单片机是整个测速仪的核心控制单元,其性能直接影响到测速仪的准确性和稳定性。
在众多的单片机型号中,我们选择了 STM32 系列单片机。
STM32 单片机具有高性能、低功耗、丰富的外设资源等优点,能够满足测速仪的设计需求。
三、硬件电路设计硬件电路设计是测速仪实现的基础。
主要包括以下几个部分:1、传感器接口电路用于连接编码器,将编码器输出的脉冲信号传输给单片机。
2、单片机最小系统包括单片机芯片、时钟电路、复位电路等,为单片机的正常工作提供必要的条件。
3、显示电路用于显示测量到的速度值,可以选择液晶显示屏(LCD)或者数码管。
4、电源电路为整个系统提供稳定的电源。
四、软件设计软件设计是测速仪实现功能的关键。
主要包括以下几个步骤:1、初始化设置对单片机的各个外设进行初始化,如定时器、中断等。
2、脉冲信号采集通过定时器捕获编码器输出的脉冲信号,并计算脉冲的频率。
3、速度计算根据脉冲频率和编码器的参数,计算出被测物体的速度。
4、显示输出将计算得到的速度值通过显示电路进行显示。
五、系统调试在完成硬件和软件设计后,需要对整个系统进行调试。
调试过程中,可能会遇到各种问题,如脉冲信号丢失、速度计算不准确、显示异常等。
针对这些问题,需要仔细分析,逐步排查,找出问题的根源,并进行相应的修改和优化。
基于单片机的液体点滴红外测速

基于单片机的液体点滴红外测速内蒙古大学本科学年论文(设计) 第 - 1 - 页2011-5-13基于单片机的液体点滴红外测速第一章绪论1.1 本论文研究的背景静脉输液是临床医学中的一个重要的治疗手段和医学监护的一项重要内容,在各个医院的医疗工作中被广泛应用,据统计住院输液率为70% ~ 80%。
它不仅是一种重要的给药途径,而且还是给患者补充体液、营养的重要方法。
在输液过程中,输液速度是一个很重要的参数, 一般要根据患者年龄、病情和药物种类等因素来分别确定。
同时,在静脉输液过程中,必须有人陪护,以防鼓包等事故发生,尤其对术后几乎需要24小时不间断输液的患者的监护,更是让护理者身心憔悴。
当护理者发生困倦时,极易发生事故。
通过调查得知,目前几乎所有医院因种种原因仍没有采用输液监控系统,而是采用传统的输液方法, 即将液体容器挂在一定高度,利用液体静压原理与大气压的作用使液体下滴,将大量灭菌药液直接滴入静脉内,从而达到治疗目的。
用软管夹对软管夹紧和放松控制滴速,医护人员按药剂特性对滴速进行控制。
由于这种滴速控制是通过肉眼观察进行估计的,需要根据经验来调节, 使得点滴流速不够准确,影响了治疗效果,以至危害病人健康。
当液体输完时,如床旁无陪护或医护人员未内蒙古大学本科学年论文(设计) 第 - 2 - 页2011-5-13 及时换药或拔针头,将会出现回血等情况。
为此患者家属需要陪同病人并且不断地观察输液情况,这样容易导致交叉感染,患者也得不到良好的休息,影响治疗质量和患者康复。
同时,护士也需要不停地巡视病房,增加工作负荷,有时还会产生医疗纠纷。
基于以上情况,针对上述现象,我们需要一种能够动态显示滴速、精确控制点滴滴速,并且能在液体走空前发出声像警报的低价、实用、智能的输液控制报警系统,对治疗过程采用自动化监控和管理是发展的必然趋势。
1.2 国内外研究现状及发展趋势陷国外对智能型输液装置的研究较早,如日本、美国和德国等国家上世纪八十年代末就进行了智能型输液装置的研制。
【速度】人体反应速度测试仪制作报告

【关键字】速度人体反应速度测试仪制作报告学院:学生:设计框图:硬件部分直流5V稳压电源模块——方案:用7805芯片实现电源模块,7805部分参数如下——电路图如下通过multisim仿真软件将元件参数确定,节省了调试时间,并且一次完成焊接,使电路美观实用。
整个系统共用一个电源使系统不需要在接参考地。
红外感应模块——方案:核心是LM339比较器集成芯片,部分参数如下——控制电路虽说只用了其中一部分,但集成芯片比较可靠,而且多部分集成使得焊接时少一些后顾之忧,提高板子利用程度。
利用红外对管分压的变化加上LM339对电压的放大实现负跳变信号的引入,完成本身开关控制的功能。
电路图如下——单片机系统(CPU模块)方案——使用芯片STC89C52RC,此芯片是一款低价,低功耗,而且内存充足的单片机。
最小系统如图晶振为11.0592MHz。
作为处理器,应用其定时器中断,引脚电平检测,外围电路有三极管放大电路(使其足以驱动蜂鸣器)等。
控制流程显示系统方案——此系统采用1602液晶显示屏,1602不能显示汉字等复杂字符,但足以满足本题需要,并且使用简单。
软件部分流程设计如上图。
代码如下#include<reg52.h>sbit Red=P1^0;sbit Green=P1^1;sbit rs=P2^0;sbit rw=P2^1;sbit en=P2^2;sbit BUZZER=P2^3;sbit s1=P2^4;unsigned char tt=0,miao=30; unsigned char code b[]={"ms"}; void delay(unsigned int z){unsigned int x,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}void buzzer(){BUZZER=1;delay(500);BUZZER=0;delay(500);}void red(){while(1){Red=0;delay(500);Red=1;delay(500);}}void write_com(unsigned char com) {rs=0;rw=0;en=0;P0=com;delay(5);en=1;delay(5);en=0;}void write_data(unsigned char date){rs=1;rw=0;P0=date;delay(5);en=1;delay(5);en=0;}void write_sfm(unsigned char date) {unsigned char shi,ge;shi=date/10;ge=date%10;write_com(0x80+4);write_data(0x30+shi);write_data(0x30+ge);}void init(){unsigned char i;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);}void main(){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);}void time() interrupt 1{if(miao!=0){TH0=(65536-50000)/256;TL0=(65536-50000)%256;tt++;}else if(miao==0){TH0=(65536-1000)/256;TL0=(65536-1000)%256;tt++;}}void intersvr0() interrupt 0{unsigned char date;unsigned char bai;unsigned char shi;unsigned char ge;if(miao!=0){buzzer();buzzer();buzzer();red();}else if(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------------------------------------------------------------ 测试完毕。
人体反应速度测试仪

摘要摘要反应速度是指人体对刺激发生反应的快慢。
反应速度通常用“从刺激到开始发生反应的时间”,即反应时来衡量。
目前,国内外常用反应时指标研究运动员的机能状态及心理活动过程。
反应速度是人类的基本生理素质之一。
以AT89S52单片机为核心的人体反应速度测试仪,主要控制测试灯的状态,通过测试按键的状态来间接计算人体反应速度。
实验测试表明,系统测试精度高、抗干扰能力强、反应测试较为准确,具有一定的参考价值。
同时因为其结构简单、体积小、成本低、扩展方便,在反应速度测试中有广泛的应用前景。
关键字:单片机AT89S52 反应速度ABSTRACTABSTRACTReaction speed is refers to react to stimulate the body responds to it. Reaction speed usually use "from stimulation to start happening reaction time", i.e., reaction time measurement. At present, the domestic and international common reaction index research status and the function of athletes psychological process. Reaction speed is one of the basic human physiological quality. AT89S52 SCM as the core in the human body reaction velocity tester, main control test lamp state, through the test buttons to indirect calculation human reaction state pace. Test results show that system testing precision, strong anti-jamming capability, reaction test is more accurate, to have the certain reference value. Also because of its simple structure, small volume, low cost, convenient, in the reaction speed expansion tests have broad application prospectKey Words: single-chip AT89S52 reaction speed test目录第1章引言 (1)1.1课题背景 (1)1.2 单片机简介与发展概况 (2)1.3 设计要求 (3)1.4 主要内容 (3)第2章系统硬件介绍 (4)2.1 单片机的介绍 (4)2.2单片机的工作过程 (4)2.3 AT89S52主要性能 (5)2.4 AT89S52引脚说明 (6)2.5 LED显示器的特性 (10)第3章系统总体方案设计与分析 (12)3.1 涉及的基础知识 (12)3.2 总体方案 (12)3.3 功能模块框图 (13)第4章系统硬件设计 (14)4.1 硬件结构 (14)4.1.1 硬件总体连接图 (14)4.1.2 74LS244 (15)4.1.3 74ls365 (15)4.2 实现方法 (16)4.3 详细流程图 (16)第5章主要代码编写 (18)5.1 按键电路的实现 (18)5.2 四位LED数码管显示电路的实现 (18)5.3 主函数的实现 (19)第6章系统调试 (23)6.1 仿真软件 Protetus (23)6.2 仿真调试过程 (24)第7章总结与体会 (27)参考文献 (28)致谢 (29)附录 (30)外文资料原文 (36)译文 (38)第1章引言第1章引言1.1课题背景速度素质是指人体进行快速运动的能力,即在单位时间内迅速完成某一动作或通过某一距离的能力。
单片机测量人体电阻的方法

单片机测量人体电阻的方法随着科技的不断发展,单片机在各个领域的应用越来越广泛。
在医疗健康领域,单片机的应用也逐渐增多,其中之一便是用于测量人体电阻。
人体电阻是人体对电流的阻抗,它在不同情况下可以反映出人体的健康状况。
本文将详细介绍使用单片机测量人体电阻的方法。
一、人体电阻的理论基础人体电阻是人体对电流的阻抗,通常用欧姆(Ω)来表示。
在正常情况下,人体电阻的取值在几百到几千欧姆之间。
人体电阻的大小受多种因素的影响,包括体表皮肤的干湿程度、体温、体积、个体差异等。
通常情况下,人体电阻越小,说明人体对电流的阻抗越小,电流通过的越多,电阻越大则表示电流通过的越少。
通过测量人体的电阻值,可以对人体的健康状况进行初步的判断。
二、单片机测量人体电阻的原理单片机测量人体电阻的原理是利用单片机内部的模拟输入/输出功能和模拟转换功能,通过外接的电流源和电压源,对人体电阻进行测量。
一般来说,可以采用恒定电流源来通入人体,并采用模拟输入模块测量两端的电压,通过测得的电流和电压值计算出人体的电阻。
这种方法可以利用Ohm's Law来计算得到人体的电阻值。
三、单片机测量人体电阻的步骤和方法1. 选择合适的电流源和电压源:在测量人体电阻时,需要选择一个合适的电流源和电压源。
一般来说,常用的电流源为稳定电流源,电压源可以选择DC电源或者信号发生器。
2. 连接电路:将电流源和电压源通过合适的电路连接到人体。
在连接电路时,需要注意安全,确保电流和电压的大小不会对人体造成伤害。
3. 测量电流和电压:使用单片机的模拟输入模块测量人体两端的电压,并记录下测量得到的电流值和电压值。
4. 计算电阻值:利用测得的电流值和电压值,利用Ohm's Law(欧姆定律)进行计算,得出人体的电阻值。
四、单片机测量人体电阻的应用单片机测量人体电阻的方法可以应用于多个领域,包括医疗健康、体育锻炼监测、生物反馈等。
在医疗健康领域,可以利用单片机测量人体电阻值,结合其他生理参数,对患者进行身体健康监测。
毕业设计_基于单片机人体反应速度测试仪

工学院毕业设计报告题目:基于单片机人体反应速度测试仪院系:信息与控制学院(黑三)专业:通信工程(黑三)班级学号: 093041 07 (黑三)学生:三(黑三)指导教师:(黑三)成绩:2014 年 06 月 25日摘要本文是基于单片机人体反应速度测试描述,通过单片机测试人的反应速度。
在本设计中以AT89S52单片机为核心的人体反应速度测试仪,主要通过控制测试灯的状态,在测试按键的状态来间接计算人体反应速度。
正常情况下系统运行主程序一直处于空闲等待状态,知道测试者按下按键后,LED测试灯立即点亮。
AT89S52单片机在LED测试灯亮的同时开始计算一个随机时间,在一段随机时间结束后,AT89S52单片机把LED测试灯熄灭,并开始计时灯灭与测试者放开按键的时间差,此计时时间用于纪录被测试者的反应时间,并以毫秒为时间单位在4位数码管上显示。
如果在LED测试灯灭之前提前放开测试按键,则显示9999作为出错信息。
设计中采用AT89S52单片机,其以高性能低价格的优势成为全球使用围最广泛的单片机之一;显示部分采用LED数码管的显示方式,本套系统在不影响其测试性能的情况下,大大的节省了设计成本,是性价比较高的一款人体反应测试议。
和其他测试仪相比具有明显的价格竞争优势;同时,本设计作品的使用方法简单,只需按下按键即可完成测试,方便测试人员的测试使用。
关键词:单片机;反应速度;AT89S52 ;LED;数码管AbstractThis article is based on single chip microcomputer human reaction speed tests described, through the single chip microcomputer test response speed. AT89S52 MCU as the core in the design of the human body reaction velocity tester, mainly by controlling the state of the test lamp, in the state of the test button to indirect calculation of human body reaction speed. System normal operation of the main program has been idle waiting state, know the tester after press the button, the LED test lamp light up immediately. AT89S52 single chip microcomputer in LED to test the lights at the same time began to calculate a random time, at the end of a random time, AT89S52 single chip microcomputer test the LED lights, and start timing lights and testers release button lag, this timer is used to record the subject's reaction time, and in milliseconds as the unit of time in the four digital tube display. If the LED test before the lights went out early release test button, 9999 as the error message is displayed.Design USES AT89S52 single chip microcomputer, its to high performance low price advantage to become one of the world scope the most widely used microcontroller; Display part adopts LED digital tube display, this set of system in the case of does not affect the test performance, greatly save the design cost, is the high cost performance of a human reaction test. Compared with other tester has obvious price competitive advantage; At the same time, the use of this design method is simple, just press the button to complete the test, the convenience for the tester's test.Keywords: Single chip microcomputer; Reaction Speed; AT89S52; LED; Digital tube目录1 硬件部分设计 (1)1.1硬件结构设计 (2)1.2硬件电路设计 (3)1.2.1硬件模块选择 (3)1.2.2硬件模块设计 (3)1.2.3控制计算公式 (5)2 软件部分设计 (6)2.1开发环境 (7)2.2主体程序设计 (7)2.2.1主程序设计 (7)2.2.2中断程序设计 (7)3 系统测试 (8)3.1软件测试 (8)3.2硬件测试 (8)结论 (9)参考文献 (10)附录 A (12)附录 B (13)附录 C (14)1 硬件部分设计本项目以AT89S52单片机为核心,实现对人体反应速度的测试,主要控制测试灯的状态,通过测试按键的状态来间接计算人体反应速度。
基于MSP430单片机身体体征参数测定

电子设计大赛设计报告题目身体体征信号监测仪(C题)【本科组】组员:指导老师:摘要本身体体征信号监测仪是以MSP430单片机为控制核心,实现智能监测人体参数的多功能控制。
主要功能包括在自己设定的参数范围下,利用传感器采集人体物理参数实现自主测量、利用无线传输数据,当身体体征参数超出正常范围时能发出警示信号,并借助数据传输和通信平台紧急通知值班医生和亲朋好友,采取救治措施。
关键词 MSP40单片机、传感器、无线通信、报警目录摘要1系统方案1.1 单片机控制模块选择1.2 体温监测模块选择1.3 心率测量模块1.4 电源模块1.5 报警模块1.6 显示部分1.7 无线传输部分2系统理论分析与计算2.1 整体系统结构2.2 理论计算2.2.1 体温计算2.2.2 心率计算2.3 模块框图及电路原理 2.3.1 温度模块2.3.2 心率模块2.4 测试方案与测试结果 2.4.1 体温测量方案2.4.2 心率测量方案3 测试结果及分析3.1 体温测量结果3.2 心率测量结果身体体征信号监测仪(C题)【本科组】一系统方案本系统主要是由控制模块、体温监测模块、心率监测模块、呼吸频率检测模块、电源模块、报警模块及显示模块组成,下面分别论证这几个模块的选择。
1 单片机控制模块选择方案一:使用51单片机作为控制器方案二:使用MSP430单片机作为控制器对于方案一,众所周知51单片机是一款入门级别单片机,因为它的资料非常多,非常利于入门的学习,但是这款单片机功耗高,有许多协议不支持。
所以是一块比较适合入门的单片机。
51单片机实物图所以,对于初学者和设计简单系统51单片机确实很理想的选择,但51单片机有很多致命的缺陷,例如1. 运行速度很慢,(因为是CISC(集中指令)结构,而且芯片为了抗干扰采用了12分频的方法)2. 所有的I/0口都是准双向口,I/0口的驱动能力弱。
(但是AT89的灌电流比较大,大概有20mA左右)3. 芯片里面的P0口没有上拉电阻(P1,P2,P3口有上拉电阻)如果要输出高电平或者要定义成输入口,一般要外接电阻上拉。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课程设计实验报告题目单片机的人体反应速度测试仪课程名称单片机原理及接口技术院部名称机电工程学院专业电气工程及其自动化班级电气2班姓名许俊超学号0922107020指导教师高峰金陵科技学院教务处制摘要:随着社会的发展,许多交通事故都是由于人们在突发情况下不能及时做出判断而导致的。
因此,在面对突发事故时,人的反应快慢直接影响到事情变化的好坏。
下面以AT89751单片机为核心,设计出测试人体反应速度的仪器用以测试人的反应时间,间接反映人们面对突发状况的反应能力。
以AT89751单片机为核心的人体反应速度测试仪,主要控制测试灯的状态,通过测试按键的状态来间接计算人体反应速度。
正常情况下系统运行主程序一直处于空闲等待状态,知道测试者按下按键后,LED测试灯立即点亮。
AT89751单片机在LED测试灯亮的同时开始计算一个随机时间,在一段随机时间结束后,AT89751单片机把LED测试灯熄灭,并开始计时灯灭与测试者放开按键的时间差,此计时时间用于纪录被测试者的反应时间,并以毫秒为时间单位在4位数码管上显示。
如果在LED测试灯灭之前提前放开测试按键,则显示9999作为出错信息。
关键词:AT89751 ; LED ; 数码管目录1 课题综述 01.1课题来源 01.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主函数的实现 (9)4.6总程序 (10)5 程序调试 (14)总结 (15)参考文献 (15)1 课题综述1.1 课题来源许多交通事故都是由于人们在突发情况下不能及时做出判断而导致的。
因此,在面对突发事故时,人的反应快慢直接影响到事情变化的好坏。
下面以AT89751单片机为核心,设计出测试人体反应速度的仪器用以测试人的反应时间,间接反映人们面对突发状况的反应能力。
我们学习的是单片机理论知识,而课程设计则是对我们学习的理论知识的时间和巩固。
1.2预期目标基于AT89751单片机的人体反应速度测试仪设计要求如下:(1)测试者按下测试按键后,测试灯亮起,测试随子开始。
(2)在测试过程中,测试者要注意观察测试灯的变化,当看到测试灯熄灭时,测试者要迅速放开测试按钮,单片机会在数码管上显示测试者的反应时间。
(3)若测试者在测试灯熄灭之前放开测试按键,则系统自动判为犯规,并显示出错信息。
1.3 面对的问题(1) 对AT89751单片机的了解和应用(2) 对LED数码管的特性的了解和使用1.4 需解决的关键技术本项目主要通过控制测试灯的状态,通过测试按键的状态来间接计算人体反应速度。
要了解每一段数码管与AT89751个引脚的连接,各个芯片的输入输出关系,必须通过查阅资料确定。
必须了解LED显示器的显示原理。
2系统分析2.1 涉及的基础知识通过学习和查阅资料,本项目需要掌握和了解如下知识:·+5V电源原理及设计。
·单片机复位电路工作原理及设计。
·单片机晶振电路工作原理及设计。
·测试按键电路设计。
·驱动电路74LS07、74LS244的特性及使用。
·LED的特性及使用。
·AT89751单片机引脚。
·单片机C语言及程序设计。
2.1.1 AT89S51单片机简介功能特性:AT89751是一种低功耗、高性能CMOS8位微控制器,具有8K 在系统可编程Flash 存储器。
使用Atmel 公司高密度非易失性存储器技术制造,与工业80C51 产品指令和引脚完全兼容。
片上Flash允许程序存储器在系统可编程,亦适于常规编程器。
在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得AT89751为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。
AT89751具有以下标准功能:8k字节Flash,256字节RAM,32 位I/O 口线,看门狗定时器,2 个数据指针,三个16 位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。
另外,AT89751 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。
空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工作。
掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。
8 位微控制器8K 字节在系统可编程Flash AT89751。
主要性能:与MCS-51单片机产品兼容、8K字节在系统可编程Flash存储器、1000次擦写周期、全静态操作:0Hz~33Hz 、三级加密程序存储器、32个可编程I/O口线、三个16位定时器/计数器八个中断源、全双工UART串行通道、低功耗空闲和掉电模式、掉电后中断可唤醒、看门狗定时器、双数据指针、掉电标识符。
图2-1 AT89751引脚图2.1.2 LED显示器的特性(1) 发光响应快,亮度强,高频特性好;而且随着材料的不同,数码管还能发出红、黄、绿、蓝、橙等多种颜色的光。
(2) 机械性能好,体积小,重量轻,价格低廉;能与COMS和TTL电路配合使用;使用寿命长。
(3) 工作电压低,驱动电流适中。
每段电流为5~10mA,一只数码管的7段LED 全亮需要电流35~70mA。
这样打的电流需要由驱动电路提供,因此,使用时要注意数码管的驱动问题。
在使用中,为了给发光二极管加驱动电压,他们应有一个公共的引脚,公共的引脚有如下两种链接方法:一、共阴极接法。
把发光二极管的阴极连接在一起构成阴极公共引脚,使用时公共引脚接地,这样阳极引脚上加高电平的发光二极管就导通点亮,而加低电平的则不亮。
二、共阳极接法。
把发光二极管的阳极连接在一起作为阳极公共引脚,使用时阳极公共引脚接+5V。
这样阴极引脚上加低电平的发光二极管即可导通点亮,二加高电平的则点不亮。
2.1.3 LED显示器显示原理、并排使用的多位数码管成为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 硬件连接图用一只发光二极管模拟测试灯,以AT89751单片机的P1.0端口控制这只发光二极管、发光二极管加限流电阻接+5V电源,P1.0端口输出低电平时,测试灯亮,输出高电平时,测试灯灭。
P1.1端口接测试按键,P0端口控制LED数码管的七段数码显示,P2.0~P2.3控制4位数码管的位选。
图3-1人体反应测速仪电路原理图PROTEL图3-2PRODUCE图3.2 实现方法主程序采用查询方式,当测试按键按下时,AT89751单片机使LED测试灯亮起的同时调用随机函数产生一个随机时间,AT89751单片机利用这个随机时间计时。
计时时间到,AT89751单片机产生一个输出使单片机的P1.1端口为低电平,LED测试灯熄灭,AT89751单片机进行新的一轮计时,送开测试按键,计时时间停止,把这个计时时间送往数码管显示电路显示。
当AT89751单片机第一轮的计时时间还未到时,若测试按键松开,AT89751单片机9999送往数码管显示电路显示。
3.3 详细流程图人体反应速度测试仪程序流程图,如图3-2所示。
图3-3程序流程图4 代码编写4.1按键电路的实现描述:读取按键byte bot(void) //读取按键,有按键被按下则返回0,否则返回1{if(key==0)return 0;else return 1;}4.2 4位LED数码管显示电路的实现描述:将缓存区display[]中的整数译码后用数码管进行显示void display(word ms) //数码管上的显示反应时间{byte posi=0x01,i,j,temp;disp[3]=ms/1000; //1sdisp[2]=(ms%1000)/100; //100msdisp[1]=(ms%100)/10; //10msdisp[0]=ms%10; //1msfor(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 随机函数的实现描述:调用系统随机函数unsigned long random(void) //生成随机数{word rt;byte k=0;srand (50000); //种下随机数种子,范围0-50000rt=rand(); //生成随机熟rt=rt*rand(); //使随机数足够大,能够延时足够时间return rt;}4.4 中断程序的实现描述:定时器初始化子程序void INIT_TMR1(void){TMOD=0x11;TH1=0xfc;TL1=0x66;TR1=1;}void delaylms(void) //延时1ms{INIT_TMR1() ;while(1){if(TF1==1){break;}}}4.5 主函数的实现void main(void){byte k=0;k=bot(); //获取按键情况P1=0xff; //输入前先把P1口都加高电平while(1) //主循环开始{word mstime=0,j;word r;while(bot()); //等待按键按下,否则始终等待led=0; //按键被按下后,灯亮r=random();for (j=r;j>0;--j) //延时一段随机时间,为1马上的随机倍数{delaylms();k=bot();if (k==1) //如果在灯灭前谈起按键,显示最长时间作为惩罚{mstime=9999;goto loop;}}led=1; //灯灭INIT_TMR1(); //初始定时状态while(1) //如果按键弹起,反复进入定时状态,没1ms计时器溢出一次,毫秒数加1{if(TF1==1){TH1=0xfc;TL1=0x18;TR1=1;TF1=0;++mstime;}if(k=bot()) break;}loop: led=1 ;while(1){if(k==1) //按键弹开后始终显示时间{k=bot();display(mstime);}else //若按键按下,重新开始测试{mstime=0;P2=0xff;break;}}}}4.6总程序byte bot(void) //读取按键,有按键被按下则返回0,否则返回1if(key==0)return 0;else return 1;void display(word ms) //数码管上的显示反应时间{byte posi=0x01,i,j,temp;disp[3]=ms/1000; //1sdisp[2]=(ms%1000)/100; //100msdisp[1]=(ms%100)/10; //10msdisp[0]=ms%10; //1msfor(i=0;i<4;i++) //数码管显示{temp=disp[i];temp=table[temp];for(j=0;j<200;j++) //延时{P2=posi; //显示xxxx秒形式P0=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){TMOD=0x11;TH1=0xfc;TL1=0x66;TR1=1;}void delaylms(void) //延时1ms{INIT_TMR1() ;while(1){if(TF1==1){break;}}}void main(void){byte k=0;k=bot(); //获取按键情况P1=0xff; //输入前先把P1口都加高电平while(1) //主循环开始{word mstime=0,j;word r;while(bot()); //等待按键按下,否则始终等待r=random();for (j=r;j>0;--j) //延时一段随机时间,为1马上的随机倍数{delaylms();k=bot();if (k==1) //如果在灯灭前谈起按键,显示最长时间作为惩罚{mstime=9999;goto loop;}}led=1; //灯灭INIT_TMR1(); //初始定时状态while(1) //如果按键弹起,反复进入定时状态,没1ms计时器溢出一次,毫秒数加1{if(TF1==1){TH1=0xfc;TL1=0x18;TR1=1;TF1=0;++mstime;}if(k=bot()) break;}loop: led=1 ;while(1)if(k==1) //按键弹开后始终显示时间{k=bot();display(mstime);}else //若按键按下,重新开始测试{mstime=0;P2=0xff;break;}}}}5 程序调试程序调试一般是一个一个模块地进行,一个一个子程序地调试,最后联起来统调。