《基于单片机的超声波测距仪的设计-毕业设计论文.docx》由会员分享,可在线阅读,更多相关《基于单片机的超声波测距仪的设计-毕业设计论文.docx(31页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、 基于单片机的超声波测距仪的设计 摘要 设计了以AT89C51单片机为核心的低成本、高精度、微型化数字显示超声波测距仪。硬件系统是由单片机、显示电路、超声波发射电路和超声波检测接收电路等几部分组成。软件系统主要由主程序、超声波发生子程序、超声波检测接收子程序、中断信号综合处理程序及显示子程序等几部分组成。可实现10cm-600cm距离的精确测量。论文进行了系统的总体方案、硬件系统和软件系统的详细叙述。相关部分附有硬件电路图、程序流程图。实验证明,系统软硬件设计合理、抗干扰能力强、实时性良好,经过系统扩展和升级,可以有效地解决汽车倒车、建筑施工工地以及一些工业现场的位置监控。关键词:AT89c5
2、1 超声波 测距第一章 绪 论1.1系统设计设计一个基于单片机AT89C51的超声波测距系统,测量时被测物体与测距仪没有直接接触,测量范围4米以内,显示电路能够及时、稳定显示被测结果。要求结构简单、控制方便,抗干扰能力强。设计方案通过Keil uVision3软件开发平台对已设计好的超声波测距仪程序文件进行编译、调试,最后在Proteus7.4仿真工具中进行软件仿真。对设计调试过程中的数据进行统计,并进行数据与误差的分析,确定优化方案,从而达到在学习与实践中不断进步的目的。1.2系统设计目的及意义1.2.1设计的目的随着科学技术的快速发展,超声波将在测距仪中的应用越来越广。但就目前技术水平来说
3、,人们可以具体利用的测距技术还十分有限,因此,这是一个正在蓬勃发展而又有无限前景的技术及产业领域。展望未来,超声波测距仪作为一种新型的非常重要有用的工具在各方面都将有很大的发展空间,它将朝着更加高定位高精度的方向发展,以满足日益发展的社会需求,如声纳的发展趋势基本为:研制具有更高定位精度的被动测距声纳,以满足水中武器实施全隐蔽攻击的需要;继续发展采用低频线谱检测的潜艇拖曳线列阵声纳,实现超远程的被动探测和识别;研制更适合于浅海工作的潜艇声纳,特别是解决浅海水中目标识别问题;大力降低潜艇自噪声,改善潜艇声纳的工作环境。无庸置疑,未来的超声波测距仪将与自动化智能化接轨,与其他的测距仪集成和融合,形
4、成多测距仪。随着测距仪的技术进步,测距仪将从具有单纯判断功能发展到具有学习功能,最终发展到具有创造力。在新的世纪里,面貌一新的测距仪将发挥更大的作用。1.2.2设计的意义随着科技的发展,人们生活水平的提高,城市发展建设加快,城市给排水系统也有较大发展,其状况不断改善。但是,由于历史原因合成时间住的许多不可预见因素,城市给排水系统,特别是排水系统往往落后于城市建设。因此,经常出现开挖已经建设好的建筑设施来改造排水系统的现象。城市污水给人们带来了困扰,因此箱涵的排污疏通对大城市给排水系统污水处理,人们生活舒适显得非常重要。而设计研制箱涵排水疏通移动机器人的自动控制系统,保证机器人在箱涵中自由排污疏
5、通,是箱涵排污疏通机器人的设计研制的核心部分。控制系统核心部分就是超声波测距仪的研制。因此,设计好的超声波测距仪就显得非常重要了。这就是设计超声波测距仪的意义所在。第二章 系统的方案设计与论证2.1 系统设计方案的选择2.1.1 设计方案一:采用单片机来控制的超声波测距仪采用单片机来控制的超声波测距仪是先由单片机产生一个信号,经过信号线,把信号引入到与超声波发射器相连的信号引脚上,再由超声波发射器向某一方向发射超声波,在发射时刻的同时开始计时,超声波在空气中传播,途中碰到障碍物就立即返回来,超声波接收器收到反射波就立即停止计时。超声波在空气中的传播速度v为340m/s,根据计时器记录的时间t,
6、就可以计算出发射点距障碍物的距离(d),即:原理框图如2-1所示:开始测量超声波信号 开定时器关定时器数据运算显示器接收检测超声波换能器超声波换能器驱动电路图2-1采用单片机来控制的超声波测距仪2.1.2 设计方案二:采用CPLD来控制的超声波测距仪采用CPLD来控制的超声波测距仪,主要是在软件上运用VHDL(Very High Speed Integrated Circuit Hardware Description Language)编写程序使用MAX+plus II软件进行软硬件设计的仿真和调试,最终实现测距功能。使用本方案的优点在于在超声波测距仪设计中采用的是MAX7000s系列中的E
7、PM7128SLC84-15的CPLD器件,其最高频率可达175.4MHz,可用于组合逻辑电路、时序逻辑电路、算法、双端口RAM等的设计。充分利用了其多达128个宏单元、68pin可编程I/O口,使该器件可以将分频功能、计数功能、显示编码功能、振荡功能全部集于一体。又因其延时平均的特点,保证了测距结果精度高、响应速度快。缺点是方案中需要一块FPGA,一块双口RAM,还需要一块用来存储波形数据的EEPROM,那么设计的成本较高。同时在FPGA中还要用硬件描述语言(VHDL语言)编写程序来实现硬件电路功能。由于EPM7128SLC84-15的算法复杂,所以在软件实现起来编程也复杂。2.1.3 设计
8、方案三:采用锁相环频率合成技术采用锁相环频率合成技术,也可以实现我们所需要的超声波测距仪。具体方案如下:首先通过频率合成技术产生超声波所需要的频率,在通过信号线将采用锁频率相合成技术得到的频率引到超声波的发射头上,这样就可以实现超声波测距。它的优点就是工作频率可调,也可以达到很高的频率分辨率;缺点是要求使用的滤波器通带可变,实现很困难。它的原理如图2-2所示:图2-2采用锁相环频率合成的超声波测距仪综上所述,因此选择第一种设计方案。2.2 系统整体方案的设计由于超声波指向性强,能量消耗缓慢,在介质中传播的距离较远,因而超声波经常用于距离的测量。利用超声波检测距离,设计比较方便,计算处理也较简单
9、,并且在测量精度方面也能达到农业生产等自动化的使用要求。超声波发生器可以分为两大类:一类是用电气方式产生超声波,一类是用机械方式产生超声波。电气方式包括压电型、电动型等;机械方式有加尔统笛、液哨和气流旋笛等。它们所产生的超声波的频率、功率、和声波特性各不相同,因而用途也各不相同。目前在近距离测量方面常用的是压电式超声波换能器。超声波测距仪主要以单片机AT89C51为核心,其发射器是利用压电晶体的谐振带动周围空气振动来工作的。超声波发射器向某一方向发射超声波,在发射的同时开始计时,超声波在空气中传播,途中碰到障碍物就立即返回来,超声波接收到反射就立即停止计时。一般情况下,超声波在空气中传播速度为
10、340m/s,根据计时器记录的时间t,就可以计算出发射点距障碍物的距离s,即s340t/2,这就是常用的时差测距。在测距计数电路设计中,采用了相关计数法,其主要原理是:测量时单片机系统先给发射电路提供脉冲信号,单片机计数器处于等待状态,不计数;当信号发射一段时间后,由单片机发出信号使系统关闭发射信号,计数器开始计数,实现起始时的同步;当接收电路接收脉冲到来后,进入路数,计数器停止计数。发射器发出的超声波以速度在空气中传播,在到达被测物体时被反射返回,由接收器接收,其往返时间为t,由s=vt/2即可算出被测物体的距离。由于超声波也是一种声波,其声速v与温度有关,下表列出了几种不同温度下的声速。在
11、使用时,如果温度变化不大,则可认为声速是基本不变的。如果测距精度要求很高,则应通过温度补偿的方法加以校正。表2-1 超声波波速与温度的关系表温度()-30-20-100102030100声速(ms)313319325323338344349386单片机发出40kHZ的信号,经放大后通过超声波发射器输出;超声波接收器将接收到的超声波信号经放大器放大,用锁相环电路进行检波处理后,启动单片机中断程序,测得时间为t,再由软件进行判别、计算,得出距离数并送LED显示而超声波测距器系统设计如图2-3。图2-3 超声波测距仪系统设计2.3 系统整体方案的论证超声波测距的原理是利用超声波的发射和接受,根据超声
12、波传播的时间来计算出传播距离。实用的测距方法有两种,一种是在被测距离的两端,一端发射,另一端接收的直接波方式,适用于升高计;一种是发射波被物体反射回来后接收的反射波方式,适用于测距仪。此次设计采用反射波方式。 测距仪的分辨率取决于对超声波传感器的选择。超声波传感器是一种采用压电效应的传感器,常用的材料是压电陶瓷。由于超声波在空气中传播时会有相当的衰减,衰减的程度与频率的高低成正比;而频率高分辨率也高,故短距离测量时应选择频率高的传感器,而长距离的测量时应用低频率的传感器。根据设计要求并综合各方面因素,本文采用AT89C51单片机作为控制器,用动态扫描法实现LED数字显示,超声波驱动信号用单片机
13、的定时器。超声波接收有检测红外线的专用芯片CX20106A实现。第三章 系统的硬件结构设计由单片机AT89C51编程产生40kHz的方波,由P3.6口输出,再经过放大电路,驱动超声波发射探头发射超声波。发射出去的超声波经障碍物反射回来后,由超声波接收头接收到信号,通过接收电路的检波放大、积分整形及一系列处理,送至单片机。单片机利用声波的传播速度和发射脉冲到接收反射脉冲的时间间隔计算出障碍物的距离,并由单片机控制显示出来。该测距装置是由超声波传感器、单片机、发射/接收电路和LED显示器组成。传感器输入端与发射接收电路相连,接收电路输出端与单片机相连接,单片机的输出端与显示电路输入端相连接。其时序
14、图如图3-1所示。图3-1 时序图单片机在T0时刻发射方波,同时启动定时器开始计时,当收到回波后,产生一负跳变到单片机中断口,单片机响应中断程序,定时器停止计数。计算时间差,即可得到超声波在媒介中传播的时间t,由此便可计算出距离。3.1单片机实现测距原理单片机发出超声波测距是通过不断检测超声波发射后遇到障碍物所反射的回波,从而测出发射和接收回波的时间差t,然后求出距离svt2,式中的v为超声波波速。单片机测距原理方框图如下图3-2所示。图3-2超声波测距仪方框图限制该系统的最大可测距离存在4个因素:超声波的幅度、反射的质地、反射和入射声波之间的夹角以及接收换能器的灵敏度。接收换能器对声波脉冲的
15、直接接收能力将决定最小的可测距离。为了增加所测量的覆盖范围、减小测量误差,可采用多个超声波换能器分别作为多路超声波发射接收的设计方法。由于超声波属于声波范围,其波速C与温度有关。3.2超声波测距系统的硬件电路设计本系统的特点是利用单片机控制超声波的发射和对超声波自发射至接收往返时间的计时,单片机选用AT89C51,经济易用,且片内有4K的ROM,便于编程。该测距装置是由单片机显示电路、超声波发射电路和超声波检测接收电路三部分组成。原理图附录一所示:3.2.1单片机显示电路(1) 时钟振荡电路本系统选单片机AT89C51,外部晶体作为时钟频率,晶体振荡器XTAL1与XTAL2分别为作片内振荡器的
16、反向放大器的输入与输出。晶体振荡器连接如下图3-3 所示。图3-3 晶体振荡器连接图单片机外接石英晶体(或陶瓷谐振器)及电容C2、C3接在放大器(AT89C51中有一个用于构成内部振荡器的高增益的反相放大器)的反馈回路中构成并联振荡电路。为CPU 处理数据,让计时器每计一次数就是1us,振荡器采用了12MHz的石英晶体。外接电容C2、C3虽然没有十分严格的要求,但电容容量的大小会轻微影响振荡频率的高低、振荡工作的稳定性、起振的难易程度及温度稳定性,这里电容使用30PF。本电路中用到了重要的频率,为了实现输出频率的精确性,在设计时用到了单片机,因为这一部分(频率产生电路)是整个电路的核心,由单片
17、机产生的频率必须准确,否则测得的距离显示会产生很大误差,在考虑总体方案时,也想到用一块单片集成电路(比如说CMOS集成芯片CD4046)来完成频率信号的产生以及分频工作,也完全可以实现电路的功能,但是要想实现高精度要求,难免有些困难,最后还是选择了用单片机来完成频率的产生工作。(2) 显示电路单片机采用89C51或其兼容系列。单片机用P1.0端口输出超声波换能器所需的40KHz方波信号,利用外中断0口监测超声波接收电路输出返回信号。显示电路采用简单实用的4位共阳LED数码管,段码74LS244驱动,位码用PNP三极管8550驱动。单片机系统及显示电路如图3-4所示。图3-4 显示电路 共阳极4
18、位7段LED共阳极7段LED是指发光二极管的阳极连接在一起为公共端的7段LED。一个7段LED由8个发光二极管组成,其中7个发光二极管构成字型“8”的各个笔划(ag),另一个发光二极管为小数点(dp).当在某一段发光二极管上施加一定的正向电压时,该段LED即被点亮;不加电压则为暗。若是要显示“3”,则需要在VCC上加上电压,向dp、g、f、e、a送出00010010的信号,就能显示出来。为了保护各段LED不因电流过大而损坏,需在各个段上外加限流电阻保护。如图3-5 7段LED原理图 动态扫描原理 对于一组数码管动态扫描显示需要由两组信号来控制:一组是字段输出口输出的字形代码,用来控制显示的字形
19、,称为段码;另一组是位输出口输出的控制信号,用来选择第几位数码管工作,称为位码。原理图如下图3-6所示。由于各位数码管的段线并联,段码的输出对各位数码管来说都是相同的。因此,在同一时刻如果各位数码管的位选线都处于选通状态的话,8位数码管将显示相同的字符。若要各位数码管能够显示出与本位相应的字符,就必须采用扫描显示方式。即在某一时刻,只让某一位的位选线处于导通状态,而其它各位的位选线处于关闭状态。同时,段线上输出相应位要显示字符的字型码。这样在同一时刻,只有选通的那一位显示出字符,而其它各位则是熄灭的,如此循环下去,就可以使各位数码管显示出将要显示的字符。虽然这些字符是在不同时刻出现的,而且同一
20、时刻,只有一位显示,其它各位熄灭,但由于数码管具有余辉特性和人眼有视觉暂留现象,只要每位数码管显示间隔足够短,则可造成多位同时亮的假象,给人眼的视觉印象就会是连续稳定地显示,达到同时显示的目的。图3-6 4位7段LED数码管 74LS244驱动介绍单片机本身具有驱动能力,它分为高电平驱动和低电平驱动两种方式,所谓高电平驱动,就是端口输出高电平时的驱动能,所谓低电平驱动,就是端口输出低电平时的驱动能力,当单片机输出高电平时,其驱动能力实际上是靠端口的上拉电阻来驱动的。单片机的输出电流输出电压都非常小,假设一个数码管中一位二极管点亮流过的电流是5mA,那么当所有二极管都亮时是58 mA=40 mA
21、,查阅单片机手册可知,单片机绝对最大I/O口电流是15 mA。超过单片机所能承受的电流,这将造成电源效应的严重下降,导致发热,波纹增大,以至于造成单片机工作不稳。为了达到可靠性,本次设计在单片机输出口接一个74LS244,再在244的输出接数码管。74LS244是8路3态缓冲驱动,也叫做线驱动或者总线驱动门电路,常用在单片机MCU系统中,作为韸体贴的输入输出数据缓冲器,在选通时输入数据送到总线上,在非选通时对总线呈高阻态。它主要起两方面的作用:一来用作驱动使数码管更亮,二来用作缓存使数码管不闪烁。下图3-7是74LS244的内部结构图,可以看出74LS244由2组、每组四路输入、输出构成,每组
22、有一个控制端G,由控制端的高或低电平决定该组数据被接通还是断开。图3-7 74LS244内部结构原理图引出端符号:1A11A4,2A12A4 输入端1G,2G 三态允许端(低电平有效)1Y11Y4,2Y12Y4 输出端3.2.2超声波发射电路(1)概述超声波发射电路原理图如下图3-8所示。发射电路主要由反向器74LS04和超声波发射换能TCT40-10F1构成。单片机P1.0端口输出的40kHz方波信号一路由一级反向器后送到超声波换能器的一个电极,另一路经两级反向器送到超声波换能器的另一个电极。用这种推挽形式将方波信号加到超声波换能器两端,可以提高超声波的发射强度。输出端采用两个反向器并联,用
23、以提高驱动能力。上拉电阻R1,R2一方面可以提高反向器74LS04输出高电平的驱动能力,另一方面可以增加换能器的阻尼效果,缩短其自由振荡的时间。图3-8 超声波发射电路(2)超声波传感器介绍为了以超声波作为检测手段,必须产生超声波和接收超声波。完成这种功能装置就是超声波传感器,习惯上称为超声波换能器或超声波探头。常用的超声波传感器有两种即压电式超声波传感器或称压电式超声波探头和磁致式超声波传感器。本次设计采用的是压电式超声波传感器,主要由超声波发射器(或称发射探头)TCT40-10F1和超声波接收器(或称接收探头)TCT40-10S1两部分组成,它们都是利用压电材料(如石英、压电陶瓷等)的压电
24、效应进行工作的。下图3-9为超声波换能器结构图。图3-9 超声波换能器结构图压电传感器由压电晶片、楔块、接头等组成,是超声波检测中最常用的实现电能和声能相互转换的一种传感器件,是超声波检测装置的重要组成部分。当压电晶片爱发射脉冲激励后产生振动,即可发射脉冲,是逆压电效应。当超声波作用于晶片时,晶片爱迫振动引起的形变可转换成相应的电信号,是正压电效应。前者用于超声波的发射,后者即为超声波的接收。超声波传感器一般采用双压电陶瓷晶片制成。这个超声波传感器需要的压电材料较少,价格低廉,且非常适用于气体和液体介质中。3.2.3超声波检测接收电路图3-10是超声波检测接收电路,主要有集成电路CX20106
25、A和超声波换能器TCT40-10S1构成。CX20106A是一款红外线接收的专用芯片,常用于电视红外遥控器。常用的载波频率38kHz较为接近,可以利用它来做接收电路,适当的改变C4的大小,可以改变接收电路的灵敏度和抗干扰能力。其工作过程为:当超声波接收探头收到超声波时,压迫压迫压电片作振动,将机械能转化成电信号,红外线检波接收集成芯片CX20106A接到电信号后,对所接信号进行识别,若频率在38kHz40kHz左右,则输出低电平,否则输出高电平。使用CX20106A主要是简单易用,电路简单,减少了生产调试的麻烦。但必须保证接收到的信号为40kHz,否则无法解调出。图3-10 超声波检测接收电路
26、(1)集成电路CX20106ACX20106A为红外线接收专用芯片,可以用于超声波的接收。红外遥控接收芯片CX20106A可以完成对遥控信号的前置放大、限幅放大、带通滤波、峰值检波和波形整形,只需加上简单的外围电路即可完成对已调波的解调。其引脚图如图3-11所示:图3-11 CX20106A引脚图1脚:超声信号输入端,该脚的输入阻抗约为40k。2脚:该脚与地之间连接RC串联网络,它们是负反馈串联网络的一个组成部分,改变它们的数值能改变前置放大器的增益和频率特性。增大电阻R或减少C,将使负反馈量增大,放大倍数下降,反之则放大倍数增大。但C的改变会影响到频率特性,一般在实际使用中不必发动。3脚:该
27、脚与地之间连接检波电容,电容量大为平均值检波,瞬间相应灵敏度低;若容量小,则为峰值检波,瞬间相应灵敏度高,但检波输出的脉冲宽度变动大,易造成误动作,推荐参数为3.3f。4脚:接地端5脚:该脚与电源间接入一个电阻,用以设置带通滤波器的中心频率f0,阻值越大,中心频率越低。例如,取R200k时,f042kHz,若取R=220k,则中心频率f0=38kHz。6脚:该脚与地之间接一个积分电容,标准值为330pF,如果该电容取得太大,会使探测距离变短。7脚:遥控命令输出端,它是集电极开路输出方式,因此该引脚必须接上一个上拉电阻到电源端,推荐阻值为22k,没有接收信号是该端输出为高电平,有信号时则产生下降
28、。8脚:电源正极,4.55.5V。(2)用CX20106A做超声波测距应注意的事项: 首先确定你发射出的超声波的频率为标准的40KHZ(占空比50%),并保证有足够的驱动电压。CX20106A的第5脚的电阻决定接收的中心频率,200k的电阻决定了接收的中心频率为40KHZ。 如果你驱动的是开放式的非防水探头(就是铝外壳,探头表面有金属网,可以看到里面有一锥形的金属),则使用反相器串联再并联做BTL推动就可以了。 如果使用的探头是全封闭的防水头,那就要必须有足够的驱动电压才能驱动得了探头。第四章 系统软件的设计4.1软件设计分析完成了系统的硬件设计之后,接下来就是系统软件的设计,它所需要完成的主
29、要是针对系统功能的实现及数据的处理和应用。根据以上所述系统硬件设计和各个电路功能,系统软件需要实现以下功能: 信号控制。在系统硬件中,已经完成了发射电路、回波检测接收电路的设计。在系统软件中,要完成发射脉冲信号及输出显示。 数据存储。为了得到发射信号与接收回波间的时间差,要读出此刻计数器的计数值,然后存储在RAM中,而且每次发射周期的开始,需要对计数器清零,以备后续处理。 信号处理。RAM中存储的计数值并不能作为距离值直接显示输出,超声波从发射出去碰到障碍物返回接收传感器的时间,需要通过软件定时器来记录。根据这个时间才能计算出障碍物的距离。 数据传输与显示。经软件处理得到的距离要以十进制的方式
30、送LCD显示。4.2软件设计思路超声波测距软件设计主要由主程序,超声波发射子程序,超声波接收中断程序及显示子程序组成。C语言程序有利于实现较复杂的算法,汇编语言程序则具有较高的效率并且容易精确据算程序运行的时间,而超声波测距器的程序既有较复杂的计算(计算距离时),又要求精确计算程序运行时间(超声波测距时),所以控制程序可采用C语言和汇编语言混合编写。4.2.1超声波测距仪的算法设计超声波测距的原理为超声波发生器T在某一时刻发出一个超声波信号,当这个超声波遇到被测物体后反射回来,就被超声波接收器R所接收到。这样只要计算出从发出超声波信号到接收到返回信号所用的时间,就可算出超声波发生器与反射物体的
31、距离。距离的计算公式为: d=s/2=(vt)/2 (1) 其中,d为被测物与测距仪的距离,s为声波的来回的路程,v为声速,t为声波来回所用的时间。在启动发射电路的同时启动单片机内部的定时器T0,利用定时器的计数功能记录超声波发射的时间和收到反射波的时间。当收到超声波反射波时,接收电路输出端产生一个负跳变,在INT0或INT1端产生一个中断请求信号,单片机响应外部中断请求,执行外部中断服务子程序,读取时间差,计算距离。其部分源程序如下: TMOD=0X01; /T0计数,方式1TH0=0; /计数初值TL0=0; /计数初值IT0=1; /INT0负脉冲触发EA=1; /开总中断EX0=1;
32、/开外部INT0中断AGAIN=1;WHILE(1)UCHAR X;IF(ON=0) /启动键处理DELAY1MS(5); /按键消抖IF(ON=0)ONOFF=1; /启动WHILE(ON);/等待按键释放IF(OFF=0) /停止键处理DELAY1MS(5); /按键消抖IF(OFF=0)ONOFF=0; /停止WHILE(OFF); /等待按键释放 IF(ONOFF)OUT=0;/产生方波,输出低电平DELAYS();/延时 产生几个微秒的低电平,让模拟反射的单片机能正确接收信号OUT=1;/恢复高电平,停止模拟发射TH0=0;TL0=0;AGAIN=0;/TR0=1; /T0开始计数F
33、OR(X=0;X20;X+)DISPLAY(); /数码管显示IF(AGAIN=0)BWEI=SHWEI=GWEI=0; ELSEBWEI=SHWEI=GWEI=10; VOID INT0(VOID) INTERRUPT 0 USING 1 /INTO中断服务程序 FLOAT COUNT; ULONG NUM; TR0=0 ; /停止计数 COUNT=(TH0*256+TL0)/2; NUM= (COUNT/10000)*344;/计算超声波来回距离 / NUM= NUM/2; /总距离除2等于实际距离4.2.2 主程序流程图 软件分为两部分,主程序和中断服务程序,如图4-1所示。主程序完成初
34、始化工作、各路超声波发射和接收顺序的控制。 定时中断服务子程序完成三方向超声波的轮流发射,外部中断服务子程序主要完成时间值的读取、距离计算、结果的输出等工作。 图4-1流程图主程序首先是对系统环境初始化,设置定时器T0工作模式为16位定时计数器模式。置位总中断允许位EA并给显示端口P0和P1清0。然后调用超声波发生子程序送出一个超声波脉冲,为了避免超声波从发射器直接传送到接收器引起的直射波触发,需要延时约0.1 ms(这也就是超声波测距仪会有一个最小可测距离的原因)后,才打开外中断0接收返回的超声波信号。由于采用的是12 MHz的晶 振,计数器每计一个数就是1s,当主程序检测到接收成功的标志位
35、后,将计数器T0中的数(即超声波来回所用的时间)按式(2)计算,即可得被测物体与测距仪之间的距离,设计时取20时的声速为344 m/s则有: d=(ct)/2=172T0/10000cm (2)其中,T0为计数器T0的计算值。测出距离后结果将以十进制BCD码方式送往LED显示约0.5s,然后再发超声波脉冲重复测量过程。为了有利于程序结构化和容易计算出距离,主程序采用C语言编写。4.2.3超声波发生子程序和超声波接收中断程序 超声波发生子程序的作用是通过P1.0端口发送2个左右超声波脉冲信号(频率约40kHz的方波),脉冲宽度为12s左右,同时把计数器T0打开进行计时。超声波发生子程序较简单。超
36、声波测距仪主程序利用外中断0检测返回超声波信号,一旦接收到返回超声波信号(即INT0引脚出现低电平),立即进入中断程序。进入中断后就立即关闭计时器T0停止计时,并将测距成功标志字赋值1。如果当计时器溢出时还未检测到超声波返回信号,则定时器T0溢出中断将外中断0关闭,并将测距成功标志字赋值2以表示此次测距不成功。前方测距电路的输出端接单片机INT0端口,中断优先级最高,左、右测距电路的输出通过与门IC3A的输出接单片机INT1端口,同时单片机P1.3和P1.4接到IC3A的输入端,中断源的识别由程序查询来处理,中断优先级为先右后左。部分源程序如下: /*超声接收程序(外中断0)*/ /*超时清除
37、程序(内中断T0)*/void cs_r(void) interrupt 0 void overtime(void) interrupt 1 TR0 = 0; EX0 = 0; ET0 = 0; TR0 = 0; EX0 = 0; ET0 = 0; testok = 1; testok = 2; 第五章 系统的软件的调试5.1软件调试采用PROTEUS软件进行仿真,本设计要对超声波进行发射和接收,但由于在PROTEUS元件库存中没有超声波换能器与集成电路CX20106A,就不能直接进行仿真,所以便采用单片机模拟超声波反射。当单片机U4接收到信号后延时一定时间后,经P1.1输出一个5us的低电平
38、信号,延时时间由三个开关选择。仿真图如图5-1所示。图5-1 超声波测距仪仿真图超声波在空气中的传播的速度344m/s,闭合开关A,发射10ms后收到超声波反射信号,这时测的距离应为:344m*0.01s/2*100cm=172cm。如图5-1所示。图5-2 发射10ms后的仿真图闭合开关B,发射发射20ms后收到超声波反射信号,这时测的距离应为:344m*0.02s /2*100cm =344cm图5-3 发射20ms后的仿真图闭合开关C,发射30ms后收到超声波反射信号,这时测的距离应为:344m*0.03s /2*100cm=516 cm。图5-4 发射30ms后的仿真图总 结在本次设计
39、中,我广泛借鉴了各种设计的优点,充分考虑了整个设计中的各个环节。包括产生40KHz的方波,在接收电路中,对所接收方波进行滤波、放大、整形等步骤。但由于条件和技术所限,对于很多以上所分析的在发射和接收过程中所产生的误差没有得到有效的校正。比如温度误差、硬件电路误差等。在这个毕业设计中,我用到了以前学到的很多知识,比如单片机、和C语言等。这使我意识到,任何一件作品的产生,都不是单一知识所能实现的。而且在电路的设计和程序的编制过程中,出现了很多意想不到的错误,让我措手不及,有些甚至是一些非常低级的错误,但是这些错误也同样让我获益非浅,它使我意识到,研究是一个非常严肃的过程,来不得半点马虎。必须有一个
40、严谨的态度,加上100的努力才有可能获得成功的喜悦。总之,在这次毕业设计过程中我尽管走了很多的弯路,但是还是学到了不少知识,从中受益匪浅。了解了超声波传感器的原理,学会了各种放大电路的分析、设计,也掌握了单片机的开发过程中所用到的开发方法和工具。动手能力与自学能力得到了锻炼与提高,对待事物的态度也发生了变化。理论总是离不开实践的,设计制作过程中,盲目地追寻理论知识根本不足以解决任何问题,一味的死研究课本是不会真正掌握单片机的。只有真正动手去做才能发现问题,解决问题,提高能力。致 谢本次设计和以顺利完成,首先要感谢我的指导老师:谢辉老师的指导和大力支持。谢辉老师渊博的专业知识、严谨的治学态度、精
41、益求精的工作作风、平易近人的人格魅力对我影响深远;谢辉老师指导了我的设计的结构、思路、同时提供了一些专业知识的帮助。同时也感谢四年来授我们以渔的老师们,是你们的教导使得我们获得了知识。表示衷心感谢!参 考 文 献1 刘凤然.基于单片机的超声波测距系统J.传感器世界.2001,5:29-322 李光飞,楼然苗. 单片机课程设计与实例指导M.北京航空航天大学出版社,2004:683 葛健强.基于CPLD的超声波测距仪研制J.无锡商业职业技术学院学报.2004,4(3):8-104 王守中.51单片机开发入门与典型实例M.人民邮电出版社,2009:1055 罗忠辉,黄世庆.提高超声测距精度的方法J.
42、 机械设计与制造.2005,1:1096 秦旭.用LM92温度传感器补偿的高精度超声波测距仪J.电子产品世界.2003,6:58-597 谭洪涛,张学平.单片机设计测距仪原理及其简单应用J.现代电子技术.2004,18:94-968 赵占林.超声波测距系统误差分析及修正J.科技情报开发与经济.2002,12(6):144-1459 张洪润. 单片机应用技术教程M.清华大学出版社,1997:4810 胡汉才.单片机原理及其接口技术M.清华大学出版社,2004:27-4611 吴斌方,刘民,熊海斌.超声波测距传感器的研制J.湖北工学院学报.2004,19(6):26-2812 何希才,薛永毅.传感
43、器及其应用实例M.机械工业出版社,2004:138-15213 苏炜,龚壁建,潘笑.超声波测距误差分析J.传感器技术.2004,23(6):8-1114 楼然苗、李光飞. 51系列单片机设计实例M.北京航空航天大学出版社,2003:8915 何希才.新型集成电路及应用M.科学技术出版社,2001:159附 录附录一:仿真程序主程序清单#INCLUDE #DEFINE UCHAR UNSIGNED CHAR#DEFINE ULONG UNSIGNED LONG#DEFINE UINT UNSIGNED INTSBIT OUT=P37; /发射SBIT IN=P32; /接收SBIT ON=P11; /启动SBIT OFF=P10; /停止 /数码管位选SBIT LED1=P21SBIT LED2=P22;SBIT LED3=P23;/共阳数码管字库UCHAR CODE TAB=0XC0