基于单片机的汽车疲劳驾驶报警系统.docx
- 文档编号:23010356
- 上传时间:2023-04-30
- 格式:DOCX
- 页数:21
- 大小:191.23KB
基于单片机的汽车疲劳驾驶报警系统.docx
《基于单片机的汽车疲劳驾驶报警系统.docx》由会员分享,可在线阅读,更多相关《基于单片机的汽车疲劳驾驶报警系统.docx(21页珍藏版)》请在冰豆网上搜索。
基于单片机的汽车疲劳驾驶报警系统
1前言2
1.1什么是疲劳2
1.4小结3
2本设计的总体思路及其理念3
2.1理论基础3
2.2AT89C2051单片机的芯片管脚介绍3
2.3设计方案5
3系统硬件部分的设计6
3.1心率采集电路6
3.2单片机控制电路8
3.3小结10
4系统软件部分的设计10
4.1主程序设计10
4.2定时程序设计11
4.3中断子程序设计13
4.4显示子程序设计15
5软件调试17
5.1调试软件的介绍17
5.2调试结果17
6总结18
参考文献19
基于单片机的汽车疲劳驾驶报警系统
摘要:
汽车已经成为我们人类生活中的一种必需交通工具,不仅与我们的生活是息息相关,而且与我们的生命安全关系密切。
因为疲劳驾驶造成的交通事故已经严重的威胁到我们的生活,所以能够帮助降低一定概率的交通事故的仪器实用性是很强的。
设计描述的是一个基于AT89C2051单片机的汽车疲劳驾驶检测预警系统。
它可以用来检测汽车驾驶员的疲劳程度,使用此心率计在一定程度上降低交通事故。
而且,它的检测方式是非接触式的,使用红外线检测驾驶员的心率;然后,由单片机系统判断其是否处于疲劳驾驶状态,将显示结果使用LCD液晶显示屏显示出来,并进行语音提示。
设计简单实用,有很高的实用价值。
关键词:
疲劳驾驶;疲劳检测;预警系统
Drivingalarmsystemofautomobilefatiguebasedonsinglechipmicrocomputer
Abstract:
Thecarshavebecomeessentialtransportforhumanlife,notonlywithourlivesarecloselylinked,andarecloselyrelatedtoourlifesafety.Becauseaccidentscausedbydriverfatiguehasbeenaseriousthreattoourlives.Sotheinstruments’practicabilaityisverystrong,becauseitispossibletohelpreducetheprobabilityofatrafficaccident.
ThispaperdescribesadrowsinessearlywarningsystemdetectionbasedonAT89C2051Single-chipMicrocomputer.Itisusingondeterminethedriver’sleverofattention,acertainextent,itcanreducethenumberoftrafficaccident.Besides,themethodofdetectionisuntouched,andusinginfraredinspectiondetectthedrivers’’heartrate;TheSingle-chipMicrocomputerwilljudgewhetherheisinthefatiguedrivingstate,LCDwilldisplaytheresultsandvoiceprompt.Thisdesignissimpleandpracticalwithhighvalue.
Keywords:
Fatigueddirving;faitiguedetection;earlywarningsystem
1前言
在高速发展的现代,拥有汽车的人是越来越多,交通越来越拥挤,正是因为如此,交通事故也越来越频发,这就促使人们正视这一问题。
而在交通事故中,因为驾驶员疲劳驾驶引起的事故,占其中相当大的一部分,疲劳驾驶已经成为威胁我们生命的一大危害,了解疲劳驾驶以及它引发的一些变化,有助于我们找到原因以及克服它的方法,可以在驾驶员行驶时发生突发或者无意识的疲劳困倦进行警醒,从而一定程度上避免车祸的发生。
1.1什么是疲劳驾驶
疲劳驾驶就是驾驶员较长时间维持一个姿势或者休息时间不够等原因造成的反映迟钝,驾驶员打盹、疲乏、操作不当甚至完全丧失驾驶能力就是它的主要表现。
并且,疲劳驾驶不仅反映在心理上,还反映在生理上。
心理上的反应包含反应时间延迟、出现动作不协调、大脑注意力分散等;生理反应上包括神经系统、血液、眼睛、握力等的变化。
1.2疲劳驾驶与交通事故
据相关调查显示,发生交通事故的原因百分之八十五是与驾驶员有关的,环境与车辆的因素只是占到百分之十五,司机在事故发生前的那么一瞬间的行为以及故障会直接导致交通事故的发生,知觉上的延迟、对危险情况的错误抉择、对环境的决策错误等就是导致交通事故的一些因素;而在所有的驾驶员所犯的错误中,决策错误和知觉延缓是最为常见的,而这些就会使驾驶员产生反应迟钝、注意力不集中等反应,产生这些错误的根本的原因就是疲劳驾驶。
所以,在一定程度上制止驾驶员疲劳驾驶这一行为现象,就能有效的减小交通事故发生的概率。
1.3怎么预防疲劳驾驶
许多的国家已经意识到疲劳驾驶的问题,对于它的研究工作早期上主要是使用在医学角度上,是在医疗器械的帮助下实现的,这些研究可以追溯到上个世纪三十年代美国交通部下辖的洲际商业协会对城市商业机动车辆的驾驶员服务时间的管理条例的合理性进行的调查;而实质性研究汽车驾驶员与疲劳驾驶的关系是从上世纪八十年代初开始的,由美国国会批准交通部实施改革驾驶服务时间,探索驾驶员和道路安全的关系,提高完善公共汽车安全法规开始的,我们发现疲劳驾驶研究的高度提高到了立法,可以在一定程度上保证疲劳驾驶研究的有效性、合法性和持续性[7]。
研究工作大致上可以分成两类:
第一类是研究疲劳困倦产生的原理和其他各种疲劳困倦的诱因,找到降低此种危险的方法;第二种是研究车辆的智能报警系统以及相关可以警醒的用具,来防止驾驶员产生疲劳,并在疲劳的状态下行驶。
驾驶员在疲劳驾驶时会有很多不同的反应及其状况出现在身体上,对于它们的检测大致上可以将其分为以下三类状况,一类是基于驾驶员的生理特征上的疲劳驾驶检测识别技术(如疲劳时人的心率、脑电图、肌电图、呼吸状态、脉搏频率等会有变化);另一类是基于驾驶员头部或面部特征的疲劳驾驶检测识别技术(如疲劳时人的部表情、眼睛眨动的频率、注视的方向、瞳孔的直径等的变化);第三类是基于驾驶员操纵车辆的特点和所驾驶车辆的特性的疲劳驾驶检测识别技术(如疲劳时人的握力、车辆的行驶轨道等会有变化)。
基于此,本设计选取就是驾驶员在疲劳驾驶时他的生理特征的变化,即脉搏的变化来对其进行是否处于疲劳状态进行辨别。
1.4小结
疲劳驾驶所造成的危害是不言而喻的,所以,对汽车疲劳驾驶的研究是必要的,对汽车疲劳驾驶智能报警系统的开发是可行且必须的。
2本设计的总体思路及其理念
2.1理论基础
单片机是一个不带外部设备的微型计算机。
它是20世纪70年代中期发展起来的一种大规模的集成电路芯片(1971年inter公司研制出世界上第一个四位微处理器),是集合CPU、RAM、ROM、I/O接口和中断系统于一体的电子设备。
单片机是一个软硬结合的产物。
它具有集成度高(highlyintegrated)、功能强大(powerful)、体积小(small)、灵活(flexible)、稳定可靠(reliable)、价格低廉(inexpensive)等许多的特点。
上世纪八十年代以来,单片机发展十分的迅速,各种新型高性能的机种产品不断地出现在市场上,单片机顺利成章的已经成为工厂实现自动化和各控制领域的支柱产业之一。
单片机的基本端口操作和基本功能,包括单片机的定时、中断、I/O端口以及简单的外部器件的设计等,这些都需要去了解设计,才能成功完成一个设计。
2.2AT89C2051单片机的芯片管脚介绍
本设计使用的是AT89C2051单片机;
图2-1AT89C2051单片机的引脚配置图
此单片机有20个引脚,相关引脚配置如图2-1所示。
它各个管脚的功能是:
VCC电源电压;
GND接地;
RST复位输入;当RST变为高电平并维持了2个机器周期时,所有的I/O引脚都被复位达到高电平[8];
XTAL1内部时钟工作电路的输入端、反向振荡器的输入端[8];
XTAL2反向振荡放大器的输出;
P1口8位双向I/O口;P1.0和P1.1两个端口需要外部上拉,可以用作片内精确模拟比较器的正向输入(AIN0)、反向输入(AIN1)[8];引脚P1.2~P1.7提供内部上拉,当作为输入且被外部下拉为低电平时,它们就输出电流,这是因内部上拉的缘故[8]。
P1口的输出缓冲器能接收20mA的电流,并且能直接驱动LED显示器;P1口的引脚写入“1”后,可以用作输入[8]。
在闪速编程和编程校验期间,P1口也可以接收编码数据[8]。
P3口引脚P3.0~P3.5和P3.7是7个带内部上拉的双向I/0引脚;P3.6在内部已经与片内比较器输出相连,所以不能作为通用的I/O引脚访问[8]。
AT89C2051的性能指标有:
与MCS-51产品指令系统完全兼容;
2k字节可重擦写闪速存储器;
1000次擦写周期;
2.7V-6V的工作电压范围;
全静态操作:
0Hz-24MHz;
两极加密程序存储器;
128字节内部RAM;
15个可编程I/0口线;
2个16位定时/计数器;
6个中断源;
可编程串行UART通道;
可直接驱动LED的输出端口;
内置一个模拟比较器;
低功耗空闲和掉电模式。
2.3设计方案
2.3.1检测方法
此设计采取的方法用红外线来检测人体脉搏,因为光能避开很强烈的电磁干扰,具有很强烈的绝缘性,并且可以做到非侵入式的检测脉搏波。
它采用红外线来检测并采集驾驶员的脉搏,所检测部位可以为被检测人的一个手指或耳垂(对于驾驶员来说检测耳垂会比较不影响他的驾驶,如果制造成蓝牙耳机的样式会更加实用方便)。
2.3.2检测原理
此设计的检测基本原理是:
人体组织中的血液流量伴随着心脏的搏动而产生变化,血管中血液的饱和度发生变化,那么人体组织的半透明度也会因此被改变。
当血液被送到人体各部分的组织时,血管中的血液饱和度就会变大相应的组织的半透明度就会减小;当血液重新流回到心脏时,人体组织血管中的血液饱和度变小,相应的它的半透明度就会增大。
因此,如果在人体组织相对比较薄弱的地方(例如指尖和耳垂)用红外发光二极管产生的红外线照射,就可以用红外三极管接收并将其转换为电信号。
因为用上述方法测试得到的脉搏信号跟人体的脉搏频率成正比,脉搏信号只要通过一定功能的电路转换成的脉冲信号并对其进行相应的处理,就可以实现检测的脉搏频率被随时检测的目的。
而如果检测到的脉搏频率低于或者高于正常值的百分之二十时,单片机对其进行分析输出,然后驱动报警电路,对驾驶员进行报警,从而实现其智能。
2.3.3系统设计方案
综上,设计系统框图及其说明如图2-2所示:
红外检测与采集脉搏
信号抗干扰及滤波
信号整形与放大
单片机AT89C2051
报警系统
液晶屏显示
图2-2设计系统框图
3系统硬件部分的设计
在硬件部分,电路主要完成的是心率采集和心率数据处理的功能,那么可以将整体电路分为心率采集和单片机控制电路。
3.1心率采集控制系统
图3-1心率采集处理电路
心率采集处理电路如图3-1所示。
红外检测采集电路模块:
由D1和Q1组成的红外检测元件等组成;
信号整形电路模块:
RC振荡电路(由电阻R2和和电容C1组成)、光电隔离电路、一阶低通滤波电路,它们共同构成了信号抗干扰电路组;另外,它们和IC1b、C5与R10、IC1c共同组成信号整形电路。
以上三个主要的模块组成心率采集电路。
心率采集处理电路工作过程如下:
电路中的红外线二极管D1发射红外线照射到耳垂或指尖部位,然后红外接收三极管Q1接收相应人体部位的半透明度,电信号就这样被转换出来了。
据相关资料显示,大多数人体的脉搏是在五十次每分钟和两百次每分钟之间,这样经过计算可得到的频率范围大致就在0.78Hz和3.33Hz之间,由此可知,经由红外设置得到的脉搏频率会很低。
那么,外界高频信号会很容易地干扰到脉搏信号而出现错误,所以,信号在进入单片机系统之前就必须先进行处理才能够使用。
电路中采用C1和R2组合进行低通滤波,可以滤除绝大多数的高频干扰。
然而,由于本系统设计的使用场所为室外,室外光线相对室内明亮许多,因此它很大可能会遇到强光辐射的情况。
电容C2和电容C3背靠背串联组成的双极性耦合电容的设计,可以避免室外强光干扰接收脉搏时的红外线(它们构成了一个简单的光电隔离电路,从而使干扰光线被隔离)。
另外,为了彻底滤除高频干扰,使用由IC1a、电容C4、电阻R4组成的截止频率为10Hz左右(
)的低通滤波器电路,又把输入的信号放大两百倍左右(
)。
到这里我们就得到了经由前面处理所得到脉冲正弦波是有噪声的,需要对它整形。
先要正弦波信号经过比较器IC1b转换成方波(电压比较器可以实现将模拟信号转换为二值信号的功能,即只有0和1两种状态的离散信号),而利用R8可以把比较器的阈值电压调定在正弦波的幅值范围之内。
然后,信号经由电容C5和电路R10构成的微分电路(微分运算电路输入方波,且RC远小于
时,就输出尖顶波)方波进行微分处理就可以成为正负相间的尖脉冲。
得到的脉冲输入到IC1c(单稳多谐振荡器)的反相输入端来稳定脉冲的输出,然后IC1c的输出就可以成为后面的实际需要。
单稳多谐振荡器IC1c在工作时,输入信号一旦出现,输出端就会输出一个高电平,与此同时电容C6就会通过电阻R11充电。
充电过程大约需要20毫秒,之后,因为电容C6充电电流的减小使得IC1c的同相输入端电位降低,当反相输入端的电位高于同相输入端的电位时(此时尖脉冲已过去很久),IC1c就将改变存在的状态并再次输出低电平。
这20毫秒的时间所产生的脉冲是与人体的脉搏是同步的,电路D3发出红光的闪烁情况会和信号脉冲相呼应。
那么,此时就有了实际所需的脉冲信号,它经由电阻R12直接被送到AT89C2051单片机的P3.3引脚,然后,经过系统的处理就可以实现后面的计数以及显示了。
电路中R14、R15对9V电压分压并经过IC1d缓冲所得到的4.5V电压就是IC1a、IC1b、IC1c它们工作所需的电源电压。
这样的设置,使得即使电池电压降低到6V,电路也能实现正常工作。
3.2单片机控制电路
图3-2单片机控制电路
此部分介绍单片机控制电路如图3-2所示.主要由以下几部分组成:
单片机(型号AT89C2051);LCD显示屏(SMC1602A),显示部分用来显示数据;蜂鸣器,发出提示音;晶振电路,给单片机提供晶振;以及复位电路等几部分。
3.2.1晶振电路
在单片机系统中,有通用的晶振电路,它是一种非常典型的电路,分为外部时钟方式和内部时钟方式两种[4]。
此设计使用的晶振频率是12MHz,在晶振两端接上负载电容构成三点式电容振荡是为了帮助晶振起振,即XTAL1、XTAL2两端口外接两个33PF的谐振电容。
当晶振电路能够提供稳定的时钟信号后,单片机就可以一步一步地从ROM中取指令执行程序[4]
3.2.2复位电路
复位电路和晶振电路一样都是单片机系统中非常典型的外部电路[4]。
从功能上复位电路的实现一般可以分为两种:
一种是使用电源复位,即外部的复位电路在系统上电之后直接使单片机工作,单片机的开启和暂停都是通过电源控制的[4];另一种方法就是在复位电路中设计了按键开关,通过设计的按键开关来触发复位电平,控制单片机的复位[4]。
此设计采用的是第二种,当按下开关K且通电时,电容两端便相当于是短路,单片机上的RST引脚上就会变成高电平,然后电源就会通过电阻给电容充电,RST端电压慢慢降下,高电平就会变成低电平,单片机就会开始正常工作[4]。
3.2.3工作原理
脉冲信号被心率采集电路处理后,所得结果与单片机的P3.3引脚相连。
单片机的中断触发模式设定为负跳变触发。
当脉冲的下降沿到达时,AT89C2051就会被触发产生中断,相关程序就会对脉冲开始计时;当下一个脉冲的下降沿到达时,单片机就对前后相邻下降沿之间的时间间隔计算,计算所得到的结果就是被检测驾驶员的心率。
这个结果由P1口送至液晶显示芯片的DB端口,数据进行处理后显示出来。
在液晶显示屏显示心率值之后,单片机将对此心率值与80次/分~120次/分的人体正常脉搏范围进行比较。
若此心率值X为80≤X≤120,显示芯片中会显示“verygood!
”,以表示被测试者心率正常;若此值不在80到120范围之内,即X<80或者X>120,那么,显示芯片中就会显示“alittlebad!
”,以便表示被测者心率不正常。
另外,为更人性化而提示用户及时观察显示屏上的心率值,电路中设置了一个蜂鸣器电路,由单片机系统驱动,当每次脉冲到来时,单片机的P3.7引脚所连接的蜂鸣器SP都会发出提示音提示用户,那么,当用户第二次听到蜂鸣器发出的提示音时,就表明一分钟的脉搏计数的显示已经完成。
这样,就可以用这种方法来提示驾驶者自己此时所处的状态是否是正常的。
此外,此设计的有效测量显示范围是50次/分到199次/分。
为了避免可能被出现的干扰影响到检测,在单片机对两个脉冲之间的时间间距进行检测时,即意外情况的出现使得到的心率次数值不在我们所设置的有效测量范围之内时,就忽略该干扰并且不显示。
这样子就更加降低了心率计在实际使用时所出现的误差的可能性。
3.2.4元器件的选取
设计中心率计的电源为七到九伏的直流电源,可以通过交直流转换后来获取到电压,同样的可以直接使用电池供电。
正常工作时的电流为100mA。
硬件电路中所使用的IC1a、IC1b、IC1c和IC1d是运算放大器IC1(四运放LM324)的四路分配。
使用普通蜂鸣器作为提示音装置。
单片机采用的是12MHz的晶振。
在整合安装时,可以把D1和Q1分别连接到蓝牙耳机式装置的耳垂前后的位置,剩余的电路板等各部件安装在一个塑制小盒中,小盒可以放在驾驶员前的玻璃窗下面。
为方便使用时进行按键操作和观察,红色发光二极管D3、蜂鸣器、复位键K1、液晶显示器的显示窗口都需要在塑制小盒的上方留出一定的放置位置。
在实际使用时,驾驶员先将D1和Q1组成的蓝牙耳机样式的检测装置戴上,然后接通电源。
心率计在正常工作时,能看到红色发光二极管在闪烁,为提高安全系数,复位键K1被按下之后,单片机复位,并重新开始测量脉搏信号计数和显示。
在听到第二次蜂鸣器的提示音之后,显示屏上观察到的是被检测者的心率,随后可以看到之前显示的心率是否正常的英文提示语。
3.3小结
硬件部分的设计需要进行的是把脉搏信号通过一系列的电路转化成为我们需要的、实际可用的方波,然后将方波输入到单片机中去进行一系列的数据处理,然后驱动后面的LCD显示屏显示数据。
4系统软件部分的设计
4.1主程序设计
主程序部分流程图如图4-1:
初始化
开中断
显示程序
开始
图4-1主程序部分流程图
它的主要代码为:
ORG0000H
AJMPMAIN;转主程序
ORG0013H;
中断矢量地址
AJMPIP0;转中断服务程序起始地址
ORG030H
MAIN:
MOVSP,#60H;设堆栈指针
SETBIT1;设
为边沿触发模式
SETBEA;CPU开中断
SETBEX1;允许
中断
MOVR7,#00H;计数器赋初值
LP:
ACALLDISP;调显示子程序
AJMPLP
IP0:
INCR7;计数器加1
RET
4.2定时程序设计
定时器子程序流程图如图4-2所示:
关中断
保护现场
设定时器初值
小于50次/分?
计时器R6加1
蜂鸣器发音
恢复现场
开中断
返回
大于200次/分?
Y
Y
N
N
图4-2定时子程序流程图
主要代码如下:
CLREX1
PUSHACC
PUSHPSW
MOVTH0,31H
MOVTL0,30H
MOVR7,31H
LOOP1:
CJNZR7,#50,LOOP3
LOOP2:
CJNZR7,#200,LOOP4
LOOP3:
MOVA,C
JZA,LOOP5
CLRA
SJMPLOOP2
LOOP4:
MOVA,C
JNZA,LOOP5
INCR6
CLRP3.7
SJMPLOOP5
LOOP5:
POPPSW
POPACC
SETBEX1
RET1
4.3中断子程序设计
INT1外中断子程序的流程如图4-3:
保护现场
取脉冲时间间隔
根据时间计算出每分钟的脉搏次数
十六进制转十进制
保存结果
恢复现场
返回
图4-3外中断子程序流程图
主要代码如下:
START:
PUSHACC;保护现场
PUSHPSW
CLREX1
MOVTMOD,#90H;T1工作于工作模式1,GATE置位
MOVTL0,#00H
MOVTH0,#00H;送定时初值
WAIT1:
JBP3.3WAIT1;等待
由高变低
SETBTR0;启动定时
WAIT2:
JBP3.3WAIT2;等待
由高变低
CLRTR0;停止计数
MOVR6,TL0
MOVR7,TH0
CLRC
MOVA,R6
SUBBA,#0BBH;计算时间差
MOV31H,A;存储结果
MOVA,R7
SUBBA,#3CH
MOV30H,A
MOVR0,TL0
MOVR1,TH0
CLRA
MOVR2,A;清零
MOVR3,A
MOVR4,A
MOVR5,#16
LOOP:
CLRC
MOVA,R0
RLCA;从待转换数的高端移出一位到CY
MOVR0,A
MOVA,R1
RLCA
MOVR1,A
MOVA,R4;送到BCD的低端
ADDCA,R4;带进位加,自身相加,等于左移一位
DAA;十进制调制,变为BCD码
MOVR4,A
MOVA,R3
ADDCA,R3
DAA
MOVR3,A
MOVA,R2
ADDCA,R2
MOVA,R2
DJNZR5,LOOP;共转换十六位数
MOVA,R4
MOVB,#16
DIVAB
MOVR1,A
MOVR0,B
MOVA,R2
MOVR4,A
MOVA,R3
MOVB,#16
DIVAB
MOVR3,A
MOVR2,B
SETBEX1
POPACC
POPPSW
4.4显示子程序设计
显示子程序流程图,如图4-4所示:
取结果
显示脉搏次数
延时
次数≥80?
次数≤120?
显示“verygood!
”
显示“alitter
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 单片机 汽车 疲劳 驾驶 报警 系统