单片机的小车防撞系统的设计方案.docx

上传人:b****1 文档编号:2741250 上传时间:2023-05-04 格式:DOCX 页数:26 大小:246.87KB
下载 相关 举报
单片机的小车防撞系统的设计方案.docx_第1页
第1页 / 共26页
单片机的小车防撞系统的设计方案.docx_第2页
第2页 / 共26页
单片机的小车防撞系统的设计方案.docx_第3页
第3页 / 共26页
单片机的小车防撞系统的设计方案.docx_第4页
第4页 / 共26页
单片机的小车防撞系统的设计方案.docx_第5页
第5页 / 共26页
单片机的小车防撞系统的设计方案.docx_第6页
第6页 / 共26页
单片机的小车防撞系统的设计方案.docx_第7页
第7页 / 共26页
单片机的小车防撞系统的设计方案.docx_第8页
第8页 / 共26页
单片机的小车防撞系统的设计方案.docx_第9页
第9页 / 共26页
单片机的小车防撞系统的设计方案.docx_第10页
第10页 / 共26页
单片机的小车防撞系统的设计方案.docx_第11页
第11页 / 共26页
单片机的小车防撞系统的设计方案.docx_第12页
第12页 / 共26页
单片机的小车防撞系统的设计方案.docx_第13页
第13页 / 共26页
单片机的小车防撞系统的设计方案.docx_第14页
第14页 / 共26页
单片机的小车防撞系统的设计方案.docx_第15页
第15页 / 共26页
单片机的小车防撞系统的设计方案.docx_第16页
第16页 / 共26页
单片机的小车防撞系统的设计方案.docx_第17页
第17页 / 共26页
单片机的小车防撞系统的设计方案.docx_第18页
第18页 / 共26页
单片机的小车防撞系统的设计方案.docx_第19页
第19页 / 共26页
单片机的小车防撞系统的设计方案.docx_第20页
第20页 / 共26页
亲,该文档总共26页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

单片机的小车防撞系统的设计方案.docx

《单片机的小车防撞系统的设计方案.docx》由会员分享,可在线阅读,更多相关《单片机的小车防撞系统的设计方案.docx(26页珍藏版)》请在冰点文库上搜索。

单片机的小车防撞系统的设计方案.docx

单片机的小车防撞系统的设计方案

泉州师范学院

毕业论文<设计)

 

题目基于单片机的小车防撞系统的设计

BasedonSCMcaranti-collisionsystemdesign

 

物理与信息工程学院电子信息科学与技术专业07级1班

学生姓名甘景昌学号070303049

指导教师朱成全职称讲师

完成日期2018年4月

 

教务处制

基于单片机的小车防撞系统的设计

物理与信息工程学院07级电子信息科学与技术070303049甘景昌

指导教师朱成全讲师

【摘要】本文介绍了AT89S51单片机的性能及特点,设计了以其为核心的一种低成本、高精度、微型化、数字显示的汽车防撞报警器。

该防撞报警器将单片机的实时控制及数据处理功能,与超声波的测距技术、传感器技术相结合,可检测汽车运行中后方障碍物与汽车的距离,通过数显装置显示距离,并由发声电路根据距离远近情况发出警告声。

对防范汽车倒车事故的发生具有重要的意义。

【关键词】单片机。

超声波。

防撞。

报警

 

目录

引言3

1系统设计的目标和任务3

1.1系统设计的基本要求3

1.2系统设计的思路3

1.3方案论证3

1.3.1发送模块3

1.3.2接收模块3

2AT89S51单片机与超声波简介4

2.1AT89S51单片机的概述4

2.2AT89S51单片机的特点4

2.3超声波简介5

2.4基于CX20186超声波测距的调试5

3系统软件部分设计5

3.1超声波系统主流程图5

3.2超声波硬件设计与软件编程7

3.2.1复位电路8

3.2.2显示电路8

3.2.3超声波发送与接收模块9

3.2.4报警模块10

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接收模块

方案1:

采用集成电路CX20186A。

它是一款红外线检波接收的专用芯片,考虑到红外常用的载波频率38KHZ与测距的超声波40KHZ较为接近,可以利用它制作超声波检测接受电路,且电路简单,灵敏度高,还有较强的抗干扰能力。

方案2:

采用uA741构成两级放大电路,这是专用运算放大器,高增益,增益带宽积大,抗干扰能力强,可测距离远,精度高[6]。

经论证比较,虽然方案2相对方案1可测的更远,但方案1已可满足工程功能的要求,且方案1电路结构简单,方便调试,故采用方案1。

2AT89S51单片机与超声波简介

2.1AT89S51单片机的概述

AT89S51是一种带4K字节闪烁可编程可擦除只读存储器

该器件采用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的随机存取数据存储器

  此外,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检测返回超声波信号,一旦接受到返回超声波信号

进入中断程序后就立即关闭计时器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

80

100

125

144

170

197

223

实际值(cm>

250.6

278.5

299.6

329.7

339.9

349.8

359.6

387.5

402.3

425.5

测量值(cm>

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年

 

BasedonSCMcaranti-collisionsystemdesign

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

sbitk1=P3^4。

sbitcsbout=P1^0。

//超声波发送

sbitcsbint=P3^2。

//超声波接收

sbitbg=P3^3。

#defineLEDP0

sbitLED1=P2^4。

//LED控制

sbitLED2=P2^5。

//LED控制

sbitLED3=P2^6。

//LED控制

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//小于时显示“---”

{

buffer[2]=0xBF。

buffer[1]=0xBF。

buffer[0]=0xBF。

}

elsetimeToBuffer(>。

}

elsetimeToBuffer(>。

//将值转换成LED段码

offmsd(>。

scanLED(>。

//显示函数

if(s

bg=0。

bg=1。

}

}

voidscanLED(>//显示功能模块

{

LED=buffer[0]。

LED3=0。

delay(200>。

LED3=1。

LED=buffer[1]。

LED2=0。

delay(200>。

LED2=1。

LED=buffer[2]。

LED1=0。

delay(200>。

LED1=1。

}

voidtimeToBuffer(>//转换段码功能模块

{

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

{

TH1=0x9E。

TL1=0x57。

csbds++。

if(csbds>=40>

{

csbds=0。

cl=1。

}

}

voidcsbcj(>

{

if(cl==1>

{

TR1=0。

TH0=0x00。

TL0=0x00。

i=csbs。

while(i-->

{

csbout=!

csbout。

}

TR0=1。

while(i-->

{

}

i=0。

while(csbint>

{

i++。

if(i>=4000>//上限值

csbint=0。

}

TR0=0。

TH1=0x9E。

TL1=0x57。

t=TH0。

t=t*256+TL0。

t=t-29。

s=t*csbc/2。

TR1=1。

cl=0。

csbint=1。

/////////////////////

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

当前位置:首页 > 总结汇报 > 学习总结

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

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