您的当前位置:首页正文

超声波测距仪原理图和程序的设计方案

2024-07-16 来源:赴品旅游



超声波测距仪原理图和程序设计方案

1 绪论

当前社会经济的不断发展和工业科学技术的不断提高,汽车已逐渐进入不少百姓家。汽车使用数量的不断增加,从而由此导致的倒车交通安全问题也非常严重,道路交通压力增加,交通安全问题也是面临严峻挑战。在面临如此严峻的交通安全问题,许多涉及安全问题的汽车辅助系统也纷纷现世。而本设计就是利用单片机知识、传感器知识等,进行的汽车防撞装置的设计,在汽车倒车时,这种装置可以在驾驶员对车尾与障碍物体的距离远近无法目测和判断时进行报警。

1.1 课题背景及意义

我国社会经济的不断发展,人们对汽车这种交通工具的依赖性也越来越大,导致了车辆的日益增加在给城市交通不断施加压力的同时,也引发了非常多行车的安全问题。一些由驾驶员反应不够迅速而导致的汽碰擦,还有很多时候是由于驾驶员对离障碍物的距离判断不准确而造成的,如果驾驶员能提前知道障碍物的存在并且知道障碍物的距离,那么驾驶员就能及时地采取措施,从而能避免事故的发生。因此,许多安全系统也应运而生,诸如为了避免交通事故发生的主动安全系统和在发生事故时的防护安全的被动安全系统,而主动安全系统对汽车交通事故的发生能起到避免的作用,所以,主动安全系统的研究更为重要。随着汽车数量的增加,停车场的数量也急剧增加,停车车辆密集,停车人多,所以汽车碰撞亦逐渐增多。而本设计的汽车防撞装置就是主动安全系统,通过对汽车与障碍物之间距离的提示报警避免汽车与障碍物之间的擦碰。本设计要求设计的汽车防撞装置能减少驾驶员的驾驶压力和判断错误,使驾驶员泊车倒车更加安全方便,本设计将对提高交通安全起到重要作用。

本设计基于单片机实现汽车防撞,将超声波测距和传感器联系在一起,利用单片机的实时控制和数据处理功能测量并显示汽车与障碍物之间的距离,并在不同距离利用蜂鸣器不同频率发出不同声音及时报警。这样驾驶员就能通过测距的显示甚至不同的声音来直接判断汽车玉障碍物之间的距离。本设计的设计简易,虽然精度不高,还不能测量过远的距离,但规模小,外围电路简单,调试也方便,成本也不高,器件更换容易,灵活性高,而且能完全满足驾驶员泊车时的需要,可以完全解除驾驶员在倒



车过程中的顾虑和困扰,提高泊车的安全。

汽车防撞装置这种汽车安全辅助装置能大大减少汽车驾驶员在倒车的时候顾虑和对距离判断的失误,从而能够避免倒车的安全问题的发生,故此装置对于提高交通安全将起到重要的作用。所以,本课题所要求设计的基于单片机的汽车防撞装置将具有极大的现实意义和市场。

1.2 国内外研究现状

本汽车防撞装置包含有单片机控制电路、超声波测距传感器、蜂鸣器报警电路及数码管显示部件等,装置将各部件有机地结合起来,实现超声波测距及蜂鸣器报警提示的功能。

倒车雷达系统的开始是以蜂鸣器报警为标志的。汽车离障碍物距离越近,蜂鸣器报警声越急,蜂鸣器报警虽然使驾驶员知道有障碍物的存在,但却不能确定汽车车尾离障碍物有多远,所以,蜂鸣器报警对驾驶员帮助不是很大;之后一个质的飞跃就是液晶屏显示的出现,特别是液晶显示开始出现动态显示系统,驾驶员就是只要发动车辆,而且不用挂倒挡,液晶显示器上就会出现汽车图案以及汽车与周围的障碍物的距离,液晶显示是动态显示,液晶显示器的外表美观,显示的色彩也很清晰,而且可以直接粘贴在仪表盘上,安装也很方便[1]。不过由于液晶显示的灵敏度比较高,而且它的抗干扰能力也不是很强,所以误报的情况也较多。现在市面上的魔幻镜倒车雷达应该算是比较先进的倒车雷达了,它结合了前几代产品的优点,并采用了最新仿生超声雷达技术,并用高速电脑控制,可全天准确地进行探测2m以内的障碍物,并以不同的声音提示和直观的距离显示来提醒驾驶员;魔幻镜倒车雷达把后视镜、倒车雷达、免提电话、温度显示和车内空气温度显示等多项功能整合在一起[1],并设计了语音功能,因为其外形就是一块倒车镜,所以可以不占用车内空间,可以直接安装在车内倒视镜的位置,而且它样式种类繁多,可以按照个人需求和车内装饰选配,当然它的价格也是比较贵的[1]。最新的一代倒车雷达是整合影音系统,除了具备前几代倒车雷达的功能外还兼有影音系统[1]

随着科学技术水平的迅速发展,相关电子技术也是飞跃前进,当然,汽车电子产业也得到飞速发展,电子产业的飞速发展使得车载电子安全产品有很大的发展前景。倒车雷达当然是每辆车必备的电子安全产品,如今市面上的主流的汽车倒车雷达基本都是以单片机芯片为控制核心的智能测距报警系统。这些的倒车雷达能够连续测距并显示汽车与障碍物之间的距离,而且采用蜂鸣器的不同频率的鸣叫声进行报警提示和



距离显示提示,从而能够尽量不占用驾驶员的视觉空间[1]。此外,汽车电子系统的网络化的发展还要求作为汽车行驶安全辅助系统的倒车雷达要具有通信功能,并能够把数据发送到汽车总线上去[2]

就目前市面上的产品来讲,目前的汽车倒车雷达主要是具备数码管或者液晶屏的距离显示并且带有蜂鸣器的语音报警为主的汽车安全系统。这些系统主要采用的是以单片机为控制核心的智能超声波测距传感器和蜂鸣器报警系统,这种汽车安全辅助系统便宜耐用,而且达到了汽车电子系统网络化的发展需求。

1.3 课题研究内容及章节安排

本文所介绍的超声波测距报警系统在测距的时候采用的是两个超声波探头分别进行超声波发射和接收来进行距离的测量的。本设计的汽车防撞系统能测量出倒车方向的障碍物与汽车之间的距离,并通过数码管显示单元模块显示两者之间的距离,然后通过蜂鸣器发出不同频率的声响,从而起到提示和报警的作用。本系统利用一片89S51单片机对超声波信号循环不断地进行采集。系统包括超声波测距单元(超声波集成模块)、89S51单片机控制、蜂鸣器报警模块和数码管显示模块。这个设计的汽车倒车雷达要能够连续测距,数据经过单片机的处理后,用4位数码管显示所测量得到的距离,并利用不同频率使蜂鸣器发出不同的鸣叫声进行语音报警。

论文构成主要由以下部分组成:
1章主要介绍了本课题的背景意义和相关技术在国内外的研究现状。

2章介绍的是汽车防装系统的总体方案设计。首先介绍汽车防撞系统的设计要求,然后分别对测距传感器的选择和显示报警系统的方案设计做了介绍,最后提出本系统的总体的设计方案,为硬件系统的设计打下了基础。

3章对硬件系统的设计进行了介绍。首先对超声波传感器的工作原理进行了分析,然后具体讨论了超声波测距模块中的超声波发射电路和超声波接收电路的硬件设计,最后介绍了显示模块电路和蜂鸣器报警电路的设计。

4章主要是对系统的软件设计进行了介绍。在软件设计中采用不同模块不同编程进行设计的,本设计分别对系统的主程序模块、中断子程序模块、超声波测距模块、蜂鸣器报警模块和数码管的显示模块的各个程序进行了设计。

5章是硬件的组装及其性能进行分析。首先对实物进行硬件排版组装和焊接,然后讨论了系统的性能产生的误差。

6章是对本设计的总结和展望。最后一章对全文进行了总结,并指明了系统设



计的不足之处,最后也对本系统的倒车雷达报警系统的发展前景进行了展望。

2 总体方案论证

本章从系统方案等一些方面来进行论证。本设计主要是进行距离的测量和报警,设计中涉及到的内容较多,主要是将单片机控制模块、超声波测距模块、蜂鸣器报警模块、4位数码管显示模块这几个模块结合起来。而本设计的核心是超声波测距模块,其他相关模块都是在测距的基础上拓展起来的,测距模块是利用超声波传感器,之后选择合适单片机芯片,以下就是从相关方面来论述的。

2.1 设计方案论证

2.1.1测距传感器
1)激光测距传感器
激光传感器利用激光的方向性强和传光性好的特点,它工作时先由激光传感器对准障碍物发射激光脉冲,经障碍物反射后向各个方向散射,部分散射光返回到接受传感器,能接受其微弱的光信号,从而记录并处理光脉冲发射到返回所经历的时间即可测定距离,即用往返时间的一半乘以光速就能得到距离。其优点是测量的距离远、速度快、测量精确度高、量程范围大,缺点是对人体存在安全问题,而且制作的难度大成本也比较高[3]

2)红外线测距传感器
红外线测距传感器利用的就是红外线信号在遇到障碍物其距离的不同则其反射的强度也不同,根据这个特点从而对障碍物的距离的远近进行测量的。其优点是成本低廉,使用安全,制作简单,缺点就是测量精度低,方向性也差,测量距离近[3]

3)超声波传感器
超声波是一种超出人类听觉极限的声波即其振动频率高于20kHz的机械波。超声波传感器在工作的时候就是将电压和超声波之间的互相转换,当超声波传感器发射超声波时,发射超声波的探头将电压转化的超声波发射出去,当接收超声波时,超声波接收探头将超声波转化的电压回送到单片机控制芯片。超声波具有振动频率高、波长短、绕射现象小而且方向性好还能够为反射线定向传播等优点,而且超声波传感器的能量消耗缓慢有利于测距[4]。在中、长距离测量时,超声波传感器的精度和方向性



都要大大优于红外线传感器,但价格也稍贵。从安全性,成本、方向性等方面综合考虑,超声波传感器更适合设计要求。

根据对以上三种传感器性能的比较,虽然能明显看出来激光传感器是比较理想的选择,但是它的价格却比较高,而且安全度不够高。而且汽车在行驶的过程中超声波传感器测距时应具有较强的抗干扰能力和较短的响应时间,因此选用超声波传感器作为此设计方案的传感器探头。

2.2 系统方案

此方案选择51单片机作为控制核心,所测得的距离数值由4位共阳极数码管显示,与障碍物之间的不同距离利用蜂鸣器频率的不同报警声提示,超声波发射信号由51单片机的P3.6口送出到超声波发射电路,将超声波发送出去,超声波接收电路由CX20106A芯片和超声波接收探头组成的电路构成,报警系统由蜂鸣器电路构成。本设计中将收发超声波的探头分离这样不会使收发信号混叠,从而能避免干扰,可以很好的提高系统的可靠性。本设计的汽车防撞装置的系统框图如图2.1所示。

超声波接受器

放大电路

检波电路

报警系统

51单片机

超声波发射器

放大电路

显示模块

2.1 汽车防撞装置的系统框图
本设计由Keil编程软件对51单片机进行编程,51单片机在执行程序后由P3.6端口产生40kHz的脉冲信号通过74LS04电路进行放大并送到到超声波发射探头,产生超声波。在超声波发射电路启动的同时单片机启动中断定时器,利用其计数的功能



记录超声波发射超声波到接收到超声波回波的时间。当接收回射的超声波时,接收电路的输出端产生负跳变输出到单片机产生中断申请,执行外部中断子程序计算距离。

结合各方面的因素考虑,依据设计的要求,查阅相关数据资料,选择了超声波测距传感器TR40-16Q(其中T表示超声波发射探头,R表示超声波接收探头),综合考虑设计的要求出于简便角度,选用了HC-SR04超声波集成模块。此超声波模块的最大探测距离为5m,精度可以达到0.3cm,盲区为2cm,而且发射扩散角不大于15°,更有利于测距的准确性。而且,此模块的工作频率范围为39kHz41kHz 左右,完全能在40kHz 工作频率工作。

3 硬件电路设计

本设计的汽车防撞装置由51单片机、超声波发射探头、超声波接收探头、4位共阳极数码管、蜂鸣器组成。汽车防撞系统的测距是利用超声波测距的原理,在单片机内部程序的控制下,由超声波发射探头发射超声波,在超声波遇到障碍物时反射到超声波接收探头,由此回应到单片机,由单片机进行中断处理和数据的处理,计算出距离,由数码管显示距离,并由蜂鸣器报警提示。本设计的硬件电路分为五部分:单片机最小系统、超声波发射和接收电路、蜂鸣器报警电路和数码管显示电路。

3.1 单片机系统设计

3.1.1单片机的选择
一般在系统的设计当中,能否完成设计任务最重要的就在于系统的核心器件是否选择合适,而单片机更是是系统控制的核心,所以对单片机的选择更是异常重要。如果选择了一个合适的单片机不仅可以最大地简化系统的操作,而且其功能可能是最好的,可靠性也比较高,对整个系统来说更方便。目前,市面上的单片机的种类繁多,并且他们在功能方面也是各自有各自的特点。在一般的情况下来讲,在选择单片机时要需要考虑的几个方面有[5]
1)单片机最基本性能参数指标。例如:执行一条指令的速度、程序存储器的容量,I/O口的引脚数量等。

2)单片机的某些增强的功能。

3)单片机的存储介质。例如:对于程序存储器来说,最好选用的是Flash的存储器。



4)单片机的封装形式。封装的形式多种多样,例如:双列直插封装、PLCC封装及表面贴附等。

5)单片机对工作的温度范围的要求。例如:在进行设计户外的产品时,就必须要选用工业级的芯片,以达到温度范围的要求。

6)单片机的功耗。例如,如果信号线取电只能提供几mA的电流,所以为了能满足低功耗的要求这个时候选用STC的单片机是最合适的。

7)单片机在市面上的销售渠道是否畅通、其价格是否便宜。

8)单片机技术的支持网站如何,卖家提供的芯片资料是否足够完善,是否包含了用户手册,设计方案举例,相关范例程序等。

9)单片机的保密性是否很好,单片机的抗干扰的性能如何等。

51系列单片机它在指令系统、硬件结构和片内资源等方面与标准的52系列的单片机可以完全的兼容。51系列的单片机执行速率快(最高时钟频率为90MHz),功耗低,在系统、在应用可编程,不占用用户的资源[5]。根据本系统设计的实际要求,选择AT89S52单片机做为本设计的单片机使用,它是由ATMEL公司生产的高性能、低功耗的CMOS8 位单片机。89S52单片机具有以下几个性能特点:8k字节的闪存片内程序存储器,128字节的数据存储器,32个外部输入和输出口,2个全双工串行通信口,看门狗电路,8个中断源,216位可编程定时计数器,片内震荡和时钟电路且全静态工作并由低功耗的闲置和掉电模式[5]

单片机的引脚功能图如图3.1所示。



3.1 51 单片机的引脚功能图



AT89S52贴片封装

3.1.2 单片机引脚功能
1)电源引脚
Vcc40脚):正电源的引脚,工作电压是5V

GND20脚):接地端。

2)时钟电路的引脚XTAL1XTAL2
为了产生时钟信号,在89S51单片机的芯片内部已经设置了一个反相放大器,其中XTAL1端口就是片内反相放大器的输入端,XTAL2端则是片内振荡器反相放大器的输出端[5]。单片机使用的工作方式是自激振荡的方式,XTAL1XTAL2外接的是12MHz 的石英晶振,使内部振荡器按照石英晶振的频率频率进行振荡,从而就可以产生时钟信号时钟信号电路如图3.2所示。

3.2时钟信号电路
3)复位RST9脚)
当振荡器运行时,只要有有两个机器周期即24个振荡周期以上的高电平在这个引脚出现时,那么就将会使单片机复位,如果将这个引脚保持高电平,那么51单片机芯片就会循环不断地进行复位[5]。复位后的P0口至P3口均置于高电平,这时程序计数器和特殊功能寄存器将全部清零[5]。本课题设计的单片机复位电路如图3.3所示。

3.3 单片机复位电路图
4)输入输出口(I/O口)引脚
P0口是一个三态的双向口,既可以作为数据和地址的分时复用口,又可以作为通用输入输出口[5]P0口在有外部扩展存储器时将会被作为地址/数据总线口,此时P0口就是一个真正的双向口;而在没有外部扩展存储器时,P0口也可以作为通用的I/O接口使用,但此时只是一个准双向口;另外,P0口的输出级具有驱动8LSTTL负载的能力即输出电流不小于800uA[5]



P1口是一个带内部上拉电阻的8位双向I/O口,而P1口只有通用I/O接口一种

功能,而且P1口能驱动4LSTTL负载;在使用时通常不需要外接上拉电阻就能够

直接驱动发光二极管;在端口置1时,其内部上拉电阻将端口拉到高电平,作输入端

口用[5]

对于输出功能,在单片机工作的时候,可以通过用程序指令控制单片机引脚输出

高电平或低电平[5]。例如:指令CLR是清零的意思,CLR P1.0 的意思就是让单片机

P1.0端口输出低电平;而指令SETB是置1的意思,SETB P1.0 的意思就是让单片

P1.0端口输出高电平[5]

P2口是一个带内部上拉电阻的8位双向I/O口,而且P2口具有驱动4LSTTL

负载的能力[5]P2端口置1时,内部上拉电阻将端口的电位拉到高电平,作为输入口

使用;在对内部的Flash程序存储器编程时,P2口接收高8位地址和控制信息,而在

访问外部程序和16位外部数据存储器时,P2口就送出高8位地址[5]。在访问8位地

址的外部数据存储器时,P2引脚上的内容在此期间不会改变[5]

P3口也是一个带内部上拉电阻的8位双向I/O口,P3口能驱动4LSTTL负载,

8个引脚还用于专门的第二功能[5]P3口作为通用I/O口接口时,第二功能输出线

为高电平。P3口置1时,内部上拉电阻将端口电位拉到高电平,作输入口使用;在对

内部Flash程序存储器编程时,此端接控制信息[5]P3口的第二功能,如表3.1所示

[5]

3.1 P3 口第二功能表

P3 引脚

兼用功能

P3.0

串行通讯输入口(RXD

P3.1

串行通讯输出口(TXD

P3.2

外部中断0 请求输入端( INT0

P3.3

外部中断1 请求输入端(INT1

P3.4

定时器0 输入端(T0)

P3.5

定时器1 输入端(T1)

P3.6

外部数据存储器写选通信号输出端(/WR

P3.7

外部数据存储器写选通信号输出端(/RD




5)其它控制或复用引脚
aALE/PROG30脚):地址锁存有效信号输出端。在访问片外存储器时,ALE(地址锁存允许)以每机器周期两次进行信号输出,其下降沿用于控制锁存P0口输 ALE端仍以不变的频率输出脉冲信号(此出的低8位地址;
在不访问片外存储器的时候,频率是振荡器频率的1/6),而在访问片外数据存储器时,ALE脉冲会跳空一个,此时是不可以做为时钟输出[5]。对片内含有EPROM的机型在编程时,这个引脚用于输入编程脉冲/PROG的输入端[5]

b/PSEN29脚):片外程序存储器读选通信号输出端,低电平时有效。当89S51从外部程序存储器取指令或常数时,每个机器周期内输出2个脉冲即两次有效,以通过数据总线P0口读回指令或常数。
但在访问片外数据存储器时,/PSEN将不会有脉冲输出[5]

c/EA/Vpp31脚):/EA为片外程序存储器访选用端。当该引脚访问片外程序存储器时,应该输入的是低电平,要使89S51只访问片外程序存储器,这时该引脚必须保持低电平;而在对Flash存储器编程时,用于施加Vpp编程电压[5]

3.1.3单片机最小系统
单片机最小系统是其他拓展系统的最基本的基础,单片机最小系统是指一个真正可用的单片机最小配置系统即单片机能工作的系统。对于80S51单片机,由于片内已经自带有了程序存储器,所以只要单片机外接时钟电路和复位电路就可以组成了单片机的最小系统了。单片机的最小系统如图3.4所示。



3.4 单片机最小系统原理图

3.2 超声波发射和接收电路设计

超声波是一种振动频率超过20kHz的机械波,它可以沿直线方向传播,而且传播的方向性好,传播的距离也较远,在介质中传播时遇到障碍物在入射到它的反射面上就会产生反射波[6]。由于超声波的以上几个特点,所以超声波被广泛地应用于物体距离的测量、厚度等方面[6]。而且,超声波的测量是一种比较理想的的非接触式的测距方法[6]

当进行距离的测量时,由安装在同一水平线上的超声波发射器和接收器完成超声波的发射与接收,并且同时启动定时器进行计数[7]。首先由超声波发射探头向倒车的方向发射超声波并同时启动定时器计时,超声波在空气中传播的途中一旦遇到障碍物后就会被反射回来,当接收探头收到反射波后就会给负脉冲到单片机使其立刻停止计时[6.7]。这样,定时器就能够准确的记录下了超声波发射点至障碍物之间往返传播所用的时间ts[7]。由于在常温下超声波在空气中的传播速度大约为340m/s[7],所以障碍物到发射探头之间的距离为:
S=340×t/2=170×t
因为单片机内部定时器的计时实际上就是对机器周期T的计数,而本设计中时钟



频率fosc12MHz,设计数值N,则:
T12/fosc=1μs
t=N×TN×0.000001s
S170×N×T170×N/1000000m 在程序中按式S170×N×T170×N/1000000计算距离。

3.2.1 超声波发射电路设计
超声波发射电路是由超声波探头和超声波放大器组成。超声波探头将电信号转换为机械波发射出去,而单片机所产生的40kHz 的方波脉冲需要进行放大才能将超声波探头驱动将超声波发射出去,所以发射驱动实际上就是一个信号的放大电路,本设计选用74LS04芯片进行信号放大,超声波发射电路如图3.5所示。

3.5超声波发射电路
工作时,由单片机产生40kHz 的脉冲从P0.1口向超声波的发射电路部分发出信号,再经74LS04放大电路放大后,驱动超声波探头将超声波发射出去。

3.2.2超声波接收电路设计
由于超声波在空气中的传播过程中是有衰减的,如果距离较远,那么超声波接收电路所接收到的超声波信号就会比较微弱,因此需要对接收到的信号进行放大而且放大的倍数也要比较大。超声波接收电路主要是由集成电路CX20106A芯片电路构成的,CX20106A芯片电路可以对超声波信号进行放大、限幅、带通滤波、峰值检波、整形、比较等功能,比较完之后超声波接收电路会输出一个低电平到单片机去请求中断,当即单片机停止计时,并开始去进行数据的处理。

CX20106A芯片的前置放大器具有自动增益控制的功能,当测量的距离比较近时,放大器不会过载;而当测量距离比较远时,超声波信号微弱,前置放大器就有较大的放大增益效果。CX20106A芯片的5脚在外接电阻对它的带通滤波器的频率进行调节,



而且不用再外接其他的电感,能够很好地避免外加磁场对芯片电路的干扰,而且它的可靠性也是比较高的。CX20106A芯片电路本身就具有很高的抗干扰的能力,而且灵敏度也比较高,所以,能满足本设计的要求。超声波接收电路如图3.6所示。

3.6 超声波接收电路
3.2.3 HR-SR04 超声波集成模块
HR-SR04超声波集成模块是将超声波发射探头,超声波接收探头,CX20106A芯片电路,74LS04芯片放大电路集成到的一起的一个超声波集成模块。HR-SR04超声波集成模块正面外观如图3.7所示,HR-SR04超声波集成模块的背面外观如图3.8所示。



3.7 HR-SR04 超声波集成模块正面外观图
HR-SR04型超声波集成模块的工作电压为5V,而且此模块的静态工作电流是小于2mA 的,工作时候可以比较稳定。而且,它的感应的角度不大于15°,可以减少了很大部分可能存在的角度干扰问题。此模块的测距范围为2cm5m,能基本满足测距要求,而且其精度可以达到0.3cm,盲区仅仅为2cm,完全可以能够满足本设计 HR-SR04超声波集成模块采用的是I/O触发测距,的测距要求,而且测距也比较稳定。

给至少10us 的高电平信号。另外,此模块可以自动发送840kHz 的方波脉冲,并能够自动检测是否有信号返回,如果检测到有信号返回则通过I/O口输出高电平,高电平的持续时间就是超声波从发射到返回所用的时间,则,所测量的距离=(高电平时间×声速)/2

一个控制口发出一个10us以上的高电平,就可以在接收口等待高电平输出。一有输出就可以开定时器计时,当此口变为低电平时就可以读定时器的值,此时就为此次测距的时间,就能够算出距离。这样不断的循环周期测,就可以在不停地移动的过程中测量距离值了。但是,为防止发射信号对回收信号的影响,本超声波集成模块的测量周期最好定在60ms 以上,所以本设计将测量周期定在80ms

3.3 显示报警模块设计

3.3.1数码管显示模块设计
发光二极管的缩写是LED,在每个数码管里面都有8只发光二极管,它们分别记作abcdefgdp,其中dp是小数点,每一只发光二极管都有一根电极引到外部的引脚上,而另外一只二极管的引脚就连接在一起同样也引到外部引脚上,此引脚就记作公共端COM

市面上常用的LED数码管有两种即共阳极数码管与共阴极数码管。共阳极是数码管里面的发光二极的阳极接在一起作为公共引脚即公共阳极,在使用时此公共引脚接到电源正极。相反,共阴极就是数码管里面的发光二极管的阴极接在一起作为公共引脚即公共阴极,在使用时此引脚接到电源负极。

单片机对数码管的显示可以分为静态显示和动态显示,静态显示能够稳定地显示数值,但是搭建电路时比较烦索,而动态显示是数码管轮流显示再利用人眼的“视觉暂留”特性,这样看出来的就是在显示不同数值[8]。数码管的动态显示比较实用,电路构建简单,所以本设计采用动态扫描的方法显示测量距离,只要轮流显示的速度足够快的时候就能够实现测量数值的显示。显示模块选用4位共阳极数码管进行动态扫



描,此扫描方式能完全达到显示要求。显示模块连接电路图如图3.9所示。

3.9 显示模块连接电路图
3.3.2 报警模块设计
报警模块通过单片机给定不同频率利用蜂鸣器发出不同声音。报警模块电路图如图3.10所示。

3.10 报警模块电路图



34 系统整体电路

根据本章前面对设计的各个相关模块的分别讲述讲述,再结合单片机的引脚功能,从而得到系统整体电路图,如图3.11所示。

3.11 系统整体电路图
在图3.11中,4位共阳极数码管的八个显示比划分别外接到单片机的P2.0P2.7端口,用于显示所测量距离,数码管的共阳极端分别接在单片机的P1.0P1.1P1.2P1.3这四个端口,利用单片机的动态扫描的方式将距离显示出来。单片机的P1.4接到蜂鸣器报警电路,用于蜂鸣器测距报警。



4 系统软件设计

本设计采用的是模块化的思路来进行设计和编写程序,程序主要由系统主程序和中断程序构成。主程序完成单片机的初始化,超声波的发射和接收、计算超声波发射点与障碍物之间的距离、数码管显示和蜂鸣器报警等。系统程序设计的主要的功能是发射超声波、接受超声波、计算测量距离、数据计算、蜂鸣器报警和数码管显示。

4.1 主程序设计

主程序对整个单片机系统进行初始化后,先将超声波的回波接收标志位置位并且使单片机P3.6端口输出一个低电平用来启动超声波发射电路,同时将定时器T0启动,然后调用距离计算的子程序,再根据定时器T0记录的时间计算出所需要测量的距离,然后再调用显示子程序,再将测出的距离以十进制的形式送到数码管显示,同时调用声音处理程序来控制蜂鸣器进行报警。最后主程序通过对回波信号的接收,完成后续的工作,假如标志位清零则说明接收到了回波信号,那么主程序就返回到初始端重新将回波接收标志位置位并且在单片机的P3.2端口上发送低电平到超声波发射电路,就这样,连续不断地运行,循环不断地工作用来实现测距。

整个系统的设计的关键是对距离进行测量的,然后通过单片机来处理测量数据是比较容易实现的,能精确的实现测距。在测距中,各种信号包括温度对声速的影响都将干扰到测距的准确性,其中超声波的余波信号对整个设计中测距的精确度的干扰的影响比较大[7]。超声波接收回路中的超声波信号一共有两种波信号:第一种波信号为余波信号就是当发射探头发射出信号之后,超声波接收探头马上就接收到的超声波信号,实际就是超声波的发射信号[7];另一种波信号就是有效信号,即经过障碍物表面反射回来的超声波回波信号[7],也是所需要测量的距离数值。

在进行超声波测距时,实际上测距就是记录从超声波发射电路发射超声波信号开始到接收到信号的声波的往返时间差,然后通过数据计算出距离,对于回波信号需要进行检测的有效信号是反射物体反射的回波信号,所以要尽量避免在检测时候检测到余波信号。余波就是在发射超声波时超声波信号直接到达接受探头的波信号,同时余



波信号也是超声波测量时存在测量盲区的最主要的原因[7]

超声波接收电路在接收到超声波回波后,通过CX20106A电路进行检波整形比较,并向单片机发出有效信号,单片机通过外部中断的改变记录回波信号的到达时间,中断发生之后就是表示已经接收到了回波信号,这个时候停止计时,并且读取计数器中的数值,这个数值就是需要进行测量的时间差的数据。

程序中对测距距离的计算方法是按S=17×N/1000=0.017×N(cm)进行计算的,其中,N为计数器的值,声速的值取为340m/s

综合以上的分析可得到系统主程序流程图,系统主程序的流程图如图4.1所示。

开始

单片机初始化

超声波模块复位

发射超声波并启动T0开中断

接收到回波的同时中断停止

计算测量距离

显示距离同时蜂鸣器报警

延时



4.1 系统主程序流程图

4.2 中断处理程序

负责计算车尾与障碍物之间的距离是/INT0的中断程序。根据前面的对超声接收电路的分析,在超声波集成模块接收到超声波回波信号后,超声波接收电路就会产生一个低电平送至单片机的P3.2引脚,使系统中断,则系统转入中断处理程序。进入中断处理后,定时器T0和外部中断0就立即被关闭,同时读取时间值,并给回波接收标志位清零即成功接收到回波信号。中断处理程序的程序流程图如图4.2所示。



计时停止

中断关闭

距离计算处理

显示距离并根据距离

N

判断是否报警

Y

指定的报警声开启

返回



4.2 中断处理程序流程图
在中断处理程序过程中,对距离数据的计算是比较关键的。首先是从定时器0得到超声波传播中往返所用的时间,再运用公式计算得出障碍物与车尾之间的距离,然后再将测得的距离值传到其他功能模块进行其他功能的处理。

C程序如下:
voidmain()
{
TMOD=0x11;//设置工作方式
IT0=0;//由高电平变低电平,触发外部中断0

Echo=0;

while(1)
{



delay(60);
EA=0;
Trig=1;
delay_20us();
Trig=0;//发射启动脉冲

TR1=1; //
EX0=1; //

TH1=0; //
TL1=0; //
TF1=0; //EA=0时打开外部中断0和定时器1的设置

while(Echo==0);//等待Echo变高电平
EA=1;

if(xs>=100)
beep=0;
else beep=1;

}



}

//外部中断0,用做判断回波电平
intO() interrupt 0 // 外部中断是0{
TR1=0;
outcomeh=TH1; //取出定时器的值 outcomel=TL1; //取出定时器的值 display();
//delay(50);
EX0=0; //关闭外部中断 }

//定时器1中断,用做超声波测距计时
timer1()interrupt 3 // 定时器0中断是1 {
TH1=0;
TL1=0;
}

4.3 计算及显示模块设计

从距离计算公式S=17×N/1000=0.017×N(cm)中可以很明显看出来,如果想要得到具体的距离的值,就只需要得到从超声波发送开始到接收到超声波这个过程中定时器0的计数的次数。

本设计中采用了4位共阳极连接的数码管显示来显示与障碍物之间的距离同时数码管与P1口连接进行动态的段扫描。由于这个距离值是不断变化的,所以,这个数码管的显示的过程是在外部中断0发生后才进行的。



所以当主程序给超声波发生器发送了信号后,此时中断和定时器0就已经被打开,并开始计时了。当超声波接收电路接收了到回波信号的同时时,电路便会产生一个低电平到单片机的P0.0端口,在单片机检测到该信号后,定时器计时就将停止,同时定时器的计数的次数将被提取出来,这样就可以得到以cm为单位的测量的距离值。

C程序如下:
voiddisplay()
{

xs=(long int)(((256*outcomeh+outcomel)*340*0.5)/1000-67);//减去60是为了消除误差的60mm

if((xs>=1000)&(xs<4000))
{

P1=WeiMa[0];
P2=0xff;
P2=DuanMa[xs%10];
delay(10);

P1=WeiMa[1];
P2=0xff;
P2=DuanMa[xs%100/10];
delay(10);

P1=WeiMa[2];
P2=0xff;
P2=DuanMa[xs/100%10];
delay(10);



P1=WeiMa[3];
P2=0xff;
P2=DuanMa[xs/1000];
delay(10);

}

if((xs<1000)&(xs>=100))
{
P1=WeiMa[0];
P2=0xff;
P2=DuanMa[xs%10%10];
delay(10);

P1=WeiMa[1];
P2=0xff;
P2=DuanMa[xs/10%10];
delay(10);

P1=WeiMa[2];
P2=0xff;
P2=DuanMa[xs/100];
delay(10);

P1=WeiMa[3];
P2=0xff;
delay(10);



}

if((xs<100)&(xs>10))
{
P1=WeiMa[0];
P2=0xff;
P2=DuanMa[xs%10]; delay(10);

P1=WeiMa[1];
P2=0xff;
P2=DuanMa[xs/10];
delay(10);

P1=WeiMa[2];
P2=0xff;
delay(10);

P1=WeiMa[3];
P2=0xff;
delay(10);

}

if((xs>4000)|xs<10)



{
P1=0;
P2=0xbf;
}

} }

4.4 报警模块设计

主程序根据距离计算公式计算数据即距离结果的远近,通过数码管显示,并且同时控制蜂鸣器的鸣叫的频率。在本设计中,利用的是单片机P1.0引脚来产生不同频率的方波来控制蜂鸣器产生不同频率的“滴滴”声,且是在离障碍物距离越近鸣叫频率越低。

C程序如下:

if(xs>=100)
beep=0;
else beep=1;

5 硬件组装及性能调试

本汽车防撞装置以HC-SR04型的超声波测距传感器模块为主体,中心频率是基本稳定在40kHz,安装时保持模块平整摆放即使两超声波探头的中心轴线平行[9]。其它硬件的组装和连线焊接如下:P2口分别接到四位八段的共阳数码管的abcdefgdp引脚上,用来进行动态的段扫描;P1口的P1.0P1.1P1.2P1.3控制四位数码管的片选;P1口的P1.4通过一个三极管连接到蜂鸣器上,构成蜂鸣器报警电路,进行蜂鸣器鸣叫报警;P3.6端口接超声波模块的发射端;P3.2端口接超声波接收端,用作判断超声波是否接收到了回波的信号,并控制计数器停止计时。

超声波测距时需要测的是从发射开始到接收到回波信号的这段时间里的声波往返的时间差,由于需要对接收到的回波信号进行检测,而检测的有效信号为反射的回波信号,所以应该要尽量避免检测到余波信号而超声波检测中最小测量盲区存在的主



要原因也是因为余波干扰的缘故[10]。因为超声波测距所能测的距离的大小与传感器的驱动功率、测量方法有很大关系,而从理论上来讲,本设计系统采用的超声波模块测距时存在的盲区大约为2cm 左右,而且本设计理论上的测量距离范围为2cm5m,测量的误差比较小,测量显示值稳定,可以精确到0.3cm,能满足设计要求。

经测量一块地砖的宽度为60cm,本设计的测量距离为0.614m,距离基本能测准,且比较稳定,测量情况如图5.1所示。

5.1 测量情况显示
在已知既定的一米距离,用此装置测量的一米距离显示如图5.2所示。



5.2测量的一米距离显示
本系统在设计和数据的计算过程中无可避免地会产生一定的误差,以下对可能产生误差的原因进行分析:
1)环境的温度所引起的误差
环境温度的影响是本设计在不同的温度条件下测量数据存在误差的主要原因,根 而本据有关资料,在当温差较大时,前后两次测距的误差肯定前后相差也比较大[11]

设计中并没有温度补偿模块,主要是本设计做为倒车雷达使用对精确的距离的要求不是很高主要是起到警报的作用而已,所以本设计并没有采用温度补偿模块进行设计。

2)不同障碍物表面材料的不同介质引起的误差
因为表面粗糙的障碍物介质要比光滑介质的测量结果要差,如果障碍物的发射面比较粗糙会引起发射信号散射开那么回波信号就会减弱,这样就会导致测量结果的误差增大[12]

3)超声波模块的感应角的影响
两个超声波探头即发射探头和接收探头和障碍物之间存在一个几何角度,反射波入射到探头存在一定的角度,当这个角度过大时,这就会造成测量较大的误差,或者说根本接收不到回波信号。特别是在障碍物的距离较小的时候这个误差就成为了距离



测量的主要误差的原因,但是这种误差是可以尽量减小的,利用发射能力强、散射小的探头,或者多用几个探头[13]

4)余波信号的影响
在测量时有一部分的声波是从发射探头直接转收到接收探头的,这部分声波即是余波信号,这种余波对测量的干扰是挺大的。但是这种干扰能够通过别的方法进行处理,比如软件算法的方法去消除直达波的干扰[14]。当芯片收到信号波时自动判定收到的超声波信号是发射的声波衍射而返回来的信号时就会自动忽略掉,继续去等待检测在这个工作周期内是否有有效反射波反射回来,如果有就进行处理,没有就进行新的一次测量[15]



6 结论及展望

这个汽车倒车防装装置的设计主要是基于89S51单片机控制核心的,同时以超声波测距为主的显示报警系统。通过对理论和实际情况的分析,本设计的设计方案是基本可行。实现了以单片机为主要的控制核心,本系统在工作时是通过测距传感器采集数据,由单片机控制核心快速地计算出距障碍物距离并通过数码管显示结果同时利用用蜂鸣器鸣叫进行声音报警提示,从而达到汽车防撞的目的。

本设计还可以在几个方面进行修改完善,进而使得本设计的测距仪功能更加完善,诸如:
1)因为超声波探头的限制,防装装置在温度不同的环境下测量误差也不一样,所以要根据实际情况对探头进行合适的更换。

2)系统动态性能不高,当与向障碍物移动速度小的时侯,能够稳定测量并稳定显示,但是如果移动速度太大就会使误差也逐渐增大。

3)本设计中并没有温度补偿模块,主要是本设计做为倒车雷达使用对精确的距离要求不高主要是起到警报的作用,所以没有采用温度补偿模块进行设计。如果在设计中考虑到温度补偿这个模块,并添加到设计中去,那么整个系统将会更完善。

4)整个设计利用的是超声波模块设计,电路简单,编程容易,完全能实现功能要求。

汽车倒车雷达所涉及的学科的内容比较多,诸如传感器、单片机等,现在各个学科还在不断的发展之中,相信也将推动这个系统功能的更加完善,并且应用将更为广泛。



结束语

本设计介绍的是基于单片机的汽车防撞装置的设计,文中给出了具体的系统的硬件和软件的设计思路方案。而超声波测距模块是设计中的关键模块,超声波驱动电路使用的是74LS04放大电路对信号放大转换发射超声波去进行测距,超声波回波经过CX20106A芯片增益整形放大滤波最终输到单片机相应端口并执行中断程序。本设计中测距显示模块采用的是单片机动态扫描方式将测得距离通过4位共阳极数码管显示出来的,并利用蜂鸣器报警电路对不同距离用不同的声音进行报警。设计的程序是利用Keil编程软件来完成的,程序所用的语言是C语言,程序内容包括40kHz 方波信号的产生、读取超声波传送回波的时间、计算距离、数码管显示、蜂鸣器报警等模块。本设计所设计的汽车防撞装置的测距精度能达到0.3cm 的精度,而且测距盲区仅仅只有2cm,能够很好的进行距离的测量,而且控制方便,在利用了超声波集成模块后的调试也很方便,测距的范围可以在2cm5m 之间,测距稳定,可以达到设计要求。

设计的过程中,遇到的问题也是颇多。在开始查阅资料的时候,没能把握设计的核心内容,本设计要求所要设计的汽车防撞装置设计本质就是一种测距报警仪,在把握住设计的核心内容后着手设计。在设计的过程中,关于显示部分也斟酌许久,动态扫描显示和静态显示的选择不定,之后通过指导老师的解答和查阅相关资料,最终确定了动态扫描的方式来显示。还有一个最关键的问题就是关于超声波探头模块的选择,之前设计的是超声波发射电路和接收电路是分开各自独立的,但在装配完调试发现调试难度有点大,后来在老师的指导下,改用了超声波集成模块,集成模块把超声波发射和接收电路集成在一起,而且能大大减少相互之间的干扰,在装配完很容易就调试出来了。在程序方面,关于蜂鸣器不同频率的鸣叫程序,还有一个程序方面的问题就是关于超声波来回时间差的问题,不过两个问题都在老师的指导下顺利完成了。

本设计在测距方面能基本满足倒车要求的测距,但其精度还不是很高。而且,本设计在测距时没将温度变化对测距影响,如果将温度补偿模块加入到设计中,系统将更加完善。本系统在测距移动的过程,稳定性不高,移动的速度过快误差也比较大。但本系统做为汽车倒车雷达还是有广阔的应用前景的。



致 谢

毕业设计是对所学的知识运用能力进行的一次全面性的考察,也是提高基本能力的一种训练,培养能将所学知识综合运用的能力和能够独立地对问题进行分析和解决的能力,为以后工作打下夯实的基础。

首先要感谢在本次设计中给与我大力帮助和指导的指导老师张重雄教授,在整个做毕业设计的各个阶段,不管是查阅相关资料还是设计系统的方案的修改和确定以及中期检查和详细的设计思路,以及最后实物的装配等的整个过程中张教授都给了我悉 教授总是耐心地解答,使我能够顺利地完成毕业设计。心的指导。对于我的每个问题,
除了敬佩张老师的专业水平外,他严谨负责的工作态度也是非常值得学习的,并且对今后的学习和工作都将产生影。

其次感谢辅导老师井老师,他对外文翻译、开题报告、论文等每次都不厌其烦的帮忙检查。尽管井老师工作很忙,但是晚上他可以待到10点多帮忙检查辅导完毕才离开办公室。非常感谢井老师,对学生非常负责的态度令我钦佩。井老师的工作认真负责的态度也值得学习。

本次毕业设计已至尾声。由于实际设计经验的匮乏,在许多地方难免有考虑不周全的,如果没有张教授和井老师的指导和督促,以及其他老师们和同学们的帮助和支持,没有他们的帮助,完成这个设计是有一定的难度的。所以要感谢所有给我授过课的老师,无论是基础课老师还是专业课老师都表示深深谢意。对英语知识和专业英语的学习,掌握了外文阅读和外文翻译的能力,在外文翻译和查阅外文资料时候可以得心应手;通过C语言的学习,在编程的时候也不感觉到非常棘手;计算机知识的学习,使我能够熟练使用多种最基本的计算机相关软件和专业软件的使用方法,包括基本的Windows办公软件,还有一些专业软件,如Protel99Proteus等。

最后,再次感谢所有帮助过我的老师和同学。



参考 文 献

[1]鞠永胜.基于嵌入式系统汽车倒车雷达的设计与实现[D].山东:山东大学, 2010.

[2]张国熊.测控电路[M].北京:机械工业出版社,2003.

[3]阎石.数字电子技术基础[M].北京:高等教育出版社,2004.

[4]侯媛彬等.凌阳单片机原理及其毕业设计精选[M].科学出版社,2006.

[5]李建忠.单片机原理及应用[M].西安:西安电子科技大学出版社,2008.[6] 霍孟友等.单片机原理与应用[M].北京:机械工业出版社,2004.

[7]刘洪恩.汽车倒车防撞超声波雷达的设计[J].仪表技术,20041504): 5560.

[8]李朝青.单片机原理及接口技术[M].北京:北京航空航天大学出版社, 2002.

[9]高海生,杨文焕.单片机应用技术大全[M].成都:西南交通大学出版社, 1996.

[10]张友德,赵志英,涂时亮.单片机微型机原理、应用与实验[M].上海:复 旦大学出版社,1992.

[11]陆冬妹.基于温度补偿的超声波倒车测距系统的设计[J].齐齐哈尔大学 学报,2011272.

[12]刘典文等.基于单片机STC89C51设计的超声波测距仪[J].中国新技术信 产品,201081617.

[13]Vizimuller. RF design guide-systems, circuits, and equations [M].BostonArtechHouse1995.

[14]Keil Software. The Final World On the 8051[M]. GermanyKeil ElektronikGmbh and Keil software1997.

[15]梁小流,陈炳森,梁建和.基于89S52汽车防撞雷达系统设计[J].机电 工程技术,201110(4)4951.



附录 程序清单

#include<reg52.h>

sbitTrig=P3^6; //产生脉冲引脚
sbitEcho=P3^2; //回波引脚

#defineuchar unsigned char
#defineuint unsigned int

sbitbeep=P1^4;

ucharDuanMa[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//显示段码值0~9
ucharWeiMa[]={0xf7,0xfb,0xfd,0xfe};

longint xs,outcomeh,outcomel;

voiddelay(uchar z)
{
ucharx,y;
for(y=z;y>0;y--)
for(x=110;x>0;x--);
}

voiddelay_20us()//20us 的固定延时
{
uchar z ;
for(z=0;z<100;z++);
}

voiddisplay()
{

xs=(longint)(((256*outcomeh+outcomel)*340*0.5)/1000-67);//减去60是为了消除误差的60mm



if((xs>=1000)&(xs<4000))
{

P1=WeiMa[0];
P2=0xff;
P2=DuanMa[xs%10];
delay(10);

P1=WeiMa[1];
P2=0xff;
P2=DuanMa[xs%100/10];
delay(10);

P1=WeiMa[2];
P2=0xff;
P2=DuanMa[xs/100%10];
delay(10);

P1=WeiMa[3];
P2=0xff;
P2=DuanMa[xs/1000];
delay(10);

}

if((xs<1000)&(xs>=100))
{
P1=WeiMa[0];
P2=0xff;
P2=DuanMa[xs%10%10];
delay(10);

P1=WeiMa[1];
P2=0xff;
P2=DuanMa[xs/10%10];
delay(10);

P1=WeiMa[2];
P2=0xff;
P2=DuanMa[xs/100];
delay(10);



P1=WeiMa[3];
P2=0xff;
delay(10);

}

if((xs<100)&(xs>10))
{
P1=WeiMa[0];
P2=0xff;
P2=DuanMa[xs%10]; delay(10);

P1=WeiMa[1];
P2=0xff;
P2=DuanMa[xs/10];
delay(10);

P1=WeiMa[2];
P2=0xff;
delay(10);

P1=WeiMa[3];
P2=0xff;
delay(10);

}

if((xs>4000)|xs<10)
{
P1=0;
P2=0xbf;
}

}

voidmain()
{



TMOD=0x11;//设置工作方式
IT0=0;//由高电平变低电平,触发外部中断0

Echo=0;

while(1)
{
delay(60);
EA=0;
Trig=1;
delay_20us();
Trig=0;//发射启动脉冲

TR1=1; //
EX0=1; //

TH1=0; //
TL1=0; //
TF1=0; //EA=0时打开外部中断0和定时器1的设置

while(Echo==0);//等待Echo变高电平
EA=1;

if(xs>=100)
beep=0;
else beep=1;

}

}

//外部中断0,用做判断回波电平
intO() interrupt 0 // 外部中断是0{
TR1=0;
outcomeh=TH1; //取出定时器的值



outcomel=TL1; //取出定时器的值
display();
//delay(50);
EX0=0; //关闭外部中断
}

//定时器1中断,用做超声波测距计时
timer1()interrupt 3 // 定时器0中断是1 {
TH1=0;
TL1=0;
}

显示全文