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

上传人:精*** 文档编号:1153574 上传时间:2024-11-19 格式:DOC 页数:25 大小:1.39MB
下载 相关 举报
基于51单片机的超声波测距系统.doc_第1页
第1页 / 共25页
基于51单片机的超声波测距系统.doc_第2页
第2页 / 共25页
基于51单片机的超声波测距系统.doc_第3页
第3页 / 共25页
基于51单片机的超声波测距系统.doc_第4页
第4页 / 共25页
基于51单片机的超声波测距系统.doc_第5页
第5页 / 共25页
点击查看更多>>
资源描述

1、基于51单片机的超声波测距系统贾 源 完成日期:2011年2月22日目 录一、设计任务和性能指标31.1设计任务31.2性能指标3二、超声波测距原理概述42.1超声波传感器52.1.1 超声波发生器52.1.2 压电式超声波发生器原理52.1.3单片机超声波测距系统构成5三、设计方案63.1 AT89C2051单片机73.2 超声波测距系统构成83.2.1 超声波测距单片机系统9图3-1:超声波测距单片机系统93.2.2 超声波发射、接收电路9图3-1:超声波测距发送接收单元103.2.3显示电路10四.系统软件设计114.1 主程序设计114.2 超声波测距子程序124.3 超声波测距程序流

2、程图134.4 超声波测距程子序流程图14五.调试及性能分析145.1调试步骤145.2 性能分析15六.心得体会15参考文献16附录一 超声波测系统原理图18附录二 超声波测系统原理图安装图19附录三 超声波测系统原理图PCB图20附录四 超声波测系统原理图C语言原程序21参考文献26一、设计任务和性能指标1.1设计任务利用单片机及外围接口电路(键盘接口和显示接口电路)设计制作一个超声波测距仪器,用LED数码管把测距仪距测出的距离显示出来。要求用Protel 画出系统的电路原理图,印刷电路板,绘出程序流程图,并给出程序清单。1.2性能指标距离显示:用三位LED数码管进行显示(单位是CM)。测

3、距范围:25CM到 250CM之间。误差:1%。二、超声波测距原理概述超声波是由机械振动产生的,可在不同介质中以不同的速度传播。由于超声波指向性强,能量消耗缓慢,在介质中传播的距离较远,因而超声波经常用于距离的测量,如测距仪和物位测量仪等都可以通过超声波来实现。超声测距是一种非接触式的检测方式。与其它方法相比,如电磁的或光学的方法,它不受光线、被测对象颜色等影响。对于被测物处于黑暗、有灰尘、烟雾、电磁干扰、有毒等恶劣的环境下有一定的适应能力。因此在液位测量、机械手控制、车辆自动导航、物体识别等方面有广泛应用。特别是应用于空气测距,由于空气中波速较慢,其回波信号中包含的沿传播方向上的结构信息很容

4、易检测出来,具有很高的分辨力,因而其准确度也较其它方法为高;而且超声波传感器具有结构简单、体积小、信号处理可靠等特点。利用超声波检测往往比较迅速、方便、计算简单、易于做到实时控制,并且在测量精度方面能达到工业实用的要求。超声波测距的方法有多种,本超声波测中系统的原理为: 检测出从超声波发射器发出的超声波,经气体介质的传播到接收器的时间,将这个时间与气体中的声速相乘,就是声波传输的距离。超声波发射器向某一方向发射超声波,在发射时刻的同时单片机开始计时,超声波在空气中传播,途中碰到障碍物就立即返回来,超声波接收器收到反射波就立即停止计时。超声波在空气中的传播速度随温度变化,其对应值如表2-1 ,根

5、据计时器记录的时间t (见图2-1),就可以计算出发射点距障碍物的距离( s ) ,即: s = v t / 2 。表2-1 声速与温度的关系温度()3020100102030100声速(m/s)313319325323338344349386图2-1 超声波测距时序图2.1超声波传感器2.1.1 超声波发生器为了研究和利用超声波,人们已经设计和制成了许多超声波发生器。总体上讲,超声波发生器可以分为两大类: 一类是用电气方式产生超声波,一类是用机械方式产生超声波。电气方式包括压电型、磁致伸缩型和电动型等; 机械方式有加尔统笛、液哨和气流旋笛等。它们所产生的超声波的频率、功率和声波特性各不相同,

6、因而用途也各不相同。目前较为常用的是压电式超声波发生器。2.1.2 压电式超声波发生器原理压电型超声波传感器的工作原理:它是利用压电效应的原理,压电效应有逆效应和顺效应,超声波传感器是可逆元件,超声波发送器就是利用压电逆效应的原理。所谓压电逆效应如图2-2所示,是在压电元件上施加电压,元件就变形,即称应变。若在图a所示的已极化的压电陶瓷上施加如图b所示极性的电压,外部正电荷与压电陶瓷的极化正电荷相斥,同时,外部负电荷与极化负电荷相斥。由于相斥的作用,压电陶瓷在厚度方向上缩短,在长度方向上伸长。若外部施加的极性变反,如图c所示那样,压电陶瓷在厚度方向上伸长,在长度方向上缩短。图2-2压电逆效应图

7、2.1.3单片机超声波测距系统构成单片机AT89C51发出短暂的40kHz信号,经放大后通过超声波换能器输出;反射后的超声波经超声波换能器作为系统的输入,锁相环对此信号锁定,产生锁定信号启动单片机中断程序,读出时间t,再由系统软件对其进行计算、判别后,相应的计算结果被送至LED数码管进行显示。限制超声波系统的最大可测距离存在四个因素:超声波的幅度、反射物的质地、反射和入射声波之间的夹角以及接收换能器的灵敏度。接收换能器对声波脉冲的直接接收能力将决定最小可测距离。开始测量超声波信号开定时器关定时器数据运算显示器接收检测电声换能器电声换能器驱动电路图2-3 超声波测距系统框图三、设计方案按照系统设

8、计的功能的要求,初步确定设计系统由单片机主控模块、显示模块、超声波发射模块、接收模块共四个模块组成。单片机使用51系列的AT89C2051单片机,该单片机工作性能稳定,同时也是在单片机课程设计中经常使用到的控制芯片。发射电路由单片机输出端直接驱动超声波发送。接收电路使用三极管组成的放大电路,该电路简单,调试工作小较小。超声波接收模块超声波发射模块单片机控制系统(AT89C2051)显示模块键盘模块供电单元图3-1:系统设计框图硬件电路的设计主要包括单片机系统及显示电路、超声波发射电路和超声波接收电路三部分。单片机采用AT89C2051。采用12MHz高精度的晶振,以获得较稳定时钟频率,减小测量

9、误差。单片机用P3.5端口输出超声波换能器所需的40kHz的方波信号,P3.6端口监测超声波接收电路输出的返回信号。显示电路采用简单实用的3位共阳LED数码管,段码输出端口为单片机的P1口,位码输出端口分别为单片机的P3.2、P3.1、P3.0口,数码管位驱运用PNP三极管S9012三极管驱动。3.1 AT89C2051单片机AT89C2051是美国ATMEL 公司生产的低电压,高性能CMOS 8位单片机,片内含2k bytes 的可反复擦写的只读程序存储器(PEROM)和128 bytes 的随机存取数据存储器(RAM),器件采用ATMEL 公司的高密度、非易失性存储技术生产,兼容标准MCS

10、-5l指令系统,片内置通用8位 央处理器和Flash存储单元,功能强大。AT89C2051单片机可为您提供许多高性价比的应用场合。 主要性能参数与MCS-51 产品指令系统完全兼容 2k字节可重擦写闪速存储器 1000次擦写周期 2.7V6V 的工作电压范围 全静态操作:0Hz24MHz 两级加密程序存储器 1288字节内部RAM 15个可编程IO 口线 2个l6位定时计数器 6个 断源 可编程串行UART 通道 可直接驱动LED 的输出端口内置一个模拟比较器 低功耗空闲和掉电模式 功能特性概述 AT89C2051提供以下标准功能:2k字节Flash 闪速存储器,128字节内部RAM,15个I

11、O 口线,两个16位定时计 数器,个5 向量两级 断结构,一个全双工串行通信口,内置个精密比较器,片内振荡器及时钟电路。同时,AT89C2051可降至0HZ 的静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式停止CPU 的工作,但允许RAM,定时计数器,串行通信口及 断系统继续工作。掉电方式保存RAM 中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。3.2 超声波测距系统构成本系统由A T 8 9 C 2 0 5 1单片机控制,包括单片机系统、发射电路与接收放大电路和显示电路几部分组成,如图3-1 所示。硬件电路的设计主要包括单片机系统及显示电路、超声波发射电路和超

12、声波接收电路三部分。单片机的晶振采用12MHz高精度的晶振,以获得较稳定时钟频率,减小测量误差。通过单片机的P3.5端口输出超声波换能器所需的40kHz的方波信号,P3.6端口监测超声波接收电路输出的返回信号。显示电路采用简单实用的3位共阳LED数码管,段码输出端口为单片机的P1口,位码输出端口分别为单片机的P3.2、P3.1、P3.0口,数码管位驱运用PNP三极管S9012三极管驱动。超声波接收头接收到反射的回波后,经过接收电路处理后,向单片机P3.7输入一个低电平脉冲。单片机控制着超声波的发送,超声波发送完毕后,立即启动内部计时器T0计时,当检测到P3.7由高电平变为低电平后,立即停止内部

13、计时器计时。单片机将测得的时间与声速相乘再除以2即可得到测量值,最后经3位数码管将测得的结果显示出来。3.2.1 超声波测距单片机系统超声波测距单片机系统主要由:A T 8 9 C 2 0 5 1单片机、晶振、复位电路、电源滤波部份构成。如图3-1。图3-1:超声波测距单片机系统3.2.2 超声波发射、接收电路超声波发射、接收电路如图3-1。超声波发射部份由电阻R2及超声波发送头T40板成;接收电路由BG1、BG2X组成的两组三级管放大电路组成;检波电路、比较整形电路由C7、D1、D2及BG3组成。40kHz的方波由A T 8 9 C 2 0 5 1单片机的P 3 .5驱动超声波发射头发射超声

14、波,经反射后由超声波接收头接收到40kHz的正弦波,由于声波在空气中传播时衰减,所以接收到的波形幅值较低,经接收电路放大,整形,最后输出一负跳变,输入单片机的P3脚。该测距电路的40kHz方波信号由单片机A T 8 9 C 2 0 5 1 的P 3 .5发出。方波的周期为1/40ms,即25s,半周期为12.5s。每隔半周期时间,让方波输出脚的电平取反,便可产生40kHz方波。由于单片机系统的晶振为12M晶振,因而单片机的时间分辨率是1s,所以只能产生半周期为12s或13s的方波信号,频率分别为41.67kHz和38.46kHz。本系统在编程时选用了后者,让单片机产生约38.46kHz的方波。

15、图3-1:超声波测距发送接收单元由于反射回来的超声波信号非常微弱,所以接收电路需要将其进行放大。接收电路如图4 所示。接收到的信号加到BG1、BG2组成的两级放大器上进行放大。每级放大器的放大倍数为70倍。放大的信号通过检波电路得到解调后的信号,即把多个脉冲波解调成多个大脉冲波。这里使用的是I N 4148检波二极管,输出的直流信号即两二极管之间电容电压。该接收电路结构简单,性能较好,制作难度小。3.2.3显示电路本系统采用三位一体L E D 数码管显示所测距离值,如图8(见下页) 。码管采用动态扫描显示,段码输出端口为单片机的P1口,位码输出端口分别为单片机的P3.2、P3.1、P3.0口,

16、数码管位驱运用PNP三极管S9012三极管驱动。四.系统软件设计4.1 主程序设计超声波测距的软件设计主要由主程序、超声波发生子程序、超声波接收程序及显示子程序组成。超声波测距的程序既有较复杂的计算(计算距离时),又要求精细计算程序运行时间(超声波测距时),所以控制程序可采用C语言编程。主程序首先是对系统环境初始化,设定时器0为计数,设定时器1定时。置位总中断允许位EA。进行程序主程序后,进行定时测距判断,当测距标志位cl=1,即进行测量一次,程序设计中,超声波测距频度是1次/秒。测距间隔中,整个程序主要进行循环显示测量结果。当调用超声波测距子程序后,首先由单片机产生6-8个频率为38.46k

17、Hz超声波脉冲,加载的超声波发送头上。超声波头发送完送超声波后,立即启动内部计时器T0进行计时,为了避免超声波从发射头直接传送到接收头引起的直射波触发,这时,单片机需要延时约1.5 -2ms时间(这也就是超声波测距仪会有一个最小可测距离的原因,称之为盲区值)后,才启动对单片机P3.7脚的电平判断程序。当检测到P3.7脚的电平由高转为低电平时,立即停止T0计时。由于采用单片机采用的是12 MHz的晶振,计时器每计一个数就是1s,当超声波测距子程序检测到接收成功的标志位后,将计数器T0中的数(即超声波来回所用的时间)按式(2)计算,即可得被测物体与测距仪之间的距离。设计时取15时的声速为340 m

18、/s则有:d=(ct)/2=172T0/10000cm其中,T0为计数器T0的计算值。测出距离后结果将以十进制BCD码方式送往LED显示约0.5s,然后再发超声波脉冲重复测量过程。4.2 超声波测距子程序 void csbcj() /超声波测距子程序if(cl=1) TR1=0;TH0=0x00;TL0=0x00;i=20;/超声波脉冲个数10个while(i-)csbout=!csbout;TR0=1; i=450;while(i-)i=0;while(csbint)/判断接收回路是否收到超声波的回波i+;if(i=2450)/如果达到一定时间没有收到回波,则将csbint置零,退出接收回波

19、处理程序csbint=0;TR0=0;TH1=0x9E;TL1=0x57;t=TH0;t=t*256+TL0;s=t*csbc/2;/计算测量结果TR1=1;cl=0;4.3 超声波测距程序流程图 YYN=N0=0=1开始初始化测量标志启动定时器超声波测距距离上限值距离盲区值=显示值= C C C显示值= - - -测量段码转换显示设定段码转换距离=40) /1S测量一次。”中的“40”增大或减小即可。超声波发送功率较大时,测量距离远,则相应的下限值(盲区)应设置为高值。试验板中的声速没有进行温度补偿,声速值为340m/s。5.2 性能分析从实物测试的总体来说本测距板基本上达到了要求,理想上超

20、声波测距能达到5到7米左右,而我们所能实现的最大距离只有2.5米,测量结果受环境温度影响。分析原因如下:1.超声波发送部份为了简化电路,没加设置专门的超声波驱动电路,而是用单片机的P3.5输出端加了一个上拉电阻后就直接驱动超声波发送头。理论上,驱电电压只有5伏。2.本测距板没设计温度补偿电路,来对测量结果进行修正。六.心得体会俗话说“好的开始是成功的一半”。通过这次实习,我们学到了很多东西。在进行课程设计时,我们应该做到以下三点:首先,我认为最重要的就是认真的研究老师给的题目。其次,在老师讲解的基础上认真研究硬件电路的设计,和软件流程的设计。最后,重点实现软硬结合的综合调试。 这次的实习算起来

21、一共进行了两周,在这两周的时间里我们进行了硬件电路图设计,PCB板的设计,以及软件的编程实现,软硬件的综合调试。最终一个完整的课程设计成果出来了,很高兴它能按着设计的思想与要求运作起来。 当然,这其中也有很多问题,比如在PCB制作过程中没有建立网络报表导致了部分连线没有倒入PCB板中,还有部分封装出现了错误。就实现功能来说,设计结果能够符合题意,成功完成了此次实习要求,我们不只在乎这一结果,更加在乎的,是这个过程。这个过程中,我们花费了大量的时间和精力,更重要的是,我们在学会创新的基础上,同时还懂得合作精神的重要性,学会了与他人合作。在已度过的大学时间里,我们大多数接触的是理论课。我们在课堂上

22、掌握的仅仅是专业课的理论知识,如何去锻炼我们的实践能力?如何把我们所学的专业基础课理论知识运用到实践中去呢?我想做类似实习就为我们提供了良好的实践平台。同时这次实习给我们带来前所未有的的启发: 首先,查阅资料的必要性。在做本次实习的过程中,我感触最深的当属查阅大量的设计资料了。为了让自己的设计更加完善,查阅这方面的设计资料是十分必要的,同时也是必不可少的。 其次,在这次课程设计中,我们运用到了以前所学的专业课知识,如:模拟和数字电路知识等。虽然过去从未独立应用过它们,但在学习的过程中带着问题去学我发现效率很高,这是我做这次课程设计的又一收获。 再次,在实习之前,我们要对所用单片机的内部结构有一

23、个系统的了解,知道该单片机内有哪些资源;要有一个清晰的思路和一个完整的的软件流程图;在设计程序时,不能妄想一次就将整个程序设计好,反复修改、不断改进是程序设计的必经之路;要养成注释程序的好习惯,一个程序的完美与否不仅仅是实现功能,而应该让人一看就能明白你的思路,这样也为资料的保存和交流提供了方便;在实习过程中遇到问题是很正常的,但我们应该将每次遇到的问题记录下来,并分析清楚,以免下次再碰到同样的问题。但是从中学到的知识会让我受益终身。发现、提出、分析、解决问题和实践能力提高都会受益于我在以后的学习、工作和生活中最后,我们在这次实习中我们使用了分模块焊接,分模块测试的方法进行硬件电路的焊接和测试

24、,这是我们最宝贵的收获,这样做可以避免走很多弯路。使得调试也条理分明。总体上说,这次实习中收获很多,感触也很多。参考文献1赵建领 薛园园 51单片机开发与应用技术详解 北京:电子工业出版社,20092 沈红卫. 基于单片机智能系统设计与实现. 北京:电子工业出版社,20053 杨国田 白 焰 董 玲 51单片机实用C语言程序设计 中国电力出版社 20094 李群芳,黄建. 单片机微型计算机与接口技术. 北京:电子工业出版社,20015 楼然苗、李光飞. 51系列单片机设计实例. 北京:北京航空航天大学出版社,20036 王守中 51单片机开发入门与典型实例. 北京:人民邮电出版社,2009附录

25、一 超声波测系统原理图附录二 超声波测系统原理图安装图附录三 超声波测系统原理图PCB图附录四 超声波测系统原理图C语言原程序#include #define csbout P3_5/超声波发送#define csbint P3_7 /超声波接收#define csbc=0.034#define bg P3_4 unsigned char csbds,opto,digit,buffer3,xm1,xm2,xm0,key,jpjs,ki;/显示标识unsigned char convert10=0x3F,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;/

26、09段码unsigned int s,t,i,sj1,sj2,sj3,mqs,sx1,sjtz,sja,sjb;bit cl;void csbcj();void delay(i);/延时函数void scanLED();/显示函数void showOnce();/显示循环函数void timeToBuffer();/显示转换函数void offmsd();void main()/主函数EA=1; /开中断 TMOD=0x11; /设定时器0为计数,设定时器1定时ET0=1; /定时器0中断允许 ET1=1; /定时器1中断允许 TH0=0x00;TL0=0x00;TH1=0x9E;TL1=0x

27、57;csbds=0;csbint=1;csbout=1;cl=0;opto=0xff;jpjs=0;sj1=25;sj2=100;sj3=450;ki=0;TR1=1; /设定时值1为20ms while(1) csbcj();/调用超声波测距程序if(ssj3)/大于时显示CCCbuffer2=0x39;buffer1=0x39;buffer0=0x39;else if(ssj1)/小于时显示- - -buffer2=0x40;buffer1=0x40;buffer0=0x40;else timeToBuffer();/调用转换段码功能模块offmsd();/调用判断百位数为零模块,百位为

28、零时不显示 scanLED();/调用显示函数void scanLED() /显示功能模块 digit=0x04; for( i=0; i=1; /循环右移1位 void timeToBuffer() /转换段码功能模块xm0=s/100;xm1=(s-100*xm0)/10;xm2=s-100*xm0-10*xm1;buffer0=convertxm2;buffer1=convertxm1;buffer2=convertxm0;void delay(i)/延时子程序 while(-i);void timer1int (void) interrupt 3 using 2 /终断处理程序,1秒测

29、量一次TH1=0x9E;TL1=0x57;csbds+;if(csbds=40)csbds=0;cl=1;void csbcj() /超声波测距子程序if(cl=1) TR1=0;TH0=0x00;TL0=0x00;i=20;/超声波脉冲个数10个while(i-)csbout=!csbout;TR0=1; i=450;while(i-)i=0;while(csbint)/判断接收回路是否收到超声波的回波i+;if(i=2450)/如果达到一定时间没有收到回波,则将csbint置零,退出接收回波处理程序csbint=0;TR0=0;TH1=0x9E;TL1=0x57;t=TH0;t=t*256

30、+TL0;s=t*csbc/2;/计算测量结果TR1=1;cl=0;void offmsd() /百位为数0判断模块 if (buffer2 = 0x3f) /如果值为零时百位不显示 buffer2 = 0x00;24参考文献1赵建领 薛园园 51单片机开发与应用技术详解 北京:电子工业出版社,20092 沈红卫. 基于单片机智能系统设计与实现. 北京:电子工业出版社,20053 杨国田 白 焰 董 玲 51单片机实用C语言程序设计 中国电力出版社 20094 李群芳,黄建. 单片机微型计算机与接口技术. 北京:电子工业出版社,20015 楼然苗、李光飞. 51系列单片机设计实例. 北京:北京航空航天大学出版社,20036 王守中 51单片机开发入门与典型实例. 北京:人民邮电出版社,2009

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 毕业论文

版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如有侵权请立即联系:2622162128@qq.com ,我们立即下架或删除。

Copyright© 2022-2024 www.wodocx.com ,All Rights Reserved |陕ICP备19002583号-1 

陕公网安备 61072602000132号     违法和不良信息举报:0916-4228922