为了正常的体验网站,请在浏览器设置里面开启Javascript功能!
首页 > 单片机项目基于51单片机的超声波测距仪的设计说明

单片机项目基于51单片机的超声波测距仪的设计说明

2021-12-06 7页 doc 1MB 2阅读

用户头像 个人认证

is_529050

暂无简介

举报
单片机项目基于51单片机的超声波测距仪的设计说明PAGE/NUMPAGES摘要由于本课程是开放性的课程,很多东西靠我们自己去查资料进行了解,在实验的过程中我们遇到过很多的问题,实验经过多次繁琐的调试,才能达到预期的效果。同时我们也是在解决问题的过程中学到了许多平常接触不到的知识,了解和掌握了很多的调试方法和技巧。通过本次实验,初步认识了超声波将在测距仪中的应用越来越广。但就目前技术水平来说,人们可以具体利用的测距技术还十分有限,因此,这是一个正在蓬勃发展而又有无限前景的技术与产业领域,超声波测距仪作为一种新型的非常重要有用的工具在各方面都将有很大的发展空间,它将...
单片机项目基于51单片机的超声波测距仪的设计说明
PAGE/NUMPAGES摘要由于本课程是开放性的课程,很多东西靠我们自己去查资料进行了解,在实验的过程中我们遇到过很多的问题,实验经过多次繁琐的调试,才能达到预期的效果。同时我们也是在解决问题的过程中学到了许多平常接触不到的知识,了解和掌握了很多的调试方法和技巧。通过本次实验,初步认识了超声波将在测距仪中的应用越来越广。但就目前技术水平来说,人们可以具体利用的测距技术还十分有限,因此,这是一个正在蓬勃发展而又有无限前景的技术与产业领域,超声波测距仪作为一种新型的非常重要有用的工具在各方面都将有很大的发展空间,它将朝着更加高定位高精度的方向发展,以满足日益发展的社会需求,无庸置疑,未来的超声波测距仪将与自动化智能化接轨,与其他的测距仪集成和融合,形成多测距仪。在具体的制作过程中我们发现现在本上的知识与实际的应用存在着的差距,书本上的知识很多都是理想化后的结论,忽略了很多实际的因素,或者涉与的不全面,可在实际的应用时这些是不能被忽略的,我们不得不考虑这方的问题。同时我们在老师的引导下加深了对专业知识的认识与应用,了解如何对成果的分析与,出现的问题该从什么地方入手,如何检查,如何解决。培养了我们要勇于思考,善于思考的能力。而分组进行团队实验,既利于激发同学们的参与热情,也有利于促进学员间相互了解、认识,为培养团队协作能力的建立打下基础;为今后同学们进行的工作做好一定的基础。目录引言·························································1超声波测距仪的设计思路··············································21.1超声波测距原理·····································21.2超声波测距仪原理框图·····································22.系统的设计与论证·············································32.1总体设计方案···········································32.2系统整体方案的论证·········································32.2.1基于单片机的超声波测距系统······························32.2.2基于CPLD的超声波测距系统·························33系统的硬件结构设计·················································43.1发射电路的设计··········································43.2接收电路的设计···········································53.3显示模块的设计···········································64系统软件的设计·········································84.1软件的设计的方案········································84.2软件的设计流程图········································85系统硬件的调试·········································96总结··············································117参考文献·············································13附录一超声波测距程序清单··································14附录二实物图与原理图对照······························21引言由于超声波指向性强,能量消耗缓慢,在介质中传播的距离较远,因而超声波经常用于距离的测量,如HYPERLINK"://baike.baidu/view/34706.htm"\t"_blank"测距仪和物位测量仪等都可以通过超声波来实现。超声波简单的说就是音频超过了人类耳朵所能够听到的围。一般而言是指声音超过了20KHz时称之为超声波。与光波不同,超声波是一种弹性机械波,它可以在气体、液体和固体中传播。因为电磁波的传播速度为m/s,而超声波在空气中的传播速度为340m/s,其速度相对电磁波是非常慢的。利用超声波检测往往比较迅速、方便、计算简单、易于做到实时控制,并且在测量精度方面能达到工业实用的要求。超声波测距在某些场合有着显著的优点,因为这种方法是利用计算超声波在被测物体和超声波探头之间的传输来测量距离的,因此它是一种非接触式的测量所以它就能够在某些特定场合或环境比较恶劣的环境下使用。目前基于超声波精确测距的需求也越来越大,如油库和水箱液面的精确测量,物体气孔大小的检测和机械部损伤的检测等。本项目结合超声波精确测距的需要,分析了影响超声波测距精确的多种因素,进行了系统的硬件设计和软件设计,来有效提高超声波测距系统的精度。经实验,这套系统软硬件设计合理、抗干扰能力强、实时性良好。关键词:AT89c51;超声波;测距超声波测距仪的设计思路1.1超声波测距原理超声波测距是通过不断检测超声波发射后遇到障碍物所反射的回波,从而测出发射和接收回波的时间差t,然后求出距离。表1-1为超声波在空气中传播的速度.限制该系统的最大可测距离存在四个因素:超声波的幅度,反射物的质地,反射和入射声波之间的夹角以与接收换能器的灵敏度.接收换能器对声波脉冲的直接接收能力将决定最小可测距离.为了增加所测量的覆盖围,减少测量误差,可采用多个超声波换能器分别作为多路超声波发射/接收的设计方法.由于超声波发球声波围,其波速c与温度有关,表1-1列出了几种不同温度下的波速.表1-1超声波波速与温度的关系表温度(℃)-30-20-100102030100声速(m/s)3133193253233383443493861.2超声波测距仪原理框图如下用555记时IC作为频率发生器发出40kHZ的信号,经放大后通过超声波发射器输出;超声波接收器将接收到的超声波信号经放大器放大,进行检波处理后,启动单片机中断程序,测得时间为t,再由软件进行判别、计算,得出距离数并送LED显示。图超声波测距仪原理框图课程的方案设计与论证2.1总体设计方案用555记时IC作为频率发生器发出40kHZ的信号的方波,再经过放大电路,驱动超声波发射探头发射超声波。发射出去的超声波经障碍物反射回来后,由超声波接收头接收到信号,通过接收电路的检波放大、整形与一系列处理,送至单片机。单片机利用声波的传播速度和发射脉冲到接收反射脉冲的时间间隔计算出障碍物的距离,并由单片机控制显示出来。2.2系统整体方案的论证(两种常用的超声波测距方案的比较)2.2.1基于单片机的超声波测距系统基于单片机的超声波测距系统,是利用频率为40kHz的方波,经过发射驱动电路放大,使超声波传感器发射端震荡,发射超声波.超声波经反射物反射回来后,由传感器接收端接收,再经接收电路放大,整形,单片机响应,读取时间差,计算距离,结果输出给LED显示。利用单片机准确计时,测距精度高,而且单片机控制方便,计算简单.许多超声波测距系统都采用这种设计方法.2.2.2基于CPLD的超声波测距系统这种测距系统采用CPLD(ComplexProgrammableLogicDevice)器件,运用VHDL(VeryHighSpeedIntegratedCircuitHardwareDescriptionLanguage)编写程序,使用MAX+plusII软件进行软硬件设计的仿真和调试,最终实现测距功能.利用CPLD器件控制超声波的发射,并对超声波发射至接收的往返时间进行计数,将计算结果在LED上显示出来.配合使用MAX+plusII开发软件,可集设计输入,设计处理,设计校验和器件编程于一体,集成度高,开发周期短.本系统采用先进的CPLD器件,性能高,成本高集成度高,开发难度大。(不建议采用)系统的硬件结构设计3.1发射电路的设计用由555记时IC作为频率发生器发出40kHZ的方波需要进行放大,才能驱动超声波传感器发射超声波,发射驱动电路其实就是一个信号放大电路,本课题所选用的是4069集成芯片。下图为发射电路图.4069部集成了六个反向器,同时具有放大的功能.3.2接收电路的设计超声波接收头接收到超声波后,转换为电信号,此时的信号比较弱,必需经过放大.本系统采用了LF347对接收到的信号进行放大,接收放大电路如图示.超声波探头接收到超声波后,通过声电转换,产生一正弦信号,其频率约为传感器的中心频率,即40kHz.该信号通过高通滤波后经LF347放大,最后经二极管整形后输出到单片机中断口.LF347是一种场效应管与双极性管兼容的单片四运放,具有高输入阻抗,高速的性能,具有部失调电压调节,低失调电流、低谐波失真、低噪声等特点,可广泛应用于高速积分、快速D/A转换、采样/保持电路与一般放大电路中。LF347的供电电压一般为+12V,其差模电压增益为100dB,输入失调电压3mV,共模抑制比为100dB,输入电阻106M欧,转换速率13V/uS,单位增益带宽为4MHz。LF347管脚图LF347应用电路显示模块的设计74HC164是高速硅门CMOS器件,与低功耗肖特基型TTL(LSTTL)器件的引脚兼容。74HC164是8位边沿触发式移位寄存器,串行输入数据,然后并行输出。数据通过两个输入端(DSA或DSB)之一串行输入;任一输入端可以用作高电平使能端,控制另一输入端的数据输入。两个输入端或者连接在一起,或者把不用的输入端接高电平,一定不要悬空。 时钟(CP)每次由低变高时,数据右移一位,输入到Q0,Q0是两个数据输入端(DSA和DSB)的逻辑与,它将上升时钟沿之前保持一个建立时间的长度。  主复位(MR)输入端上的一个低电平将使其它所有输入端都无效,同时非同步地清除寄存器,强制所有的输出为低电平。LED数码管LED(Light-EmittingDiode,发光二极管)有共阴和共阳两种。共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管。共阳数码管在应用时应将公共极COM接到+5V,当某一字段发光二极管的阴极为低电平时,相应字段就点亮。当某一字段的阴极为高电平时,相应字段就不亮。共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极(COM)的数码管。共阴数码管在应用时应将公共极COM接到地线GND上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮。当某一字段的阳极为低电平时,相应字段就不亮。LED数码显示管结构LED管的显示可以分为静态和动态两种。静态显示:静态驱动是指每个数码管的每一个段码都由一个单片机的I/O端口进行驱动,或者使用如BCD码二-十进制译码器译码进行驱动。静态驱动的优点是编程简单,显示亮度高,缺点是占用I/O端口多。动态显示数码管动态显示是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划"a,b,c,d,e,f,g,dp"的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到一样的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。通过分时轮流控制各个数码管的的COM端,就使各个数码管轮流受控显示,这就是动态驱动。在轮流显示过程中,每位数码管的点亮时间为3~5ms,由于人的视觉暂留现象与发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O端口,而且功耗更低。系统软件的设计4.1软件的设计的方案超声波测距是通过不断检测超声波发射后遇到障碍物所反射的回波,从而测出发射和接收回波的时间差t,然后求出距离。超声波发生器T在某一时刻发出一个超声波信号,当这个超声波遇到被测物体后反射回来,就被超声波接收器R所接收到。这样只要计算出从发出超声波信号到接收到返回信号所用的时间,就可算出超声波发生器与反射物体的距离。距离的计算为d=s/2=(c×t)/2。其中,d为被测物与测距仪的距离,s为声波的来回的路程,c为声速,t为声波来回所用的时间。 在启动发射电路的同时启动单片机部的定时器T1,利用定时器的计数功能记录超声波发射的时间和收到反射波的时间。当收到超声波反射波时,接收电路输出端产生一个负跳变,产生一个中断请求信号,单片机响应外部中断请求,执行外部中断服务子程序,读取时间差,计算距离。4.2主程序流程图系统的硬件的调试超声波发射和接收采用型号为TCT40-16R/T超声波模块(直径16mm)标称频率为40kHz。为提高超声波发射的效率,用555记时IC作为频率发生器时使的555的输出频率为40kHZ的信号方波为最佳。若能将超声波接收电路用金属壳屏蔽起来,则可提高抗干扰能力。超声波接收头接收到超声波后,转换为电信号,此时的信号比较弱,必需经过放大。根据测量围要求不同,可适当调整本系统中采用的LF347对接收到的信号进行放大的大小。一般一级放大10倍,保证波形的完整性,二级放大可以放大10到100倍,以提高系统的灵敏度。综合上述的建议可以获得较好的接收灵敏度和抗干扰能力。 应该要注意的事项:超声波模块标称频率为40kHz。本系统中对接收到的信号进行放大时曾采用LM324,由LM324的频率特性可知道,放大倍数最大为一级放大10倍,二级放大可以放大到10倍。这点对系统的灵敏度造成较大的影响,不建议采用。而LF347对接收到的信号进行放大时,一般一级放大10倍,二级放大可以放大10到100倍,这点对提高系统的灵敏度起到了关键的作用。LM324的频率特性74HC164是高速硅门CMOS器件,与低功耗肖特基型TTL(LSTTL)器件的引脚兼容。74HC164是8位边沿触发式移位寄存器,串行输入数据,然后并行输出。数据通过两个输入端(DSA或DSB)之一串行输入;任一输入端可以用作高电平使能端,控制另一输入端的数据输入。两个输入端或者连接在一起,或者把不用的输入端接高电平,一定不要悬空。但当LED显示出现乱码或显示出错的时候,就需要检查74HC164硬件电路是否在正常的工作。在超声波接收的端口检测不到发射后回来的信号时,要检测的原件有555IC和4069放大电路。555IC的检测可以在555的输出端用万用表测量是否有40KHZ的方波输出;而4069放大电路的检测,可以从4069的工作电压,是否工作在放大的状态,和是否有输出几方面来检测。电路制作完成并调试好后,便可将程序编译好下载到单片机试运行。根据实际情况可以修改超声波发生子程序每次发送的脉冲宽度和两次测量的间隔时间,以适应不同距离的测量需要。系统调试完后应不断优化系统使其达到超声波测距系统的精度要求。使系统软硬件设计合理、抗干扰能力强、实时性良好总结超声波测距的原理是利用超声波的发射和接受,根据超声波传播的时间来计算出传播距离。实用的测距方法有两种,一种是在被测距离的两端,一端发射,另一端接收的直接波方式,适用于身高计;一种是发射波被物体反射回来后接收的反射波方式,适用于测距仪。此次设计采用反射波方式。超声波测距仪硬件电路的设计主要包括单片机系统与显示电路、超声波发射电路和超声波检测接收电路三部分。单片机采用AT89C51或其兼容系列。采用12MHz高精度的晶振,以获得较稳定时钟频率,减小测量误差。利用555记时IC作为频率发生器时使得555的输出端频率为40kHZ的信号方波输出,利用外中断0口监测超声波接收电路输出的返回信号。显示电路采用简单实用的4位LED数码管,段码用74HC164N驱动,位码用三极管S9013作为开关来驱动电路。超声波发射电路主要由555记时IC输出频率为40kHZ的方波信号,经4069部集成的六个反向器的其中四个,使用它具有的放大功能。经反相器4069放大后和超声波发射换能器T构成一个完整的发射电路。555的输出端口输出的40kHz的方波信号一路经一级反向器后送到超声波换能器的一个电极,另一路经两级反向器后送到超声波换能器的另一个电极,用这种推换形式将方波信号加到超声波换能器的两端,可以提高超声波的发射强度。输出端采两个反向器并联,用以提高驱动能力。超声波换能器是利用压电晶体的谐振来工作的。超声波换能器部有两个压电晶片和一个换能板。当它的两极外加脉冲信号,其频率等于压电晶片的固有振荡频率时,压电晶片会发生共振,并带动共振板振动产生超声波,这时它就是一个超声波发生器;反之,如果两电极问未外加电压,当共振板接收到超声波时,将压迫压电晶片作振动,将机械能转换为电信号,这时它就成为超声波接收换能器。超声波发射换能器与接收换能器在结构上稍有不同,使用时应分清器件上的标志。超声波检测接收电路主要是由集成放大电器LF347N和超声波接收换能器组成,超声波接收头接收到超声波后,转换为电信号,此时的信号比较弱,必需经过放大。根据测量围要求不同,可适当调整本系统中采用的LF347对接收到的信号进行放大的大小,以提高系统的灵敏度。超声波测距的算法设计原理为超声波发生器T在某一时刻发出一个超声波信号,当这个超声波遇到被测物体后反射回来,就被超声波接收器R所接收到。这样只要计算出从发出超声波信号到接收到返回信号所用的时间,就可算出超声波发生器与反射物体的距离。在启动发射电路的同时启动单片机部的定时器T1,利用定时器的计数功能记录超声波发射的时间和收到反射波的时间。当收到超声波反射波时,接收电路输出端产生一个负跳变,在INT0端产生一个中断请求信号,单片机响应外部中断请求,执行外部中断服务子程序,读取时间差,计算距离。超声波测距仪的软件设计主要由超声波发生子程序、超声波接收中断程序、键盘扫描和处理程序与显示子程序组成。超声波测距仪主程序利用外中断0,边沿触发方式,检测返回超声波信号,一旦接收到返回超声波信号(即INT0引脚出现低电平),立即进入中断程序。进入中断后就立即关掉定时器1停止计时,并将测距所得的数据进行计算处理,然后送到4位LED数码管显示。 在元件与调制方面,由于采用的电路使用了较多的集成电路。对各电子元件也无特别要求。根据测量围要求不同,可适当调整与接收换能器并接的滤波电容C0的大小,以获得合适的接收灵敏度和抗干扰能力。若能将超声波接收电路用金属壳屏蔽起来,则可提高抗干扰能力。外围元件不是很多,一般只要电路焊接无误,稍加调试应该会正常工作,但调试也要应该注意。超声波发射和接收采用型号为TCT40-16R/T超声波模块(直径16mm)标称频率为40kHz。为提高超声波发射的效率,用555记时IC作为频率发生器时使的555的输出频率为40kHZ的信号方波为最佳。系统中对接收到的信号进行放大时曾采用LM324,由LM324的频率特性可知道,放大倍数最大为一级放大10倍,二级放大可以放大到10倍。这点对系统的灵敏度造成较大的影响,不建议采用。而LF347对接收到的信号进行放大时,一般一级放大10倍,二级放大可以放大10到100倍,这点对提高系统的灵敏度起到了关键的作用。在系统里,对设计的电路进行了调试和分析.对于测距系统来说,对如何以提高系统获得较好的接收灵敏度和抗干扰能力,是设计测距系统必需要考虑的问题。这就需要我们去分析和了解各种产生测量干扰和对系统造成不稳定的原因以与解决办法,以更进一步提高超声波测距系统的灵敏度和抗干扰能力。7.参考文献1.凤然.基于单片机的超声波测距系统.传感器世界.2001,5:29-322.健强.基于CPLD的超声波测距仪研制.商业职业技术学院学报.2004,4(3):8-103.何希才,薛永毅.传感器与其应用实例.机械工业,2004:138-1524.胡汉才.单片机原理与其接口技术.清华大学,2004:27-465.吴斌方,民,熊海斌.超声波测距传感器的研制.湖北工学院学报.2004,19(6):26-286.谭洪涛,学平.单片机设计测距仪原理与其简单应用.现代电子技术.2004,18:94-967.PeterHauptmann,RalfLucklum,BerndHenning.UltrasonicSensorsforProcessControl.SensorsUpdate.1998,3:163-2078.占林,洪梅.超声波测距系统误差分析与修正.科技情报开发与经济.2002,12(6):144-1459.J.Otto.SensorsforDistanceMeasurementandTheirApplicationsinAutomobiles.SensorsUpdate.2002,10:231-25510.炜,龚壁建,笑.超声波测距误差分析.传感器技术.2004,23(6):8-1111.罗忠辉,黄世庆.提高超声测距精度的方法.机械设计与制造.2005,1:10912.旭.用LM92温度传感器补偿的高精度超声波测距仪.电子产品世界.2003,6:58-5913.YusukeMoritake,HiroomiHikawa.CategoryRecognitionSystemUsingTwoUltrasonicSensorsandCombinationalLogicCircuit.ElectronicsandCommunicationsinJapan.2005,88(7):33-42附录一(超声波测距程序清单)#include#include#include#defineKeyData(P1|0xe0)#defineKeyDown1//按键按下#defineKeyUp0//按键弹开bitKeyFirst=1;//按键第一次按下bitKeyState=KeyUp;//按键状态ucharKeyValue;//键值sbitCLK=P1^6;sbitDAT=P1^5;sbitMeasureEn=P3^7;//超声波测距使能按键//ucharTimeInitData[7]={50,51,16,28,3,1,11};//秒,分,时,日,月,星期,年ucharTimeInitData[7]={5,5,10,14,4,5,1};//时间芯片DS1302初始值设定,秒,分,时,日,月,星期,年ucharTimeBuff[7]={11,22,33,44,55,66,77};//接收到的时间信息ucharcodeDispCode[22]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef,0x40,0x00};//01...90.1....9.-ucharNumCode[4]={0,0,0,0};ucharcodeLedSelect[4]={0x01,0x02,0x04,0x08};//数码管的为选通信号intTimeData;intDispNum;intDispTemp;uintDistance[3]={0,0,0};//定义三次测量结果数组uintDistValue[3]={0,0,0};//定义三次测量结果数组uintDistNum;ucharT0Num;ucharMeasureTime;//第几次测量bitFlagEndMeasure=1;//测量完成一次的标志bitFlag20ms=0;bitFlag50ms=0;bitFlag1s=0;voidStartMeasured();//启动测距voidMeasure3Times();//启动测距三次,并取中值//---------------------------------------------------------voidT0Init(){TMOD=0x01;TH0=(65536-5000)/256;//定时5ms,动态扫描TL0=(65536-5000)%256;TR0=1;ET0=1;EA=1;}//---------------------------------------------------------voidT1Init(){TMOD|=0x10;//定时器1计数方式TH1=0;TL1=0;TR1=0;}//---------------------------------------------------------voidEx0Init(){IT0=1;//外部中断0,边沿触发EX0=0;EA=1;}//---------------------------------------------------------voidDelayus(uintn){while(n--);//延时大约n*10us}//---------------------------------------------------------voidSend164(ucharCh)//口线模拟时序,164送显示{ucharj;for(j=0;j<8;j++){CLK=0;_nop_();DAT=Ch&0x80;CLK=1;_nop_();Ch<<=1;}}//----------------------------------------------------------------------voidDisp4()//四个数码管显示{staticucharj=0;Send164((DispCode[NumCode[j]]));//调出与显缓区数值相应的字型码P0=(P0&0xf0)|(LedSelect[j]);j++;j%=4;}//-------------------------------------------------------voidTempSendDisp()//送显温度{if(FlagSgn==1){NumCode[0]=20;}else{NumCode[0]=21;}NumCode[1]=DispNum%1000/100;if(NumCode[1]==0){NumCode[1]=21;}NumCode[2]=DispNum%100/10+10;NumCode[3]=DispNum%10;}//-------------------------------------------------------voidDistanceSendDisp()//送显距离{NumCode[0]=DispNum/1000;if(NumCode[0]==0){NumCode[0]=21;}NumCode[1]=DispNum%1000/100+10;NumCode[2]=DispNum%100/10;NumCode[3]=DispNum%10;}//-------------------------------------------------------voidSendDisp()//送显数字{NumCode[0]=DispNum/1000;NumCode[1]=DispNum%1000/100;NumCode[2]=DispNum%100/10;NumCode[3]=DispNum%10;}//---------------------------------------------------------voidKeyScan(void)//键扫描{staticucharKeyBuff;if(KeyData!=0xff)//表示有键按下{if(KeyState!=KeyDown){if(KeyFirst==1){KeyBuff=KeyData;KeyFirst=0;}else{if(KeyData==KeyBuff){KeyValue=~KeyData;KeyState=KeyDown;}}}}else{KeyFirst=1;KeyState=KeyUp;}}//-------------------------------------------------------voidKeyProcess()//键盘处理{switch(KeyValue){case0x01://送显温度{DispNum=DispTemp;TempSendDisp();break;}case0x02://送显距离{DispNum=DistNum;DistanceSendDisp();break;}case0x04://送显时分{TimeData=TimeBuff[2]*100+TimeBuff[1];DispNum=TimeData;SendDisp();break;}case0x08://送显月日{TimeData=TimeBuff[4]*100+TimeBuff[3];DispNum=TimeData;SendDisp();break;}case0x10://送显年星期{TimeData=TimeBuff[6]*100+TimeBuff[5];DispNum=TimeData;SendDisp();break;}default:break;}}//---------------------------------------------------------voidStartMeasured()//启动超声波测距{EX0=0;TH1=0;TL1=0;TR1=1;MeasureEn=1;Delayus(50);//延时500us,发射大约20个脉冲MeasureEn=0;Delayus(10);//延时100usEX0=1;}//---------------------------------------------------------voidPaiXu()//三个测量结果排序{uintTemp;uchari;for(i=0;i<2;i++){if((Distance[i])>=(Distance[i+1])){Temp=Distance[i];Distance[i]=Distance[i+1];Distance[i+1]=Temp;}}if((Distance[0])>=(Distance[1])){Temp=Distance[0];Distance[0]=Distance[1];Distance[1]=Temp;}}//---------------------------------------------------------voidMeasure3Times()//启动三次测量,并取中值,送显示{staticuchark=0;staticuintSumDist=0;if(FlagEndMeasure==1){FlagEndMeasure=0;MeasureTime++;}if(MeasureTime<=3){StartMeasured();}else{MeasureTime=0;FlagEndMeasure=1;EX0=0;//关掉外部中断PaiXu();DistNum=Distance[1];}}//---------------------------------------------------------voidmain(){MeasureEn=0;//v_Set1302(WRITE_SECOND,&TimeInitData[0],7);T0Init();T1Init();Ex0Init();while(1){if(Flag20ms==1){Flag20ms=0;KeyScan();KeyProcess();}if(Flag50ms==1){Flag50ms=0;Measure3Times();}if(Flag1s==1){Flag1s=0;DispTemp=DS18B20_ReadTemp();//v_Get1302(READ_SECOND,&TimeBuff[0],7);}}}//---------------------------------------------------------voidT0Server()interrupt1{TH0=(65536-5000)/256;TL0=(65536-5000)%256;Disp4();T0Num++;if(T0Num%4==0){Flag20ms=1;}if(T0Num%10==0){Flag50ms=1;}if(T0Num>=200){T0Num=0;Flag1s=1;}}//---------------------------------------------------------voidEX0Server()interrupt0{TR1=0;//关掉定时器1if(FlagSgn==1){Distance[MeasureTime-1]=((TH1<<8)+TL1)*(0.033145-0.0000061*DispTemp)/2;}else{Distance[MeasureTime-1]=((TH1<<8)+TL1)*(0.033145+0.0000061*DispTemp)/2;}FlagEndMeasure=1;}附录二实物图与原理图的对照(超声波发射与接收)
/
本文档为【单片机项目基于51单片机的超声波测距仪的设计说明】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索