当前位置:文档之家› 超声波测距论文(含原理图、程序)

超声波测距论文(含原理图、程序)

超声波测距论文(含原理图、程序)
超声波测距论文(含原理图、程序)

1 绪论

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

1.1 课题背景及意义

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

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

汽车防撞装置这种汽车安全辅助装置能大大减少汽车驾驶员在倒车的时候顾虑和对距离判断的失误,从而能够避免倒车的安全问题的发生,故此装置对于提高交通

安全将起到重要的作用。所以,本课题所要求设计的基于单片机的汽车防撞装置将具有极大的现实意义和市场。

1.2 国内外研究现状

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

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

超声波是一种超出人类听觉极限的声波即其振动频率高于20 kHz的机械波。超声波传感器在工作的时候就是将电压和超声波之间的互相转换,当超声波传感器发射超声波时,发射超声波的探头将电压转化的超声波发射出去,当接收超声波时,超声波接收探头将超声波转化的电压回送到单片机控制芯片。超声波具有振动频率高、波长短、绕射现象小而且方向性好还能够为反射线定向传播等优点,而且超声波传感器的能量消耗缓慢有利于测距[4]。在中、长距离测量时,超声波传感器的精度和方向性都要大大优于红外线传感器,但价格也稍贵。从安全性,成本、方向性等方面综合考虑,超声波传感器更适合设计要求。

根据对以上三种传感器性能的比较,虽然能明显看出来激光传感器是比较理想的

选择,但是它的价格却比较高,而且安全度不够高。而且汽车在行驶的过程中超声波传感器测距时应具有较强的抗干扰能力和较短的响应时间,因此选用超声波传感器作为此设计方案的传感器探头。

2.2 系统方案

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

图2.1汽车防撞装置的系统框图

本设计由Keil编程软件对51单片机进行编程,51单片机在执行程序后由P0.1端口产生40kHz的脉冲信号通过74LS04电路进行放大并送到到超声波发射探头,产生超声波。在超声波发射电路启动的同时单片机启动中断定时器,利用其计数的功能记录超声波发射超声波到接收到超声波回波的时间。当接收回射的超声波时,接收电路的输出端产生负跳变输出到单片机产生中断申请,执行外部中断子程序计算距离。

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

由于超声波的发射和接收是分开发送和接收的,所以发射探头和接收探头必须在同一条水平行直线上,这样才能准确地接收反射的回波。而由于测量的距离不同和发射扩散角所引起的误差以及超声波信号在空气中传播的过程中的超声波衰减问题,发射探头和接收探头距离不可以太远,而且还要避免发射探头对接收探头在接收信号时产生的干扰,所以二者又不能靠得太近。根据对相关资料查阅,将两探头之间的距离定在5 cm~8 cm最为合适。本设计所用的HC-SR04模块的超声波探头之间的距离大约在6 cm左右。

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系列的单片机执行速率快(最高时钟频率为90 MHz),功耗低,在系统、在应用可编程,不占用用户的资源[5]。根据本系统设计的实际要求,选择AT89S51单片机做为本设计的单片机使用,它是由ATMEL公司生产的高性能、低功耗的CMOS 8位单片机。89S51单片机具有以下几个性能特点:4 k字节的闪存片内程序存储器,128字节的数据存储器,32个外部输入和输出口,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外接的是12 MHz的石英晶振,使内部振荡器按照石英晶振的频率频率进行振荡,从而就可以产生时钟信号。时钟信号电路如图3.2所示。

图3.2时钟信号电路

(3)复位RST(9脚)

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

图3.3 单片机复位电路图

(4)输入输出口(I/O口)引脚

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

P1口是一个带内部上拉电阻的8位双向I/O口,而P1口只有通用I/O接口一种功能,而且P1口能驱动4个LSTTL负载;在使用时通常不需要外接上拉电阻就能够

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

对于输出功能,在单片机工作的时候,可以通过用程序指令控制单片机引脚输出高电平或低电平[5]。例如:指令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口,P3口能驱动4个LSTTL负载,这8个引脚还用于专门的第二功能[5]。P3口作为通用I/O口接口时,第二功能输出线为高电平。P3口置1时,内部上拉电阻将端口电位拉到高电平,作输入口使用;在对内部Flash程序存储器编程时,此端接控制信息[5]。P3口的第二功能,如表3.1所示[5]。

表3.1 P3口第二功能表

(5)其它控制或复用引脚

(a)ALE/PROG(30脚):地址锁存有效信号输出端。在访问片外存储器时,ALE(地址锁存允许)以每机器周期两次进行信号输出,其下降沿用于控制锁存P0

口输出的低8位地址;在不访问片外存储器的时候,ALE端仍以不变的频率输出脉冲信号(此频率是振荡器频率的1/6),而在访问片外数据存储器时,ALE脉冲会跳空一个,此时是不可以做为时钟输出[5]。对片内含有EPROM的机型在编程时,这个引脚用于输入编程脉冲/PROG的输入端[5]。

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

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

3.1.3单片机最小系统

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

图3.4单片机最小系统原理图

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

超声波是一种振动频率超过20 kHz的机械波,它可以沿直线方向传播,而且传播的方向性好,传播的距离也较远,在介质中传播时遇到障碍物在入射到它的反射面

上就会产生反射波[6]。由于超声波的以上几个特点,所以超声波被广泛地应用于物体距离的测量、厚度等方面[6]。而且,超声波的测量是一种比较理想的的非接触式的测距方法[6]。

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

S=340×t/2=170×t

因为单片机内部定时器的计时实际上就是对机器周期T的计数,而本设计中时钟频率fosc取12 MHz,设计数值N,则:

T=12/f osc=1μs

t=N×T=N×0.000001(s)

S=170×N×T=170×N/1000000(m)

在程序中按式S=170×N×T=170×N/1000000计算距离。

3.2.1 超声波发射电路设计

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

图3.5超声波发射电路

工作时,由单片机产生40 kHz的脉冲从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超声波集成模块正面外观图

图3.8 HR-SR04超声波集成模块背面外观图

HR-SR04型超声波集成模块的工作电压为5 V,而且此模块的静态工作电流是小于2 mA的,工作时候可以比较稳定。而且,它的感应的角度不大于15°,可以减少了很大部分可能存在的角度干扰问题。此模块的测距范围为2 c m~5 m,能基本满足

测距要求,而且其精度可以达到0.3 cm,盲区仅仅为2 cm,完全可以能够满足本设计的测距要求,而且测距也比较稳定。HR-SR04超声波集成模块采用的是I/O触发测距,给至少10 us的高电平信号。另外,此模块可以自动发送8个40 kHz的方波脉冲,并能够自动检测是否有信号返回,如果检测到有信号返回则通过I/O口输出高电平,高电平的持续时间就是超声波从发射到返回所用的时间,则,所测量的距离=(高电平时间×声速)/2。

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

3.3 显示报警模块设计

3.3.1 数码管显示模块设计

发光二极管的缩写是LED,在每个数码管里面都有8只发光二极管,它们分别记作a、b、c、d、e、f、g、dp,其中dp是小数点,每一只发光二极管都有一根电极引到外部的引脚上,而另外一只二极管的引脚就连接在一起同样也引到外部引脚上,此引脚就记作公共端COM。

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

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

图3.9 显示模块连接电路图

3.3.2 报警模块设计

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

图3.10报警模块电路图

3.4 系统整体电路

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

图3.11系统整体电路图

在图3.11中,4位共阳极数码管的八个显示比划分别外接到单片机的P2.0到P2.7端口,用于显示所测量距离,数码管的共阳极端分别接在单片机的P1.2、P1.4、P1.6、P1.7这四个端口,利用单片机的动态扫描的方式将距离显示出来。单片机的P1.0接

到蜂鸣器报警电路,用于蜂鸣器测距报警。

4 系统软件设计

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

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

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

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

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

中的数值,这个数值就是需要进行测量的时间差的数据。

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

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

图4.1系统主程序流程图

4.2 中断处理程序

负责计算车尾与障碍物之间的距离是/INT0的中断程序。根据前面的对超声接收电路的分析,在超声波集成模块接收到超声波回波信号后,超声波接收电路就会产生

一个低电平送至单片机的P0.0引脚,使系统中断,则系统转入中断处理程序。进入中断处理后,定时器T0和外部中断0就立即被关闭,同时读取时间值,并给回波接收标志位清零即成功接收到回波信号。中断处理程序的程序流程图如图4.2所示。

图4.2 中断处理程序流程图

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

C程序如下:

void zd0() interrupt 1 //T0中断用来计数器溢出,超过测距范围

{

flag=1;//中断溢出标志

}

void zd3()interrupt 3//T1中断用来扫描数码管和计800 ms启动模块

51单片机超声波测距程序

//晶振:11.0592 //TRIG:P1.2 ECH0:P1.1 //波特率:9600 #include #include #include #define uchar unsigned char #define uint unsigned int sbit RX=P0^2; sbit TX=P0^3; unsigned int time=0; unsigned int timer=0; float S=0; bit flag =0; void Conut(void) { time=TH0*256+TL0; TH0=0; TL0=0; S=(time*1.87)/100; //算出来是CM if(flag==1) //超出测量 { flag=0; printf("-----\n"); } printf("S=%f\n",S); } void delayms(unsigned int ms) { unsigned char i=100,j; for(;ms;ms--) { while(--i)

{ j=10; while(--j); } } } void zd0() interrupt 1 //T0中断用来计数器溢出,超出测距范围{ flag=1; //中断溢出标志 } void StartModule() //T1中断用来扫描数码管和计800ms启动模块{ TX=1; //800MS启动一次模块 _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); TX=0; } void main(void) { TMOD=0x21; //设T0为方式1,GATE=1; SCON=0x50; TH1=0xFD; TL1=0xFD; TH0=0; TL0=0;

超声波测距仪硬件电路的设计

超声波测距仪电路设计实验报告 轮机系楼宇071 周钰泉2007212117 实验目的:了解超声波测距仪的原理,掌握焊接方法,掌握电路串接方法,熟悉电路元件。 实验设备及器材:电烙铁,锡线,电路元件 实验步骤:1,学习keil软件编写程序2、焊接电路板3、运行调试 超声波测距程序: #include unsigned char code dispbitcode[]={0x31,0x32,0x34,0x38,0x30,0x30, 0x30,0x30}; unsigned char code dispcode[]={0x3f,0x06,0x5b,0x4f,0x66, 0x6d,0x7d,0x07,0x7f,0x6f,0x00,0x77,0x7c,0x 39}; unsigned char dispbuf[8]={10,10,10,10,10,10,0,0}; unsigned char dispcount; unsigned char getdata; unsigned int temp; unsigned int temp1;

unsigned char i; sbit ST=P3^0; sbit OE=P3^1; sbit EOC=P3^4; sbit CLK=P3^5; sbit M1=P3^6; sbit M2=P3^7; sbit SPK=P2^6; sbit LA=P3^3; sbit LB=P3^2; sbit LC=P2^7; sbit K1=P2^4; sbit K2=P2^5; bit wd; bit yw; bit shuid; bit shuig; unsigned int cnta; unsigned int cntb; bit alarmflag; void delay10ms(void) { unsigned char i,j; for(i=20;i>0;i--) for(j=248;j>0;j--); } void main(void) { M1=0; M2=0; yw=1; wd=0; SPK=0; ST=0; OE=0; TMOD=0x12; TH0=0x216; TL0=0x216; TH1=(65536-500)/256; TL1=(65536-500)%256; TR1=1; TR0=1; ET0=1; ET1=1; EA=1; ST=1; ST=0; while(1) { if(K1==0) { delay10ms(); if(K1==0) { yw=1; wd=0; } } else if(K2==0) { delay10ms(); if(K2==0) { wd=1; yw=0; } } else if(LC==1) { delay10ms(); if(LC==1) { M1=0; M2=1; temp1=13; shuid=0; shuig=1; LB=0; } } else if((LC==0) && (LB==1)) { delay10ms(); if((LC==0) && (LB==1)) { M1=0; M2=0; temp1=12; shuig=0; shuid=0; LB=0; }

超声波测距程序(详细C语言数码管显示)

超声波测距程序(详细C语言数码管显示) #include //头文件 #include// _nop_() 函数延时1US用 #include #include #define uchar unsigned char #define uint unsigned int #define nop _nop_() sbit csb=P1^0;//超声波发送端口为P1.0 sbit bai=P2^2;//数码管百位 sbit shi=P2^1;//数码管十位 sbit ge=P2^0;//数码管个位 uchar flag;//超声波接收标志 float juli1;//距离变量,用来数码管显示用 int juli; uchar table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//共阳数码管0到9的代码 int xianshi[3]; void delayshow(uint z) { uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); } void ledshow(void) { xianshi[0]=juli/100; xianshi[1]=((juli%100)/10); xianshi[2]=juli%10; bai=0; P0=table[xianshi[0]]; delayshow(2); bai=1; delayshow(2); shi=0; P0=table[xianshi[1]]; delayshow(2); shi=1;

超声波测距仪的设计说明

题目:超声波测距仪的设计 超声波测距仪的设计 一、设计目的: 以51单片机为主控制器,利用超声波模块HC-SR04,设计出一套可在数码管上实时显示障碍物距离的超声波测距仪。 通过该设计的制作,更为深入的了解51的工作原理,特别是51的中断系统及定时器/计数器的应用;掌握数码管动态扫描显示的方法和超声波传感器测距的原理及方法,学会搭建51的最小系统及一些简单外围电路(LED显示电路)。从中提高电路的实际设计、焊接、检错、排错能力,并学会仿真及软件调试的基本方法。 二、设计要求: 设计一个超声波测距仪。要求: 1.能在数码管上实时显示障碍物的实际距离; 2.所测距离大于2cm小于300cm,精度2mm。 三、设计器材: STC89C52RC单片机 HC-SR04超声波模块 SM410561D3B四位的共阳数码管 9014三极管(4) 按键(1) 电容(30PF2,10UF1) 排阻(10K),万用板,电烙铁,万用表,5V直流稳压电源,镊子,钳子,

导线及焊锡若干,电阻(200欧5)。 四、设计原理及设计方案: (一)超声波测距原理 超声测距仪是根据超声波遇到障碍物反射回来的特性进行测量的。超声波发射器向某一方向发射超声波,在发射同时开始计时,超声波在空气中传播,途中碰到障碍物就立即返回来,超声波接收器收到反射波就立即中断停止计时。通过不断检测产生波发射后遇到障碍物所反射的回波,从而测出发射超声波和接收到回波的时间差T,然后求出距离L。基本的测距公式为:L=(△t/2)*C 式中 L——要测的距离 T——发射波和反射波之间的时间间隔 C——超声波在空气中的声速,常温下取为344m/s 声速确定后,只要测出超声波往返的时间,即可求得L。 根据本次设计所要求的测量距离的围及测量精度,我们选用的是HC-SR04超声波测距模块。(如下图所示)。此模块已将发射电路和接收电路集成好了,硬件上不必再自行设计繁复的发射及接收电路,软件上也无需再通过定时器产生40Khz的方波引起压电陶瓷共振从而产生超声波。在使用时,只要在控制端‘Trig’发一个大于15us宽度的高电平,就可以在接收端‘Echo’等待高电平输出。单片机一旦检测到有输出就打开定时器开始计时。 当此口变为低电平时就停止计时并读出定时器的值,此值就为此次测距的时间,再根据传播速度方可算出障碍物的距离。 (二)超声波测距模块HC-SR04简要介绍 HC-SR04超声波测距模块的主要技术参数使用方法如下所述: 1. 主要技术参数: ①使用电压:DC5V ②静态电流:小于2mA ③电平输出:高5V

单片机应用_超声波测距器

单片机课程设计 一、需求分析: 超声波测距器,可以应用于汽车倒车、建筑施工工地以及一些工业现场的位置监控,也可用于如液位、井深、管道长度的测量等场合。要求测量围在1m,测量精度1cm,测量时与被测物体无直接接触,能够清晰稳定地显示测量结果。由于超声波指向性强,能量消耗缓慢,在介质中传播的距离较远,因而超声波经常用于距离的测量,如测距仪和物位测量仪等都可以通过超声波来实现。利用超声波检测往往比较迅速、方便、计算简单、易于做到实时控制,并且在测量精度方面能达到工业实用的要求,因此在移动机器人的研制上也得到了广泛的应用。 本文旨在设计一种能对中近距离障碍物进行实时测量的测距装置,它能对障碍物进行适时、适量的测量,起到智能操作,实时监控的作用。 关键词单片机AT82S51 超声波传感器测量距离 二、硬件设计方案 设计思路 超声波传感器及其测距原理 超声波是指频率高于20KHz的机械波。为了以超声波作为检测手段,必须产生超生波和接收超声波。完成这种功能的装置就是超声波传感器,习惯上称为超声波换能器或超声波探头。超声波传感器有发送器和接收器,但一个超声波传感器也可具有发送和接收声波的双重作用。超声波传感器是利用压电效应的原理将电能和超声波相互转化,即在发射超声波的时候,将电能转换,发射超声波;而在收到回波的时候,则将超声振动转换成电信号。

超声波测距的原理一般采用渡越时间法TOF(time of flight)。首先测出超声波从发射到遇到障碍物返回所经历的时间,再乘以超声波的速度就得到二倍的声源与障碍物之间的距离 测量距离的方法有很多种,短距离的可以用尺,远距离的有激光测距等,超声波测距适用于高精度的中长距离测量。因为超声波在标准空气中的传播速度为340米/秒,由单片机负责计时,单片机使用12.0M晶振,所以此系统的测量精度理论上可以达到毫米级。 由于超声波指向性强,能量消耗缓慢,在介质中传播距离远,因而超声波可以用于距离的测量。利用超声波检测距离,设计比较方便,计算处理也较简单,并且在测量精度方面也能达到要求。 超声波发生器可以分为两类:一类是用电气方式产生超声波,一类是用机械方式产生超声波。本课题属于近距离测量,可以采用常用的压电式超声波换能器来实现。 根据设计要求并综合各方面因素,可以采用AT89S51单片机作为主控制器,用动态扫描法实现LED数字显示,超声波驱动信号用单片机的定时器完成,超声波测距器的系统框图如下图所示: 超声波测距器系统设计框图 主要由单片机系统及显示电路、超声波发射电路和超声波检测接收电路三部分组成。采用AT89S51来实现对CX20106A红外接收芯片和TCT40-10系列超声波转换模块的控制。单片机通过P1.0引脚经反相器来控制超声波的发送,然后单片机不停的检测INT0引脚,当INT0引脚的电平由高电平变为低电平时就认为超声波已经返回。计数器所计的数据就是超声波所经历的时间,通过换算就可以得到传感器与障碍物之间的距离。

简易超声波测距仪的设计

摘要 超声波具有指向性强,能量消耗缓慢,传播距离较远等优点,所以,在利用传感器技术和自动控制技术相结合的测距方案中,超声波测距是目前应用最普遍的一种,它广泛应用于防盗、倒车雷达、水位测量、建筑施工工地以及一些工业现场。 本课题详细介绍了超声波传感器的原理和特性,以及Atmel公司的AT89C51单片机的性能和特点,并在分析了超声波测距的原理的基础上,指出了设计测距系统的思路和所需考虑的问题,给出了以AT89C51单片机为核心的低成本、高精度、微型化数字显示超声波测距仪的硬件电路和软件设计方法。整个电路采用模块化设计,由主程序、预置子程序、发射子程序、接收子程序、显示子程序等模块组成。各探头的信号经单片机综合分析处理,实现超声波测距仪的各种功能。在此基础上设计了系统的总体方案,最后通过硬件和软件实现了各个功能模块。相关部分附有硬件电路图、程序流程图。 经实验证明,这套系统软硬件设计合理、抗干扰能力强、实时性良好,经过系统扩展和升级,可以有效地解决汽车倒车、建筑施工工地以及一些工业现场的位置监控。 关键词AT89C51;超声波;测距

Abstract Ultrasonic wave has strong pointing to nature ,slowly energy consumption ,propagating distance farther ,so, in utilizing the scheme of distance finding that sensor technology and automatic control technology combine together ,ultrasonic wave finds range to use the most general one at present ,it applies to guard against theft , move backward the radar , water level measuring,building construction site and some industrial scenes extensively. This subject has introduced principle and characteristic of the ultrasonic sensor in detail ,and the performance and characteristic of one-chip computer AT89C51 of Atmel Company ,and on the basis of analyzing principle that ultrasonic wave finds range ,the systematic thinking and questions needed to consider that have pointed out that designs and finds range ,provide low cost , the hardware circuit of high accuracy , ultrasonic range finder of miniature digital display and software design method taking AT89C51 as the core. Modular design of the whole circuit from the main program, pre subroutine fired subroutine receive subroutine. display subroutine modules form. SCM comprehensive analysis of the probe signal processing, and the ultrasonic range finder function. On the basis of the overall system design, hardware and software by the end of each module. The research has led to the discovery that the software and hardware designing is justified, the anti-disturbance competence is powerful and the real-time capability is satisfactory and by extension and upgrade, this system can resolve the problem of the car availably, building construction the position of the workplace and some industries spot supervision. Key words AT89C51; Ultrasonic Wave; Measure Distance

10米超声波测距仪设计实现

10米超声波测距仪设计实现 一、功能要求 设计一个超声波测距仪,可以测量测距仪与被测物体间的距离。要求测量范围0.1~10.00米,测量精度1cm,测量时与被测物体不接触,并将测量结果显示出来。 二、系统硬件电路 1.单片机系统及显示电路 单片机采用89C51或89S51。采用12MHz高精度晶振,以获得较稳定的时钟频率,减小测量误差。单片机用p1.0端口输出超声波换能器所需的40Hz方波信号,利用外中断0口监测超声波接受电路输出的返回信号。显示电路采用简单实用的4位共阳极LED数码管,段码用74LS244驱动,位用PNP8550驱动。 2.超声波发射电路 主要由74LS04和超声波换能器T构成。这种推挽形式的方波信号可以提高发射强度。反相器并联提高驱动能力。上拉电阻R1、R2提高74LS04输出高电平的驱动能力。 3.超声波接收电路 CX20106A是接收38KHz超声波的芯片,可利用它做接收电路。 4.系统程序 超声波测距仪的软件主要由主程序、超声波发生子程序、超声波接收中断程序及显示子程序组成。 主程序:

开始 系统初始化 发送超声波脉冲 等待反射超声波 计算距离 显示结果 丢系统初始化,设置T0为方式1,EA=1,P0,P2清0。为避免超声波发射器直接接传送到接收器,需要延时0.1ms。由于时钟的频率是12MHz,计数器每计一个数就是1us。如果按声速344m/s,则d=c*t/2=172T0 cm 超声波发生子程序:通过P1.0端口发送2个左右超声波脉冲信号,脉宽12us,同时T0计数。 超声波测距仪利用中断0检测返回的超声波,一旦接收到返回的信号,立即进入中断。中断后就立即关闭T0停止计时。如果计数器益出则测试不成功。 3方案设计和选择 根据本次设计的要求,方案的选择应力求实用性强,性价比高,使用简单。 3.1 超声波测距的基本原理 谐振频率高于20kHz的声波被称为超声波。超声波

超声波测距C语言源程序代码

超声波测距C语言源程 序代码 文档编制序号:[KKIDT-LLE0828-LLETD298-POI08]

/*{HZ即单位s的倒数}本晶振为12MHZ,因此外部的时钟频率为12MHZ,所以内部的时钟频率为(12M H Z)/12=1M H 即1000000HZ,而机械频率为1/(1MHZ),即每完成一次计算(即定时器的值加一)用时, 即1us(微秒).*/ /*************************************************************************** ********/ #include<> #define UC unsigned char #define UI unsigned int void delay(UI); sbit BX = P3^0;void TimeConfiguration(); a = 0; b = 0; c = 0; P2 =~ 0x00; goto loop; } time = TL0 + TH0*256; juli = ( int )( (time*/2 ); BAI = ( (juli%1000)/100 ); SHI = ( (juli%100)/10 ); GE = ( juli%10 ); /******************************************两种模式的距离显示 ********************************************/ if(juli > MAX) { Hong = 0; Lv = 1; while( t1-- ) { a = 0; b = 1; c = 1; P2 =~ CharacterCode[BAI]; delay(400); a = 1; b = 0; c = 1; P2 =~ CharacterCode[SHI]; delay(400); a = 1; b = 1; c = 0; P2 =~ CharacterCode[GE]; delay(390);

超声波测距器课程设计

《微机原理及应用》课程设计 超声波测距器的设计 学生姓名郝强 学号20110611113 学院名称机电工程学院 专业名称机械电子工程 指导教师王前 2013年12月27日

摘要 随着科学技术的快速发展,超声波将在科学技术中的应用越来越广。本文对超声波传感器测距的可能性进行了理论分析,利用模拟电子、数字电子、微机接口、超声波换能器、以及超声波在介质的传播特性等知识,采用以AT89C51单片机为核心的低成本、高精度、微型化数字显示超声波测距仪的硬件电路和软件设计方法在此基础上设计了系统的总体方案,最后通过硬件和软件实现了各个功能模块。相关部分附有硬件电路图、程序流程图。为了保证超声波测距传感器的可靠性和稳定性,采取了相应的抗干扰措施。就超声波的传播特性,超声波换能器的工作特性、超声波发射、接收、超声微弱信号放大、波形整形、速度变换、语音提示电路及系统功能软件等做了详细说明。 关键词:超声波;传感器;测量距离;控制

目录 摘要 (2) 目录 (3) 1.设计目的 (4) 2.总体方案 (4) 3.硬件设计 (5) 3.1 超声波测距器硬件电路设计 (5) 3.2.1单片机芯片的选择 (6) 3.2.2AT89C51定时计数应用电路 (6) 3.3超声波发射电路设计 (6) 3.3.1选择超声波发生器类型 (6) 3.3.2 超声波发射电路设计 (7) 3.4超声波接收电路设计 (8) 3.5超声波显示电路设计 (9) 4.软件设计 (9) 4.1波测距器的算法设计 (10) 4.2系统的主控制程序设计 (11) 4.3发生子程序设计 (12) 4.4接收中断程序设计 (13) 4.5显示程序设计 (14) 4.6距离计算程序 (15) 5.结论 (17) 参考文献 (18)

基于51单片机的超声波测距系统

基于51单片机的超声波测距系统 贾源 完成日期:2011年2月22日

目录 一、设计任务和性能指标 (3) 1.1设计任务 (3) 1.2性能指标 (3) 二、超声波测距原理概述 (4) 2.1超声波传感器 (5) 2.1.1超声波发生器 (5) 2.1.2压电式超声波发生器原理 (5) 2.1.3单片机超声波测距系统构成 (5) 三、设计方案 (6) 3.1AT89C2051单片机 (7) 3.2超声波测距系统构成 (8) 3.2.1超声波测距单片机系统 (9) 图3-1:超声波测距单片机系统 (9) 3.2.2超声波发射、接收电路 (9) 图3-1:超声波测距发送接收单元 (10) 3.2.3显示电路 (10) 四.系统软件设计 (11) 4.1主程序设计 (11) 4.2超声波测距子程序 (12) 4.3超声波测距程序流程图 (13) 4.4超声波测距程子序流程图 (14) 五.调试及性能分析 (14) 5.1调试步骤 (14) 5.2性能分析 (15) 六.心得体会 (15) 参考文献 (16) 附录一超声波测系统原理图 (18) 附录二超声波测系统原理图安装图 (19) 附录三超声波测系统原理图PCB图 (20) 附录四超声波测系统原理图C语言原程序 (21) 参考文献 (26)

一、设计任务和性能指标 1.1设计任务 利用单片机及外围接口电路(键盘接口和显示接口电路)设计制作一个超声波测距仪器,用LED数码管把测距仪距测出的距离显示出来。 要求用Protel 画出系统的电路原理图,印刷电路板,绘出程序流程图,并给出程序清单。 1.2性能指标 距离显示:用三位LED数码管进行显示(单位是CM)。 测距范围:25CM到 250CM之间。误差:1%。

用51单片机实现HC-SR04超声波测距程序

#include //包括一个52标准内核的头文件 #define uchar unsigned char //定义一下方便使用 #define uint unsigned int #define ulong unsigned long sbit Trig = P1^0; //产生脉冲引脚 sbit Echo = P3^2; //回波引脚 sbit test = P1^1; //测试用引脚 uchar code SEG7[10]={~0xC0,~0xF9,~0xA4,~0xB0,~0x99,~0x92,~0x82,~0xF8,~0x80,~0x90};//数码管0-9 uint distance[4]; //测距接收缓冲区 uchar ge,shi,bai,temp,flag,outcomeH,outcomeL,i; //自定义寄存器 bit succeed_flag; //测量成功标志 //********函数声明 void conversion(uint temp_data); void delay_20us(); void main(void) // 主程序 { uint distance_data,a,b; uchar CONT_1; i=0; flag=0; test =0; Trig=0; //首先拉低脉冲输入引脚 TMOD=0x11; //定时器0,定时器1,16位工作方式 TR0=1; //启动定时器0 IT0=0; //由高电平变低电平,触发外部中断 ET0=1; //打开定时器0中断 EX0=0; //关闭外部中断 EA=1; //打开总中断0 while(1) //程序循环 { EA=0; Trig=1; delay_20us(); Trig=0; //产生一个20us的脉冲,在Trig引脚 while(Echo==0); //等待Echo回波引脚变高电平 succeed_flag=0; //清测量成功标志 EX0=1; //打开外部中断 TH1=0; //定时器1清零 TL1=0; //定时器1清零 TF1=0; //

基于单片机的超声波测距仪设计

基于单片机的超声波测距仪设计

基于单片机的超声波测距仪设计 1总体设计方案介绍 1.1超声波测距原理 发射器发出的超声波以速度υ在空气中传播,在到达被测物体时被反射返回,由接收器接收,其往返时间为t,由s=vt/2即可算出被测物体的距离。由于超声波也是一种声波,其声速v 与温度有关,下表列出了几种不同温度下的声速。在使用时,如果温度变化不大,则可认为声速是基本不变的。如果测距精度要求很高,则应通过温度补偿的方法加以校正。 表1-1 超声波波速与温度的关系表 表1-1 1.2超声波测距仪原理框图如下图 单片机发出40kHZ的信号,经放大后通过超声波发射器输出;超声波接收器将接收到的超声波信号经放大器放大,用锁相环电路进行检波处理后,启动单片机中断程序,测得时间为t,再由软件进行判别、计算,得出距离数并送LED

显示。 图1-1 超声波测距仪原理框图 2 系统的硬件结构设计 硬件电路的设计主要包括单片机系统及显示电路、超声波发射电路和超声波检测接收电路三部分。单片机采用AT89C51或其兼容系列。采用12MHz高精度的晶振,以获得较稳定时钟频率,减小测量误差。单片机用P1.0端口输出超声波换能器所需的40kHz的方波信号,利用外中断0口监测超声波接收电路输出的返回信号。显示电路采用简单实用的4位共阳LED数码管,段码用74LS244驱动,位码用PNP三极管8550驱动。 2.1 51系列单片机的功能特点及测距原理 2.1.1 51系列单片机的功能特点 5l系列单片机中典型芯片(AT89C51)采用40引脚双列直插封装(DIP)形式,内部由CPU,4kB的ROM,256 B的RAM,2个16b的定时/计数器TO和T1,4个8 b的工/O端I:IP0,

超声波测距电路图

超声波测距电路图 超声波测距电路原理和制作 由于超声波指向性强,能量消耗缓慢,在介质中传播的距离较远,因而超声波经常用于距离的测量,如测距仪和物位测量仪等都可以通过超声波来实现。利用超声波检测往往比较迅速、方便、计算简单、易于做到实时控制,并且在测量精度方面能达到工业实用的要求,因此在移动机器人的研制上也得到了广泛的应用。为了使移动机器人能自动避障行走,就必须装备测距系统,以使其及时获取距障碍物的距离信息(距离和方向)。本文所介绍的三方向(前、左、右)超声波测距系统,就是为机器人了解其前方、左侧和右侧的环境而提供一个运动距离信息。 二、超声波测距原理 1、超声波发生器 为了研究和利用超声波,人们已经设计和制成了许多超声波发生器。总体上讲,超声波发生器可以分为两大类:一类是用电气方式产生超声波,一类是用机械方式产生超声波。电气方式包括压电型、磁致伸缩型和电动型等;机械方式有加尔统笛、液哨和气流旋笛等。它们所产生的超声波的频率、功率和声波特性各不相同,因而用途也各不相同。目前较为常用的是压电式超声波发生器。

2、压电式超声波发生器原理 压电式超声波发生器实际上是利用压电晶体的谐振 来工作的。超声波发生器内部结构如图1所示,它有两个压电晶片和一个共振板。当它的两极外加脉冲信号,其频率等于压电晶片的固有振荡频率时,压电晶片将会发生共振,并带动共振板振动,便产生超声波。反之,如果两电极间未外加电压,当共振板接收到超声波时,将压迫压电晶片作振动,将机械能转换为电信号,这时它就成为超声波接收器了。 3、超声波测距原理 超声波发射器向某一方向发射超声波,在发射时刻的同时开始计时,超声波在空气中传播,途中碰到障碍物就立即返回来,超声波接收器收到反射波就立即停止计时。超声波在空气中的传播速度为340m/s,根据计时器记录的时间t,就可以计算出发射点距障碍物的距离(s),即:s=340t/2 图1 超声波传感器结构 这就是所谓的时间差测距法。 < 三、超声波测距系统的电路设计 图2 超声波测距电路原理图

带温度补偿的超声波测距程序

/**程序:基于HC-SR04得超声波测距系统 *单片机型号:STC90C51612MHz *说明:开始连续进行7次超声波测距,每次测距间隔80ms, *完成后对7次结果排序并将最大得2个数值与最小得2个数值去除,对剩余得 *3个数值取平均值。完成后指示灯灭,输出结果到LCD1602上。测量超出范围则发出报警声、 *使用两个IO端口控制HC-SR04触发信号输入与回响信号输出, *以及一个T0定时器用于时间计数。 * 使用DS18B20测量环境温度,声速公式:V=334。1m/s+Temperature*0、61, *单片机晶振为12Mhz(11、953M),计数时为T=1us *计算公式:S=(334。1m/s+Temperature*0。61)*N*T/2,N为计数值=TH0*256+TL0*/ /*包含头文件*/ #include 〈reg51。h> #include 〈intrins。h> #define Delay4us(){_nop_();_nop_();_nop_();_nop_();} /*宏定义*/ #define uchar unsignedchar?//无符号8位 #define uint?unsigned int//无符号16位 #define ulongunsigned long ?//无符号32位 /*全局变量定义*/ sbit BEEP=P1^5;??//报警测量超出范围 sbit Trig=P3^4; //HC-SR04触发信号输入 sbitEcho=P3^2;?//HC—SR04回响信号输出 float xdataDistanceValue=0。0;?//测量得距离值 float xdata SPEEDSOUND; ??//声速 float xdataXTALTIME; ?//单片机计数周期 uchar xdata stringBuf[6];??//数值转字符串缓冲 //LCD1602提示信息 uchar codePrompts[][16]= { ?{"Measure Distance"}, //测量距离 {"-Out of Range -"}, //超出测量范围 ?{"MAX range400cm "}, //测距最大值400cm {”MIN range 2cm"},?//测距最小值2cm {”"},?//清屏 }; uchar xdata DistanceText[]="Range: ";//测量结果字符串 uchar xdata TemperatureText[]="Temperature:";//测量温度值 /*外部函数声明*/ extern voidLCD_Initialize(); //LCD初始化 extern void LCD_Display_String(uchar*, uchar); externvoid ReadTemperatureFromDS18B20(); extern int xdataCurTempInteger; void DelayMS(uint ms);?//毫秒延时函数 voidDelay20us(); //20微秒延时函数 voidHCSR04_Initialize();//HCSR04初始化 float MeasuringDistance();?//测量距离

超声波测距电路图

超声波测距电路图超声波测距电路原理和制作 由于超声波指向性强,能量消耗缓慢,在介质中传播的距离较远,因而超声波经常用于距离的测量,如测距仪和物位测量仪等都可以通过超声波来实现。利用超声波检测往往比较迅速、方便、计算简单、易于做到实时控制,并且在测量精度方面能达到工业实用的要求,因此在移动机器人的研制上也得到了广泛的应用。为了使移动机器人能自动避障行走,就必须装备测距系统,以使其及时获取距障碍物的距离信息(距离和方向)。本文所介绍的三方向(前、左、右)超声波测距系统,就是为机器人了解其前方、左侧和右侧的环境而提供一个运动距离信息。 二、超声波测距原理 1、超声波发生器 为了研究和利用超声波,人们已经设计和制成了许多超声波发生器。总体上讲,超声波发生器可以分为两大类:一类是用电气方式产生超声波,一类是用机械方式产生超声波。电气方式包括压电型、磁致伸缩型和电动型等;机械方式有加尔统笛、液哨和气流旋笛等。它们所产生的超声波的频率、功率和声波特性各不相同,因而用途也各不相同。目前较为常用的是压电式超声波发生器。 2、压电式超声波发生器原理

压电式超声波发生器实际上是利用压电晶体的谐振来工作的。超声波发生器内部结构如图1所示,它有两个压电晶片和一个共振板。当它的两极外加脉冲信号,其频率等于压电晶片的固有振荡频率时,压电晶片将会发生共振,并带动共振板振动,便产生超声波。反之,如果两电极间未外加电压,当共振板接收到超声波时,将压迫压电晶片作振动,将机械能转换为电信号,这时它就成为超声波接收器了。 3、超声波测距原理 超声波发射器向某一方向发射超声波,在发射时刻的同时开始计时,超声波在空气中传播,途中碰到障碍物就立即返回来,超声波接收器收到反射波就立即停止计时。超声波在空气中的传播速度为340m/s,根据计时器记录的时间t,就可以计算出发射点距障碍物的距离(s),即:s=340t/2 图1 超声波传感器结构 这就是所谓的时间差测距法。< 三、超声波测距系统的电路设计 图2 超声波测距电路原理图 本系统的特点是利用单片机控制超声波的发射和对超声波自发射至接收往返时间的计时,单片机选用8751,经济易用,且片内有4K的ROM,便于编程。电路原理图如图2所示。其中只画出前方测距电路的接线图,左侧和右侧测距电路与前方测距电路相同,故省略之。

基于单片机的超声波测距仪的设计与实现毕业论文

基于单片机的超声波测距仪的设计与实现

中文摘要 本设计基于单片机AT89C52,利用超声波传感器HC-SR04、LCD显示屏及蜂鸣器等元件共同实现了带温度补偿功能可报警的超声波测距仪。我们以AT89C52作为主控芯片,通过计算超声波往返时间从而测量与前方障碍物的距离,并在LCD显示。单片机控制超声波的发射。然后单片机进行处理运算,把测量距离与设定的报警距离值进行比较判断,当测量距离小于设定值时,AT89C52发出指令控制蜂鸣器报警,并且AT89C52控制各部件刷新各测量值。在不同温度下,超声波的传播速度是有差别的,所以我们通过DS18B20测温单元进行温度补偿,减小因温度变化引起的测量误差,提高测量精度。超声波测距仪可以实现4m以内的精确测距,经验证误差小于3mm。 关键词:超声波;测距仪;AT89C52;DS18B20;报警

Design and Realization of ultrasonic range finder based ABSTRACT The design objective is to design and implement microcontroller based ultrasonic range finder. The main use of AT89C52, HC-SR04 ultrasonic sensor alarm system complete ranging production. We AT89C52 as the main chip, by calculating the round-trip time ultrasound to measure the distance to obstacles in front of, and displayed in the LCD. SCM ultrasonic transmitter. Then the microcontroller for processing operation to measure the distance and set alarm values are compared to judge distance, when measured distance is less than the set value, AT89C52 issue commands to control the buzzer alarm, and control each member refresh AT89C52 measured values. Because at different temperatures, ultrasonic wave propagation velocity is a difference, so we DS18B20 temperature measurement by the temperature compensation unit, reducing errors due to temperature changes, and improve measurement accuracy. Good design can achieve precise range ultrasonic distance within 4m, proven error is less than 3mm. Keywords:Ultrasonic;Location;AT89C52;DS18B20;Alarm

stm32超声波测距程序

stm32超声波测距程序 单片机用的是STM32F103VC系列,超声波是淘宝买的一个模块,只有5个引脚,用起来很方便。 用的时候只需要其中4个脚,VCC,GND,TRIG,ECHO。 TRIG接PA8,OUT_PP模式;ECHO接PA9,IN_FLOATING模式。 #include "stm32f10x_heads.h" #include "HelloRobot.h" #include "display.h" void Tim2_Init(void); void TIM2_IRQHandler(void) { if(GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_12)==0) GPIO_SetBits(GPIOE,GPIO_Pin_12); else GPIO_ResetBits(GPIOE,GPIO_Pin_12); TIM_ClearFlag(TIM2, TIM_FLAG_Update); } int main(void) { u16 count; float length; BSP_Init(); Tim2_Init();//定时器初始化函数 LCM_Init(); delay_nms(5);

GPIO_ResetBits(GPIOA,GPIO_Pin_8); Display_List_Char(1,0,"distance:"); //PA8:Trig PA0:Echo while (1) { GPIO_SetBits(GPIOA,GPIO_Pin_8); delay_nus(20);//拉高超过10us,发射超声波 GPIO_ResetBits(GPIOA,GPIO_Pin_8); TIM2->CNT=0;//计数器清0 while(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_9)==0);//等待ECHO脚高电平 TIM_Cmd(TIM2, ENABLE);// TIM2 enable counter [允许tim2计数] while((GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_9)==1)&&(TIM2->CNTARR-10)); TIM_Cmd(TIM2, DISABLE); count=TIM2->CNT;//ECHO脚低电平后读取计数器的值,从而算出往返时间 length=count/58.0; Display_List_Char(1,9," "); Display_List_Float(1,9,length); delay_nms(200); } } void Tim2_Init(void) { TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; TIM_DeInit(TIM2);//复位TIM2定时器

相关主题
文本预览
相关文档 最新文档