1、 编号: 传感器与检测技术实训报告题 目: 超 声 波 测 距 院 (系): 电 子 信 息 工 程 系 专 业: 电 子 信 息 工 程 技 术 学生姓名: 学 号: 指导教师单位: 电 子 信 息 工 程 系 指导教师: 职 称: 讲 师 题目类型: 理论研究 实验研究 工程设计 工程技术研究 软件开发 年 月 日第 34 页 共 31 页桂林电子科技大学课程设计(论文)报告用纸摘 要本文借助单片机首先根据实训所要实现的功能设计原理图,从而通过HC-SR04模块、硬件电路与软件程序的结合实现通过超声波测量距离。超声波测距器,可以应用于汽车倒车、建筑施工工地以及一些工业现场的位置监控,也可用
2、于如液位、井深、管道长度的测量等场合。测量时与被测物体无直接接触,能够清晰稳定地显示测量结果。由于超声波指向性强,能量消耗缓慢,在介质中传播的距离较远,因而超声波经常用于距离的测量,如测距仪和物位测量仪等都可以通过超声波来实现。利用超声波检测往往比较迅速、方便、计算简单、易于做到实时控制,并且在测量精度方面能达到实用的要求,因此在日常生活中得到了广泛的应用。关键词 : 超声波测距、单片机、距离、超声波目 录1 绪论41.1 课题背景及意义41.2 国内外研究现状51.3 课题研究内容及章节安排61.3.1论文构成62 总体方案论证72.1 设计方案论证72.1.1 测距传感器72.2 系统方案
3、83 硬件电路设计93.1 单片机系统设计93.1.1 单片机的选择93.1.2 单片机引脚功能113.1.3 单片机最小系统143.2 超声波发射和接收电路设计143.2.1 HR-SR04超声波集成模块153.3 显示报警模块设计163.3.1数码管显示模块设计163.3.2报警模块设计173.4 系统整体电路174 系统软件设计194.1 主程序设计194.2 中断处理程序194.3 计算及显示模块设计234.4 报警模块设计255 硬件组装及性能调试256 总结及展望26结束语27致 谢28参考文献29附录130附录230附录331附录431附录5321 绪论当前社会经济的不断发展和工
4、业科学技术的不断提高,汽车已逐渐进入不少百姓家。汽车使用数量的不断增加,从而由此导致的倒车交通安全问题也非常严重,道路交通压力增加,交通安全问题也是面临严峻挑战。在面临如此严峻的交通安全问题,许多涉及安全问题的汽车辅助系统也纷纷现世。而本设计就是利用单片机知识、传感器知识等,进行的汽车防撞装置的设计,在汽车倒车时,这种装置可以在驾驶员对车尾与障碍物体的距离远近无法目测和判断时进行报警。1.1 课题背景及意义我国社会经济的不断发展,人们对汽车这种交通工具的依赖性也越来越大,导致了车辆的日益增加在给城市交通不断施加压力的同时,也引发了非常多行车的安全问题。一些由驾驶员反应不够迅速而导致的汽碰擦,还
5、有很多时候是由于驾驶员对离障碍物的距离判断不准确而造成的,如果驾驶员能提前知道障碍物的存在并且知道障碍物的距离,那么驾驶员就能及时地采取措施,从而能避免事故的发生。因此,许多安全系统也应运而生,诸如为了避免交通事故发生的主动安全系统和在发生事故时的防护安全的被动安全系统,而主动安全系统对汽车交通事故的发生能起到避免的作用,所以,主动安全系统的研究更为重要。随着汽车数量的增加,停车场的数量也急剧增加,停车车辆密集,停车人多,所以汽车碰撞亦逐渐增多。而本设计的汽车防撞装置就是主动安全系统,通过对汽车与障碍物之间距离的提示报警避免汽车与障碍物之间的擦碰。本设计要求设计的汽车防撞装置能减少驾驶员的驾驶
6、压力和判断错误,使驾驶员泊车倒车更加安全方便,本设计将对提高交通安全起到重要作用。本设计基于单片机实现汽车防撞,将超声波测距和传感器联系在一起,利用单片机的实时控制和数据处理功能测量并显示汽车与障碍物之间的距离,并在不同距离利用蜂鸣器不同频率发出不同声音及时报警。这样驾驶员就能通过测距的显示甚至不同的声音来直接判断汽车玉障碍物之间的距离。本设计的设计简易,虽然精度不高,还不能测量过远的距离,但规模小,外围电路简单,调试也方便,成本也不高,器件更换容易,灵活性高,而且能完全满足驾驶员泊车时的需要,可以完全解除驾驶员在倒车过程中的顾虑和困扰,提高泊车的安全。汽车防撞装置这种汽车安全辅助装置能大大减
7、少汽车驾驶员在倒车的时候顾虑和对距离判断的失误,从而能够避免倒车的安全问题的发生,故此装置对于提高交通安全将起到重要的作用。所以,本课题所要求设计的基于单片机的汽车防撞装置将具有极大的现实意义和市场。1.2 国内外研究现状本汽车防撞装置包含有单片机控制电路、超声波测距传感器、蜂鸣器报警电路及数码管显示部件等,装置将各部件有机地结合起来,实现超声波测距及蜂鸣器报警提示的功能。倒车雷达系统的开始是以蜂鸣器报警为标志的。汽车离障碍物距离越近,蜂鸣器报警声越急,蜂鸣器报警虽然使驾驶员知道有障碍物的存在,但却不能确定汽车车尾离障碍物有多远,所以,蜂鸣器报警对驾驶员帮助不是很大;之后一个质的飞跃就是液晶屏
8、显示的出现,特别是液晶显示开始出现动态显示系统,驾驶员就是只要发动车辆,而且不用挂倒挡,液晶显示器上就会出现汽车图案以及汽车与周围的障碍物的距离,液晶显示是动态显示,液晶显示器的外表美观,显示的色彩也很清晰,而且可以直接粘贴在仪表盘上,安装也很方便1。不过由于液晶显示的灵敏度比较高,而且它的抗干扰能力也不是很强,所以误报的情况也较多。 现在市面上的魔幻镜倒车雷达应该算是比较先进的倒车雷达了,它结合了前几代产品的优点,并采用了最新仿生超声雷达技术,并用高速电脑控制,可全天准确地进行探测2 m以内的障碍物,并以不同的声音提示和直观的距离显示来提醒驾驶员;魔幻镜倒车雷达把后视镜、倒车雷达、免提电话、
9、温度显示和车内空气温度显示等多项功能整合在一起1,并设计了语音功能,因为其外形就是一块倒车镜 ,所以可以不占用车内空间,可以直接安装在车内倒视镜的位置,而且它样式种类繁多,可以按照个人需求和车内装饰选配,当然它的价格也是比较贵的1。最新的一代倒车雷达是整合影音系统,除了具备前几代倒车雷达的功能外还兼有影音系统1。随着科学技术水平的迅速发展,相关电子技术也是飞跃前进,当然,汽车电子产业也得到飞速发展,电子产业的飞速发展使得车载电子安全产品有很大的发展前景。倒车雷达当然是每辆车必备的电子安全产品,如今市面上的主流的汽车倒车雷达基本都是以单片机芯片为控制核心的智能测距报警系统。这些的倒车雷达能够连续
10、测距并显示汽车与障碍物之间的距离,而且采用蜂鸣器的不同频率的鸣叫声进行报警提示和距离显示提示,从而能够尽量不占用驾驶员的视觉空间1。此外,汽车电子系统的网络化的发展还要求作为汽车行驶安全辅助系统的倒车雷达要具有通信功能,并能够把数据发送到汽车总线上去2。就目前市面上的产品来讲,目前的汽车倒车雷达主要是具备数码管或者液晶屏的距离显示并且带有蜂鸣器的语音报警为主的汽车安全系统。这些系统主要采用的是以单片机为控制核心的智能超声波测距传感器和蜂鸣器报警系统,这种汽车安全辅助系统便宜耐用,而且达到了汽车电子系统网络化的发展需求。1.3 课题研究内容及章节安排本文所介绍的超声波测距报警系统在测距的时候采用
11、的是两个超声波探头分别进行超声波发射和接收来进行距离的测量的。本设计的超声波测距系统能测量出超声波探头与障碍物之间的距离, 并通过数码管显示单元模块显示两者之间的距离,然后通过单片机程序设计当达到多大距离时蜂鸣器报警, 从而起到提示和报警的作用。本系统利用一片89C51单片机对超声波信号循环不断地进行采集。系统包括超声波测距单元(超声波集成模块)、89c51单片机控制、蜂鸣器报警模块和数码管显示模块。这个设计的汽车倒车雷达要能够连续测距,数据经过单片机的处理后,用4位数码管显示所测量得到的距离。 1.3.1 论文构成第1章主要介绍了本课题的背景意义和相关技术在国内外的研究现状。 第2章介绍的是
12、汽车防装系统的总体方案设计。首先介绍汽车防撞系统的设计要求,然后分别对测距传感器的选择和显示报警系统的方案设计做了介绍,最后提出本系统的总体的设计方案,为硬件系统的设计打下了基础。 第3章对硬件系统的设计进行了介绍。首先对超声波传感器的工作原理进行了分析,然后具体讨论了超声波测距模块中的超声波发射电路和超声波接收电路的硬件设计,最后介绍了显示模块电路的设计。 第4章主要是对系统的软件设计进行了介绍。在软件设计中采用不同模块不同编程进行设计的,本设计分别对系统的主程序模块、中断子程序模块、超声波测距模块、蜂鸣器报警模块和数码管的显示模块的各个程序进行了设计。 第5章是硬件的组装及其性能进行分析。
13、首先对实物进行硬件排版组装和焊接,然后讨论了系统的性能产生的误差。 第6章是对本设计的总结和展望。最后一章对全文进行了总结,并指明了系统设计的不足之处,最后也对本系统的倒车雷达报警系统的发展前景进行了展望。2 总体方案论证本章从系统方案等一些方面来进行论证。本设计主要是进行距离的测量和报警,设计中涉及到的内容较多,主要是将单片机控制模块、超声波测距模块、蜂鸣器报警模块、4位数码管显示模块这几个模块结合起来。而本设计的核心是超声波测距模块,其他相关模块都是在测距的基础上拓展起来的,测距模块是利用超声波传感器,之后选择合适单片机芯片,以下就是从相关方面来论述的。2.1 设计方案论证2.1.1 测距
14、传感器(1)激光测距传感器激光传感器利用激光的方向性强和传光性好的特点,它工作时先由激光传感器对准障碍物发射激光脉冲,经障碍物反射后向各个方向散射,部分散射光返回到接受传感器,能接受其微弱的光信号,从而记录并处理光脉冲发射到返回所经历的时间即可测定距离,即用往返时间的一半乘以光速就能得到距离。其优点是测量的距离远、速度快、测量精确度高、量程范围大,缺点是对人体存在安全问题,而且制作的难度大成本也比较高3。(2)红外线测距传感器红外线测距传感器利用的就是红外线信号在遇到障碍物其距离的不同则其反射的强度也不同,根据这个特点从而对障碍物的距离的远近进行测量的。其优点是成本低廉,使用安全,制作简单,缺
15、点就是测量精度低,方向性也差,测量距离近3。(3)超声波传感器超声波是一种超出人类听觉极限的声波即其振动频率高于20 kHz的机械波。超声波传感器在工作的时候就是将电压和超声波之间的互相转换,当超声波传感器发射超声波时,发射超声波的探头将电压转化的超声波发射出去,当接收超声波时,超声波接收探头将超声波转化的电压回送到单片机控制芯片。超声波具有振动频率高、波长短、绕射现象小而且方向性好还能够为反射线定向传播等优点,而且超声波传感器的能量消耗缓慢有利于测距4。在中、长距离测量时,超声波传感器的精度和方向性都要大大优于红外线传感器,但价格也稍贵。从安全性,成本、方向性等方面综合考虑,超声波传感器更适
16、合设计要求。根据对以上三种传感器性能的比较,虽然能明显看出来激光传感器是比较理想的选择,但是它的价格却比较高,而且安全度不够高。而且汽车在行驶的过程中超声波传感器测距时应具有较强的抗干扰能力和较短的响应时间,因此选用超声波传感器作为此设计方案的传感器探头。2.2 系统方案此方案选择51单片机作为控制核心,所测得的距离数值由4位共阴极数码管显示,与障碍物之间所能测的最大距离用蜂鸣器的报警声来提示,超声波发射信号由51单片机的P3-3口送出到超声波发射电路,将超声波发送出去,超声波接收电路由CX20106A芯片和超声波接收探头组成的电路构成,报警系统由蜂鸣器电路构成。本设计中将收发超声波的探头分离
17、这样不会使收发信号混叠,从而能避免干扰,可以很好的提高系统的可靠性。本设计的汽车防撞装置的系统框图如图2.1所示。超声波接受器检波电路51单片机超声波发射器放大电路放大电路报警系统显示模块图2.1 汽车防撞装置的系统框图本设计由Keil编程软件对51单片机进行编程,51单片机在执行程序后由P0.1端口产生40kHz的脉冲信号通过74LS04电路进行放大并送到到超声波发射探头,产生超声波。在超声波发射电路启动的同时单片机启动中断定时器,利用其计数的功能记录超声波发射超声波到接收到超声波回波的时间。当接收回射的超声波时,接收电路的输出端产生负跳变输出到单片机产生中断申请,执行外部中断子程序计算距离
18、。结合各方面的因素考虑,依据设计的要求,查阅相关数据资料,选择了超声波测距传感器TR40-16Q(其中T表示超声波发射探头,R表示超声波接收探头),综合考虑设计的要求出于简便角度,选用了HC-SR04超声波集成模块。此超声波模块的最大探测距离为5 m,精度可以达到0.3 cm,盲区为2 cm,而且发射扩散角不大于15,更有利于测距的准确性。而且,此模块的工作频率范围为39 kHz41 kHz左右,完全能在40 kHz工作频率工作。由于超声波的发射和接收是分开发送和接收的,所以发射探头和接收探头必须在同一条水平行直线上,这样才能准确地接收反射的回波。而由于测量的距离不同和发射扩散角所引起的误差以
19、及超声波信号在空气中传播的过程中的超声波衰减问题,发射探头和接收探头距离不可以太远,而且还要避免发射探头对接收探头在接收信号时产生的干扰,所以二者又不能靠得太近。根据对相关资料查阅,将两探头之间的距离定在5 cm8 cm最为合适。本设计所用的HC-SR04模块的超声波探头之间的距离大约在6 cm左右。3 硬件电路设计本设计的汽车防撞装置由51单片机、超声波发射探头、超声波接收探头、4位共阳极数码管、蜂鸣器组成。汽车防撞系统的测距是利用超声波测距的原理,在单片机内部程序的控制下,由超声波发射探头发射超声波,在超声波遇到障碍物时反射到超声波接收探头,由此回应到单片机,由单片机进行中断处理和数据的处
20、理,计算出距离,由数码管显示距离,并由蜂鸣器报警提示。本设计的硬件电路分为五部分:单片机最小系统、超声波发射和接收电路、蜂鸣器报警电路和数码管显示电路。3.1 单片机系统设计3.1.1 单片机的选择一般在系统的设计当中,能否完成设计任务最重要的就在于系统的核心器件是否选择合适,而单片机更是是系统控制的核心,所以对单片机的选择更是异常重要。如果选择了一个合适的单片机不仅可以最大地简化系统的操作,而且其功能可能是最好的,可靠性也比较高,对整个系统来说更方便。目前,市面上的单片机的种类繁多,并且他们在功能方面也是各自有各自的特点。在一般的情况下来讲,在选择单片机时要需要考虑的几个方面有5:(1)单片
21、机最基本性能参数指标。例如:执行一条指令的速度、程序存储器的容量,I/O口的引脚数量等。(2)单片机的某些增强的功能。(3)单片机的存储介质。例如:对于程序存储器来说,最好选用的是Flash的存储器。(4)单片机的封装形式。封装的形式多种多样,例如:双列直插封装、PLCC封装及表面贴附等。(5)单片机对工作的温度范围的要求。例如:在进行设计户外的产品时,就必须要选用工业级的芯片,以达到温度范围的要求。(6)单片机的功耗。例如,如果信号线取电只能提供几mA的电流,所以为了能满足低功耗的要求这个时候选用STC的单片机是最合适的。(7)单片机在市面上的销售渠道是否畅通、其价格是否便宜。(8)单片机技
22、术的支持网站如何,卖家提供的芯片资料是否足够完善,是否包含了用户手册,设计方案举例,相关范例程序等。(9)单片机的保密性是否很好,单片机的抗干扰的性能如何等。51系列单片机它在指令系统、硬件结构和片内资源等方面与标准的52系列的单片机可以完全的兼容。51系列的单片机执行速率快(最高时钟频率为90 MHz),功耗低,在系统、在应用可编程,不占用用户的资源5。根据本系统设计的实际要求,选择AT89S51单片机做为本设计的单片机使用,它是由ATMEL公司生产的高性能、低功耗的CMOS 8位单片机。89S51单片机具有以下几个性能特点:4 k字节的闪存片内程序存储器,128字节的数据存储器,32个外部
23、输入和输出口,2个全双工串行通信口,看门狗电路,5个中断源,2个16位可编程定时计数器,片内震荡和时钟电路且全静态工作并由低功耗的闲置和掉电模式5。单片机的引脚功能图如图3.1所示。图3.1 51单片机的引脚功能图3.1.2 单片机引脚功能(1)电源引脚Vcc(40脚):正电源的引脚,工作电压是5 V。GND(20脚):接地端。(2)时钟电路的引脚XTAL1和XTAL2为了产生时钟信号,在89S51单片机的芯片内部已经设置了一个反相放大器,其中XTAL1端口就是片内反相放大器的输入端,XTAL2端则是片内振荡器反相放大器的输出端 5。单片机使用的工作方式是自激振荡的方式,XTAL1和XTAL2
24、外接的是12 MHz的石英晶振,使内部振荡器按照石英晶振的频率频率进行振荡,从而就可以产生时钟信号。时钟信号电路如图 3.2所示。图3.2 时钟信号电路(3)复位RST(9脚)当振荡器运行时,只要有有两个机器周期即24个振荡周期以上的高电平在这个引脚出现时,那么就将会使单片机复位,如果将这个引脚保持高电平,那么51单片机芯片就会循环不断地进行复位5。复位后的P0口至P3口均置于高电平,这时程序计数器和特殊功能寄存器将全部清零5。本课题设计的单片机复位电路如图3.3所示。图3.3 单片机复位电路图(4)输入输出口(I/O口)引脚P0口是一个三态的双向口,既可以作为数据和地址的分时复用口,又可以作
25、为通用输入输出口5。P0口在有外部扩展存储器时将会被作为地址/数据总线口,此时P0口就是一个真正的双向口;而在没有外部扩展存储器时,P0口也可以作为通用的I/O接口使用,但此时只是一个准双向口;另外,P0口的输出级具有驱动8个LSTTL负载的能力即输出电流不小于800 uA5。P1口是一个带内部上拉电阻的8位双向I/O口,而P1口只有通用I/O接口一种功能,而且P1口能驱动4个LSTTL负载;在使用时通常不需要外接上拉电阻就能够直接驱动发光二极管;在端口置1时,其内部上拉电阻将端口拉到高电平,作输入端口用5。对于输出功能,在单片机工作的时候,可以通过用程序指令控制单片机引脚输出高电平或低电平5
26、。例如: 指令CLR是清零的意思,CLR P1.0的意思就是让单片机的P1.0端口输出低电平;而指令SETB是置1的意思,SETB P1.0的意思就是让单片机P1.0端口输出高电平5。P2口是一个带内部上拉电阻的8位双向I/O口,而且P2口具有驱动4个LSTTL负载的能力5。P2端口置1时,内部上拉电阻将端口的电位拉到高电平,作为输入口使用;在对内部的Flash程序存储器编程时,P2口接收高8位地址和控制信息,而在访问外部程序和16位外部数据存储器时,P2口就送出高8位地址5。在访问8位地址的外部数据存储器时,P2引脚上的内容在此期间不会改变5。P3口也是一个带内部上拉电阻的8位双向I/O口,
27、P3口能驱动4个LSTTL负载,这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外部数据存储器写选通信号
28、输出端(/RD)(5)其它控制或复用引脚(a)ALE/PROG(30脚):地址锁存有效信号输出端。在访问片外存储器时,ALE(地址锁存允许)以每机器周期两次进行信号输出,其下降沿用于控制锁存P0口输出的低8位地址;在不访问片外存储器的时候,ALE端仍以不变的频率输出脉冲信号(此频率是振荡器频率的1/6),而在访问片外数据存储器时,ALE脉冲会跳空一个,此时是不可以做为时钟输出5。对片内含有EPROM的机型在编程时,这个引脚用于输入编程脉冲/PROG的输入端5。(b)/PSEN(29脚):片外程序存储器读选通信号输出端,低电平时有效。当89S51从外部程序存储器取指令或常数时,每个机器周期内输出
29、2个脉冲即两次有效,以通过数据总线P0口读回指令或常数。但在访问片外数据存储器时,/PSEN将不会有脉冲输出5。(c)/EA/Vpp(31脚):/EA为片外程序存储器访选用端。当该引脚访问片外程序存储器时,应该输入的是低电平,要使89S51只访问片外程序存储器,这时该引脚必须保持低电平;而在对Flash存储器编程时,用于施加Vpp编程电压5。3.1.3 单片机最小系统单片机最小系统是其他拓展系统的最基本的基础,单片机最小系统是指一个真正可用的单片机最小配置系统即单片机能工作的系统。对于80S51单片机,由于片内已经自带有了程序存储器,所以只要单片机外接时钟电路和复位电路就可以组成了单片机的最小
30、系统了。单片机的最小系统如图3.4所示。图3.4 单片机最小系统原理图3.2 超声波发射和接收电路设计超声波是一种振动频率超过20 kHz的机械波,它可以沿直线方向传播,而且传播的方向性好,传播的距离也较远,在介质中传播时遇到障碍物在入射到它的反射面上就会产生反射波6。由于超声波的以上几个特点,所以超声波被广泛地应用于物体距离的测量、厚度等方面6。而且,超声波的测量是一种比较理想的的非接触式的测距方法6。当进行距离的测量时,由安装在同一水平线上的超声波发射器和接收器完成超声波的发射与接收,并且同时启动定时器进行计数7。首先由超声波发射探头向倒车的方向发射超声波并同时启动定时器计时,超声波在空气
31、中传播的途中一旦遇到障碍物后就会被反射回来,当接收探头收到反射波后就会给负脉冲到单片机使其立刻停止计时6.7。这样,定时器就能够准确的记录下了超声波发射点至障碍物之间往返传播所用的时间t(s)7。由于在常温下超声波在空气中的传播速度大约为340 m/s7,所以障碍物到发射探头之间的距离为:S=340t/2=170t 因为单片机内部定时器的计时实际上就是对机器周期T的计数,而本设计中时钟频率fosc取12 MHz,设计数值N,则: T12/fosc=1s t=NTN0.000001(s) S170NT170N/1000000(m) 在程序中按式S170NT170N/1000000计算距离。3.2
32、.1 HR-SR04超声波集成模块HR-SR04超声波集成模块是将超声波发射探头,超声波接收探头,CX20106A芯片电路,74LS04芯片放大电路集成到的一起的一个超声波集成模块。HR-SR04超声波集成模块正面外观如图3.7所示,HR-SR04超声波集成模块的背面外观如图3.8所示。图3.5 HR-SR04超声波集成模块正面外观图图3.6 HR-SR04超声波集成模块背面外观图HR-SR04型超声波集成模块的工作电压为5 V,而且此模块的静态工作电流是小于2 mA的,工作时候可以比较稳定。而且,它的感应的角度不大于15,可以减少了很大部分可能存在的角度干扰问题。此模块的测距范围为2 cm5
33、 m,能基本满足测距要求,而且其精度可以达到0.3 cm,盲区仅仅为2 cm,完全可以能够满足本设计的测距要求,而且测距也比较稳定。HR-SR04超声波集成模块采用的是I/O触发测距,给至少10 us的高电平信号。另外,此模块可以自动发送8个40 kHz的方波脉冲,并能够自动检测是否有信号返回,如果检测到有信号返回则通过I/O口输出高电平,高电平的持续时间就是超声波从发射到返回所用的时间,则,所测量的距离=(高电平时间声速)/2。一个控制口发出一个10 us以上的高电平,就可以在接收口等待高电平输出。一有输出就可以开定时器计时,当此口变为低电平时就可以读定时器的值,此时就为此次测距的时间,就能
34、够算出距离。这样不断的循环周期测,就可以在不停地移动的过程中测量距离值了。但是,为防止发射信号对回收信号的影响,本超声波集成模块的测量周期最好定在60 ms以上,所以本设计将测量周期定在80 ms。3.3 显示报警模块设计3.3.1 数码管显示模块设计发光二极管的缩写是LED,在每个数码管里面都有8只发光二极管,它们分别记作a、b、c、d、e、f、g、dp,其中dp是小数点,每一只发光二极管都有一根电极引到外部的引脚上,而另外一只二极管的引脚就连接在一起同样也引到外部引脚上,此引脚就记作公共端COM。市面上常用的LED数码管有两种即共阳极数码管与共阴极数码管。共阳极是数码管里面的发光二极的阳极
35、接在一起作为公共引脚即公共阳极,在使用时此公共引脚接到电源正极。相反,共阴极就是数码管里面的发光二极管的阴极接在一起作为公共引脚即公共阴极,在使用时此引脚接到电源负极。单片机对数码管的显示可以分为静态显示和动态显示,静态显示能够稳定地显示数值,但是搭建电路时比较烦索,而动态显示是数码管轮流显示再利用人眼的“视觉暂留”特性,这样看出来的就是在显示不同数值8。数码管的动态显示比较实用,电路构建简单,所以本设计采用动态扫描的方法显示测量距离,只要轮流显示的速度足够快的时候就能够实现测量数值的显示。显示模块选用4位共阴极数码管进行动态扫描,此扫描方式能完全达到显示要求。显示模块连接电路图如图3.9所示
36、。图3.7 显示模块连接电路图3.3.2 报警模块设计报警模块通过单片机P1.0引脚给蜂鸣器电平让其响或不响。报警模块电路图如图3.10所示。图3.8 报警模块电路图34 系统整体电路根据本章前面对设计的各个相关模块的分别讲述讲述,再结合单片机的引脚功能,从而得到系统整体电路图,如图3.11所示。图3.9 系统整体电路图在图3.11中,4位共阴极数码管的八个显示比划分别外接到单片机的P0.0到P0.7端口,用于显示所测量距离,数码管的共阴极端分别接在单片机的P2.0、P2.1、P2.2、P2.3这四个端口,利用单片机的动态扫描的方式将距离显示出来。单片机的P1.0接到蜂鸣器报警电路,用于蜂鸣器
37、测距报警,单片机P1.1接到二极管,当数码管能显示所测距离时,LED就亮。4 系统软件设计本设计采用的是模块化的思路来进行设计和编写程序,程序主要由系统主程序和中断程序构成。主程序完成单片机的初始化,超声波的发射和接收、计算超声波发射点与障碍物之间的距离、数码管显示和蜂鸣器报警等。系统程序设计的主要的功能是计算测量距离、数据计算、蜂鸣器报警和数码管显示。4.1 主程序设计主程序对整个单片机系统进行初始化后,先将超声波的回波接收标志位置位并且使单片机P3.2端口输出一个低电平用来启动超声波发射电路,同时将定时器T0启动,然后调用距离计算的子程序,再根据定时器T0记录的时间计算出所需要测量的距离,
38、然后再调用显示子程序,再将测出的距离以十进制的形式送到数码管显示。最后主程序通过对回波信号的接收,完成后续的工作,假如标志位清零则说明接收到了回波信号,那么主程序就返回到初始端重新将回波接收标志位置位并且在单片机的P3.3端口上发送低电平到超声波发射电路,就这样,连续不断地运行,循环不断地工作用来实现测距。 整个系统的设计的关键是对距离进行测量的,然后通过单片机来处理测量数据是比较容易实现的,能精确的实现测距。在测距中,各种信号包括温度对声速的影响都将干扰到测距的准确性,其中超声波的余波信号对整个设计中测距的精确度的干扰的影响比较大7。超声波接收回路中的超声波信号一共有两种波信号:第一种波信号
39、为余波信号就是当发射探头发射出信号之后,超声波接收探头马上就接收到的超声波信号,实际就是超声波的发射信号7;另一种波信号就是有效信号,即经过障碍物表面反射回来的超声波回波信号7,也是所需要测量的距离数值。 在进行超声波测距时,实际上测距就是记录从超声波发射电路发射超声波信号开始到接收到信号的声波的往返时间差,然后通过数据计算出距离,对于回波信号需要进行检测的有效信号是反射物体反射的回波信号,所以要尽量避免在检测时候检测到余波信号。余波就是在发射超声波时超声波信号直接到达接受探头的波信号,同时余波信号也是超声波测量时存在测量盲区的最主要的原因7。 超声波接收电路在接收到超声波回波后,通过CX20
40、106A电路进行检波整形比较,并向单片机发出有效信号,单片机通过外部中断的改变记录回波信号的到达时间,中断发生之后就是表示已经接收到了回波信号,这个时候停止计时,并且读取计数器中的数值,这个数值就是需要进行测量的时间差的数据。程序中对测距距离的计算方法是按S=17N/1000=0.017N(cm)进行计算的,其中,N为计数器的值,声速的值取为340 m/s。 综合以上的分析可得到系统主程序流程图,系统主程序的流程图如图4.1所示。开始单片机初始化超声波模块复位发射超声波并启动T0开中断接收到回波的同时中断停止计算测量距离显示距离延时图4.1 系统主程序流程图4.2 中断处理程序负责计算车尾与障
41、碍物之间的距离是/INT0的中断程序。根据前面的对超声接收电路的分析,在超声波集成模块接收到超声波回波信号后,超声波接收电路就会产生一个低电平送至单片机的P3.3引脚,使系统中断,则系统转入中断处理程序。进入中断处理后,定时器T0和外部中断0就立即被关闭,同时读取时间值,并给回波接收标志位清零即成功接收到回波信号。中断处理程序的程序流程图如图4.2所示。计时停止指定的报警声开启中断关闭返回距离计算处理显示距离并根据距离判断是否报警YN图4.2 中断处理程序流程图在中断处理程序过程中,对距离数据的计算是比较关键的。首先是从定时器0得到超声波传播中往返所用的时间,再运用公式计算得出障碍物与车尾之间
42、的距离,然后再将测得的距离值传到其他功能模块进行其他功能的处理。C程序如下:void zd0() interrupt 1 /T0中断用来计数器溢出,超过测距范围 flag=1; /中断溢出标志 void zd3() interrupt 3 /T1中断用来扫描数码管和计800 ms启动模块 TH1=0xf8; TL1=0x30; Display(); DIDI(); timer+; if(timer=400) timer=0; TX=1; /800 ms启动一次模块 _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _n
43、op_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();TX=0; void main(void) TMOD=0x11;/设T0为方式1,GATE=1; TH0=0; TL0=0; TH1=0xf8; /2 ms定时 TL1=0x30; ET0=1; /允许T0中断 ET1=1; /允许T1中断 TR1=1; /开启定时器 EA=1; /开启总中断 while(1) while(!RX); /当RX为零时等
44、待 TR0=1; /开启计数 while(RX); /当RX为1计数并等待 TR0=0; /关闭计数 Count(); /计算 4.3 计算及显示模块设计从距离计算公式S=17N/1000=0.017N(cm)中可以很明显看出来,如果想要得到具体的距离的值,就只需要得到从超声波发送开始到接收到超声波这个过程中定时器0的计数的次数。本设计中,采用了4位共阴极连接的数码管显示来显示与障碍物之间的距离,同时数码管与P0口连接进行动态的段扫描。由于这个距离值是不断变化的,所以,这个数码管的显示的过程是在外部中断0发生后才进行的。 所以当主程序给超声波发生器发送了信号后,此时中断和定时器0就已经被打开,并开始计时了。当超声波接收电路接收了到回波信号的同时时,电路便会产生一个低电平到单片机的P0.0端口,在单片机检测到该信号后,定时器计时就将停止,同时定时器的计数的次数将被提取出来,这样就可以得到以cm为单位的测量的距离值。C程序如下:Void Count (void) time=TH0*256+TL0; TH0=0; TL0=0; /time=23529;