版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
-.z.毕业设计报告〔论文〕报告〔论文〕题目:基于51单片机的超声波测距系统设计作者所在系部:******作者所在专业:******作者所在班级:****作者姓名:***作者学号:*******指导教师:***完成时间:****年*月*日中北大学毕业设计〔论文〕任务书姓名:**专业:***班级:*****:********指导教师:***职称:****完成时间:****年*月*日毕业设计〔论文〕题目:基于51单片机的超声波测距系统设计设计目标:利用超声波的指向性强、能量消耗慢、传播距离远等特点,设计实现生活中很多场合如汽车倒车、机器人避障、工业测井、水库液位测量等需要自动进展非接触测距的工作。技术要求:1、熟练使用AT89C51单片机、超声波发射器、超声波接收换能器各种仪器。掌握其原理,学以致用。设计出超声波测距仪的硬件构造电路。2、对设计的电路进展分析能够产生超声波,实现超声波的发送与接收,从而实现利用超声波方法测量物体间的距离。3、对设计的电路进展分析。所需仪器设备:AT89C51单片机、超声波发射器、超声波接收换能器成果验收形式:原理图、仿真结果参考文献:"单片机原理与接口技术"、"传感器应用A"、"电子测量技术"时间安排15周6周立题论证39周13周仿真调试27周8周方案设计414周16周成果验收指导教师:教研室主任:系主任:-.z.摘要超声波是指频率在20kHz以上的声波,它属于机械波的畴。超声波也遵循一般机械波在弹性介质中的传播规律,如在介质的分界面处发生反射和折射现象,在进入介质后被介质吸收而发生衰减等。正是因为具有这些性质,使得超声波可以用于距离的测量中。随着科技水平的不断提高,超声波测距技术被广泛应用于人们日常工作和生活之中。系统的设计主要包括两局部,即硬件电路和软件程序。硬件电路主要包括单片机电路、发射电路、接收电路、显示电路和电源电路,另外还有复位电路和LED控制电路等。我采用以AT89C51单片机为核心的低本钱、高精度、微型化数字显示超声波测距仪的硬件电路。整个电路采用模块化设计,由信号发射和接收、供电、温度测量、显示等模块组成。发射探头的信号经放大和检波后发射出去,单片机的计时器开场计时,超声波被发射后按原路返回,在经过放大带通滤波整形等环节,然后被单片机接收,计数器停顿工作并得到时间。温度测量后送到单片机,通过程序对速度进展校正,结合两者实现超声波测距的功能。软件程序主要由主程序、预置子程序、发射子程序、接收子程序、显示子程序等模块组成。它控制单片机进展数据发送与接收,在一定温度下对超声波速度的校正,还有实现数据正确显示在LED上。另外程序控制单片机消除各探头对发射和接收超声波的影响。相关局部附有硬件电路图、程序流程图。实际的环境对超声波有很大的影响,如外部电磁干扰电源干扰信道干扰等等,空气的温度对超声波的速度影响也很大。此外供电电源也会使测量差生很大的误差。再设计的过程中考虑了这些因素,并给出了一些解决方案。关键词AT89C51超声波测距-.z.目录摘要1第1章绪论11.1课题背景及重要意义11.2国超声检测开展综述11.3超声波测距存在的问题与课题的意义21.4本文主要研究容3第2章超声波测距原理与方法52.1超声波简介52.1.1超声波的三种形式52.1.2超声波的物理性质52.1.3超声波对声场产生的作用52.2超声波传感器介绍62.2.1超声波测距原理及构造6超声波传感器选择9超声波测距的原理9发射脉冲宽度10测量盲区112.3本章小结12第3章系统硬件设计133.1发射电路设计13发射电路设计方案14发射电路常用方案143.1.3超声波发射器的考前须知153.2接收电路设计163.3单片机显示电路设计173.3.1LCD显示局部21报警局部223.4本章小结22第4章软件设计和测量结果分析234.1系统软件设计234.2外部中断子程序274.3定时器中断子程序274.4实现重要功能的程序分析284.4.1实现温度读取功能284.4.2实现根据温度转化声速294.4.3实现距离计算294.5本章小结30第5章结论31致32参考文献33附录134附录235北华航天工业学院毕业论文-PAGE2.z.**工学院毕业论文20101基于单片机的超声测距系统设计第1章绪论1.1课题背景及重要意义近年来,随着电子测量技术的开展,运用超声波作出准确测量已成可能。随着经济开展,电子测量技术应用越来越广泛,而超声波测量准确高,本钱低,性能稳定则备受青睐。超声波是指频率在20kHz以上的声波,它属于机械波的畴。超声波也遵循一般机械波在弹性介质中的传播规律,如在介质的分界面处发生反射和折射现象,在进入介质后被介质吸收而发生衰减等。正是因为具有这些性质,使得超声波可以用于距离的测量中。随着科技水平的不断提高,超声波测距技术被广泛应用于人们日常工作和生活之中。一般的超声波测距仪可用于固定物位或液位的测量,适用于建筑物部、液位高度的测量等。由于超声测距是一种非接触检测技术,不受光线、被测对象颜色等的影响,较其它仪器更卫生,更耐潮湿、粉尘、高温、腐蚀气体等恶劣环境,具有少维护、不污染、高可靠、长寿命等特点。因此可广泛应用于纸业、矿业、电厂、化工业、水处理厂、污水处理厂、农业用水、环保检测、食品〔酒业、饮料业、添加剂、食用油、奶制品〕、防汛、水文、明渠、空间定位、公路限高等行业中。可在不同环境中进展距离准确度在线标定,可直接用于水、酒、糖、饮料等液位控制,可进展差值设定,直接显示各种液位罐的液位、料位高度。因此,超声在空气中测距在特殊环境下有较广泛的应用。利用超声波检测往往比拟迅速、方便、计算简单、易于实现实时控制,并且在测量精度方面能到达工业实用的指标要求,因此为了使移动机器人能够自动躲避障碍物行走,就必须装备测距系统,以使其及时获取距障碍物的位置信息〔距离和方向〕。因此超声波测距在移动机器人的研究上得到了广泛的应用。同时由于超声波测距系统具有以上的这些优点,因此在汽车倒车雷达的研制方面也得到了广泛的应用。1.2国超声检测开展综述在基于传统的测力距离存在不可克制的缺陷。例如,液面测量就是一种距离测量,传统的电极法是采用差位分布电极,通过给电或脉冲来检测液面,电极长期浸泡于水中或其他液体中,极易被腐蚀、电解,失去灵敏性。由于超声波具有强度大,方向性好等特点,利用超声波测量距离就可以解决这些问题,因此超声波测量距离技术在工业控制、勘探测量、机器人定位和平安防等领域得到了广泛的应用。超声波测距电路可以由传统的模拟或者数字电路构建,但是基于这些传统电路构建的系统往往可靠性差,调试困难,可扩展性差,所以基于单片机的超声波测距系统被广泛的应用。通过简单的外围电路发生和接收超声波,单片机通过采样获取到超声波的传播时间,用软件来计算出距离,并且可以采集环境温度进展测距补偿,其测量电路小巧,精度高,反映速度快,可靠性好。1.3超声波测距存在的问题与课题的意义我就影响超声测距误差的几个因素做了分析,并为本系统选择了比拟适合的传感器,即由一支发射探头UCM-T40KI和一支接收探头UCM-R40KI的收发分体式传感器。本节在此根底上就如何具体设计本系统进展详细分析。系统方案在实验室实现小围测距,测试距离约为0.2m—3m米,系统整体构造如下图。图1-1系统设计方案图发射电路采用单片机端口编程输出40kHz左右的方波脉冲信号,同时开启部计数器TO。由于单片机端口输出功率很弱,为使测量距离满足要求,驱动超声传感器UCM-40T发射超声波距离足够远,故在此电路上加功率放大电路。从接收传感器探头UCM-40T传来的超声回波很微弱(几十个mV级),又存在着较强的噪声,所以放大信号和抑制噪声是放大电路必须考虑的。本系统设计此局部电路时采用一级放大和带通滤波电路,中心频率4OKHz左右,放大滤波电路均采用了高速精细运算放大器TL082,输出信号大约在5V左右。由于放大电路输出的信号是连续的正弦波叠加信号,而单片机所能承受的中断响应信号常为下降沿脉冲信号,故信号在放大电路后通过LM393构成的比拟电路,将正弦信号转换成方波信号,用方波的负跳变作单片机的中断输入,使得单片机知道已接收到超声信号,部计数器停顿计时。显示电路采用动态扫描显示,主要是处于节省硬件的考虑。通过单片机编程将部计数得到的时间数据转换为距离信息,通过3位LED数码管显示,数据***,单位cm。语音播报局部就是将所测得的距离实时地,以模拟真人发音的形式报出来,例如“现在距离目标物还有***cm〞或“现在所测得距离为***cm〞。这样可以在视觉有限或不宜用眼观察的情况下发挥更大的用处,或近距离配合视觉系统会此测距仪的优点或方便之处得到最大程度的发挥,使用起来非常的灵活方便。本系统采用一种长时间非易失性语音芯片ISD2560,它采用模拟存储技术,音质好,录放音方便,且可以方便地进展任意语音元素的组合。1.4本文主要研究容本系统硬件局部由AT89C51控制器、超声波发射电路及接收电路、温度测量电路、声音报警电路和LCD显示电路组成。汽车行进时LCD显示环境温度,当倒车时,发射和接收电路工作,经过AT89C51数据处理将距离也显示到LCD上,如果距离小于设定值时,报警电路会鸣叫,提醒司机注意车距。超声波测距器的系统框图如以下图所示:发射电路发射电路接收电路AT89C51LCDDS18B20报警电路图1-2系统设计总框图由单片机AT89C51编程产生10us以上的高电平,由指定引脚输出,就可以在指定接收口等待高电平输出。一旦有高电平输出,即在模块中经过放大电路,驱动超声波发射探头发射超声波。发射出去的超声波经障碍物反射回来后,由超声波接收头接收到信号,通过接收电路的处理,指定接收口即变为低电平,读取单片机中定时器的值。单片机利用声波的传播速度和发射脉冲到接收反射脉冲的时间间隔计算出障碍物的距离,并由单片机控制显示出来。由时序图可以看出,超声波测距模块的发射端在T0时刻发射方波,同时启动定时器开场计时,当收到回波后,产生一负跳变到单片机中断口,单片机响应中断程序,定时器停顿计数。计算时间差,即可得到超声波在媒介中传播的时间t,由此便可计算出距离。图1-3时序图第2章超声波测距原理与方法2.1超声波简介超声波技术是一门以物理、电子、机械、以及材料科学为根底的、各行各业都可使用的通用技术之一。超声波技术是通过超声波的产生、传播以及接收的物理过程完成的。该技术在国民经济中,对提高产品质量,保障生产平安和设备平安运作,降低生产本钱,提高生产效率特别具有潜在能力。因此,我国对超声波的研究特别活泼。2.1.1超声波的三种形式超声波在介质中可以产生三种形式的振荡波:横波,质点振动方向垂直于传播方向的波;纵波,质点振动方向与传播方向一致的波;外表波,质点振动介于纵波和横波之间,沿外表传播的波。横波只能在固体中传播,纵波能在固体液体中和气体中传播,外表波随深度的增加其衰减很快。为了测量各种状态下的物理量多采用纵波形式的超声波。2.1.2超声波的物理性质(1)超声波的反射和折射当超声波传播到两种特性阻抗不同介质的平面分界面上时,一局部超声波被反射;另一局部透射过界面,在相邻介质部继续传播。这样的两种情况称之为超声波的反射和折射。(2)超声波的衰减超声波在一种介质中传播,其声压和声强按指数函数规律衰减。(3)超声波的干预如果在一种介质中传播几个声波,于是产生波的干预现象。由于超声波的干预,在辐射器的周围形成一个包括最大最小的扬声场。2.1.3超声波对声场产生的作用(1)机械作用超声波传播过程中,会引起介质质点交替的压缩与伸,构成了压力的变化,这种压力的变化将引起机械效应。超声波引起质点的运动,虽然位移和速度不大,但是与超声波振动的频率的平方成正比的质点的加速度却很大,有时足以到达破坏介质的程度。(2)空化作用在流体动力学指出,存在于液体中的微气泡在声场的作用下振动,当声压到达一定的值时,气泡将迅速膨胀,然后突然闭合,在气泡闭合时产生冲击波,这种膨胀、闭合、振动等一系列动力学过程称为空化。(3)热学作用如果超声波作用于介质时被介质所吸收,实际上也就是有能量吸收,同时,由于超声波的振动,使介质产生强烈的高频振荡介质相互摩擦产生热热量,这种能量使介质温度升高。2.2超声波传感器介绍总体上讲,超声波发生器可以分为两大类:一类是用电气方式产生超声波,一类是用机械方式产生超声波。电气方式包括压电型、磁致伸缩型和电动型等;机械方式有加尔统笛、液哨和气流旋笛等。他们所产生的超声波的频率、功率和声波特性各不一样,因而用途也各不一样。目前较为常用的是压电式超声波发生器。压电式超声波发生器实际上是利用压电晶体的谐振来工作的。它有两个压电晶片和一个共振板。当它的两极外加脉冲信号,其频率等于压电晶片的固有振荡频率时,压电晶片将会发生共振,并带动共振板振动,便产生超声波。反之,如果两极间未外加电压,当共振板接收到超声波时,将压迫压电晶片作振动,将机械能转换为电信号,这时它就成为超声波接收器了。超声波传感器构造如下:图2-1超声波传感器外部构造图2-2超声波传感器部构造2.2.1超声波测距原理及构造电能或机械能转换成声能,接收端则反之。本次设计超声波传感器采用电气方式中的压电式超声波传感器分机械方式和电气方式两类,它实际上是一种换能器,在发射端它把超声波换能器,它是利用压电晶体的谐振来工作的。它有两个压电晶片和一个共振板。当它的两极外加脉冲信号,其频率等于压电晶片的固有振荡频率时,压电晶片将会发生共振,并带动共振板振动,产生超声波。反之,如果两电极间未外加电压,当共振板接收到超声波时,将压迫压电晶片作振动,将机械能转换为电信号,就成为超声波接收器。在超声波电路中,发射端输出一系列脉冲方波,脉冲宽度越大,输出的个数越多,能量越大,所能测的距离也越远。超声波发射换能器与接收换能器其构造上稍有不同,使用时应分清器件上的标志。超声波测距的方法有多种:如往返时间检测法、相位检测法、声波幅值检测法。本设计采用往返时间检测法测距。其原理是超声波传感器发射一定频率的超声波,借助空气媒质传播,到达测量目标或障碍物后反射回来,经反射后由超声波接收器接收脉冲,其所经历的时间即往返时间,往返时间与超声波传播的路程的远近有关。测试传输时间可以得出距离。假定s为被测物体到测距仪之间的距离,测得的时间为t/s,超声波传播速度为v/m·s-1表示,则有关系式(2-1)s=vt/2(2-1)在精度要求较高的情况下,需要考虑温度对超声波传播速度的影响,按式(2-2)对超声波传播速度加以修正,以减小误差。v=331.4+0.607T(2-2)式中,T为实际温度单位为℃,v为超声波在介质中的传播速度单位为m/s。超声波为直线传播方式,频率越高,绕射能力越弱,但反射能力越强,为此,利用超声波的这种性质就可制成超声波传感器。它是一种将其他形式的能转变为所需频率的超声能或是把超声能转变为同频率的其他形式的能的器件。目前常用的超声传感器有两大类,即电声型与流体动力型。电声型主要有:1.压电传感器;2.磁致伸缩传感器;3.静电传感器。流体动力型中包括有气体与液体两种类型的哨笛。由于工作频率与应用目的不同,超声传感器的构造形式是多种多样的,并且名称也有不同,例如在超声检测和诊断中习惯上都把超声传感器称作探头,而工业中采用的流体动力型传感器称为“哨〞或“笛〞。压电传感器属于超声传感器中电声型的一种。探头由压电晶片、楔块、接头等组成,是超声检测中最常用的实现电能和声能相互转换的一种传感器件,是超声波检测装置的重要组成局部。压电材料分为晶体和压电瓷两类。属于晶体的如石英,妮酸锂等,属于压电瓷的有锆钛酸铅,钦酸钡等。其具有以下的特性:把这种材料置于电场之中,它就产生一定的应变;相反,对这种材料施以外力,则由于产生了应变就会在其部产生一定方向的电场。所以,只要对这种材料加以交变电场,它就会产生交变的应变,从而产生超声振动。因此,用这种材料可以制成超声传感器。A压电晶片B传感器的主要组成局部是压电晶片,当压电晶片发射电脉冲鼓励后产生振动,即可发射声脉冲,是逆压电效应。当超声波作用于晶片时,晶片受迫振动引起的形变可转换成相应的电信号,是正压电效应。前者用于超声波的发射,后者即为超声波的接收。超声波传感器一般采用双压电瓷晶片制成。这种超声传感器需要的压电材料较少,价格低廉,且非常适用于气体和液体介质中。在压电瓷上加有大小和方向不断变化的交流电压时,根据压电效应,就会使压电瓷晶片产生机械变形,这种机械变形的大小和方向A压电晶片BA压电晶片B图2-3双压电晶片示意图双压电晶片如图2-3所示,当在AB间施加交流电压时,假设A片的电场方向与极化方向一样,则下面的方向相反,因此,上下一伸一缩,形成超声波振动。图2-4双压电晶片的等效电路图双压电晶片的等效电路如图2-4所示,为静电电容,R为瓷材料介电损耗,并联电阻Cm和Lm为机械共振回路的电容和电感,为损耗串联电阻。压电瓷晶片有一个固定的谐振频率,即中心频率ƒo。发射超声波时,加在其上面的交变电压的频率要与它的固有谐振频率一致。这样,超声传感器才有较高的灵敏度。当所用压电材料不变时,改变压电瓷晶片的几何尺寸,就可非常方便的改变其固有谐振频率,利用这一特性可制成各种频率的超声传感器。超声波传感器采用双晶振子,即把双压电瓷片以相反极化方向粘在一起,在长度方向上,一片伸长另一片就缩短。在双晶振子的两面涂敷薄膜电极,其上面用引线通过金属板(振动板)接到一个电极端,下面用引线直接接到另一个电极端。双晶振子为正方形,正方形的左右两边由圆弧形凸起局部支撑着。这两处的支点就成为振子振动的节点。金属板的中心有圆锥形振子,发送超声波时,圆锥形振子有较强的方向性,因而能高效率地发送超声波;接收超声波时,超声波的振动集中于振子的中心,所以能产生高效率的高频电压。2.2.2超声波传感器选择超声波传感器有多种构造形式,可分成直探头(接收纵波)、斜探头(接收横波)、外表波探头(接收外表波)、收发一体式探头、收发分体式双探头等。超声波传感器分通用型、宽频带型、耐高温型、密封放水型等多种产品。一般电子市场上出售的超声波传感器常见的有收发一体式和收发分体式两种。其中收发一体式就是发送器和承受器为一体的传感器,即可发送超声波,又可承受超声波;收发分体式是发送器用作发送超声波,承受器用作承受超声波。在超声波测量系统中,频率取得太低,外界的杂音干扰较多;频率取得太高,在传播的过程中衰减较大,检测距离越短,分辨力也变高。本文中选用的探头是4OKHz的收发分体式超声传感器,由一支发射传感器UCM-T40KI和一支接收传感器UCM-R4OKI组成,其特性参数如表2-5所示。表2-5传感器特性参数表型号UCM-T40K1UCM-R40KQ构造开放式开放式使用方式发射接收中心频率频带宽灵敏度声压指向角容量2.2.3超声波测距的原理超声波测距方法主要有三种:1〕相位检测法:精度高,但检测围有限;2〕声波幅值检测法:易受反射波的影响;3〕渡越时间法:工作方式简单,直观,在硬件控制和软件设计上都容易实现,其原理为:检测从发射传感器发射的超声波经气体介质传播到接收传感器的时间t,这个时间就是渡越时间,然后求出距离l。设l为测量距离,t为往返时间差,超声波的传播速度为c,则有l=ct/2。综合以上分析,本设计将采用渡越时间法。图2-6测距原理由于超声波也是一种声波,其声速c与空气温度有关,一般来说,温度每升高1摄氏度,声速增加0.6米/秒。表2-7列出了几种温度下的声速:表2-7声速与温度的关系表温度〔摄氏度〕-30-20-100102030100声速〔米/秒〕313319325323338344349386在使用时,如果温度变化不大,则可认为声速c是根本不变的,计算时取c为340m/s。如果测距精度要求很高,则可通过改变硬件电路增加温度补偿电路的方法或者在硬件电路根本不变的情况下通过软件改良算法的方法来加以校正。在本系统中利用AT89S52中的定时器测量超声波传播时间,利用DS18B20测量环境温度,从而提高测距精度。空气中声速与温度的关系可表示为:(2-3)声速确定后,只要测得超声波往返的时间,即可求得距离:L=1/2(331.4+0.6T)t。〔系统中应用该式进展温度补偿〕如果为了进一步提高测量精度,本设计中将根据需要利用软件方式增加角度补偿的设计:。〔系统中应用该式进展角度补偿〕2.2.4发射脉冲宽度发射脉冲宽度决定了测距仪的测量盲区,也影响测量精度,同时与信号的发射能量有关。减小发射脉冲宽度,可以提高测量精度,减小测量盲区,但同时也减小了发射能量,对接收回波不利。但是根据实际的经历,过宽的脉冲宽度会增加测量盲区,对接收回涉及比拟电路都造成一定困难。在具体设计中,比拟了25µs(l个40KHz方波脉冲),100µs(4个40KHz方波脉冲),200µs(8个40KHz方波脉冲),800µs(32个40KHz方波脉冲)的发射脉冲宽度,作为发射信号后的接收信号。最终采用短距离(2m)发射200µs(8个40KHz方波脉冲)发射脉冲宽度;长距离(2m外)发射800µs(32个40KHz脉冲方波)的发射脉冲宽度,同时单片机编程避开盲区。此时,从接收回波信号幅度和测量盲区两个方面来衡量比拟适中,并且接收准确响应速度快。2.2.5测量盲区在以传感器脉冲反射方式工作的情况下,电压很高的发射电脉冲在鼓励传感器的同时也进入接收局部。此时,在短时间放大器的放大倍数会降低,甚至没有放大作用,这种现象称为阻塞。不同的检测仪阻塞程度不一样。根据阻塞区的缺陷回波高度对缺陷进展定量评价会使结果偏低,有时甚至不能发现障碍物,这是需要注意的。由于发射声脉冲自身有一定的宽度,加上放大器有阻塞问题,在靠近发射脉冲一段时间围,所要求发现的缺陷往往不能被发现,这段距离,称为盲区,具体分析如下:图2-8传感器回波测距原理分析图如下图,当发射超声波时,发射信号虽然只维持一个极短时间,但停顿施加发射信号后,探头上还存在一定余振(由于机械惯性作用)。因此,在一段较长时间,加在接收放大器输入端的发射信号幅值仍具一定幅值高度,可以到达限幅电路的限幅电平Vm;另一方面,接收探头上接收到的各种反射信号却远比发射信号小,即使是离探头较近的外表反射回来的信号,也达不到限幅电路的限幅电平。当反射面离探头愈来愈远,接收和发射信号相隔时间愈来愈长,其幅值也愈来愈小。在超声波检测中,接收信号的衰减总是比发射信号余振衰减慢的多。为保证一定的信噪比,接收信号幅值需到达规定的阈值Vm,亦即接收信号的幅值必须大于这一阈值才能使承受放大器有输入信号。由图2-8可见,从b点以后,接收的信号低于闽值,相当于测距的远限。另外,从图中A点以后,接收信号才比发射信号大,但还将与发射信号相迭加,难以分辨。从c点以后,发射信号低出阈值Vm,接收信号才根本摆脱发射信号干扰,而能明显的被分辨,所以在要求较高时,把oc这段时间规定为盲区时间。从距离上说,根据盲区时间和声速,就可以求得盲区距离。因此,cb为可测距围;b点就为测距远限,其外部就为测量不到的区域。2.3本章小结本章首先介绍了超声波的形成、超声波在传播过程中的反射折射规律以及如何衰减;通过详细分析超声传感器的部构造以及影响超声传感器的几个重要参数给出本系统设计中所用超声传感器的特性参数;分析了超声波测距的根本原理,并在此根底上给出了测距的几种常用方法以及传感器指向角、工作频率、环境温度、发射脉冲宽度和测量盲区对超声测距精度的影响。第3章系统硬件设计系统硬件主要由单片机系统及显示电路、超声波发射电路、超声波检测接收电路和温度补偿电路四局部组成。随着超声波测量技术的不断提高,用超声波测量任何目标物体,都存在着超声波的发射和接收问题。不管超声波传感器的大小、形状、灵敏度有何不同,其工作原理都有是一样的〔都是利用压电晶体将电能转换为机械振动弹性能,即在媒质中产生超声波〕,要提高超声测量的精度或分辨力,必须从超声波的发射和接收两方面入手,这也是设计超声测量仪器的关键和难点所在。发射电路采用单片机P1.0端口编程输出40KHz左右的方波脉冲信号,同时开启部计数器T0。由于单片机端口输出功率很弱,在此电路上加功率放大电路使测量距离满足要求,驱动超声传感器UCM-40T1发射超声波距离足够远。由于从接收传感器探头UCM40T传来的超声波回波很微弱〔几十个mV级〕,又存在着较强的噪声,所以放大信号和抑制噪声是放大电路必须考虑。这里使用C*20106A集成电路对接收探头承受到的信号进展放大、滤波,信号经过P2.7端口送入单片机中进展处理。为节省硬件考虑,显示电路采用动态扫描显示。通过单片机编程将部计数得到的时间数据,转换为距离信息,通过三位LED数码管显示。3.1发射电路设计超声波发射局部是为了让超声波发射换能器TCT40-16T能向外界发出40kHz左右的方波脉冲信号。40kHz左右的方波脉冲信号的产生通常有两种方法:采用硬件如由555振荡产生或软件如单片机软件编程输出,本系统采用后者。编程由单片机P1.0端口输出40kHz左右的方波脉冲信号,由于单片机端口输出功率不够,40kHz方波脉冲信号分成两路,送给一个由74HC04组成的推挽式电路进展功率放大以便使发射距离足够远,满足测量距离要求,最后送给超声波发射换能器TCT40-16T以声波形式发射到空气中。发射局部的电路,如图3-1所示。图中输出端上拉电阻R31,R32,一方面可以提高反向器74HC04输出高电平的驱动能力,另一方面可以增加超声换能器的阻尼效果,缩短其自由振荡的时间。图3-1超声波发射电路框图图3-1超声波发射电路框图3.1.1发射电路设计方案一、发射电路输出波形分析1.发射波形的重复性为获得高分辨力,发射电路设计应保证发射的超声波波形有良好的重复性;此外,所发射的超声波应尽量单纯,即发射波的各个振动应近似为同一频率的振动,以便接收时可采用带通滤波器消除干扰和每次都接收到同一个振动波峰。为防止超声波在障碍物外表反射时造成的各种损失和干扰。由于超声波是换能器压电晶片振动时推动附近的空气发出的疏密波,其“波形〞应与晶片振动规律一样。发射电路设计的是否合理直接影响发射波功率和波形的重复性。通常发射电路按发射方式分为:单脉冲发射、多脉冲发射和连续发射。测距所用超声波一般都是连续单脉冲发射,每测距一次,发送、接收一次。连续地激发换能器晶片振动。此方法测试距离太近;本系统采用连续多脉冲发射,系统自动识别被测距离远近,设置发射脉冲个数。2.发射波形电压及功率传感器发射电压大小主要取决于发射信号损失及接收机的灵敏度,综合各种损耗的因素,包括往返传播损失,声波传输损失,声波反射损失,环境噪声损失;另外考虑实际发射传感器的最大输入电压为20Vp-p,以及单片机正常工作输出最大电压5V,传感器发射信号的功率直接决定发射探头发出超声信号的远近,所以考虑电压的同时应该考虑如何提高其功率,才能使得发射电路更合理。3.1.2发射电路常用方案由上面的分析,我们知道发射电路设计的主要目的是抬高输入到发射探头的电压及其功率。本系统用单片机P1.0发射一组方波脉冲信号,其输出波形稳定可靠,但输出电流和输出功率很低,不能够推动发射传感器发出足够强度的超声信号,所以在此间参加一个单电源乙类互补对称功率放大电路,如图3-2所示。图3-2超声波发射电路3.1.3超声波发射器的考前须知超声波发射器向*一方向发射超声波,在发射超声波的同时开场计时,超声波在空气中传播,途中碰到障碍物反射后立即返回来,超声波接收器收到反射波就立即停顿计时。超声波在空气中的传播速度约为340m/s,根据计时器记录的时间t,就可以计算出超声波发射点距障碍物的距离(s),即为:s=340t/2,这就是所谓的时间差测距法。存在4个因素限制了该系统的最大可测距离:超声波的幅度、反射的质地、反射回波和入射声波之间的夹角以及接收换能器的灵敏度。测距误差主要来源于以下几个方面:〔1〕超声波波束对探测目标的入射角的影响;〔2〕超声波回波声强与待测距离的远近有直接关系,所以实际测量时,不一定是第一个回波的过零点触发;〔3〕超声波传播速度对测距的影响。稳定准确的超声波传播速度是保证测量精度的必要条件,波的传播速度取决于传播媒质的特性。传播媒质的温度、压力、密度对声速都将产生直接的影响,因此需对声速加以修正。〔4〕由于超声波利用接收发射波来进展距离的计算,因而不可防止地存在发射和反射之间的夹角,其大小为2,当很小的时候,可直接按式进展距离的计算;当夹角很大的时候,必须进展距离的修正,修正的公式为:(3-1)实际的调试过程中,要十分注意发射和接收探头在电路板上的安装位置,这是因为每一种超声波发射、接收头都有一个有效测量夹角,这里用到的发射、接收头有效测量夹角为45°。接收换能器对超声波脉冲的直接接收能力将决定该系统最小的可测距离。为了增加所测量的覆盖围、减小测量误差,可采用多个超声波换能器分别作为多路超声波发射/接收的设计方法。3.2接收电路设计接收换能器晶片接收到超声波垂直作用后,因谐振而形成逐步加强的机械振动。因压电效应晶片两面出现交变的等量异号电荷,电荷量很少,只能提供微小交变的电压信号,而不能提供电流信号。所以需要一个前置放大电路将这一微小交变电压信号充分放大,同时考虑可能出现干扰信号,放大有用信号的同时参加滤波电路,驱动后面的比拟器输出电位跳变,作为确定接收到的时刻。前置放大电路单元的作用是对有用的信号进展放大,并抑制其它的噪声和干扰,从而到达最大信噪比,以利于后续电路的设计。图3-3前置放大电路图电路如图3-3所示,考虑到超声换能器的输出电阻比拟大(一般数百兆欧姆以上),因此前置放大器必须有足够大的输入阻抗(InputImpedance));同时,换能器的输出电压很小(数十毫伏),这就要求前置放大电路有很高的精度、很小的输入偏置电压(InputOffsetVoltage)。前置放大电路是由一个高精度、高输入阻抗放大器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单片机显示电路设计显示器是一个典型的输出设备,而且其应用是极为广泛的,几乎所有的电子产品都要使用显示器,其差异仅在于显示器的构造类型不同而己。最简单的显示器可以使LED发光二极管,给出一个简单的开关量信息,而复杂的较完整的显示器应该是CRT监视器或者屏幕较大的LCD于显示的距离围在4米之,选用3位LED示,表示距离的***cm数值。液晶屏。综合课题的实际要求由数码管,通过单片机编程实现显示,表示距离的***cm数值。LED数码管显示与单片机接口通常涉及以下几个问题:1.LED数码管显示用共阴极管还是共阳极管2.由数码转换为笔划信息借软件译码还是硬件译码3.显示扫描采用动态扫描还是静态扫描问题1采用共阴极数码管还是共阳极数码管没有太明显的优缺点。如图3-4〔a〕所示数码管,每个数码管部,由8个发光二极管组成,其中七个组成8字形的七段笔划,分别编号为a、b、c、d、e、f、g,还有一个为小数点,标为DP。当发光二极管导通时,相应的一段笔划或点就发亮,控制不同二极管导通就能显示出不同符号。发光二极管的阴极连在一起的称为共阴极数码管,如图3-4〔b〕所示;发光二极管的阳极连在一起的称为共阳,如图3-4〔c〕所示。两种数码管仅在单片机编程时数码对应的笔划信息码不同。图3-4数码管构造图问题2软件译码是将各数码的笔划信息构成一个表格预储于存,以后根据要显示的每一数码执行一段查表程序,查得相应笔划信息再送数码管显示;硬件译码则采用CD4511、74LS46、74LS47、74LS48、74LS49等BCD码七段锁存、译码、驱动芯片直接译出笔划信息。问题3动态扫描显示接口是单片机中应用最为广泛的一种显示方式之一。其接口电路是把所有显示器的8个笔划段a—h同名端连在一起,而每一个显示器的公共极是各自独立地受I/O线控制。CPU向字段输出口送出字形码时,所有显示器接收到一样的字形码,但终究是那个显示器亮,则取决于端,而这一端是由I/O控制的,所以我们就可以自行决定何时显示哪一位了。而所谓动态扫描就是指我们采用分时的方法,轮流控制各个显示器的端,使各个显示器轮流点亮。在轮流点亮扫描过程中,每位显示器的点亮时间是极为短暂的(约1ms),但由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位显示器并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感。采用静态扫描方式控制点亮LED数码管无位选信号,各数码管是同时点亮的;每数码管应显示数码的笔划信息也分路同时送给。其原理比拟简单。静态扫描显示编程容易,显示比拟清晰,亮度一般较高;但要求占用很多I/O接口线和增用不少硬件芯片,本钱较高。因此,动态扫描用得更多。图3-5显示局部电路图针对以上3个问题,实际考虑节约单片机的接口资源以及减少硬件芯片本钱投入,本单元电路设计如图3-5所示,采用3位共阴极数码显示管,显示字符由单片机P2口送至锁存器74HC574锁存,再经显示驱动芯片ULN2O03驱动数码管显示,P0.1-P0.3分别控制每一位的动态显示。74HC574为三态输出D型上升沿触发器,图3-6为其引脚图,在输入使能端有效时,当时钟脉冲CK有上升沿跳变,触发器发生翻转,将锁存的8路输入数据(即单片机P2口送出的字符数据)送出显示。其功能表,如表3-1所示。OE120Vcc1B1161C1D2191Q2B2152C2D3182Q3B3143C3D4173Q4B4134C4D5164Q5B5125C5D6155Q6B6116C6D7146Q7B7107C7D8137Q8B898D9128Q9D1011CLK图3-674HC574引脚图图3-7ULN2003引脚图表3-174HC574功能表INPUTSOUTPUTQCLKDL↑HL↑LLHorL*H**HLQ0ZULN2003为显示驱动芯片,抬升单片机的输出电流,提高负载驱动能力。其引脚如图3-7所示,其部含七对达林顿放大管,其主要功能:当输入为高电平时,输出为低电平;输入为低电平时,输出为高电平。本课题让单片机P0.1-P0.3经此芯片提升驱动能力从而控制数码管的位选,实现数据动态扫描输出。由于声音的速度在不同的温度下有所不同,为提高系统的精度,采用了温度补偿功能。这里采用的主要元器件是是美国Dallas半导体公司生产的单总线数字温度传感器DS18B20,其具有精度高、智能化、体积小、线路简单等特点。将DS18B20数据线与单片机的P1.1口相连,就可以实现温度测量,如图3-8所示。图3-8DS18B20温度测量电路图3-8DS18B20温度测量电路3.3.1LCD显示局部本设计显示局部采用字符型TC1602液晶显示所测距离值。TC1602显示的容量为2行16个字。液晶显示屏有微功耗、体积小、显示容丰富、超薄轻巧、使用方便等诸多优点,与数码管相比,显得更专业、美观。使用时,可将P0与LCD的数据线相连,P2口与LCD的控制线相连,如下图。图3-9TC1602液晶显示电路图3-9TC1602液晶显示电路其中,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-10所示。图3-10报警电路3.4本章小结本章主要介绍了基于单片机的超声测距系统的具体硬件设计电路。对其中主要硬件单元:发射电路、接收电路、检测电路以及显示电路的设计给出原理图并进展了分析计算。第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();//刷新显示}puter();//计算距离he*tobcd();//转化成BCD码sta_flag=0;//标志清零}}}voidsys_init(void){uchari;for(i=0;i<29;i++)//显示清零{num[i]=0;}TMOD=0*11;TH0=0*15;TL0=0*A0;P0=0;T=0;//超声波发送关闭CSBIN=1;EA=1;//开放总中断Init_LCD();}4.2外部中断子程序如下图,中断效劳程序是响应单片机的外部中断。在系统主程序中,发射的4OKHz脉冲信号遇到障碍物反射后,经接收检测电路产生外中断信号至单片机。在中断效劳程序中,首先进展必要的现场保护,再把进入中断效劳程序处的计数值读出并对该数据进展处理,计算得到相应的距离值,同时转换为十进制,最后送到P2口显示输出。RECEIVE:PUSHPSW;中断现场保护PUSHACLRE*O;关闭外部中断INTOMOVR0,TL0;读取时间MOVR1,TH0LCALLMULD;调用乘法子程序计算机距离LCALLADJ;调用十进制调整子程序LCALLDISPSETBE*0;翻开外部中断INT0POPAPOPPSWRETI4.3定时器中断子程序定时器中断子程序流程图如图4-2所示。由于51单片机是16位定时器,最大计时时间为65536us,当测量的距离很远的时候,定时器就会发生溢出;所以必须对溢出中断进展相应的设置才能使得单片机正常工作。同时由于电路的测量距离有限最远为5米,当测量距离超出5米时,接收探头就不能检测回波,即不能产出外部中断更不可能关闭定时器。程序如下:TIME0:PUSHPSW;中断现场保护PUSHACLRE*0CLRTR0MOVTL0,*00HMOVTH0,*00HSETBTR0SETBE*0LCALLPULSE;调用发射脉冲子程序POPA定时中断关闭定时器定时器初始化发射脉冲串翻开定时器返回定时中断关闭定时器定时器初始化发射脉冲串翻开定时器返回RETI图4-2定时中断子程序流程4.4实现重要功能的程序分析4.4.1实现温度读取功能uintRead_Temperature(void) //读取温度,返回整数值{uintc; reset(); //复位18b20芯片 tu=0; //先置位温度正负标示为正if(r){ write(0*CC); //跳过多传感器识别skiorom write(0*BE); //发读部9字节容指令 c=read(); //读两个字 reset(); //读完两个字节后复位 write(0*CC); //跳过多传感器识别skiorom write(0*44); //发启动温度变换指令if(c>0*1000){c=c+1;tu=1;} //假设温度小于0,tu=1 c>>=4; //去掉低四位即为整数温度值,无需*0.0625returnc; }else{returnr;} //返回0*FF表示未检测到18B20芯片}4.4.2实现根据温度转化声速intC_speed(void)//根据温度查算声速值{uchary;y=Read_Temperature(); //采温度if(r){ //假设温度有变化则按温度值取声速 { T_C=y; //温度值=变化后的温度值 if(tu==0)speed=332+T_C*0.607;//温度为正则+声速 elsespeed=332-T_C*0.607;//温度为负则-声速 } }elsespeed=346.5; //假设1820不存在即无法读取温度,声速=346.5M/S〔取25度〕returnspeed;}4.4.3实现距离计算floatDis_count() //距离计算函数{ floatcm; cm=TH1*256+TL1; cm-=7610; //减去限制10M的初值+可调误差值 cm*=speed; //计算距离uS*34650m cm/=20000; //转换为s单程 returncm;}4.5本章小结本章主要结合超声测距系统的硬件设计方案,给出具体实现时单片机涉及到的软件构造及其相关编程。主要包括整个程序的算法思想,采用模块化设计,大量采用子程序设计的方法,大大缩短编程开发周期,方便程序阅读以及程序查错。程序采用先在计算机上进展软件仿真,后灌进单片机中和硬件结合调试。第5章结论本设计是以AT89C51为核心,借助于模数电技术和单片机技术的结合,解决了超声波测距的一些难题。灵活的运用超声波换能集成电路作为超声波的接收电路,在讨论了超声波测距原理、硬件电路实现和软件设计方法根底上,完成了超声波测距的设计要求。利用单片机的运算和控制功能,利用超声波的特性设计出的一种简单的测距系统。利用超声波检测往往比拟迅速、方便、计算简单、易于做到实时控制,并且在测量精度方面能到达工业实用的要求,随着科学技术的快速开展,超声波的应用将越来越广。但就目前技术水平来说,人们可以具体利用的超声波技术还十分有限,因此,这是一个正在蓬勃开展而又有无限前景的技术及产业领域。从课题选择、方案论证到具体设计,我查阅了大量的资料。对一些疑难的问题,我得到了教师和同学的帮助。在三年的专科学习和生活期间,也始终感受着导师的精心指导和无私的关心,我受益匪浅。在此向教师们表示深深的感和崇高的敬意。致本文研究工作是在我的导师志通教师的精心指导和悉心关心下完成的,从开题伊始到论文完毕,我所取得的每一个进步、编写的每一段程序都无不倾注着导师辛勤的汗水和心血。导师严谨的治学态度、渊博的各科知识、无私的奉献精神使我深受启迪,从尊敬的导师身上,我不仅学到了扎实、宽广的专业知识,也学到了做人的道理。在今后的学习工作中,我将铭记恩师对我的教导和鼓励,尽自己最大的努力取得更好的成绩。在此我要向我的导师志通教师致以最衷心的感和深深的敬意!在三年的大学学习期间,每位教师对我的学习、生活和工作都给予了热情的关心和帮助,使我的水平得到了很大的提高,取得了长足的进步。在此,向所有关心和帮助过我的教师、同学和朋友表示由衷的意!衷心感在百忙之中评阅论文和参加辩论的各位专家、教授。参考文献[1]维成,加国.单片机原理与应用及C51程序设计.:清华大学,2006[2]蔡菲娜.单片微型计算机原理和应用.:大学,1995[3]建忠.单片机原理及应用.:电子科技大学,2002[4]齐等.单片机应用系统设计技术基于C语言编程.:电子工业,2004[5]吴延海.微型计算机接口技术.:大学,1997[6]丽霞.单片机在超声波测距中的应用[J].电子技术,2002[7]道连,宁延一,袁世良.用AT89C2051设计超声波测距仪[J].国外电子元器件,2000[8]鹏,有志.一种新型超生测距系统[J].:大学学报,2003,33(1)[9]学海.PIC单片机实用教程-根底篇〔第1版〕[M].航天航空大学.:2002年2月[10]贾伯年.传感器技术.:东南大学,2000[11]大新,胡学同,周杏鹏.利用FPGA改良超声波测距模块设计[J].传感器技术,2005,24(2):57~59[12]阎石.数字电子技术根底.:高等教育,1998[13]楼然苗.51系列单片机设计实例.:航空航天大学,1999[14]谭浩强.C程序设计〔第三版〕.:清华大学,2005附录1系统原理图系统PCB板图附录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_m(uchar); //写入LCD命令voidWrite_Data(uchar); //写入LCD数据voidInit_LCD(void);sbitsta_flag=flag^0; //10MS到标准位,flag即通用标志位,当sta_flag=1时,表示到了10mssbitfuhao=flag^1; //温度的符号位sbitSTART=P1^0; //启动测距sbitT=P2^5; //发射超声波sbitCSBIN=P2^6; //返回信号sbitBUZZER=P3^7;/******************定时器1溢出***************************/voidtimer1(void)interrupt2using1{TR1=0;} //关闭定时器/计数器1/*********定时器0溢出中断函数,每60MS溢出****************/voidtimer0(void)interrupt1using0 //定时器0{TH0=0*15;TL0=0*A0; //定时器0设定初值TH1=0;TL1=0; //计数器1清零sta_flag=1;count++;_nop_();_nop_();_nop_();_nop_();T=1; //先延时,后开场发送40KHz的超声波_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();//40KHZ的倒数就是25us,12个_nop_();就是24usT=0; //保持一段时间高电平_nop_();_nop_();_nop_();_nop_();TR1=1; //延时,防止直达信号干扰,启动定时器/计数器1delay15(50); //延时避开直达信号}/***************系统初始化*************************/voidSYS_INIT(){uchari;for(i=0;i<29;i++) //显示清零{num[i]=0;}TMOD=0*11; //工作方式存放器TMOD,设置定时器/计数器0和1均为16位定时/计数器TH0=0*15;TL0=0*A0;//设置定时器/计数器0的初值,60ms溢出P0=0;T=0; //P2^5口,发射发射超声波CSBIN=1; //P2^6口,接收信号EA=1; //开总中断}/******************距离计算***************************/voidJULIJS()//使用全局变量,可以定义为空{floatc,d,s;uintt;if(temp<0*8000)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进制***************/voidHE*toBCD(){floattp;unsignedlonginttmp;fuhao=0; //温度符号位if(temp<0*8000)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]|0*80; //最高位加上符号位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(0*CC); //跳过读序号列号的操作,忽略ROM匹配B20_WDAT(0*44); //发送温度转化命令}}/***********读取温度函数**************/uintGET_WD(void){uinta=0,b=0,t=0;Init_18B20(); //初始化18B20B20_WDAT(0*CC); //跳过读序号列号的操作B20_WDAT(0*BE); //发送读温度命令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); //稍做延时后如果*=0则初始化成功,*=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|=0*80; //拼装处理Delay(15);}return(dat); //注意读取的为补码}/*********************写数据****************************/voidB20_WDAT(uchardat){uchari=0;for(i=8;i>0;i--){DQ=0; //拉低数据线至少15us以作为起始信号DQ=dat&0*01; //取出低位的一位数据Delay(5); //稍作延时DQ=1; //将数据线拉高以作为停顿信号dat>>=1; //移位,为写入下一位数据做准备}}/*******************数据转换函数**************************/voidBUMA(){temp=~temp; //按位取反temp+=1;}/**************************LCD显示函数*******************/voidLCD_DISP(){uchara,b,d;Init_LCD();Write_m(0*01); //清显示Write_m(0*80); //写首地址for(a=0;a<16;a++){d=dispBUF[a];if((a>11)&&(a<14))
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 肠道病毒CoxA16型手足口病病因介绍
- 羊奶课件教学课件
- 部编版四年级语文上册第27课《故事二则》精美课件
- 部编版四年级语文上册《语文园地一》教学设计
- 部编版四年级语文上册《语文园地八》精美课件
- 细菌性上呼吸道感染病因介绍
- 《客户关系管理实务》电子教案 18实训项目:产品推介会组织开展
- 《中国历史总复习》课件
- 教科版小学综合实践6下(教案+课件)60 饮料与健康教案
- 2024版家具定制销售合同6篇
- 循证护理学(理论部分)智慧树知到答案2024年复旦大学
- 20以内的加法口算练习题4000题 284
- 高中历史选择性必修2知识点总结归纳
- 一例急性阑尾炎伴局限性腹膜炎患儿的护理查房
- 湖南省2024年对口升学考试计算机应用类试题(含参考答案)
- 城管责令停工通知书
- 考研英语阅读理解精读100篇之经济类
- YD-T 2664-2024 公用电信设施保护安全等级要求
- 定向穿越机合同范本
- 举牌验收专项方案
- 数据中心基础设施运维简介
评论
0/150
提交评论