搜索
您的当前位置:首页正文

(2021年整理)基于单片机的汽车防撞报警系统设计

来源:独旅网
(完整)基于单片机的汽车防撞报警系统设计

(完整)基于单片机的汽车防撞报警系统设计

编辑整理:

尊敬的读者朋友们:

这里是精品文档编辑中心,本文档内容是由我和我的同事精心编辑整理后发布的,发布之前我们对文中内容进行仔细校对,但是难免会有疏漏的地方,但是任然希望((完整)基于单片机的汽车防撞报警系统设计)的内容能够给您的工作和学习带来便利。同时也真诚的希望收到您的建议和反馈,这将是我们进步的源泉,前进的动力。

本文可编辑可修改,如果觉得对您有帮助请收藏以便随时查阅,最后祝您生活愉快 业绩进步,以下为(完整)基于单片机的汽车防撞报警系统设计的全部内容。

1

(完整)基于单片机的汽车防撞报警系统设计

第1章 概 述

1。1 课题研究背景和意义

汽车业与电子业是世界工业的两大金字塔,随着汽车工业与电子工业的不断发展,在现代汽车上,电子技术的应用越来越来广泛,汽车电子化的程度越来越高。随着交通运输向高密度发展,电子控制技术进一步应用于汽车的乘坐安全性和导航方面。电子技术在汽车安全控制系统的应用主要是为了增强汽车的安全性。汽车中应用的电子技术主要有:电子控制安全气囊,智能记录仪,雷达式距离报警器,中央控制门锁,自动空调,自动车窗、车门、座椅、刮水器,车灯控制,电源控制以及充电器等.近年来汽车的自动调速系统,汽车防撞系统,汽车监测和

[1]

自诊断系统以及汽车导航系统被人们广泛应用.

在过去20~30年中,人们主要把精力集中于汽车的被动安全性方面,例如,在汽车的前部或后部安装保险杠、在汽车外壳四周安装某种弹性材料、在车内相关部位安装各种形式的安全带及安全气囊等等,以减轻汽车碰撞带来的危害.安

[2]

装防撞保险杠固然能在某种程度上减轻碰撞给本车造成损坏,却无法消除对被撞物体的伤害;此外,车上安装的安全气囊系统,在发生车祸时不一定能有效地保护车内乘车人员的安全。所有这些被动安全措施都不能从根本上解决汽车在行驶中发生碰撞造成的问题。为预防撞车事故的发生,必须在提高汽车主动安全性方面下功夫。汽车发生碰撞的主要原因是由于汽车距其前方物体(如汽车、行人或其他障碍物)的距离与汽车本身的距离近而相对速度太高。为了防止汽车与前方物体发生碰撞,汽车与前方物体之间要保持一定的距离。这样就会大大提高汽车行驶的安全性,减少车祸的发生。

1

(完整)基于单片机的汽车防撞报警系统设计

发展汽车防撞技术,对提高汽车智能化水平有重要意义。据统计,危险境况

[3]

时,如果能给驾驶员半秒钟的预处理时间,则可分别减少追尾事故的30%,路面相关事故的50%,迎面撞车事故的60%.1秒钟的预警时间可防止90%的追尾碰撞和60%的迎头碰撞.理论上,汽车防撞装置可在任何天气、任何车速状态下探测出将要发生的危险情况并及时提醒司机及早采取措施或自动紧急制动,避免严重事故发

[4]

生。汽车防撞装置是借助于检测测技术监视汽车前方和后方的车辆、障碍物,并根据当时的距离自动判断是否达到危险距离,及时向司机发出警告。

[5]

1.2 国内外研究的现状

鉴于交通事故的不可预测性和不可绝对避免性,为了减少交通事故,优化交通秩序,利用计算机及信息技术来提高道路交通安全和效率已成为国内外研究的热点。二十世纪八十年代以后展开的关于智能交通系统的研究,被认为是解决各

[6]

种交通问题的一个很好的途径。智能交通系统是将先进的信息技术、通讯数据传

[7]

输系统、电子控制系统以及计算机处理系统有效地应用于整个运输管理体系,使

[8]

人、车、路环境协调统一,从而建立一个全方位发挥作用的实时、准确、高效的运输综合管理系统。其中智能车辆系统涉及到计算机测量与控制、计算机视觉、

[9]

传感器数据融合、车辆工程等诸多领域.视觉系统在智能车辆中起到环境探测和辨识作用。与其他传感器相比,机器视觉具有检测信息量大,单纯以当前的现实条

[10]

件出发解决,容易导致系统实时性差

[11]

.根据计算车辆与目标的相对位移,并用自

[12]

适应滤波对测量数据进行处理,以减少环境的不稳定性造成的测量误差。在智能车辆领域,常用的还有雷达、激光、GPS等传感器.

利用信息感知、动态辨识、控制技术的方法提高安全性,是先进汽车控制与安全系统(AVCSS)的主要研究内容。世界各大汽车公司都在开展这方面的研究

[13]

2

(完整)基于单片机的汽车防撞报警系统设计

与开发工作。日本各大汽车制造企业如丰田、日产、马自达、本田、三菱等公司致力于新型安全汽车技术研究开发,并取得了重要的进展。丰田汽车公司使用毫米波雷达和CCD摄像机对本车的距离进行动态监测,当两车距离小于设定值时,

[14]

系统将发出报警信号提醒本车驾驶员.日产汽车公司使用紧急制动劝告系统,利用先进的车距监测系统对跟车距离进行动态监测,当需要减速或制动时,用制动灯亮来提醒驾驶员,并及时监测驾驶员操纵驾驶踏板的踏踩状态,必要时使汽车的自动制动系统起作用降低车速,在最危险时刻自动制动.本田公司使用具有扇形激光束扫描的雷达传感器,即使车辆在弯道行驶也能检测到本车与前方汽车或障碍物

[15]

的距离降到设定值时,驾驶员仍未及时采取相应措施,便发出警告信号.三菱和日立公司在毫米波雷达防撞方面也做了大量的研究,其雷达中心频率主要选择60~61GHZ或76~77GHZ,探测距离为120m,尼桑公司为41LV—Z配备了自适应巡航控制系统。

[16]

德国和法国等欧洲国家也对毫米波雷达技术进行了研究

[17]

,特别是奔驰、宝马

等著名汽车生产厂商,其采用的雷达为调频毫米波雷(Frequency Modulation Continuous Wave),频段选择76~77GHZ.如奔驰汽车公司和英国劳伦斯电子公

[18]

司联合研制的汽车防撞报警系统,探测距离为150m,当测得的实际车间距离小于安全车间距离时,发出声光报警信号。该系统已经得到应用。

美国的汽车防碰撞技术已经相当先进,福特汽车公司开发的汽车防碰撞系统的工作频率为24.725GHZ,探测距离约106m.仅探测本车道内车辆的信息,从而

[19]

可避免旁车道上目标物的影响。戴姆勒-克莱斯勒公司的防撞结构主要是两个测距仪和一个影像系统,她能够测出安全距离,发现前方有障碍物,计算机能够自动引发制动装置。戴姆勒—克莱斯勒公司的实验结果显示,车速以每小时32.18公里/小时的速度行驶,在距离障碍物2.54㎝的地方停下来。

3

(完整)基于单片机的汽车防撞报警系统设计

近距离报警如倒车雷达现已蓬勃地车辆上安装使用,但国内目前生产的中远距离测量普遍达不到要求,表现在最远测距距离近,测距误差大,远远不满足高速公路的安全车距离要求,需进一步研究。

1.3 超声波传感器原理

超声波传感器分机械方式和电气方式两类,它实际上是一种换能器,在发射端它把电能或机械能转换成声能,接收端则反之.本设计中超声波传感器采用电气方式中的压电式超声波换能器电晶体和一个共振板

[21]

[20]

。它是利用压电晶体的谐振来工作的。它有两个压

。当它的两级外加脉冲信号其频率等于压电晶体的固有振

荡频率时,压电晶体片将会发生共振,并带动共振板振动,产生超声波。反之,如果两电极间未外加电压,当共振板接收到超声波时,将压迫压电晶体片做振动,将机械能转换为电信号,就成为超声波接收器

[22]

。在超声波电路中,发射端输出一

系列脉冲方波,脉冲宽度越大,输出的个数越多,能量越大,所能检测到的距离也越远。超声波发射换能器与接收换能器在其结构上稍有不同,使用时应看清器件上的标志。

[23]

超声波测距的方法有很多种:如往返时间检测法、相位检测法、声波幅值检测法。本设计采用往返时间检测法测距。其原理是超声波传感器发射一定频率

[24]

[25]

的超声波借助空气媒质传播,到达测量目标或障碍物后反射回来,经反射后由超声波接收器接收脉冲

[27]

[26]

,其所经历的时间即往返时间。往返时间与超声波传播的

路程的远近有关。根据测试传输时间可以得出距离。

假设S为被测物体到测距仪之间的距离,测的的时间为t,超声波传播的速度为v表示。则有关系式:

svt/2 (1—1)

4

(完整)基于单片机的汽车防撞报警系统设计

在精度的要求较高的情况下,需要考虑温度对超声波传播速度的影响,按式(1-2)对超声波传播速度加以修正,以减小误差。

v331.40.607T (1-2)

中,T为实际温度单位为℃,V为超声波在介质中的传播速度单位为M/S。

表1-1 一些温度下的声速 -3温度 0 31声速 3 319 322 331 337 344 350 20 —-10 0 10 20 30 5

(完整)基于单片机的汽车防撞报警系统设计

第2章 硬件简介

本设计采用以AT89S51单片机为核心芯片的电路来实现,主要由AT89S51芯片、时钟电路、复位电路、LED显示、超声波传感器5部分组成。

AT89S51单片机的时钟电路由18(XTAL1)管脚和19管脚的时钟端(XTAL2)组成.给单片机一定的周期。与12MHz的晶振Y1电容C9电容C10组成,采用片内振荡方式。

复位电路采用简易的开关复位电路,主要由电阻R2,电容C7,开关K2组成,分别接至AT89C51的RST复位输入端。

2.1 AT89S51单片机概述

AT89S51 是一个低功耗,高性能CMOS 8位单片机。片内4KBytes ISP(In-system programmable)的可反复擦写1000次的Flash只读程序存储器.芯片内集成了通用8位中央处理器和ISP FLASH 存储单元,功能强大的微型计算机的AT89S51具有如下特点:40个引脚,4K Bytes Flash 片内程序存储器,128bytes 的随机存取数据存储器(RAM),32个外部双向输入、输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器。

主要特性:

• 8031 CPU与MCS-51 兼容

• 4K字节可编程FLASH存储器(寿命:1000写/擦循环) • 全静态工作:0Hz-33MHz

6

(完整)基于单片机的汽车防撞报警系统设计

• 三级程序存储器保密锁定 • 128*8位内部RAM • 32条可编程I/O线 • 两个16位定时器/计数器 • 6个中断源 • 可编程串行通道

• 低功耗的闲置和掉电模式 • 片内振荡器和时钟电路

2。1.1 AT89S51单片机功能特性概述

AT89S51提供以下标准功能:4k字节Flash闪速存储器,128字节内部RAM,32个I/O口线,看门狗(WDT),两个数据指针,两个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路.同时,AT89S51可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。掉电方式保存RAM中的内容,振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位.

2。1。2 AT89S51单片机引脚说明

AT89S51单片机的主要管脚有:XTAL1(19管脚)和XTAL2(管18脚)为振荡器输入输出端口,外接12MHz晶振。RST/Vpd(9脚)为复位输入端口,外接电阻电容组成的复位电路。采用低电平复位。Vcc(40管脚)和Vss(20管脚)为供电端口,分别接+5V电源的正负端。

在本设计中用P0。0~P0.7控制数码管段选。用p2端口(P2。4~P2。7管脚)控制数码

7

(完整)基于单片机的汽车防撞报警系统设计

管显示的位选。

现在我们对这些引脚的功能加以说明:

各引脚在AT89S51单片机上的排列顺序,如下图2-1所示。

图2-1 AT89S51引脚图

P2.0:接地

P4。0:正电源脚,正常工作或对片内EPROM写程序时,接+5V电源. P1.9:时钟XTAL1脚,片内振荡电路的输入端,是外接晶体的一个引脚。 P1。8:时钟XTAL2脚,片内振荡电路的输出端,是外接晶体的另一端。当采用

外部振荡器时,此引脚接外部振荡源。

RST/VPP(PIN1):复位引脚,引脚上出现2个机器周期的高电平将使单片机复

位。

P0。0~p0.7:输入信号用于控制LED段选。 P1.0:连接AT89SISP红外解码芯片.

P1.0和p1.5、p1。6、p1。7与单片机编程器连接,是程序下载端口.

AT89S51的时钟有两种方式,一种是片内时钟振荡方式,但需在18脚和19脚外接石英晶体(2MHz—12MHz)和振荡电容,振荡电容的值一般取10pF-30pF。另外一种是外部时钟方式,即将XTAL1接地,外部时钟信号从XTAL2脚输入。

8

(完整)基于单片机的汽车防撞报警系统设计

P3。0:ALE是允许地址锁存输出/编程脉冲输入引脚。当访问外部程序器时,

ALE(地址锁存)的输出用于锁存地址的低位字节。而访问内部程序存储器时,ALE端将有一个1/6时钟频率的正脉冲信号,这个信号可以用于识别单片机是否工作,也可以当作一个时钟向外输出.更有一个特点,当访问外部程序存储器,ALE会跳过一个脉冲。 PSE:复位。 EA:电源输入端。

2.1.3 复位电路

单片机AT89S51作为主控芯片,控制整个电路的运行.单片机外围需要一个复位电路,复位电路的功能是:系统上电时提供复位信号,直至系统电源稳定后,撤消复位信号。为可靠起见,电源稳定后还要经一定的延时才撤销复位信号,以防电源开关或电源插头分—合过程中引起的抖动而影响复位。该设计采用含有电阻的复位电路,复位电路可以有效的解决电源毛刺和电源缓慢下降(电池电压不足)等引起的问题,在电源电压瞬间下降时可以使电容迅速放电,一定宽度的电源也可令系统可靠复位。复位电路如图2-2示:

9

(完整)基于单片机的汽车防撞报警系统设计

图2—2 复位电路图

复位是单片机的初始化操作,使CPU及各专用存储器处于一个确定的初始状态,其中把PC的内容初始化为0000H,使单片机从0000H单元开始执行程序,除了系统的正常开机(上电)复位外,当程序运行出错或操作错误使系统处于死循环状态时,为摆脱困境,可按复位键进行复位,复位电路由片外和片内两部分电路组成。AT89S51的RST引脚为复位引脚,只要在RET引脚上出现两个机器周期以上的高电平,即可实现复位.复位通常有上电复位和按键复位两种方法。本设计采用的是按键复位,当按下按键后,电容被短路,RST引脚就处于高电平,就可以达到复位的目的.

复位电路工作原理:当按下S1时电容C7短路,R2为防止电容放电,RST此时为高电平;不按S1时,由于电容通交流阻直流,RST仍为低电平。

2。2 各芯片功能及工作原理

在本设计中用到了74HC04芯片、CX2016芯片、晶振芯片。芯片在本设计设计

10

(完整)基于单片机的汽车防撞报警系统设计

中起到了关键作用。

2.2.1 晶振芯片

本设计中采用了12MHZ的晶体振荡器.

只要在晶体振子板极上施加交变电压,就会使晶片产生机械变形振动,此现象即所谓逆压电效应。当外加电压频率等于晶体谐振器的固有频率时,就会发生压电谐振,从而导致机械变形的振幅突然增大。晶体振荡电路连接图如图2-3所示。

图2-3 晶振电路图

LED显示简介

第1管脚:VSS为电源地,接GND。 第2管脚:VDD接5V正电源。

第3管脚:VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地

电源时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度.

第4管脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令

寄存器.

11

(完整)基于单片机的汽车防撞报警系统设计

第5管脚:RW为读写信号线,高电平时进行读操作,低电平时进行写操作。

当RS和RW共同为低电平时可以写入指令或者显示地址,当RS为低电平RW为高电平时可以读忙信号,当RS为高电平RW为低电平时可以写入数据。

第6管脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行

命令.

第7~14管脚:D0~D7为8位双向数据线。 第15管脚:BLA背光电源正极(+5V)输入引脚。 第16管脚:BLK背光电源负极,接GND。

注意:液晶模块背光须消耗电流约为50mA左右,S51增强型实验板上设计了DIP微动开关来控制背光的开关,如右图所示,当实验板上的DIP开关(第3位)拨打到ON状态时,液晶背光显示,拨到OFF状态时,背光关闭.

TC1602液晶模块内带标准字库,内部的字符发生存储器(CGROM)已经存储了192个5×7点阵字符,32个5×10点阵字符。另外还有字符生成RAM(CGRAM)512字节,供用户自定义字符。如表1所示,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是0B(41H),显示时模块(xian shi mo kuai)把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”.

2.2。2 8位数码管

8段数码管属于LED发光器件的一种.LED发光器件一般常用的有两类:数码管和点阵。8段数码管又称为8字型数码管,分为8段:A、B、C、D、E、F、G、P 10根管脚,每一段有一根管脚。其中P为小数点。数码管常用的有另外两根管脚

12

(完整)基于单片机的汽车防撞报警系统设计

为一个数码管的公共端,两根之间相互连通,如图2-4所示:

图2-4 LED的引脚和电路原理

数码管作为显示字段的数码型显示器件,它是由若干个发光二极管组成的.当发光二极管导通时,相应的一个点或一个笔画发亮,控制不同组合的二极管导通,就能显示出各种字符。数码管有共阳极和共阴极两种.共阴极LED显示管的发光二极管的阴极连在一起,通常此共阴极接地。当某个发光二极管的阳极为高电平时,发光二极管点亮,相应的段被显示。同样,共阳极LED显示管的发光二极管的阳极接在一起,通常此共阳极接正电压,当某个发光二极管的阴极接低电平时,发光二极管被点亮,相应的段被显示。本次设计所用的LED数码管显示器为共阴极。

LED数码管的使用与发光二极管相同,根据材料不同正向压降一般为1.5—2V,额定电流为10mA,最大电流为40mA。静态显示时取10mA为宜,动态扫描显示可加大脉冲电流,但一般不超过40mA。如表2—1所示.

表2—1 数码管输出真值表

管脚值 显示字符 0 1

dp g f e d c b a 十六进制数 0C0H 0F9H 1 1 1 1 0 1 0 1 0 1 13

0 0 0 0 0 1 (完整)基于单片机的汽车防撞报警系统设计 2 1 0 1 0 0 1 0 0 0A4H 3 1 0 1 1 0 0 0 0 0B0H 4 1 0 0 1 1 0 0 1 99H 5 1 0 0 1 0 0 1 0 92H 6 1 0 0 0 0 0 1 0 82H 7 1 1 1 1 1 0 0 0 OF8H

续表2—1

8 1 0 0 0 0 0 0 0 80H 9 1 0 0 1 0 0 0 0 90H A 1 0 0 0 1 0 0 0 88H B 1 0 0 0 0 0 1 1 83H C 1 1 0 0 0 1 1 0 0C6H D 1 0 1 0 0 0 0 1 0A1H E 1 0 0 0 0 1 1 0 86H F 1 0 0 0 1 1 1 0 8EH 2.2.2 74HC04芯片

•高速CMOS--六反相器. •对称的传输延迟和转换时间

•相对于LSTTL逻辑IC,功耗减少很多 •工作电压:2V到6V

•兼容直接输入LSTTL逻辑信号, VIL= 0.8V (Max), VIH = 2V •兼容CMOS逻辑输入, 1μA at VOL, VOH 如图2—4所示。 •宽工作温度范围:—55℃—125℃。

14

Min)( (完整)基于单片机的汽车防撞报警系统设计

14 VCC 13 6A 12 6Y 74HC04 11 5A 10 5Y 9 4A 3A TY 2A 2Y 3A 3Y

1 2 3 4 5 6 GND 7 8 4Y

图2—4 74HC04反相器

在本设计中74HC04起到驱动电压的作用.

2。2.3 CX20106芯片

CX20106内部由前置电路将接收到的信号,转换成CX20106可以接收的标准数字信号,送到CX20106的1管脚。CX20106的总放大增益约为80dB,其7管脚输出的控制脉冲序列信号幅度在3.5~5V 范围内.总增益大小由2管脚外接的R1..9、C1.4决定,R1.9越小或C1。4越大,增益越高。但取值过大时将造成频率响应变差,C1。4为10uF。采用峰值检波方式检波电容C1.2为10uF。R2为带通滤波器中心频率f0的外部电阻。积分电容C1.3取330pF.经CX20106处理后的脉冲信号由7管脚输出给AT89S51进行译码处理。CX2016:红外解码芯片。CX20106内部结构如图2—6所示.

15

(完整)基于单片机的汽车防撞报警系统设计

前置放大器 限幅放大 通带滤波 峰值滤波 积分比较 整形输出 2 1 D R19 3 4 5 6 7 8 输出 R3.2 输出5V R2.0 C1.4 C1.2 C1.3

图2-5 CA20106内部结构图

16

(完整)基于单片机的汽车防撞报警系统设计

第3章 汽车防撞报警系统设计

3.1 汽车防撞报警系统总方案

本设计是以AT89S51单片机控制的汽车防撞报警系统。该装置将单片机的实时控制及数据处理功能与超声波的测距技术相结合,可检测汽车运行中与前方障碍物的距离,通过LED显示装置显示距离,并由蜂鸣器根据距离远近发出警告声。

本设计中将电路分为以下几个主要的组成部分,分别是超声波发射,超声波接收,温度测量,显示和报警,电源等硬件电路部分以及相应的软件部分构成。系统框图如图3—1所示。

AT89S51 电源电路 发射电路 超声波发射换能器 超声波接收换能器 障碍物 接收电路 单片机外围电路 显示电路 测温电路 报警电路

图3-1 系统框图

整个系统由单片机AT89S512控制,超声波传感器采用收发分体式,分别是一支超声波发射换能器和一支超声波接收换能器。超声波信号通过超声波发射换能器发射到空气中,遇被测物反射后回声波被超声波接收换能器接收。进行相关处理后,输入单片机的INTO脚产生中断,计算中间经历的时间,同时再根据具体的温

17

(完整)基于单片机的汽车防撞报警系统设计

度计算相应的声速,根据式(1-2)就可得出相应的距离。报警系统根据LED显示的距离发出报警。

3.2 超声波发射模块

超声波发射部分是为了让超声波发射换能器能向外界发出40KHZ左右的方波脉冲信号。40KHZ左右的方波脉冲信号的产生通常有两种方法:采用硬件如555振荡产生或软件.本设计采用单片机软件编程控制.由单片机P1。0端口输出40KHZ左右的方波脉冲信号,由于单片机端口输出功率不够,40KHZ方波脉冲信号分成两路送给一个由74HLS04组成的推挽式[4]电路进行功率放大以便使发射距离足够远,满足测量距离要求,最后送给超声波发射换能器以声波形式发射到空气中.发射部分的电路如图3-2所示.图中输出端上拉电阻R16,R17一方面可以提高反向器74HLSO4输出高电平的驱动能力,另一方面可以增加超声波换能器的阻尼效果,缩短其自由振荡的时间。

18

(完整)基于单片机的汽车防撞报警系统设计

图3—2 超声波发射电路图

3。3超声波接收模块

超声波换能器发射的超声波信号在空气中传播遇到障碍物就会返回,超声波接收模块是为了将反射回波顺利接收到超声波接收换能器进行转换成电信号,并对此电信号进行放大、滤波、整形等处理.本设计中采用的是索尼公司生产的集成芯片CX20106。超声波接受换能器将得到的一个负脉冲送给单片机的P3.2 (INT0)引脚,便产生一个中断。接收模块的电路如图 3—3所示。

由电路图可以看出集成芯片CX20106在接收模块电路中起了很大的作用.CX20106是一款应用广泛的红外线检波接受的专用芯片,其具有功能强、性能优越、外围接口简单、成本低等优点。由于红外遥控常用的载波频率38KHZ与测距的超声波频率40KHZ比较接近,而且CX20106内部设置的滤波器中心频率f0可由其5引脚外接电阻调节,阻值越大中心频率越低,范围为30~60KHZ。所以本设计中采用它来做接收电路.CX20106内部由前置放大器、限幅放大器、带通滤波器、检波器、积分器及整形电路构成。工作过程是:接收到的回波信号先经过前置放大器和限幅放大器,将信号调整到合适幅值的矩形脉冲,由滤波器进行频率选择、滤除干扰信号,再经整形,送到输出端7脚。当接收到与CX20106滤波器中心频率相符的回波信号时,其输出端7脚就输出低电平,而输出端7教直接接收到AT89S52的P3.2引脚上,以触发中断。若频率有一些误差,可调节芯片引脚5的外接电阻R4.2,将滤波器的中心频率设置在40KHZ就可达到理想的效果.

19

(完整)基于单片机的汽车防撞报警系统设计

图3-3 超声波接收电路图

3。4 其它主要模块

3。4.1温度测量模块

由于声音的速度在不同的温度下有所不同。为提高系统的精确度,本设计采用了温度补偿功能.这里采用的主要元器件是美国Dallas半导体公司生产的单总线数字温度传感器DS18B20。其具有精度高、智能化、体积小、线路简单等特点.将单片机的P1。1口与DS18B20数据线相连就可以实现温度测量,如图3—4所示。

20

(完整)基于单片机的汽车防撞报警系统设计

U5 GND 1 GND DQ VDD 2 P11 3 VCC

DS18B20

图3—4 温度测量电路图

3.4.2 LED显示模块

本设计显示模块采用LCD显示所测距数值。TC1602显示的容量为2行16个字。液晶显示屏有微功耗、体积小、显示内容丰富、超薄轻巧、适用方便等诸多优点。与数码管相比显得更专业、美观。从价格上考虑本设计采用数码管显示。数码管分为共阴数码管和共阳数码管,本系统中使用共阴数码管,其工作原理为:公共端接地(低电位),然后给abcdefgh各段赋予高电位,即可显示不同的数值显示。单片机通过P0口输出数字80的二进制代码,给数码管赋予了段值,再通过P2端口将数码管位选通,数码管就可以显示出出设定的安全距离80㎝。

原理:P2。4~P2。7口为高电平时,三极管截止,S1~S4为低电平,数码管位选通;P2。4~P2.7口为低电平时,三极管导通,S1~S4为高电平,对P2.4~P2.7口赋予高电位或低电位可以选择不同位的数码管亮。显示如图3-5所示:

21

(完整)基于单片机的汽车防撞报警系统设计

图3-5 LCD显示电路图

3。4。3 电源模块

电源模块电路采用LM7805三端稳压集成电路,用LM7805三端稳压IC来组成稳压电源所需的外围元件极少,电路内部还有过流、过热及调整管的保护电路,使用起来可靠、方便,而且价格便宜。该系列集成稳压IC型号中的LM78或LM79后面的数字代表该三端集成稳压电路的输出电压,如LM7805表示输出电压为正5V.此电源模块电路利用LM7805芯片不仅生成了稳压电源,并且并联了一个限流电阻和一个发光二极管,当有电流流过时,发光二极管发光;无电流时,二极管灭。可实现对电源的检测作用,方便及时发现电源供给问题所在。如图3—6所示。

22

(完整)基于单片机的汽车防撞报警系统设计

图3-6电源电路图

3。4.4。 声音报警模块

在很多车上装备防撞系统,用于减少车辆在驻车、倒车和低速行驶时发生撞车的概率.仪表板上有指示灯指示车辆与障碍物的距离,在车辆与障碍物十分接近时有指示灯和声音报警.

本设计中采用一个蜂鸣器,由P1。2输出一定频率的信号,在连接到蜂鸣器之前经过一个三极管9012的放大。声音报警的电路连接图如图3—7所示。

图为报警器电路,R6,R10为限流电阻,当P2。0口输出高电平是,三极管Q1。1截止,此时由于2为高电平,LED与扬声器没有电流流过,即LED不亮,扬声器不响;当P2。0口输出低电平时,三极管Q1.1导通,LED与扬声器有电流流过,即LED亮,扬声器响起

23

(完整)基于单片机的汽车防撞报警系统设计

图3—7 声音报警电路图

3.5 总体电路设计

通过对整个系统各个模块的设计,由此可以基本确定本次系统设计的总体电路的基本框图,如图3—8所示.

24

(完整)基于单片机的汽车防撞报警系统设计

图3-8 总体电路图

25

(完整)基于单片机的汽车防撞报警系统设计

第4章 软件设计

4。1 主程序流程设计

本系统采用汇编语言编程,系统程序包括主控程序、T1中断服务子程序、INT0中断服务子程序、测温子程序、距离计算子程序、显示子程序、延时子程序和报警子程序设计等。主程序流程图如图4—1所示。

上电开始 超声波测距 复位 是 L<=80cm 显示报警 无复位 否 数码管显示 断电结束

图4-1 主程序流程图

4。2控制程序流程设计

系统初始化后就启动定时器T1从0开始计数。此时主程序进入等待,当到达

26

(完整)基于单片机的汽车防撞报警系统设计

65ms时T1溢出进入T1中断服务子程序;在T1中断服务子程序中将启动一次新的超声波发射,此时将在P1。0引脚上开始产生40KHZ的方波,同时开启定时器T0计时,为了避免折射波的绕射需要延时1ms后再开INT0中断允许;INT0中断允许打开后若此时p3。2(INT0)引脚出现低电平则代表收到回波信号。将提出中断请求进入INT0中断服务子程序,在INT0中断服务子程序中将停止定时器T0计时,读取定时器T0时间值到相应的存储区,同时设置接收成功标志;主程序一旦检测到接收成功标志,将调用温测子程序,采集超声波测距时的环境温度,并换算出准确的声速,存储到RAM存储单元中;单片机再调用距离计算子程序进行计算,计算出传感器到目标物体之间的距离;此后主程序调用显示子程序进行显示;若超过设定的最小报警距离还将启动扬声器报警。当一次发射、接受、显示的过程完成后系统将延迟100ms重新让T1置初值,再次启动T1以溢出,进入下一次测距。如果犹豫障碍物过远超出量程以致在T0溢出时尚未接收到回波则显示“ERROR”重新回到主程序流程进入新一轮测试.

27

(完整)基于单片机的汽车防撞报警系统设计

开始 系统初始化 启动T1定时65秒,开T1中断 T1定时器65ms定时到 N Y 进入T1中断服务子程序计时发射超声波脉冲 回波接收成功 Y N T0溢出 关总中断允许EA 调用测温子程序补偿声速 调用距离计算子程序 N 距离小于预设值 Y 调用扬声器报警子程调用子程序 Y 调用子程序显示距离并延时 清回波接收成功标志位 图4—2流程图

28

(完整)基于单片机的汽车防撞报警系统设计

第5章 调 试

5。1 硬件调试

第一步,通电观察。将电路通电观察有无异常现象,例如有无器件冒烟现象,有无异常气味,手摸集成电路外封装,是否发烫等。如果出现异常现象,应立即关断电源,待排除故障后再通电.

第二步,静态调试.将信号输入端加固定的电平信号后进行的直流测试,可用万用表测出电路中各点的电位,通过和理论估算值比较,结合电路原理的分析,判断电路直流工作状态是否正常,及时发现电路中已损坏或处于临界工作状态的元器件。通过更换器件或调整电路参数,使电路直流工作状态符合设计要求.

第三步,动态调试。动态调试是在静态调试的基础上进行的,在电路的输入端加入合适的信号,按信号的流向,用示波器顺序检测各测试点的输出信号,若发现不正常现象,应分析其原因,并排除故障,再进行调试,直到满足要求。

5。2 软件调试

所谓软件调试,是将编制的程序投入实际运行前,用手工或编译程序等方法进行测试,修正语法错误和逻辑错误的过程.这是保证单片机正确运行的必不可少的步骤。编完单片机程序,必须送入单片机中测试。

我把软件调试过程分为两步:

第一步,使用软件调试程序。将编辑好的汇编语言程序进行编译连接,消除基本的语法错误,再通过软件自带的调试工具进行必要的程序调试.

29

(完整)基于单片机的汽车防撞报警系统设计

第二步,联系程序的实际运行情况调试程序。此步主要是消除程序中的逻辑错误,因为在编辑程序时在逻辑思维上可能会出现漏洞导致操作时出错。我们将编辑好的汇编语言程序编译连接并生成hex文件,并将hex文件下载到单片机中。通过实际操作寻找逻辑上的错误,不断的修改程序,最终达到了预先设定的操作步骤及显示格式等多方面的要求。

5.3 测试结果

为了保证实际制作出来的汽车防撞报警系统能够稳定可靠地运行,我们对各个功能模块和程序运用仿真软件protus进行了仿真测试。但实际制作出的电路和理论又会有一定的差距,为此我们还使用实验仪器对该汽车防撞报警系统进行了相关测试。

在本电路的调试中,如果一直发射超声波,在7脚将会有周期的低电平产生。不会像通常认为的那样,即一直发射信号时,7脚一直为低电平。这是刚用CX20106时的一个常见错误。只要通过单片机来来计算发射信号时到收到信号是产生下降沿这段时间的长度,再通过数学计算,转化为距离,然后在显示器上显示。

在测试过程中的总结:

1、定时器T1之所以是65ms溢出是因为它是16位定时/计数器.在使用12MHZ的晶振时,一个机器周期是1us,计数器65ms技术器溢出。

2、本设计中40KHZ方波的产生采用软件方式实现:控制p1.0口输出12us的高电平,再输出13us的低电平,这样得到一个周期的40KHZ的脉冲。再循环发送8次。

3、在cpu停止发送脉冲后,由于阻尼换能器不能立即停止发送超声波。在一段时间内仍然会发送,故这段时间内不可立即开启INT0接收回波,要等待

30

(完整)基于单片机的汽车防撞报警系统设计

一段时间后,这样就避免发送端的部分直射波未经被测物就直接绕射到接收端.

4、最大测试距离将取决于:两次脉冲发送之间的最小时间间隔和脉冲的能量.一般来说

发射端脉冲个数越多,能量越大,所能测的距离也越远.但也不是无限制的.本设计中读取定时器T0的计数值。测试结果如图 5-1所示:

图5-1 调试结果

31

(完整)基于单片机的汽车防撞报警系统设计

结 论

利用AT89S51单片机设计的超声波防撞报警系统便于操作、读数直观.该系统工作稳定,能满足一般近距离测距的要求,且成本较低、有良好的性价比、设计中在超声波接收电路中使用了CX20106集成芯片,减少了电路之间的相互干扰,减少了电噪声。本设计系统可广泛应用于小距离测量.

通过试验验证该设计系统灵活方便,工作稳定可靠,抗干扰能力强,精确度高,能够有效的防止小车碰撞前面的障碍物。超声波换向器能很好的接收和发射信号,很大程度上降低了小车周围实物的干扰性,提高抗干扰性。得到了预期的效果。

在本设计中,出现一个问题就是蜂鸣器一直响。原因是:

(1)蜂鸣器是由程序控制的,只要检测到距离小于80cm,程序执行中断来处理

蜂鸣器响这条指令。 (2)检查电池没有有电。

通过本设计我学到了很多在实际操作中的知识: (1)AT89S51各个管脚的功能。 (2)LED显示段选和位选的控制。 (3)每个模块的电路图的功能.

32

(完整)基于单片机的汽车防撞报警系统设计

致 谢

本论文是在我的指导老师李艳辉老师的亲切关怀与细心指导下完成的。从课题的选择到论文的最终完成,李老师始终都给予了细心的指导和不懈的支持.在他的身上,我们可以感受到一个学者的严谨和务实,这些都让我们获益菲浅,并且将终生受用无穷。毕竟“经师易得,人师难求”,希望借此机会向李老师表示最衷心的感谢!

此外,本文最终得以顺利完成,也是电气信息工程学院其他老师的帮助分不开的,虽然他们没有直接参与我的论文指导,但在开题时也给我提供了不少的意见,提出了一系列可行性的建议,在此向他们表示深深的感谢!

最后要感谢的是我的父母,在未来的日子里,我会更加努力的学习和工作,不辜负父母对我的殷殷期望!我一定会好好孝敬和报答他们!

33

(完整)基于单片机的汽车防撞报警系统设计

参考文献

[1] 翟金辉.超声波测距系统的设计[M].中国仪器仪表.2007(8):44-45。 [2] 袁佑新,吴妍,刘苏敏.可视汽车倒车雷达预警系统设计[M].微计算机信息.2007(23):268-270.

[3] 宋永乐.高精度超声波测距系统设计[M].现在电子技术.2008,31(15):137—139。

[4] 吴斌方.超声波传感器的研究[J].湖北理工学院学报,2006(6):26-28。 [5] 高吉祥.电子技术基础实验与课程设计[M].北京:电子工业出版社,2002:283-288.

[6] 孙肖子.张企民.模拟电子技术基础.1版.西安,西安电子科技大学出版社,2001:33—39.

[7] 余孟尝.数字电子技术基础简明教程[R],北京,高等教育出版社,1999:196—201。

[8] 张永瑞,1版,西安,西安电子科技大学出版社,1994:107-110。

[9] 谭浩强,张基温.C语言程序设计教程[M].3版。北京,高等教育出版社,2006:85-88.

[10] 陈明荧.8051单片机课程设计实训教材.清华大学出版社,2004:25-36。 [11] 罗亚非.单片机应用基础.北京,北航出版社,2003。

[12] 贾好来. MCS—51单片机原理及应用.机械工业出版社,2007. [13] 阎石.数字电路技术基础.北京,高等教育出版社,1998。 [14] 童诗白,华成英.电子技术基础.北京,高等教育出版社,2001。

34

(完整)基于单片机的汽车防撞报警系统设计

[15] 楼然苗.李光飞。单片机课程设计指导,2007. [16] 谭浩强.C语言程序设计。清华出版社,2009.

[17] 侯媛彬.凌阳单片机原理及毕业设计精选。科学出版社,2005. [18] 耿文静.钱珊珠.单片机原理与接口技术。国防工业出版社,2007。 [19] 徐江海.单片机实用教程。机械工业出版社,2007. [20] 龚运新.单片机C语言开发技术.清华大学出版社,2006。

[21] 刘秀英.单片机应用设计200例。北京航空航天大学出版社,2006。 [22] Bickford,J。H.,An Introduction to the Design and Behavior of Bolted

JOINTS, 2nd ed, Marcel Dekker, New York, 1990。

[23] Koshti, A。M。 Proceedings of SPIE in Sleeve Bolts Using an Ultra

—sonic Technique, Materials Evaluation, 54(2), 308-313(1996)。

35

(完整)基于单片机的汽车防撞报警系统设计

附 录

程序:

//51单片机制作的超声波测距,原程序 //测距范围是50~400CM,精度是1CM。 //原程序如下: #include sbit csbout=P1^0; //超声波发送 sbit csbint=P3^2; //超声波接收 sbit bg=P3^3; #define LED P0

sbit LED1=P2^4; //LED控制 sbit LED2=P2^5; //LED控制 sbit LED3=P2^6; //LED控制 sbit bj=P2^0;//报警 #define csbc 0。0347

unsigned char cl,mqzd,csbs,csbds,buffer[3],xm1,xm2,xm0,jpjs;//显示标识 unsigned char convert[10]={0x18,0x7b,0x2c,0x29,0x4b,0x89,0x88,0x3b,0x08,0x09};//0~9段码

unsigned int s,t,i,xx,j,sj1,sj2,sj3,mqs,sx1; void csbcj();

36

(完整)基于单片机的汽车防撞报警系统设计

void delay(j); //延时函数 void scanLED(); //显示函数 void timeToBuffer(); //显示转换函数 void keyscan(); void k1cl(); void k2cl(); void k3cl(); void k4cl(); void offmsd();

void main() //{

EA=1; // TMOD=0x11; //器1定时

ET0=1; // ET1=1; // TH0=0x00; TL0=0x00; TH1=0x9E; TL1=0x57; csbds=0; csbout=1; cl=0;

37

主函数 开中断

设定时器0为计数,设定时定时器0中断允许 定时器1中断允许 (完整)基于单片机的汽车防撞报警系统设计

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; }

else if(s〈sj1) //小于时显示“— — —” {

buffer[2]=0xBF; buffer[1]=0xBF;

38

(完整)基于单片机的汽车防撞报警系统设计

buffer[0]=0xBF; }

else timeToBuffer(); }

else timeToBuffer(); //将值转换成LED段码 offmsd();

scanLED(); // if(svoid scanLED() //{

LED=buffer[0]; LED3=0; delay(200); LED3=1;

LED=buffer[1]; LED2=0; delay(200); LED2=1;

显示函数 显示功能模块 39

(完整)基于单片机的汽车防撞报警系统设计

LED=buffer[2]; LED1=0; delay(200); LED1=1; }

void timeToBuffer() //{

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]; }

void delay(i) {

while(—-i); }

void timer1int (void) interrupt 3 using 2 {

TH1=0x9E; TL1=0x57; csbds++;

转换段码功能模块 40

(完整)基于单片机的汽车防撞报警系统设计

if(csbds>=40) {

csbds=0; cl=1; } }

void csbcj() {

if(cl==1) {

TR1=0; TH0=0x00; TL0=0x00; i=csbs; while(i—-) {

csbout=!csbout; }

TR0=1;

i=mqs; // while(i——) { }

41

盲区 (完整)基于单片机的汽车防撞报警系统设计

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;

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

if(s〈=80)bj=0; if(s〉80)bj=1;

///////////////////////////////////////////////////////////////// if(s42

(完整)基于单片机的汽车防撞报警系统设计

if(csbs〉6) {

csbs=csbs—2; sj1=40; }

sj1=sj1+2; k4cl(); }

else if(s>=sj3) {

if(csbs<32) {

csbs=csbs+2; sj1=sj1+10; k4cl(); } } } }

void keyscan() //{

xx=0;

if(k1!=1) //

43

健盘处理函数 判断开关是否按下

(完整)基于单片机的汽车防撞报警系统设计

{

delay(100); //延时去抖动

if(k1!=1) // 判断开关是否按下 { while(!k1) {

delay(25); xx++; }

if(xx>1000) {

jpjs++; if(jpjs>3) {

k4cl(); jpjs=0; } } xx=0;

switch(jpjs) {

case 1: k1cl();break; case 2: k2cl();break;

44

(完整)基于单片机的汽车防撞报警系统设计

case 3: k3cl();break; } } } }

void k1cl() {

sj1=sj1+1; if(sj1>100) sj1=50; s=sj1; }

void k2cl() {

sj2=sj2+5; if(sj2>500) sj2=40; s=sj2; }

void k3cl() {

sj3=sj3+10; if(sj3>600)

45

(完整)基于单片机的汽车防撞报警系统设计

sj3=600; s=sj3; }

void k4cl() {

sx1=sj1-1; sx1=sx1/csbc; mqs=sx1/4。5; }

void offmsd() //块 {

if (buffer[0] == 0xC0) //不显示

buffer[0] = 0xFF; }

46

小时数十位为0判断模如果值为零时小数十位

因篇幅问题不能全部显示,请点此查看更多更全内容

Top