基于单片机的超声波测距仪-课程设计(毕业设计)完整版

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

电子与信息工程学院综合实验课程报告课题名称超声波测距仪专业电子信息工程班级学生姓名王利伟、魏丽丽、齐斯超学号07205010122王利伟07205010205魏丽丽07205010241齐斯超指导教师丁刚、严辉摘要随着科学技术的快速发展,超声波将在测距仪中的应用越来越广。但就目前技术水平来说,人们可以具体利用的测距技术还十分有限,因此,这是一个正在蓬勃发展而又有无限前景的技术及产业领域。展望未来,超声波测距仪作为一种新型的非常重要有用的工具在各方面都将有很大的发展空间,它将朝着更加高定位高精度的方向发展,以满足日益发展的社会需求,如声纳的发展趋势基本为:研制具有更高定位精度的被动测距声纳,以满足水中武器实施全隐蔽攻击的需要;继续发展采用低频线谱检测的潜艇拖曳线列阵声纳,实现超远程的被动探测和识别;研制更适合于浅海工作的潜艇声纳,特别是解决浅海水中目标识别问题;大力降低潜艇自噪声,改善潜艇声纳的工作环境。无庸置疑,未来的超声波测距仪将与自动化智能化接轨,与其他的测距仪集成和融合,形成多测距仪。随着测距仪的技术进步,测距仪将从具有单纯判断功能发展到具有学习功能,最终发展到具有创造力。在新的世纪里,面貌一新的测距仪将发挥更大的作用。本设计采用以AT89C51单片机为核心的低成本、高精度、微型化数字显示超声波测距仪的硬件电路和软件设计方法。整个电路采用模块化设计,由主程序、中断程序、发射子程序、接收子程序、显示子程序等模块组成。各探头的信号经单片机综合分析处理,实现超声波测距仪的各种功能。在此基础上设计了系统的总体方案,最后通过硬件和软件实现了各个功能模块。1.总体方案设计介绍本文所研究的超声波测距仪利用超声波指向性强、能量消耗缓慢、传播距离较远等优点,即用超声波发射器向某一方向发送超声波,同时在发射的时候开始计时,在超声波遇到障碍物的时候反射回来,超声波接收器在接收到反射回来的超声波时,停止计时。设超声波在空气中的传播速度为V,在空气中的传播时间为T,汽车与障碍物的距离为S,S=VT/2,这样可以测出汽车与障碍物之间的距离,然后在LED显示屏上显示出来。其工作机理是依据压电材料的正逆压电效应,利用逆压电效应产生超声波,即逆压电效应是在压电材料上加上某种特定频率的交变正弦信号,材料就会产生随所加电压的变化规律而变化的机械形变,这种机械形变推动周围介质振动,产生疏密相间的机械波,如果其振动频率在超声范围内,这种机械波就是超声波。本文所设计的超声波测距仪主要由AT89C52单片机、超声波发射电路、超声波接收放大电路、显示电路.首先由单片机驱动产生12MHZ晶振,由超声波发射探头发送出去,在遇到障碍物反射回来时由超声波接收探头检测到信号,然后经过滤波、放大、整形之后送入单片机进行计算,把计算结果输出到LED液晶显示屏上。超声波发生器可以分为两大类:一类是用电气方式产生超声波;另一类是用机械方式。产生超声波。电气方式包括压电型、电动型等;机械方式有加尔统笛、液和气流旋笛等。它们所产生的超声波的频率,功率和声波特性各不相同,因而用途也各不相同。目前在近距离测量方面较为常用的是压电式超声波换能器。根据设计要求并综合各方面因素,本例决定采用AT89C51单片机作为主控制器,用动态扫描法实现LED数字显示,超声波驱动信号用单片机的定时器完成。超声波测距器系统设计如图3.1所示。图3.1超声波测距器系统设计框图2.硬件电路设计硬件电路的设计主要包括单片机系统及显示电路、超声波发射电路和超声波检测接收电路三部分。单片机采用AT89C51或其兼容系列。采用12MHz高精度的晶振,以获得较稳定时钟频率,减小测量误差。单片机用P1.0端口输出超声波换能器所需的40kHz的方波信号,利用外中断0口监测超声波接收电路输出的返回信号。显示电路采用简单实用的4位共阳LED数码管,段码用74LS244驱动,位码用PNP三极管9012驱动。主要由单片机系统及显示电路、超声波发射电路和超声波检测接收电路三部分组成。采用AT89S51来实现对超声波模组进行控制,然后单片机不停的检测INT0引脚,当INT0引脚的电平由高电平变为低电平时就认为超声波已经返回。计数器所计的数据就是超声波所经历的时间,通过换算就可以得到传感器与障碍物之间的距离。2.1超声波发射和接收模组(V2.0)本文采用的超声波测距模组集发射和接受为一体,内部超声波传感器谐振频率40KHz,模组传感器工作电压4.5V~9V,模组接口电压4.5V~5.5V。提供三种测距模式,选择跳线可以选择短距、中距和可调距。本实验采用短距(20~100cm)精度1cm。模组结构示意图如下:超声波接收单片机控制器超声波发送LED显示扫描驱动应用时只需要用J5的第1个口与单片机Vcc连接,最后一个口与单片机GND连接,第4个接口与单片机的INT0口相连接,J4的第3个接口与单片机1.0口连接,同时将J1跳线设置为短距模式,J2跳线设置为非外部电源供电方式(此时开发板通过10PIN排线为模组供电,板上J5选择5V,要把J2跳接到5v的一端)。这就完成了模组硬件的连接。超声波谐振频率调理电路图如下:由单片机产生40KHz的方波由P1.0口送出,连接模组接口J4到模组的CD4049,而后面的CD4049则对40KHz频率信号进行调理,以使超声波传感器产生谐振。上图为超声波回波接收处理电路,超声波接受处理部分电路前级采用NE5532构成10000倍放大器,对接收信号进行放大;后级采用LM311比较器对接收信号进行调整,比较电压为LM311的3管脚的输入。接收回路中测得的超声波信号共有两个波束,第一个为余波信号,即超声波接收头在发射头发射信号(一组40KHz的脉冲)后,马上就接收到了超声波信号,并持续一段时间。另一个波束为有效信号,即经过被测物表面反射的回波信号。超声波测距时,需要测的是开始发射到接收到信号的时间差,要尽量避免检测到余波信号,这也是检测中存在最小测量盲区的主要原因。单片机控制模组每次发生若干完整的40KHz的脉冲信号,发射信号前打开计数器T0,进行计时,等计时到达一定值后再开启检测回波信号,以避免余波信号的干扰。采用外部中断INT0对回波信号进行检测,接收到回波信号后马上读取计数器中的数值,此数据即为需要测量的时间差数据。2.2数据显示模块显示电路采用简单实用的4位共阳LED数码管,断码用74LS244驱动,位码用PNP三极管9012驱动。由P0口输出显示数据,P2.0~P2.3用来位选。显示电路如下图:3.系统程序的设计超声波测距器的软件设计主要由主程序,超声波发生子程序,超声波接收中断程序及显示子程序组成,由于C语言程序有利于实现较复杂的算法,汇编语言程序则具有较高的效率并且容易精确计算程序行动的时间,而超声波测距器的程序既有较复杂的计算(计算距离时),又要求精确计算程序运行时间(超声波测距时),所以控制程序可采用C语言和汇编语言混合编程。下面对超声波测距器的算法,主程序,超声波发生子程序和超声波接收中断程序逐一介绍。3.1超声波测距器的算法设计图3.6示意了超声波测距的原理,既超声波发生器T在某一时刻发出一个超声波信号,当这个超声波遇到被测物体后反射回来,就会被超声波接收器R接收到。这样,只要计算出从发出超声波信号到接收到返回信号所用的时间,就可算出超声波发生器于反射物体的距离。该距离的计算公式如下:d=s/2(v×t)/2其中:d为被测物于测距器的距离;s为声波的来回路程;v为声速;t为声波来回所用的时间。超声波也是一种声波,其声速v于温度有关。表3.1列出了几种不同温度下的超声波声速。在使用时,如果温度变化不大,则可认为声速基本不变的。如果测距精度要求很高,则应通过温度补偿的方法加以校正。声速确定后,只要测得超声波往返的时间,即可求得距离。表3.1不同温度下超声波声速表温度/℃﹣30﹣20﹣100102030100声波/(m.s)313319325323338344349386P1.0/T1P1.1/T2P1.23P1.34P1.45P1.56P1.67P1.78INT113INT012T014T115EA/VP31X218X119RESET9RD17WR16PSEN29ALE/P30RXD10TXD11P2.021P2.122P2.223P2.324P2.425P2.526P2.627P2.728P0.732P0.633P0.534P0.435P0.336P0.237P0.138P0.039AT89C52U5*40KHz输出回波接收输入Y212MHz5VC430pFC530pF+20uFRESET10KVCCabcdefga1b2c3d4e5f6g7DPYLEDRES2abcdefga1b2c3d4e5f6g7DPYLEDRES2abcdefga1b2c3d4e5f6g7DPYLEDRES2abcdefga1b2c3d4e5f6g7DPYLEDRES290129012901290124.7K4.7K4.7KVCCP2.3P2.2P2.1P2.03.2主程序主程序首先要对系统环境初始化,设置定时器T0工作模式为16位定时/计数器模式,置位总中断允许位EA并对显示端口P0和P2清0;然后调用超声波发生子程序送出一个超声波脉冲。为了避免超声波从发射器直接传到接收器引起的直射波,需要延时约0.1ms(这也就是超声波测距器会有一个最小可测距离的原因)后才可打开外中断0接收返回的超声波信号。由于采用的是12MHz的晶振,计数器每计一个数就是1us,所以当主程序检测到接收成功的标志位后,将计数器T0中的数(即超声波来回所用的时间)按式(3—2)计算,即可得被测物体与测距器之间的距离。设计时取20℃时的声速为344m/s,则有d=(v×t)/2=(172T/10000)cm(3—2)其中:T为计数器T0的计数值。测出距离后,结果将以十进制BCD码方式送往LED显示约为0.5s,然后再发超声波脉冲重复测量过程。图3.7所示为主程序流程图。※※※※※※主程序※※※※※※START:MOVSP,#4FHMOVR0,#40H;40H~43H为显示数据存放单元(40H为最高位)MOVR7,#0BHCLEARDISP:MOV@R0,#00HINCR0DJNZR7,CLEARDISPMOV20H,#00HMOVTMOD,#21H;T1为8位自动重装模式,T0为16位定时器MOVTH0,#00H;65ms初值MOVTL0,#00HMOVTH1,#0F2H;40kHz初值MOVTL1,#0F2HMOVP0,#0FFHMOVP1,#0FFH开始系统初始化发送超声波脉冲等待反射超声波计算距离显示结果0.5sMOVP2,#0FFHMOVP3,#0FFHMOVR4,#04H;超声波脉冲个数控制(为赋值的一半)SETBPX0SETBET0SETBEASETBTR0;开启测试定时器START1:LCALLDISPLAYJNB00H,START1;收到反射信号时标志位为1CLREALCALLWORKSETBEACLR00HSETBTR0;重新开启测试定时器MOVR2,#64H;测量间隙控制(约4ms×100=400ms)LOOP:LCALLDISPLAYDJNZR2,LOOPSJMPSTART13.3超声波发生子程序和超声波接收中断程序超声波发生子程序的作用是通过P1.0端口发送两个左右的超声波脉冲信号(频率40KHz的方波),脉冲宽度为12us左右,同时把计数器T0打开进行时。超声波发生子程序较简单,但要求程序运行时间准确,所以采用汇编语言编程。ORG0000HLJMPSTARTORG0003HLJMPPINT0ORG000BHLJMPINTT0ORG0013HRETIORG001BHLJMPINTT1ORG0023HRETIORG002BHRETI超声波测距器主程序利用外中断0检测返回超声波信号,一旦接收到返回超声波信号(即INT0引脚出现低电平),立即进入超声波接收中断程序。进入该中断后,就立即关闭计时器T0,停止计时,并将测距成功标志字

1 / 17
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功