单片机的小车防撞系统的设计方案Word文档格式.docx
《单片机的小车防撞系统的设计方案Word文档格式.docx》由会员分享,可在线阅读,更多相关《单片机的小车防撞系统的设计方案Word文档格式.docx(26页珍藏版)》请在冰豆网上搜索。
4调试及性能分析11
4.1硬件调试11
4.2软件调试11
4.3测试结果与分析11
5设计总结12
致谢12
参考文献13
附录1电路原理图13
附录2PCB图13
附录3程序14
引言
随着现代化城市的发展,城市密度越来越大,城市交通越来越拥堵,人们对自身的生命财产安全越来越重视,在公路上车辆行驶的安全性也得到了更多的关注,能否在高速行驶公路上及时提醒司机驾驶安全也变得更加重要。
因此,设计一个小车防撞系统也就变得很有必要。
目前测量距离一般都采用波在介质中的传播速度和时间关系进行测量。
常用的技术主要有激光测距、微波雷达测距和超声波测距三种[1]。
超声波具有指向性强、能量消耗缓慢且在介质中传播的距离较远的优点,因此经常用于距离的测量。
超声波测距主要用于建筑工地以及一些工业现场和移动机器人研制上,可在潮湿,多尘等环境下工作。
相对于其他技术而言,超声波定位技术成本低、工作稳定、精度高、操作简单等优点,非常适用于距离测量定位。
AT89S51为小车防撞控制系统提供了稳定、可靠的解决办法,充分利用它的片内资源,实现了超声波测距和报警[2]。
1系统设计的目标和任务
1.1系统设计的基本要求
本次设计的主要内容是设计一种基于单片机汽车防撞报警系统的硬件电路,主要利用单片机对超声波传感器采集的模拟数据的处理及存储。
设计的基本要求:
1.快速自动报警功能:
当超声波传感器检测到汽车后方障碍物与汽车的距离小于安全值时,系统能快速进行声光报警。
2.准确地向终端报警:
能够及时并准确地向司机进行报警,快速地实现安全检测。
3.实时检测功能:
监测模块能实时采集汽车与后方障碍物距离的变化,将这些数据定时传送给单片机,有利于及时了解当前所处情况是否处于安全环境之下[3]。
1.2系统设计的思路
该系统分为监测部分与终端接收部分。
监测部分,通过超声波系统对碰到的障碍物进行检测,再通过单片机系统对接收到的数据进行处理,保证在终端能准确地接收信息,蜂鸣器同时工作;
终端接收部分,终端通过单片机分析接收的相关信息,在LED上显示与障碍物的距离[4]。
1.3方案论证
1.3.1发送模块
方案1:
采用压电式超声波换能器。
压电式超声波换能器是利用压电晶体的谐振来工作的。
方案2:
采用反向器74LS04和超声波发射换能器T构成震荡器。
这种电路可以提高超声波发射强度,且电路简单,稳定性高。
方案3:
单电源乙类互补对称功率放大电路和UCM—40T发射器。
利用单电源乙类互补对称功率放大大路驱动发射器[5]。
经论证比较,三种方案差距不大,但鉴于用74LS04电路简单。
故选择方案2。
1.3.2接收模块
采用集成电路CX20186A。
它是一款红外线检波接收的专用芯片,考虑到红外常用的载波频率38KHZ与测距的超声波40KHZ较为接近,可以利用它制作超声波检测接受电路,且电路简单,灵敏度高,还有较强的抗干扰能力。
采用uA741构成两级放大电路,这是专用运算放大器,高增益,增益带宽积大,抗干扰能力强,可测距离远,精度高[6]。
经论证比较,虽然方案2相对方案1可测的更远,但方案1已可满足工程功能的要求,且方案1电路结构简单,方便调试,故采用方案1。
2AT89S51单片机与超声波简介
2.1AT89S51单片机的概述
AT89S51是一种带4K字节闪烁可编程可擦除只读存储器<
FPEROM—FlashProgrammableandErasableReadOnlyMemory)的低电压,高性能CMOS8位微处理器。
该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89S51是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案[7]。
AT89S51单片机的引脚结构如图1所示。
图1AT89S51单片机引脚图
2.2AT89S51单片机的特点
AT89S51是一个低功耗,高性能CMOS8位单片机,片内含4kBytesISP(In-systemprogrammable>
的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISPFlash存储单元,功能强大的微型计算机的AT89S51可为许多嵌入式控制应用系统提供高性价比的解决方案。
AT89S51具有如下特点:
40个引脚,4kBytesFlash片内程序存储器,128bytes的随机存取数据存储器<
RAM),32个外部双向输入/输出<
I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗<
WDT)电路,片内时钟振荡器[8]。
此外,AT89S51设计和配置了振荡频率可为0Hz并可通过软件设置省电模式。
空闲模式下,CPU暂停工作,而RAM定时计数器,串行口,外中断系统可继续工作,掉电模式冻结振荡器而保存RAM的数据,停止芯片其它功能直至外中断激活或硬件复位。
同时该芯片还具有PDIP、TQFP和PLCC等三种封装形式,以适应不同产品的需求[9]。
主要特性:
·
8031CPU与MCS-51兼容
4K字节可编程FLASH存储器(寿命:
1000写/擦循环>
全静态工作:
0Hz-33MHz
三级程序存储器保密锁定
128*8位内部RAM
32条可编程I/O线
两个16位定时器/计数器
6个中断源
可编程串行通道
低功耗的闲置和掉电模式
片内振荡器和时钟电路
.
2.3超声波简介
超声波具有方向性好、在介质中能量消耗缓慢且速度远小于光速等特点,因而可用于距离测定。
超声波测量的思想是从超声波发射到接收到反射回波的时间间隔来计算距离。
超声波传感器是实现声电转换的装置,又称为超声波换能器或者超声波探头。
它是在超声频率的范围内将交变的电信号转变成声信号的能量转换器件。
考虑到实际情况,利用超声波测距时,选用频率为40KHz的超声波。
采用异地反射式来测距,即所测距离是声波传输距离的一半。
测量发射和接收回波的时间差ΔT,在声速V已知的情况下求出距离S[10]。
距离的计算公式如下:
S=(V*ΔT>
/2
2.4基于CX20186A超声波测距的调试
CX20186A是一款红外线检波接收的专用芯片,常用于电视机红外遥控接收器。
考虑到红外遥控常用的载波频率38KHz与测距的超声波频率40KHz较为接近,所以把它用于超声波检测接收电路。
实验证明用CX20186A接收超声波,具有很高的灵敏度和较强的抗干扰能力。
当超声波接收头接收到40KHz方波信号时,将会将此信号通过CX20186A驱动放大送入单片机的外部中断0口。
单片机在得到外部中断0的中断请求后,会转入外部中断0的中断服务程序进行处理,在移动机器人的避障工作中,可以在中断服务程序设定需要单片机处理的最短距离,比如0.5m。
对于距离大于0.5m的障碍物,可以不做处理直接跳出中断服务程序[11]。
3系统软件部分设计
3.1超声波系统主流程图
图2主程序流程图
图3按键中断处理流程图
3.2超声波硬件设计与软件编程
综合考虑,控制模块采用单片机AT89S51控制;
发射模块采用反向器74LS04;
接收模块采用CX20186A;
显示模块采用液晶显示器LED显示;
报警模块采用蜂鸣器。
其系统框图如图4所示。
图4超声波系统框图
3.2.1复位电路
单片机外围需要一个复位电路,复位电路的功能是:
系统上电时提供复位信号,直至系统电源稳定后,撤消复位信号。
该设计采用含有电阻的复位电路,复位电路可以有效的解决电源毛刺和电源缓慢下降<
电池电压不足)等引起的问题,在电源电压瞬间下降时可以使电容迅速放电,一定宽度的电源毛刺也可令系统可靠复位。
复位电路的设计图如图5所示:
图5复位电路
3.2.2显示电路
显示电路采用的是共阳极8位数码管,该显示器与驱动电路相连用于控制LED的显示。
为使LED显示,只需在S1,S2,S3,S4依次置为低电平信号,再给LED延时一段很小的时间,使数码管分别显示,由于人眼的视觉暂留效应,数码管就像同时显示一样。
LED显示电路的电路图如图6所示。
图6LED显示电路
3.2.3超声波发送与接收模块
<
1)主程序首先对系统环境初始化,设置定时器T0工作模式为16位定时计数器模式,设置总中断允许为EA,显示器接P0口,P2接蜂鸣器。
然后调用超声波发生子程序送出一个超声波脉冲,为避免超声波从发射器直接传送到接收器引起的直接波触发,需延迟0.1ms秒后<
这是测距器会有一个最小可测距的原因),才打开外中断0接受返回的超声波信号。
由于采用12MHZ的晶振,机器周期为1us,当主程序检测到接受成功的标志位后,将计数器T0中的数<
即超声波来回所用的时间),按下式计算即可得到被测物体与测距仪之间的距离,设计时取声速为0.0347cm/um,则S=(V*T0>
/2(V为声速,T0为声波来回传输的时间>
。
然后再用超声波脉冲重复测量。
2)超声波发送子程序和超声波接收中断程序。
超声波发送子程序是通过P1.0端口发送4个左右的超声波信号频率约为40KHZ的方波,同时把计数器T0打开并进行计时。
超声波测距离主程序利用外部中断0检测返回超声波信号,一旦接受到返回超声波信号<
INT0引脚出现低电平),立即进入中断程序。
进入中断程序后就立即关闭计时器T0停止计时,并将测距成功标志子赋值1[12]。
超声波发送和接收模块如图7,图8所示。
图7超声波发送模块
图8超声波接收模块
3.2.4报警模块
P2口接蜂鸣器,当小车离障碍物的距离小于80cm时,置P2.0为低电平,蜂鸣器发出报警;
当小车距离障碍物的距离大于80cm时,置P2.0为高电平,蜂鸣器停止报警。
当小车距离障碍物的距离50cm时,蜂鸣器放出长报警。
报警模块如图9所示。
图9报警模块
4调试及性能分析
4.1硬件调试
此次制作外扩超声波的发送端和接收端,硬件调试采用WAVE6000/S仿真器,同时用数字万用表检测没有短路、虚焊和各个端口的电压,各参数显示正常。
电路连接基本确定没什么问题,主要调整的地方在于接收电路的电阻电容的调整,将电阻电容参数调到合适大小,接收效果明显增强。
4.2软件调试
在WAVE编译器和WAVE6000/S仿真器仿真下进行软件调试。
使用WAVE编译器时设定断点,对各段函数的调试,还结合硬件用WAVE6000/S仿真器进行仿真调试。
软件调试过程中的存在问题就是测的不够远。
其主要原因在于发送波的发送频率,经过多次调试确定最佳发送次数是4次,多一次少一次都影响测量距离。
定时器1来定时控制发送40KHZ左右方波给超声波发送端。
定时器1的定时时间不能太小,如果在较短的时间间隔内发送,那么也将影响接收[13]。
4.3测试结果与分析
硬件测试过程中经过多次测试其能测的最远且较稳定的距离为426cm,最大误差不超过1cm。
由于场地有限,不可避免的受到干扰。
各距离段测量的结果如下表1所示。
误差来源由于声速与温度有关,如果测距精度要求很高,则应通过温度补偿方法加以校正。
实际值(cm>
41.8
49.8
70.6
80
98.8
124.7
144
169.4
196.7
222.6
测量值(cm>
42
50
71
100
125
170
197
223
250.6
278.5
299.6
329.7
339.9
349.8
359.6
387.5
402.3
425.5
251
279
300
330
340
350
360
388
403
426
表1实际测试数据记录
5设计总结
为了验证系统的测量精度,在实验室进行了实地测量。
利用本系统在42~426cm范围进行多次测量。
经测量最大误差在1cm范围内,稳定性和重复行都比较好。
系统结构简单、体积小、实时LED显示和报警、抗干扰能力好等优点。
系统的误差主要来自发射探头的轴线而导致所反射回来的波可能是从不同点获得,还有电子器件自身的时延、干扰等也造成一定影响。
可以根据具体场合,选择合适功率的探头,以及调整程序中脉冲的频率、宽度和个数等提高精度或测量距离,扩大系统的应用范围。
致谢
在本次毕业设计中,得到了我的指导教师朱老师的大力支持,在电路功能的实现中提出了许多相当宝贵的意见,毕业论文中也给予了悉心的指导,使我的毕业设计得以顺利完成,对此我表示衷心的感谢,同时也感谢陈泉勇、杨朝阳同学在毕业设计当中给我的帮助。
参考文献
[1]李光飞.单片机课程设计实例指导.北京航空航天大学出版社.北京:
2003年6月
[2]李朝青.单片机原理及接口技术.北京航空航天大学出版社北京:
1998年
[3]李永鉴.简易超声波测距仪的制作.五邑大学信息学院.广东江门:
2006年
[4]姜道连.用AT89C51设计超声波测距仪.天津理工学院光电信息与电子工程系.天津:
2000
年12月
[5]龚运新单片机C语言开发技术清华大学出版社2006年10月
[6]段晨东单片机原理及接口技术清华大学出版社2008年8月
[7]戴佳51单片机C语言应用程序设计实例精讲第二版电子工业出版社2009年11月
[8]朱月秀.单片机原理与应用<
第2版)北京:
科学出版社2004.2
[9]周良权,傅恩锡,李世馨.模拟电子技术基础(第二版>
北京:
高等教育出版社2001.123
[10]陈莹.基于单片机的超声波测距系统.华中科技大学硕士学位论文2004.4
[11]邱平.略论我国非金属超声波检测仪器的发展状况.工程质量1998.1
[12]超声波探伤编写组编著.超声波探伤.北京:
电力工业出版社,1980年
[13]李鸣华,余水宝.单片机在超声波料位测量中的应用.电子技术应用,1998年
TheCollegeofPhysicsandInformationEngineering
07classelectronicsinformationscienceandtechnology070303049ganjingchang
FacultyadviserZhuChengquanlecturer
【Abstract】ThispaperintroducesthepropertiesandthecharacteristicsofAT89S51,designsaimpact-proofalarmwithlowcost,highprecision,miniaturization,digitaldisplaytakingitasthecore.Theimpact-proofalarmtakesSCM’sreal-timecontrolanddataprocessingfunctionscombinewiththeUltrasonicrangingtechnology,thesensortechnologies.Itisabletodetectethedistanceofrearobstacleandtheautomobile,throughdigitaldisplaydeviceshowsbysoundcircuitdistance,andaccordingtothedistancesituationwarned.Ithasthevitalsignificancetopreventautomobilereverseaccident.
【keywords】Microcontroller。
Ultrasonic。
Impact-proof。
Alarm
附录1电路原理图
附录2PCB图
附录3程序
#include<
REG51.H>
sbitk1=P3^4。
sbitcsbout=P1^0。
//超声波发送
sbitcsbint=P3^2。
//超声波接收
sbitbg=P3^3。
#defineLEDP0
sbitLED1=P2^4。
//LED控制
sbitLED2=P2^5。
sbitLED3=P2^6。
sbitbj=P2^0。
//报警
#definecsbc0.0347
unsignedcharcl,mqzd,csbs,csbds,buffer[3],xm1,xm2,xm0,jpjs
unsignedcharconvert[10]={0x18,0x7b,0x2c,0x29,0x4b,0x89,0x88,0x3b,0x08,0x09}。
unsignedints,t,i,xx,j,sj1,sj2,sj3,mqs,sx1。
voidcsbcj(>
voiddelay(j>
//延时函数
voidscanLED(>
//显示函数
voidtimeToBuffer(>
//显示转换函数
voidkeyscan(>
voidk1cl(>
voidk2cl(>
voidk3cl(>
voidk4cl(>
voidoffmsd(>
voidmain(>
//主函数
EA=1。
//开中断
TMOD=0x11//设定时器0为计数,设定时器1定时
ET0=1。
//定时器0中断允许
ET1=1。
//定时器1中断允许
TH0=0x00。
TL0=0x00。
TH1=0x9E。
TL1=0x57。
csbds=0。
csbout=1。
cl=0。
csbs=8。
jpjs=0。
sj1=50。
/////////测试报警距离
sj2=200。
sj3=580。
k4cl(>
TR1=1。
while(1>
{
keyscan(>
if(jpjs<
1>
csbcj(>
//调用超声波测距程序
if(s>
sj3>
//大于时显示“CCC”
buffer[2]=0xC6。
buffer[1]=0xC6。
buffer[0]=0xC6。
}
elseif(s<
sj1>
//小于时显示“---”
buffer[2]=0xBF。
buffer[1]=0xBF。
buffer[0]=0xBF。
elsetimeToBuffer(>
//将值转换成LED段码
offmsd(>
scanLED(>
if(s<
bg=0。
bg=1。
}
//显示功能模块
{
LED=buffer[0]。
LED3=0。
delay(200>
LED3=1。
LED=buffer[1]。
LED2=0。
LED2=1。
LED=buffer[2]。
LED1=0。
LED1=1。
//转换段码功能模块
xm0=s/100。
xm1=(s-100*xm0>
/10。
xm2=s-100*xm0-10*xm1。
buffer[2]=convert[xm2]。
buffer[1]=convert[xm1]。
buffer[0]=convert[xm0]。
voiddelay(i>
while(--i>
voidtimer1int(void>
interrupt3using2
csbds++。
if(csbds>
=40>
cl=1。
if(cl==1>
TR1=0。
i=csbs。
while(i-->
csbout=!
csbout。
TR0=1。
i=0。
while(csbint>
i++。
if(i>
=4000>
//上限值
csbint=0。
TR0=0。
t=TH0。
t=t*256+TL0。
t=t-29。
s=t*csbc/2。
csbint=1。
/////////////////////