




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
STYLEREF"标题1"附录2源代码PAGEPAGEIII超音波油量测量仪的设计摘要由于超声波传播不易受到干扰,能量消耗较慢,在介质中传播的距离较长。因此,超声波常用于距离测量,如油量测量仪、液位测量仪等,都可以通过超声波来实现。本系统的设计主要包括两部分,即硬件电路和软件程序。硬件电路主要包括单片机电路、发射电路、接收电路、显示电路、温度补偿模块和电源电路,另外还有复位电路和LED控制电路等。本文采用以AT89C51单片机为核心的低成本、高精度、微型化数字显示超声波油量测量仪的硬件电路。整个电路采用模块化设计,由信号发射和接收、供电、油量测量、显示等模块组成。关键词:AT89C51;超声波;油量测量仪
ABSTRACTInairmedium,theultrasonicrangingsensorbecauseofitsgoodperformance,lowcost,easytouse,intherobotpositioningsystem,vehicleautomaticnavigation,vehiclesafetydrivingassistantsystem,urbantrafficmanagementandmonitoringsystemforhighwaymanagement,aswellastheriver,thewellandtheexplorationofthewarehouseandmateriallevelareused.Duetotheultrasonicpropagationisnoteasytointerference,energyconsumptionslow,inthemediumtransmissiondistanceisfarther,soultrasonicoftenusedfordistancemeasurement,suchasrangefinderandlevelmeasurementinstrumentcanbedonebyultrasound.Thedesignofthissystemmainlyincludestwoparts,namely,thehardwarecircuitandsoftwareprogram.Hardwarecircuitmainlyincludingmicrocontrollercircuit,transmittingcircuit,receivingcircuit,displaycircuitandpowersupplycircuit,andresetcircuitandLEDcontrolcircuit,etc.BasedontheAT89C51single-chipmicrocomputerasthecoreoflowcost,highprecision,miniaturization,digitaldisplay,thehardwareoftheultrasonicrangefinder.ThewholecircuitUSESmodulardesign,thesignaltransmittingandreceiving,powersupply,suchastemperaturemeasurement,displaymodules.Keywords:AT89C51;Ultrasound;Rangefinder
目录第1章绪论 11.1研究背景 11.2研究意义 11.3国内外研究现状 2第2章超声波油量测量的原理及误差分析 42.1超声波油量测量的原理 42.2超声波油量测量误差分析 5第3章系统硬件设计 73.1发射电路设计 73.1.1发射电路设计方案 83.1.2发射电路常用方案 83.2接收电路设计 93.3单片机显示电路设计 113.3.1LCD显示部分 133.3.2报警部分 143.4温度补偿模块 14第4章软件设计和测量结果分析 164.1系统软件设计 164.2外部中断子程序 194.3定时器中断子程序 21总结与展望 23参考文献 24致谢 25附录1系统整体图 26附录2源代码 27PAGE32第1章绪论1.1研究背景超声波检测技术是在电子学、材料学、物理学等多种学科的基础上研发的,能够进行非接触测量,能够在众多领域应用。作为波的一种,超声波具有波的所有性质。超声波检测主要是通过超声波、在介质中的传播以及接收超声波回波的物理形式来进行的。超声波主要是因为机械振动而产生的,能够在不一样的结构通过不一样的速度来进行传递。在空气介质中,轻尘、轻烟、电磁干扰和有毒气体不会影响超声燃料测量传感器的性能。此外,超声波还具有成本效益和易于使用。由于超声波具有很强的方向性,能量消耗较慢,在介质中传播的距离较长。因此,超声波常被用于距离测量,如超声波测距仪和液位测量仪,这些都可以通过超声波来实现。为了使移动机器人能自动避障行走,就必须装备测距系统,以使其及时获取距障碍物的距离信息(距离和方向)。超声波测距系统,就是为机器人了解其前方、左侧和右侧的环境而提供一个运动距离信息。1.2研究意义随着中西部地区的不断发展,我国的油品计量行业也迎来了新的发展空间,同时也对油品计量系统技术提出了更高的要求。液位控制技术比油量系统控制技术更为重要。一项技术也成为衡量石油公司技术含量的一项指标。传统的液位控制不能进行远距离集中控制,自动化程度低,调节精度差等,不能单靠手工操作来适应。随着科学技术的不断进步,控制系统改造的必要性,被控对象越复杂,对控制精度的要求就越高。由于被控对象和过程的非线性、时变性,多参数间的强耦合、随机干扰等因素,使得建立被控对象的精确数学模型变得很困难。在这些复杂的系统面前,传统的控制方法无法满足控制精度,而且系统稳定性差。具有体积小、安装方便、功能齐全、性价比高等优点。因此,它具有广阔的应用前景,有助于识别可能存在的故障。通过微型计算机对燃烧和供水系统进行自动控制和调节,保证供油正常到供气,保持系统稳定,保证安全经济运行。随着科技的不断攀升,现在的油量控制基本上都能实现全自动化,且在安全性、实用性、经济性上都给予了充分的考虑,此设计在全面考虑各方面要求的基础上,利用单片机系统的小巧便利可行实惠做出了油量液位控制系统。1.3国内外研究现状最近几年,超声波技术有了一定的成果,加上它本身存在的高精度、无损以及非接触等优势,使得超声波技术在众多领域中得到了应用,比如材料科学、医学、生物科学等等方面。超声波油量测量技术是在声学、仪器工程学科的基础上形成的边缘技术学科。它在移动机器人、汽车主动碰撞系统、交通车流检测系统等等多个方面都得到了广泛的应用,且有不错的成效。从控制系统的角度来看,一个测量精准度高、抗干扰能力强的传感器具有重要的意义,因此超声波传感器在超声波油量测量系统中不可或缺。KimiyukiMitsui,MakotoKoike,HidehikoTsukamoto则在像散焦点差探测理论的基础上提出了超声传感器。在进行超声波油量测量时,精度十分重要。李茂山等学者仔细的讲述了超声波的测量距离原理,并画出了详细的进行超声波油量测量的流程图,还提出了几种对超声笔油量测量造成影响的因素。本文设计中,简略的说到过超声波油量测量误差产生的主导因素和对超声笔测长仪的校正;以郑丰隆为代表的学者为了让超声波的精度更高,从硬件方面设计了一种外围电路,以此提高技术参考频率,最后让仪器系统精度有所提升。让系统在10米以内的范围的满度相对误差低于0.1%;以葛万成为代表的学者对超声笔的传播的运行具体时间进行了研究,借助于一个经过适当选择的伪随机二进制序列信号作为超声波的发送信号,可通过相应的方式把外部带来的干扰信号的影响消除或者降低到最小限度,以此提高了精准度。系统中采样周期为50us时,距离误差为8。Smm;FigneroaJ.F.,LamancuseJ.S.研发了一种计时方式,主要利用回波时延由峰值时延和相位时延相加而得的方式,两者主要是应用不一样的检测方式来得到峰值时延以及相位时延的,两者相加就是回波传播的时间;本文系统的测量限制为2米,改进之后测量盲区为10cm。在测试系统中,单片机能够让系统变得简单,还能够通过软件对测试信号进行数字滤波、波行整形以及误差补偿等等操作。韩宝亮以及孙伟细两位学者详细的讲述了测量距离的理论,和以单片机为主导的硬件构造,对于不一样的反射面被测物对超声油量测量的影响做了详细的研究,并深入的研究了盲区产生的因素。在空气中,油量测量的最大范围为5米,量程在一半以上时,测量的精度为0.01。
第2章超声波油量测量的原理及误差分析超声波发射器向一定的方向发射超声波时开始计时,当超声波遇到障碍的时候会立刻返回,超声波接收器会接收到返回的信号,并且停止计时。超声波以340米/秒的速度在空气中传播。当我们把计算器记录为时间t时,我们可以得到从发射点到障碍物的距离,距离用s表示,则s=340t/2。这就是所谓的时间差油量测量法。2.1超声波油量测量的原理超声波在媒质中的反射、折射、衍射、散射等传播规律,与可听声波的规律没有本质上的区别。但是超声波的波长很短,只有几厘米,甚至千分之几毫米。直线传播的能力越强,超声波的波长越短,这种特性就越显著。功率特性──当声音在空气中传播时,推动空气中的微粒往复振动面对微粒做功。声波功率就是表示声波做功快慢的物理量。在相同强度下,声波的频率越高,它所具有的功率就越大。由于超声波频率很高,所以超声波与一般声波相比,它的功率是非常大的。空化作用──当超声波在液体中传播时,由于液体微粒的剧烈振动,会在液体内部产生小空洞。这些小空洞迅速胀大和闭合,会使液体微粒之间发生猛烈的撞击作用,从而产生几千到上万个大气压的压强。这种粒子间的剧烈相互作用使液体的温度突然升高,起到良好的搅拌、乳化两种不混溶液体(如水和油)的作用,并加速溶质的溶解和加速化学反应。这种由超声波作用在液体中所引起的各种效应称为超声波的空化作用。超声波测油原理跟雷达的原理是相同的。油量测量的公式表示为:L=C×T上式中的L表示为实际距离;C表示为超声波在空气中的传播速度;T表示为时间差。超声波油量测量技术在倒车提醒、建筑工地以及工业现场等领域应用的较为广泛,当前最大的测程为100m,在精度上还有所欠缺,只能够精确到1cm。超声波有定向发射、方向性好、强度易控制以及与被测量物体不用直接接触测量等等优点,是测量液体高度的理性方式。而在液位测量精度需要达到1mm,而我国目前只能够做到1cm的精度。因此仔细的研究了超声波油量测量误差产生的主要因素,然后把测量时间差精确到了1μs,还对LM92油量传感器进行了声波传播速度的补偿,最后设计出的超声波油量测量仪能够精确到1mm了。2.2超声波油量测量误差分析通过超声波的油量测量公式L=C×T,我们能够知道油量测量的误差因素有两点:1.超声波的传播速度;2.测量距离传播的时间。1)时间误差如果需要油量测量误差精确到毫米级,那么就假设超声波的速度C=344m/s,把.超声波的传播速度误差忽视。则油量测量误差s△t<(0.001/344)≈0.000002907s,也就是2.907微秒。如果超声波的传播速度是准确的,那么就只有把测量距离传播的时间精确到1μs,才能够保障距离误差在毫米级。应用12MHz晶体作为时钟基准的89C51单片机定时器可以把计算精度到微秒级,所以,本设计选用了是89C51定时器,以保障距离误差在毫米级。2)超声波传播速度误差考虑到环境温度对超声波传播速度的影响,通过温度补偿的方法对传播速度予以校正,以提高测量精度。超声波速度与油量的关系如下所示:r表示为气体定压热容与定容热容的比值,空气为1.40,R表示为气体普适常量,8.314kg·mol-1·K-1,M表示为气体分子量,空气为28.8×10-3kg·mol-1,T表示为绝对温度,273K+T℃。公式近似为:C=C0+0.607×T℃其中C0表示零度时的声波速度332米/秒;T表示为实际温度(℃)。当超声波的距离精度到了毫米级时,就应当思量超声波的传播速度的温度。比方说在0℃时,超声波的传播速度为332米/秒,在30℃时,传播速度为350米/秒,而因为油量的差异让超声波速度产生了18米/秒的变化。如果30℃的油量中,超声波用在0℃油量传播速度计算,就会有5米的误差,也就是1米就有5mm的误差。超声波发生器的两种类型如下所示:(1)用电气方式产生超声波。有压电型以及电动型两种形式;(2)用机械方式产生超声波。包括加尔统笛、液哨以及气流旋笛等方式。它们所产生的超声波的频率、功率、和声波特性各不相同,因而用途也各不相同。当前在进行近距离的测量时,只需要选用一般的压电式超声波换能器即可。
第3章系统硬件设计本设计中的硬件的主要结构有单片机系统及显示电路、超声波发射电路、超声波检测接收电路以及油量补偿电路。目前的超声检测技术已得到一定程度的改进。当使用超声波技术测量多种目标时,超声波的传输和接收性能将会不足。超声波的作用与其大小、形状以及灵敏度都没有直接的关系,因为它们的原理都是相同的,因此需要提升超声测量的精度以及分辨力都需要在超声波的发射以及接受中着手,这是改良超声波测量仪器的重点与难点。本设计中的发射电路选用的是单片机P1.0端口,编程输出的是40KHz左右的方波脉冲信号,此外,还开启了内部计数器T0。因为单片机端口输出的功率比较微弱,因此需要在电路中加上功率放大电路以达到油量测量的要求,以此让驱动超声传感器UCM-40T1发射超声波的距离较远。本设计选用的是CX20106A集成电路,让它对接受探头接收到的信号进行放大、滤波操作,信号会通过P2.7端口传送到单片机中做最后的处理。从成本的角度出发,本文的显示电路会选用动态扫描显示。距离信息会通过单片机中的时间计数来得到,最后会在LED数码管上显示。3.1发射电路设计超声波的发射部分主要是让超声波发射器TCT40-16T能够产生了40kHz左右的方波脉冲信号而设计的。一般产生40kHz左右的方波脉冲信号有以下两种方式:(1)使用由555振荡产生或软件编程输出;(2)用由单片机软件编程输出。本文选用的就是这种方式,编程是由单片机P1.0端口输出0kHz左右的方波脉冲信号,但是单片机的端口输出功率不能够满足要求,使40kHz方波脉冲信号变成了两路,其中一个给了由74HC04组成的推挽式电路来用作功率放大,使发射的距离增大,以达到油量测量的需求,另一个则给了超声波发射换能器TCT40-16T,最后以声波的形式发射到空气中。发射部分的电路,如图3-1所示。图中输出端上拉电阻R31,R32有两个作用,第一,为反向器74HC04输出高电平增加驱动力,第二,增强超声换能器的阻尼效果,以减少它自由振荡的时间。图3-1图3-1超声波发射电路框图3.1.1发射电路设计方案①发射波形的重复性为了得到高的分辨力,发射电路应当要保障发射的超声波波形的重复率较高;另外,发射的超声波有尽可能的简单,也就是发射波的多个振动频率尽量是一样的,方便接收时使用带通滤波器消除干扰以及保障每以次接收到的是相同的一个振动波峰。这主要是为了减少超声波在障碍物表面反射时引起的多种损耗以及影响。超声波就是在换能器电晶片振动时由周围的空气而产生的波形,它的波形与晶片振动的频率应当是一样的。因此,发射电路的设计要科学,以减少对发射功率以及波形重复性的影响。发射电路的发射方法有以下三种:单脉冲发射、多脉冲发射以及连续发射。超声波油量测量间断性单脉冲发射就是每油量测量一次,发送、接收一次。间断地激发换能器晶片振动方式测量的距离不远;本文选用的是间断多脉冲发射,系统会根据自动识别被油量测量的距离来设定发射脉冲个数。②发射波形电压及功率传感器所发射的电压大小直接关系到发射信号的损耗和接收机的灵敏度。通过分析双向传播损耗、声透射损耗、声反射损耗和环境噪声损耗,可以研究电压大小与损耗之间的关系。此外,还可以对实际发射传感器的最大电压(20Vp-p)和系统正常工作时的最大电压(5V)进行分析,发射信号的功率与发射探头传递的信号距离有直接的联系,因此需要把电压与功率都进行具体的研究,然后设计出最科学的发射电路。3.1.2发射电路常用方案上面我们对发射电路进行了具体的分析,能够知道发射电路的合理性就影响发射探头的电压、功率高低的主要因素。本设计选用的是单片机P1.0发射一组方波脉冲信号,它的输出波形较为稳定,但是它的输出电流、功率都比较的低,不能够达到推动发射传感器产生较强的超声信号的要求,因此我们在中间加入了一个单电源乙类互补对称功率放大电路,下图3-2即是。图3-2超声波发射电路3.2接收电路设计当接收换能器晶片接收超声波的垂直的行动,它会产生越来越强烈的机械振动由于共振,因为压电效应晶圆形式双方交替的等量异号电荷,但电荷的数量并不多,导致只能够提供一个弱交流电压信号,没有多余的电流信号。因此,自此应当加入一个前置放大电路是交变电压信号变大。此外,还要对有可能产生影响信号的因素进行处理,可以再加上一个滤波信号,驱动后的比较器输出电位跳变,作为确定接收到的时刻。下图3-3即是前置放大电路图,它主要把有用的信号放大,以及减少噪声的影响,使信噪比变化最大,并方便后面电路的设计。图3-3前置放大电路图由于超声换能器的输出电阻一般都比较大,所以前置放大器应当要有很大的输出阻抗;另外,换能器的输出电压一般都很低,因此前置放大器就必须要有很高的精度以及很小的输入偏置电压。前置放大器是一个反向比例的放大器,能够避免地线噪声的干扰,它的主要组成部分有阻抗放大器TL082、电阻R、以及R。根据基本的电路知识,可列出下式:I(3-2)I(3-3)理想放大器的重要特征有:1.集成运放两个输入端之间的净输入电压U一般是接近于零的,也就是U=U-UO,理想中U=0,它不是短路,被人们取名为虚短。2.集成运放两输入端基本上不用电流,也就是净输入电流I0,理想中,它不是真正的断开,被人们取名为虚断。故可知本电路中:U,且I所以有(3-4)上式即是输出电压与输入电压的关系式,其中“-”表示与相反。(3-5)上式即是电压放大关系式,交直流输入信号可以通过反相比例放大器来放大,它的电路设计比较容易,调节、的值即可增大电压放大倍数。运放的同相输入端连接着,在选择参数时,要让两端的外接电流通路等效电阻平衡,也就是令,在静态的时候,要让输入级偏置电流平衡,且使运算放大器的两个输入端的外接电阻上有相同的压降,来达到消除放大器的偏置电流以及漂移对输出端的影响的目的,故又称为平衡电阻。本系统需要的接收接收传感器输出电压很小,所以令;;,即放大电路将输入信号放大200倍。3.3单片机显示电路设计显示器作为一个输出装置,应用是十分广泛,绝大多数的电子设备都需要用到显示器,它最大的差别也就是在结构类型上。综合课题的实际要求由数码管,通过单片机编程实现显示,表示距离的XXXcm数值。LED数码管显示与单片机接口一般有3个常见的问题:(1)采用共阴极管或者共阳极管显示(2)由数码转换为笔划信息借软件译码或者硬件译码(3)使用动态扫描或者静态扫描的方式显示上面说到的问题(1)选用共阴极管或者共阳极管显示,这点没有上面影响。下面3-4(a)即是数码管,一个数码管中8个发光二极管,组成“8”形式的七个数码管的编号分别为a、b、c、d、e、f、g,还有一个为小数点,标为DP。如果某一端的发光二极管被导通,则那一段将会发光,因此是通过控制二极管的导通来显示数值的。发光二极管的阴极管并联在一起的时候被称之为共阴,下图中的(b)即是;而发光二极管的阳极并联在一起时被称之为共阳,下图中的(c)即是。图3-4数码管结构图问题(2)所说的软件译码即是把所有数码的笔划信息建立一个表格预储于内存中,后面就会按照显示的每一数码管来进行一段查表程序,查的与之对应的笔画会传输到相应的数码管上显示;硬件译码采用的是BCD码七段锁存、译码以及驱动芯片将笔画直接翻译过来。问题(3)所说的动态扫描显示是在单片机中应用较为广泛的一种方式。它的接口电路是把显示器中的8个数段都连接在一起,所有的显示器的公共极COM都是受到自己独有的I/O线控制。CPU在向字段输出口输出字形码的时候,每一个显示器都收到的字形码都是一样的,但是具体哪一个亮是受到COM端控制的,也就是I/O控制,因此我们就可以自由的控制哪个亮哪个暗。动态扫描显示使用的是分时的方式,按顺序控制COM端,让所有的显示器有顺序的亮。在轮流点亮扫描显示中,所有的显示器的点亮时间都是一样的,且短,但是因为人们的视觉以及发光二极管的余辉效果能够让人们看到一组稳定的显示数据,不过这需要扫描的速度快。采用静态扫描方式控制点亮LED数码管无位选信号,各数码管是同时点亮的;每数码管应显示数码的笔划信息也分路同时送给。其原理比较简单。静态扫描显示编程容易,显示比较清晰,亮度一般较高;但要求占用很多I/O接口线和增用不少硬件芯片,成本较高。因此,动态扫描用得更多。图3-5显示部分电路图上面我们对3个问题进行了详细的分析,从成本的角度出发,本文的电路图即为上图3-5所示,选用的是3位共阴极数码显示管,显示字符通过单片机的P2口传输到锁存器74HC574锁存,在到显示驱动芯片ULN2003驱动数码管来进行显示,P0.1-P0.3是对3位字符进行控制的。3.3.1LCD显示部分本系统的显示部分选用的是字符型TC1602液晶。TC1602显示的容量为2行16个字。因为液晶显示屏相对于数码管有很多的优势,如微功耗、体积小、显示内容丰富等等。在应用的时候,可以把P0与LCD的数据线相连,P2口与LCD的控制线相连,如下图3-6:图3-6TC1602液晶显示电路图中的TC1602第4脚RS表示为寄存器选择,第5脚RW表示为读写信号线,第6脚E表示为使能端。第7-14脚:D0-D7表示为8位双向数据线。需要格外留意的是:为了布线方便,单片机端的D0-D7是接到LCD/602的D1-D0,正好相反,所以在编写软件时应当做一些处理,以达到读数准确的目的。3.3.2报警部分选用的是一个蜂鸣器,由P1.2输出一定频率的信号,在连接到蜂鸣器之前,通过一个三极管9012放大。报警部分的连线,如图3-7所示。图3-10报警电路3.4温度补偿模块由于声音的速度在不同的温度下有所不同,因此为提高精度,应通过温度补偿对超声波的传播速度进行校正。系统采用DS18B20传感器测量温度,DS18B20温度传感器具有不受外界干扰、精度高、测温范围宽等优点。单片机口接DS18B20数据总线,控制DS18B20进行温度转换和传输数据,数据总线接10kΩ的上拉电阻,作用是使总线控制器在温度转换期间无需一直保持高电平。图3-11温度传感器DS18B20电路图3-12温度补偿模块电路
第4章软件设计和测量结果分析4.1系统软件设计系统程序结构:(1)DS18B20油量传感器接口有三个模块,即初始化程序、写入命令、读取子程序;(2)在YB1602的显示模块的基础上可以把它分为初始化子程序、写入子程序、显示子程序;(3)油量补偿与距离计算模块有超声波发送控制程序、接收处理程序、油量补偿子程序等;(4)本系统使用C语言编写程序,C语言相比汇编有诸多的优点;编译器使用KeilVersion2进行程序编译,Keil功能强大使用方便。主程序有系统初始化、按键处理、各个子程序的调度管理等部分。如图4-1所示描述了各个模块的关系:图4-1系统软件方框图系统主程序:本设计主程序的思想如下:(1)油量为两位显示,距离为四位显示单位为mm;(2)油量每隔900ms采样一次,DS18B20在12位精度下转换周期为750ms,因此900ms能达到速度的需求;超声波每隔60ms发送一次。(3)按键S为测量启动键;(4)系统采用AT89S52的内时钟:12MHz;(5)没有使用看门狗功能;(6)超声波发送一定时间后才开始启动检测,减少直达信号引起的干扰。因此系统最小测量在112mm左右;系统主程序如下:voidmain(void){uchari,j;for(i=0;i<255;i++)for(j=0;j<255;j++);//延时,等待系统外围复位完成sys_init();//初始化display();//显示sta_flag=0;//标准复位waitforstarting://检测按键while(START);for(i=0;i<20;i++)delay1ms();if(START)gotowaitforstarting;BUZZER=0;//蜂鸣器鸣音一次提示按键按下i=100000;while(i--);BUZZER=1;i=100000;while(i--);TR0=1;//启动定时器0ET0=1;testtemp();//启动油量转换while(1){if(sta_flag)//60MS到了,超声波已经发送{while(0==CSBIN);//等待超声波返回TR1=0;jsh=TH1;//停止计数jsl=TL1;if(15==count)//1S到,检测油量{temp=wd();count=0;testtemp();//重新启动转换display();//刷新显示}computer();//计算距离hextobcd();//转化成BCD码sta_flag=0;//标志清零}}}voidsys_init(void){uchari;for(i=0;i<29;i++)//显示清零{num[i]=0;}TMOD=0x11;TH0=0x15;TL0=0xA0;P0=0;CNT=0;//超声波发送关闭CSBIN=1;EA=1;//开放总中断Init_LCD();}4.2外部中断子程序如图所示,中断服务程序是响应单片机的外部中断。图4-2外部中断子程序在本设计中,发射的40KHz脉冲信号在遇到障碍物之后,会出现反射的现象,然后接受探头传感器会把外中断信号传输到单片机中。在中断服务例程中,首先进行现场保护,然后读取进入中断服务例程的计数值,处理数据计算距离值,将其转换为十进制的数值,最后发送给P2端口显示输出。voidJULIJS()//使用全局变量,可以定义为空{floatc,d,s;uintt;if(temp<0x8000)c=331.4+0.61*temp*0.0625; else //油量为负c=331.4-0.61*temp*0.0625;t=jsh*256+jsl-120; //计算计数值d=(c*t*0.001)/2;d*=d;s=d-7.98;distance=sqrt(s); //修正后的值,数据通过全局变量distance传输}/****************转换成2进制***************/voidHEXtoBCD() {floattp;unsignedlonginttmp;fuhao=0; //油量符号位if(temp<0x8000)tp=temp*0.0625;else //油量为负,则求补码得到原码{BUMA();tp=temp*0.0625;fuhao=1;}tp*=10;tmp=tp;num[12]=tmp/100; //数据转换后放到显示数组里面if(fuhao)num[12]=num[12]|0x80; //最高位加上符号位num[13]=tmp/10-(tmp/100)*10;tmp=distance;num[25]=tmp/1000;tmp%=1000;num[26]=tmp/100;tmp%=100;num[27]=tmp/10;tmp%=10;num[28]=tmp/1;}4.3定时器中断子程序下图4-3即是定时器的定时中断子程序流程。本文选用的是51单片机,它是16位定时器,最大计时时间是65536us,如果测量的距离非常远,定时器就会自动溢出;因此需要对溢出中断进行详细的设置,以此让51单片机正常运行。此外,电路的最大测量距离为5米。如果测量距离大于5米,则无法通过接收探头测量回波,这意味着不会产生外部中断,并且不能执行关闭定时器的操作。图4-3定时中断子程序流程程序如下:voidtimer1(void)interrupt2using1 {TR1=0;} //关闭定时器/计数器1 /*********定时器0溢出中断函数,每60MS溢出****************/voidtimer0(void)interrupt1using0 //定时器0{TH0=0x15;TL0=0xA0; //定时器0设定初值TH1=0; TL1=0; //计数器1清零sta_flag=1; count++;_nop_();_nop_();_nop_();_nop_();CNT=1; //先延时,后开始发送40KHz的超声波_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();//40KHZ的倒数就是25us,12个_nop_();就是24usCNT=0; //保持一段时间高电平_nop_();_nop_();_nop_();_nop_();TR1=1; //延时,避免直达信号干扰,启动定时器/计数器1delay15(50); //延时避开直达信号}
总结与展望超声波油量测量的原理是利用超声波的发射和接收,根据超声波传播的时间来计算出传播距离。实用的测距方法有两种,一种是在被测距离的两端,一端发射,另一端接收的直接波方式,适用于身高计;另一种是发射波被物体反射回来后接收的反射波方式,适用于测距仪;此次设计采用反射波方式。超声波油量测量仪单片机采用AT89C51。采用12MHz高精度的晶振,以获得较稳定时钟频率,减小测量误差。单片机用P1.0端口输出超声波换能器所需的40kHz的方波信号,利用外中断0口监测超声波接收电路输出的返回信号。显示电路采用简单实用的4位共阳LED数码管,段码用74LS244驱动,位码用PNP三极管8550驱动。本系统是以AT89C51单片机为核心,通过模数电技术以及单片机技术的结合,解决了超声波油量测量的存在的一些问题。利用单片机的操作和控制功能,利用超声波的特性,设计了一套简单的油量测量系统。超声波检测的使用往往快捷、方便、计算简单、易于实现实时控制,并能在测量精度方面满足工业和实际的要求。随着科学技术的飞速发展,超声波的应用将越来越广泛。当前的超声波技术水平还有很多的缺陷,所以,这是一个正在蓬勃发展而又有无限前景的技术以及产业领域。从课题选择、方案论证到具体设计,我查阅了大量的资料。对一些疑难的问题,我得到了老师和同学的帮助。在三年的专科学习和生活期间,也始终感受着导师的精心指导和无私的关怀,我受益匪浅。在此向老师们表示深深的感谢和崇高的敬意。
参考文献[1]陶洁,肖桂凤,迟权德.基于AT89C52单片机的超声波油量测量仪的设计[J].电子设计工程,2012,02:135-137+140.[2]李翠花,梁德民,周晓美.高精度的超声波油量测量系统的设计与实现[J].合肥学院学报(自然科学版),2012,01:41-44.[3]沈燕,高晓蓉,孙增友,李金龙.基于单片机的超声波油量测量仪设计[J].现代电子技术,2012,07:126-129.[4]刘春,陈林.探析基于单片机油量测量仪的设计与实现[J].制造业自动化,2012,09:140-142.[5]徐军,孙振伟,王华东.基于ARM处理器的两路超声波油量测量仪设计[J].压电与声光,2012,06:958-962.[6]张敏,寇为刚.基于超声波的自动油量测量系统设计[J].自动化技术与应用,2011,04:106-110.[7]李世军,周惠芳,金徐欢.基于单片机的超声波油量测量仪的研究与设计[J].湖南工程学院学报(自然科学版),2011,02:13-15.[8]安长俊,周家婕.基于PICmicro系列单片机的超声波油量测量仪设计[J].科教文汇(上旬刊),2011,08:104+106.[9]张海英.基于单片机超声波油量测量仪的设计[J].科技信息,2011,22:557-558.[10]高美霞,柏建普.单片机控制的超声波油量测量仪汽车倒车系统的设计[J].自动化技术与应用,2011,11:58-60+65.[11]孔德华.谈超声波油量测量仪硬件系统中的单片机系统[J].电子世界,2011,15:13+16.[12]张野.基于STC89C52单片机的超声波油量测量仪设计[J].科技与企业,2015,03:91.[13]虞新军,邓玉良.基于MSP430单片机控制的超声波油量测量仪软件系统设计[J].科技传播,2015,10:161+160.[14]于姣.基于单片机带油量补偿的超声波油量测量仪设计[J].电子科技,2015,08:56-59.
致谢本论文是在导师的谆谆教诲和指导下完成的,从选题、构思到定稿无不渗透着导师的心血和汗水;导师渊博的知识和严谨的学风使我受益终身,在此表示深深的敬意和感谢。这次写论文的经历也会使我终身受益,我感受到,做论文是要真真正正用心去做的一件事情,是真正的自己学习的过程和研究的过程。没有认真学习和钻研,自己就不可能有研究的能力,就不可能有自己的研究,就不会有所收获和突破。希望这个经历,在今后的学习和生活中能够继续激励我前进。另外,还要特别感谢我的家人,他们时刻关心我,给我提供了学习的机会,时时刻刻为我鼓劲、为我加油,进而促使我不断成长和进步。同时,也要感谢寝室的室友以及所有关心我的朋友,感谢他们陪伴我走过了很多美好的时光,在我遇到困难时他们关心我、帮助我。在完成毕业论文的过程中,很多朋友都给了我无私的帮助和支持,在此表示由衷的谢意!最后,因本人水平有限,论文肯定还有不少不足之处,恳请各位老师批评指正,我希望可以有机会继续去完善,我将不断努力继续充实自己。
附录1系统整体图
附录2源代码源程序#include<reg52.h>#include<intrins.h>#include<math.h>#defineucharunsignedchar#defineuintunsignedintucharcodedispBUF[33]={"Temperature:Distance:mm"};ucharnumcode[10]={'0','1','2','3','4','5','6','7','8','9'};uintnum[29]={0};ucharjsh,jsl; //计数器的高低位ucharcount=0; //10秒计次数uintdistance; //距离uinttemp; //油量变量ucharbdataflag; //DS18B20存在标准sbitRS=P2^0; //LCDRSsbitRW=P2^1; //LCDRWsbitE=P2^2; //LCDEsbitDQ=P2^7; //DS18B20数字端口sbitBusy=P0^7; //LCD忙voidDelay(uinttime);voiddelay1ms(uintms);voiddelay();voiddelay15(ucharus);voidBUMA(void);voidB20_WDAT(uchardat);ucharB20_RDAT(void);voidInit_18B20(void); //初始化18B20voidWrite_Comm(uchar); //写入LCD命令voidWrite_Data(uchar); //写入LCD数据voidInit_LCD(void);sbitsta_flag=flag^0; //10MS到标准位,flag即通用标志位,当sta_flag=1时,表示到了10mssbitfuhao=flag^1; //油量的符号位sbitSTART=P1^0; //启动油量测量sbitCNT=P2^5; //发射超声波sbitCSBIN=P2^6; //返回信号sbitBUZZER=P3^7;/******************定时器1溢出***************************/voidtimer1(void)interrupt2using1 {TR1=0;} //关闭定时器/计数器1 /*********定时器0溢出中断函数,每60MS溢出****************/voidtimer0(void)interrupt1using0 //定时器0{TH0=0x15;TL0=0xA0; //定时器0设定初值TH1=0; TL1=0; //计数器1清零sta_flag=1; count++;_nop_();_nop_();_nop_();_nop_();CNT=1; //先延时,后开始发送40KHz的超声波_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();//40KHZ的倒数就是25us,12个_nop_();就是24usCNT=0; //保持一段时间高电平_nop_();_nop_();_nop_();_nop_();TR1=1; //延时,避免直达信号干扰,启动定时器/计数器1delay15(50); //延时避开直达信号}/***************系统初始化*************************/voidSYS_INIT(){uchari;for(i=0;i<29;i++) //显示清零{num[i]=0;}TMOD=0x11; //工作方式寄存器TMOD,设置定时器/计数器0和1均为16位定时/计数器TH0=0x15;TL0=0xA0;//设置定时器/计数器0的初值,60ms溢出P0=0;CNT=0; //P2^5口,发射发射超声波CSBIN=1; //P2^6口,接收信号EA=1; //开总中断}/******************距离计算***************************/voidJULIJS()//使用全局变量,可以定义为空{floatc,d,s;uintt;if(temp<0x8000)c=331.4+0.61*temp*0.0625; else //油量为负c=331.4-0.61*temp*0.0625;t=jsh*256+jsl-120; //计算计数值d=(c*t*0.001)/2;d*=d;s=d-7.98;distance=sqrt(s); //修正后的值,数据通过全局变量distance传输}/****************转换成2进制***************/voidHEXtoBCD() {floattp;unsignedlonginttmp;fuhao=0; //油量符号位if(temp<0x8000)tp=temp*0.0625;else //油量为负,则求补码得到原码{BUMA();tp=temp*0.0625;fuhao=1;}tp*=10;tmp=tp;num[12]=tmp/100; //数据转换后放到显示数组里面if(fuhao)num[12]=num[12]|0x80; //最高位加上符号位num[13]=tmp/10-(tmp/100)*10;tmp=distance;num[25]=tmp/1000;tmp%=1000;num[26]=tmp/100;tmp%=100;num[27]=tmp/10;tmp%=10;num[28]=tmp/1;}/**************油量转换函数***************************/voidTESTTEMP(){Init_18B20(); //初始化18B20if(flag){B20_WDAT(0xCC); //跳过读序号列号的操作,忽略ROM匹配B20_WDAT(0x44); //发送油量转化命令}}/***********读取油量函数**************/uintGET_WD(void){uinta=0,b=0,t=0;Init_18B20(); //初始化18B20B20_WDAT(0xCC); //跳过读序号列号的操作B20_WDAT(0xBE); //发送读油量命令 a=B20_RDAT();b=B20_RDAT(); //读取一个字节(读出高8位和低8位)t=b;t<<=8;t=t|a; //字节合并return(t); //返回结果给调用}/***************18B20复位函数***********************/voidInit_18B20(){DQ=1; //DQ复位Delay(10);DQ=0; //单片机将DQ拉低Delay(80); //480usDQ=1; //拉高总线Delay(10); //稍做延时后如果x=0则初始化成功,x=1则初始化失败if(DQ)flag=0;elseflag=1;Delay(20);}/*******************读数据******************************/ucharB20_RDAT(void) //读取一个字节{uchari=0;uchardat=0;for(i=8;i>0;i--){DQ=0; //拉低数据线,开始读数据dat>>=1;DQ=1; //拉高数据线,停止读数据if(DQ)dat|=0x80; //拼装处理Delay(15);}return(dat); //注意读取的为补码}/*********************写数据****************************/voidB20_WDAT(uchardat){uchari=0;for(i=8;i>0;i--){DQ=0; //拉低数据线至少15us以作为起始信号DQ=dat&0x01; //取出低位的一位数据Delay(5); //稍作延时DQ=1; //将数据线拉高以作为停止信号dat>>=1; //移位,为写入下一位数据做准备}}/*******************数据转换函数**************************/voidBUMA(){temp=~temp; //按位取反 temp+=1;}/**************************LCD显示函数*******************/voidLCD_DISP(){uchara,b,d;Init_LCD();Write_Comm(0x01); //清显示Write_Comm(0x80); //写首地址for(a=0;a<16;a++){d=dispBUF[a];if((a>11)&&(a<14)) //如果是结果位到num[]里面读取{d=numcode[num[a]]; //待显示的结果}if(14==a){d=0xdf;}Write_Data(d); //写入要显示的数据}Write_Comm(0xc0); //换行,换到第二行for(b=16;b<33;b++){d=dispBUF[b];if((b>24)&&(b<29)){d=numcode[num[b]];}Write_Data(d); //写入要显示的数据(数据传输)}}/*********检查LCD忙状态***********/bitLCD_BUSY() //lcd_busy为1时,忙,等待。lcd-busy为0时,闲,可写指令与数据{bitBS;RW=1;RS=0;E=1;delay1ms(1);BS=(bit)(P0&0x80);E=0;returnBS;}/*******************写指令函数******************************/voidWrite_Comm(ucharlcdcomm) //写指令{ while(LCD_BUSY());RS=0;RW=0;E=1;delay1ms(1); P0=lcdcomm;de
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 个人借款合同民间借贷
- 有关房屋出售委托合同年
- 湖北房屋租赁合同
- 租赁房屋合同协议书
- 消防工程专业分包工程合同
- 建筑施工发包合同
- 电器售后服务合同书
- 事业单位聘用合同文本
- 产品购销合同的细节条款修订书
- 重庆水利电力职业技术学院《建筑结构抗震设计实验》2023-2024学年第二学期期末试卷
- 标准化机房改造方案
- 珠海市第三人民医院中医智能临床辅助诊疗系统建设方案
- 早产临床诊断与治疗指南
- 工程签证单完整版
- 《义务教育数学课程标准(2022年版)》初中内容解读
- 全院护理查房(食管裂孔疝)
- 川教版信息技术六年级下册全册教案【新教材】
- 2024-2025学年统编版语文九年级下册第7课《溜索》任务驱动型教学设计
- (国赛)5G组网与运维赛项备考试题库及答案
- 代写文章合同模板
- 初中体育与健康 50米加速跑及途中跑 教案
评论
0/150
提交评论