【基于单片机的超声波测距系统设计与实现11000字(论文)】_第1页
【基于单片机的超声波测距系统设计与实现11000字(论文)】_第2页
【基于单片机的超声波测距系统设计与实现11000字(论文)】_第3页
【基于单片机的超声波测距系统设计与实现11000字(论文)】_第4页
【基于单片机的超声波测距系统设计与实现11000字(论文)】_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于单片机的超声波测距系统设计与实现TOC\o"1-3"\h\u71441引言 466112总体设计 5311942.1总体设计要求 5130252.2方案选择 523462.2.1控制芯片的选择 572052.2.2超声波模块的选择 550862.3整体方案设计 610572.3.1系统概述 6124812.3.2系统框图 6265202.4单片机最小系统电路 6118072.4.1单片机介绍 6301662.4.2单片机最小系统 9305922.5HC-SR04模块 11102442.5.1HC-SR04模块使用器件 11302402.5.2HC-SR04模块工作原理 13113282.5.3超声波模块电路 14108032.5.4显示电路 1526442.6报警模块 15274452.6.1蜂鸣器的介绍 15223322.6.2蜂鸣器报警电路 16286302.6.3发光二极管 16137982.6.4报警模块电路 175882.7按键输入模块 1758303软件设计 19112693.1程序语言及开发环境 19300053.2程序流程图 19153743.2.1总体流程图 1922363.2.2数码管程序流程图设计 20260363.2.3超声波模块HC-SR04程序流程图设计 21209174硬件组装与调试 23248714.1元器件的选择与测量 23255724.2电路的调试 2315684.2.1调试方法 2399824.2.2调试步骤 24227534.3实验测试 25174574.3.1目的 2510294.3.2方法 25289734.3.3结果分析 2519960总结 263138参考文献 2720242附录 281引言传感器技术是现代信息技术的主要内容之一。信息技术包括计算机技术、通信技术和传感器技术,计算机技术相当于人的大脑,通信相当于人的神经,而传感器就相当于人的感官。比如温度传感器、光电传感器、湿度传感器、超声波传感器、红外传感器、压力传感器等等,其中,超声波传感器在测量方面有着广泛、普遍的应用。超声波测距系统适用于汽车雷达、机器人自动避障行走、建造场所等场合。所以在超声波检测方面有较高的作用。对本课题的研究与设计,还能进一步提高自己的电路设计水平,深入对单片机的理解和应用。以单片机为核心的超声波的测量设计简单、方便,而且测精度要求极高。本课题研究的超声波倒车防撞报警系统就是用单片机控制的。通过超声波发射器向某一方向发射超声波,单片机在发射时刻同时开始计时,超声波在空气中传播,途中碰到障碍物就立即反射回来,超声波接收器收到反射波就立即停止计时。超声波在空气中的传播速度为V,根据计时器记录的时间T,就可以计算出发射点距障碍物的距离。本系统利用单片机控制超声波的发射和对超声波自发射至接收往返时间的计时。接收电路的输出端接单片机的外部中断源输入口。系统定时发射超声波,在启动发射电路的同时启动单片机内部的定时器,超声波来回的时间会被定时器记载。超声波的反射波到达终点,电路终端有变化产生,在单片机的外部中断源输入口产生一个信号,单片机会支持请求,中断程序,记下时间,测量长短,结果输出给LED显示。

2总体设计2.1总体设计要求(1)测量范围0.02m-4m;(2)测量精度1cm;(3)数码管显示测量结果;(4)可设置报警值,报警值可以断电保存;(5)当小于报警值时,进行声光报警。2.2方案选择2.2.1控制芯片的选择方案一:采用DSP作为系统控制器。DSP(digital

signal

processor)是一种独特的微处理器,是以数字信号来处理大量信息的器件。DSP具有对元件值的容限不敏感,受温度、环境等外部因素影响小,容易实现集成,可分时复用,共享处理器,方便调整处理器的系数实现自适应,可用于频率非常低的信号等优点。但DSP硬件电路比较复杂,且价格昂贵,数字系统由耗电的有源器件构成,没有无源设备可靠。

方案二:采用单片机作为系统控制器。单片机具有可靠性强、性价比搞、电压低、功耗低等优点得到迅猛发展和大范围推广,单片机算术运算功能强,软件编程灵活,自由度大,可用软件编程实现各种逻辑功能,本身带有定时器、计数器,可以用来定时和计数,并且其功耗低,体积小,计数成熟和成本低等优点。基于以上分析,拟定方案二,用STC89C51单片机作为控制器。2.2.2超声波模块的选择方案一:采用分立元件,自行设计超声波电路,包括超声波的发射电路、接收电路,以及相关的放大电路和滤波电路。方案二:采用市面上流行的HC-SR04超声波模块。方案比较:方案一中,各个模块都是用分立元件搭建的,由于缺少超声波调试的仪器,做起来难度比较大,特别是后期的调试。而采用方案二中的HC-SR04模块,该模块价格低廉,质量稳定,使用简单方便,很适合本设计的超声波测距系统,故采用方案二。

2.3整体方案设计2.3.1系统概述整个系统以STC89C51单片机为核心器件,配合电阻电容晶振等器件,构成单片机的最小系统。其它个模块围绕着单片机最小系统展开。其中包括,超声波检测模块HC-SR04,作为距离传感器,进行测量的距离;显示模块,采用数码管作为显示模块,负责显示测量到的距离值;按键模块,主要是进行报警值的设置;蜂鸣器和LED的报警电路,当测量值小于报警值的,进行声光报警;最后一个是电源模块,采用5V的USB供电,本系统如需移动测量时,可采用移动电源进行供电。2.3.2系统框图超声波测距电源电路超声波测距电源电路数码管显示数码管显示按键电路设置电路报警电路STC89C51按键电路设置电路报警电路STC89C51图2.3系统框图2.4单片机最小系统电路2.4.1单片机介绍(1)概述STC89C51是一个低电压,高性能CMOS8位单片机,片内含8kbytes的可反复擦写的Flash只读程序存储器和256bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,功能强大的STC89C51单片机可为您提供许多较复杂系统控制应用场合。STC89C51有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2个读写口线。STC89C51有PDIP、PQFP/TQFP及PLCC等三种封装形式,以适应不同产品的需求。(2)主要功能特性◆兼容MCS51指令系统;◆8k可反复擦写(>1000次)FlashROM;◆32个双向I/O口;◆256x8bit内部RAM;◆3个16位可编程定时/计数器中断;◆时钟频率0-24MHz;◆2个串行中断;◆可编程UART串行通道;◆2个外部中断源;◆共8个中断源;◆2个读写中断口线;◆3级加密位;◆低功耗空闲和掉电模式;◆软件设置睡眠和唤醒功能;(3)8051单片机的引脚功能MCS-51系列单片机一般采用40个引脚,双列直插式封装,用HMOS工艺制造,其外部引脚排列如图2.4所示。其中,各引脚的功能为:图2.4STC89C51引脚图①主电源引脚VCC(40脚),接+5V电源正端;GND(20脚),接+5V电源地端;②外接晶体或外部振荡器引脚XTAL1(19脚),接外部晶振的一个引脚。在单片机内部,它是一个反相放大器的输入端。当采用外部振荡器时,此引脚应接 地。XTAL2(18脚),接外部晶振的另一个引脚。在片内接至反相放大器的输出端和内部时钟电路的输入端。当采用外部振荡器时,此脚接外部振荡器的输出端。③控制信号线RESET(9脚),复位信号输入端,复位/掉电时内部RAM的备用电源输入端。ALE(30脚),地址锁存允许/编程脉冲输入,用ALE锁存从P0口输出的低8 位地址。在对片内EPROM编程时,编程脉冲由此输入。PSEN(29脚),外部程序存储器读选通信号,低电平有效。EA(31脚),访问外部存储器允许/编程电压输入。EA为高电平时,访问内部存储器;低电平时,访问外部存储器。④多功能I/O口引脚8051单片机设有4个双向I/O口(P0、P1、P2、P3),每一组I/O口线都可以独立地用作输入或输出口,其中:P0口(32~39脚)——双向口(三态),可作为输入/输出口,可驱动8个LSTTL门电路。实际应用中常作为分时使用的地址/数据总线口,对外部程序或数据存储器寻址时低8位地址与数据总线分时使用P0口:先送低8位地址信号到P0口,由地址锁存信号ALE的下降沿将地址信号锁存到地址锁存器后,再作为数据总线的口线对数据进行输入或输出。P1口(1~8脚)——准双向口(三态),可驱动4个LSTTL门电路。用作输入线时,口锁存器必须由单片机先写入“1”,每一位都可编程为输入或输出线。P2口(21~28)——准双向口(三态),可驱动4个LSTTL门电路。可作为输入/输出口,实际应用中一般作为地址总线的高8位,与P0口一起组成16位地址总线,用于对外部存储器的接口电路进行寻址。P3口(10~17脚)——准双向口(三态),可驱动4个LSTTL门电路。双功能口,作为第一功能使用时,与P1口一样;作为第二功能使用时,每一位都有特定用途,其特殊用途如表2.4所示:表2.4P3口第二用途端口引脚第二功能注释P3.0RXD串行口数据接收端P3.1TXD串行口数据发送端P3.2/INT0外中断请求0P3.3/INT1外中断请求1P3.4T0定时/计数器0外部计数信号输入P3.5T1定时/计数器1外部计数信号输入P3.6/WR外部RAM写选通信号输出P3.7/RD外部RAM读选通信号输出2.4.2单片机最小系统STC89C51的最小系统如图2.5所示,整个最小系统由三个部分组成,晶振电路部分、复位电路部分、电源电路等三个部分组成。晶振电路包括2个30pF的电容C2和C3,以及12M的晶振X1。电容的作用在这里是起振作用,帮助晶振更容易的起振,取值范围是15-33pF。晶振的取值也可以是24M,晶振的取值越高,单片机的执行速度越快。在进行电路设计的时候,晶振部分越靠近单片机越好。单片机复位电路就好比电脑的重启部分,当电脑在使用中出现死机,按下重启按钮电脑内部的程序从头开始执行。单片机也一样,当单片机系统在运行中,受到环境干扰出现程序跑飞的时候,按下复位按钮内部的程序自动从头开始执行。复位电路由10uF的极性电容C1和10K的电阻R4构成。利用电容电压不能突变的性质,可以知道,当系统一上电,RESET脚将会出现高电平,并且这个高电平持续的时间由电路的RC值来决定。典型的51单片机当RESET脚的高电平持续两个机器周期以上就将复位,所以适当组合RC的取值就可以保证可靠的复位。在电路图中,电容的的大小是10uF,电阻的大小是10k。所以根据公式,可以算出电容充电到电源电压的0.7倍(单片机的电源是5V,所以充电到0.7倍即为3.5V),需要的时间是10K×10UF=0.1S。也就是说在电脑启动的0.1S内,电容两端的电压时在0-3.5V增加,这个时候RESET引脚所接收到的电压是5V-1.5V。在5V正常工作的51单片机中小于1.5V的电压信号为低电平信号,而大于1.5V的电压信号为高电平信号。所以在开机0.1S内,单片机系统自动复位(RESET引脚接收到的高电平信号时间为0.1S左右)。最后一个是电源部分,采用5V的USB直接供电,可采用手机充电器、电脑USB口、移动电源等设备进行供电。此外,除了单片机最小系统的3个部分之外,这里还多了一些外部电路。由于STC89C51的P0口是漏极开路输出,因此在P0口接了一个10K的排阻R1,使得P0口可以作为普通的I/O口使用,本设计用P0口来做数码管的数据口。特别注意的是,对于31脚(EA),当接高电平时,单片机在复位后从内部ROM的0000H开始执行;当接低电平时,复位后直接从外部ROM的0000H开始执行。由于我们的程序存储在了单片机内部,所以EA要接高电平,保证单片机是从内部读取程序去执行的。图2.5单片机最小系统2.5HC-SR04模块HC-SR04超声波测距模块可提供2cm-400cm的非接触式距离感测功能,其结构简单,使用单片机控制电路简单容易,而且价格便宜。该模块包括超声波发射、接收与控制电路。实物如图2.6。图2.6HC-SR04模块实物图2.5.1HC-SR04模块使用器件(1)MAX232MAX232芯片是美信公司专为RS-232标准串口设计的单电源电平转换芯片,使用+5v单电源供电。此处用于对T40-16激励电压的放大。MAX232共14个引脚(图2.7)共14个,可分为三个部分。第一部分是电荷泵电路。由1、2、3、4、5、6脚和4只电容构成。功能是产生+12v和-12v两个电源,提供给RS-232串口电平的需要。第二部分是数据转换通道。由7、8、9、10、11、12、13、14脚构成两个数据通道。其中13脚(R1IN)、12脚(R1OUT)、11脚(T1IN)、14脚(T1OUT)为第一数据通道;8脚(R2IN)、9脚(R2OUT)、10脚(T2IN)、7脚(T2OUT)为第二数据通道。第三部分是供电,15脚GND、16脚VCC(+5v)。图2.7MAX232引脚图(2)TL074TL074(图2.8)是常用的低噪声JFET输入四运算放大器。1、2、3脚是通道1的输出端、反相输入端、同相输入端;5、6、7脚是通道2的同相输入端、反相输入端、输出端;8、9、10脚是通道3的输出端、反相输入端、同相输入端;12、13、14脚是通道4的同相输入端、反相输入端、输出端;4脚是正电源,11脚是负电源。图2.8TL074引脚图(3)T40-16与R40-16为了研究和利用超声波,人们已经设计和制成了许多超声波发生器。总体上讲,超声波发生器可以分为两大类:电气方式产生超声波,主要包括压电型、磁致伸缩型和电动型等;机械方式产生超声波,主要包括加尔统笛、液哨和气流旋笛等。它们所产生的超声波的频率、功率和声波特性各不相同,因而用途也各不相同。目前较为常用的是压电式超声波发生器。压电式超声波发生器实际上是利用压电晶体的谐振来工作的。其内部有两个压电晶片和一个共振板。当它的两极外加脉冲信号,其频率等于压电晶片的固有振荡频率时,压电晶片将会发生共振,并带动共振板振动,便产生超声波。反之,如果两电极间未外加电压,当共振板接收到超声波时,将压迫压电晶片作振动,将机械能转换为电信号,这时它就成为超声波接收器了。模块使用T40-16T/R(图2.9)超声波换能器即为压电型。图2.9传感器实物图T40-16T/R的特性如下:标称频率(KHz):40KHz;发射电压at10V(0dB=0.02mPa):≥110dB;接收灵敏度at40KHz(0dB=V/ubar):≥-70dB;探测距离(m):0.02-10;外径(mm):16;类别:通用型;使用方式:T为发射头,R为接收头,TR为收发兼用;适用范围:家用电器及其它电子设备的超声波遥控装置;超声波测距及汽车倒车防撞装置;液面探测;超声波接近开关及其它应用的超声波场合。2.5.2HC-SR04模块工作原理(1)电气参数HC-SR04模块参数如下表2.10所示。表2.10模块参数电气参数HC-SR04超声波模块工作电压DC5V工作电流15mA工作频率40khz最远射程4m最近射程2cm测量角度15°输入触发信号10us的TTL脉冲输入回响信号输出TTL电平信号,与射程成比例规格尺寸45*20*15cm(2)基本工作原理采用IO口TRIG触发测距,给至少10us的高电平信号。接着模块自动发送8个40khz的方波,自动检测是否有信号返回。一旦有信号返回,通过IO口ECHO输出一个高电平,高电平持续时间就是超声波从发射到返回的时间。利用该时间乘以超声波在空气中的速度再除以二,就可以算出被测物体距离超声波模块的距离了。为防止发射信号对回响信号的影响,测量周期一般要60ms以上。HC-SR04模块的工作时序如下图(图2.11)所示。图2.11超声波时序图2.5.3超声波模块电路超声波模块一共引出四个引脚,其中一个接VCC,一个接GND,剩下两个分别接到单片机的IO口。在本设计中,把超声波的ECHO引脚接到单片机的P23口,TRIG引脚接到单片机的P22,电路图如图2.12所示:图2.12超声波模块电路2.5.4显示电路本数码管模块的电路的连接图如图2.13所示。第1脚和第2脚分别接到了电路的GND和VCC,这2个脚是数码管工作的电源输入脚。第3脚通过一个10K的电位器连接到地端,可通过调节该电位器来调节数码管的对比度。第4脚是数码管的寄存器控制脚,接到了单片机的P13脚上。第5脚是数码管的读写控制脚,接到了单片机的P14脚上。第6脚是数码管的使能脚,接到了单片机的P15脚上。第7脚到第14脚是数码管的数据/地址8位总线,接到了单片机的P0口上。最后第15脚和第16脚是数码管的背光电源脚,直接连接系统VCC和GND。图2.13数码管模块连接图2.6报警模块本设计不但具有超声波测距功能,还具有报警功能。可以给本系统设定一个报警值,当测量到的距离小于报警值时,蜂鸣器鸣叫,LED灯亮起,达到声光报警的功能。2.6.1蜂鸣器的介绍蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、电话机、定时器等电子产品中作发声器件。蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。压电式蜂鸣器主要由多谐振荡器、压电蜂鸣片、阻抗匹配器及共鸣箱、外壳等组成。当接通电源后多谐振荡器起振,输出1.5~2.5kHZ的音频信号,阻抗匹配器推动压电蜂鸣片发声。电磁式蜂鸣器由振荡器、电磁线圈、磁铁、振动膜片及外壳等组成。接通电源后,振荡器产生的音频信号电流通过电磁线圈,使电磁线圈产生磁场。振动膜片在电磁线圈和磁铁的相互作用下,周期性地振动发声。本设计使用的是电磁式蜂鸣器。此外,蜂鸣器还有有源蜂鸣器与无源蜂鸣器的区别。注意这里的“源”不是指电源,而是指震荡源。也就是说,有源蜂鸣器内部带震荡源,所以只要一通电就会叫;而无源内部不带震荡源,所以如果用直流信号无法令其鸣叫,必须用2K-5K的方波去驱动它。本设计使用的是有源蜂鸣器。2.6.2蜂鸣器报警电路蜂鸣器的驱动电路如图2.14所示。由于蜂鸣器的工作电流一般比较大,以致于单片机的I/O口是无法直接驱动,所以要利用三极管来驱动。三极管的控制脚(基极)也是接到单片机P20上,所以单片机的P20一旦输出低电平,蜂鸣器就会报警鸣叫。图2.14三极管驱动电路2.6.3发光二极管发光二极管简称为LED。由含镓(Ga)、砷(As)、磷(P)、氮(N)等的化合物制成。当电子与空穴复合时能辐射出可见光,因而可以用来制成发光二极管。在电路及仪器中作为指示灯,或者组成文字或数字显示。它是半导体二极管的一种,可以把电能转化成光能。发光二极管与普通二极管一样是由一个PN结组成,也具有单向导电性。当给发光二极管加上正向电压后,从P区注入到N区的空穴和由N区注入到P区的电子,在PN结附近数微米内分别与N区的电子和P区的空穴复合,产生自发辐射的荧光。不同的半导体材料中电子和空穴所处的能量状态不同。当电子和空穴复合时释放出的能量多少不同,释放出的能量越多,则发出的光的波长越短。砷化镓二极管发红光,磷化镓二极管发绿光,碳化硅二极管发黄光,氮化镓二极管发蓝光。发光二极管的反向击穿电压大于5伏。它的正向伏安特性曲线很陡,使用时必须串联限流电阻以控制通过二极管的电流。2.6.4报警模块电路对于LED报警电路(图2.15),LED的正极接到了电源的正极,负极串联一个1K的电阻后连到了单片机的P21上。因此只要单片机的P21输出低电平即可点亮该LED灯。图2.15蜂鸣器电路2.7按键输入模块键盘是人与单片机打交道的主要设备。在单片机应用中键盘用得最多的形式是独立键盘及矩阵键盘。它们各有自己的特点,其中独立键盘硬件电路简单,而且在程序设计上也不复杂,一般用在对硬件电路要求不高的简单电路中;矩阵键盘与独立键盘有很大区别,首先在硬件电路上它要比独立键盘复杂得多,而且在程序算法上比它要烦琐,但它在节省端口资源上有优势得多,因此它更适合于多按键电路。其次就是消除在按键过程中产生的“毛刺”现象。这里采用最常用的方法,即延时重复扫描法,延时法的原理为:“毛刺”脉冲一般持续时间短,约为几ms,而我们按键的时间一般远远大于这个时间,所以当单片机检测到有按键动静后再延时一段时间后再判断此电平是否保持原状态,如果是则为有效按键,否则无效。本设计中由于采用的按键数量较少,只有3个按键,分别是“设置”、“加”、“减”,故采用了独立键盘的方式,分别连到了单片机的P10、P11和P12。按键的连接图2.16所示:图2.16按键电路

3软件设计3.1程序语言及开发环境C语言是一种计算机程序设计语言,它既具有高级语言的特点,又具有汇编语言的特点。它由美国贝尔实验室的DennisM.Ritchie于1972年推出,1978年后,C语言已先后被移植到大、中、小及微型机上,它可以作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。它的应用范围广泛,具备很强的数据处理能力,不仅仅是在软件开发上,而且各类科研都需要用到C语言,适于编写系统软件、三维、二维图形和动画,具体应用例如单片机以及嵌入式系统开发。KeilC51是美国KeilSoftware公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境将这些部分组合在一起。运行Keil软件需要WIN98、NT、WIN2000、WINXP等操作系统。如果你使用C语言编程,那么Keil几乎就是你的不二之选,即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。3.2程序流程图3.2.1总体流程图本系统的软件流程图如图3.1所示。最开始先进行数码管的初始化,包括数码管功能初始化和数码管显示内容初始化。接着进入一个死循环的过程,进入循环的第一个任务就是启动超声模块,将测得的距离通过数码管显示出来,接着判断该测得的距离是否小于设置的值,如果小于的话,则进行声光报警。完成第一个任务后,就进行按键的扫描,判断是否有按键被按下,有的话,则进入报警值的设置操作。至此,完成了一次循环的过程,继续进入循环,进行下一轮的距离检测和按键扫描。开始开始 数码管初始化数码管初始化超声波初始化 超声波初始化数码管显示当前信息数码管显示当前信息否否低于距离蜂鸣器报警是是否否返回距离间距离加是按键设置是否按下按键低于距离蜂鸣器报警是是否否返回距离间距离加是按键设置是否按下按键图3.1程序流程图3.2.2数码管程序流程图设计开始开始数码管初始化数码管初始化定位行列坐标定位行列坐标显示一个字符显示一个字符否数据显示完?否数据显示完?是是结束结束图3.2数码管显示流程图开始3.2.3超声波模块HC-SR04程序流程图设计开始给给Trig引脚高脉冲等待Echo返回高电平等待Echo返回高电平启动定时器启动定时器0等待Echo等待Echo高电平结束关闭定时器0关闭定时器0计算定时器0时间计算定时器0时间通过时间,算出距离通过时间,算出距离结束结束图3.3超声波模块程序流程图4硬件组装与调试4.1元器件的选择与测量本次设计的元器件主要有:STC89C51单片机、晶振、电阻、电容、按键、开关、电源座、三极管、发光二极管、蜂鸣器、传感器、液晶等。这些元器件的引脚需要我们认真查找资料,了解每个器件的特性再进行焊接。这些元器件直接根据型号到电子元器件市场就很容易买到。其中焊接时要注意元件正负极性,电阻电容大小、芯片引脚顺序等细节。一般电阻的大小可以通过色环读取,或直接用万用表进行测量;电容和晶振等的大小会标准在元件本身;元件的正负可以遵循长正短负的原则,一些特殊元件可以通过查找资料获知正负极。4.2电路的调试调试是指系统的调整、改进与测试。测试是在电路组装后对电路的参数与工作状态进行测量,调整则是在测试的基础上对电路的某些参数进行修正,使满足设计要求。在进行调试前应拟订出测试项目、测试步骤、调试方法和所用仪器等,做到心中有数,保证调试工作圆满完成。4.2.1调试方法调试方法原则有两种。第一种是边安装边调试的方法。它是把复杂的电路按原理框图上的功能分成单元进行安装和调试,在单元调试的基础上逐步扩大安装和调试的范围,最后完成整机调试。这种方法在新设计的电路中比较常用。第二种方法是在整个电路系统全部焊接完毕后,实行一次性调试。这种方法比较适用于电路相对来说比较简单,系统不复杂的电路调试。4.2.2调试步骤(1)通电前检查电路焊接完毕后,不要急于通电,首先要根据原理电路认真对照检查电路中的接接线是否正确,包括错线(连线一端正确、另一端错误),少线(安装时漏掉的线),多线(连线的两端在电路图上都是不存在的)和短路(特别是间距很小的引脚及焊点间),并且还要检查每个元件引脚的使用端数是否与图纸相符。查线时最好用指针式万用表“Ω×1”档进行检查,或是用数字万用表“Ω”档的蜂鸣器来测量,而且要尽可能直接测量元器件引脚,这样同时可以发现接触不良的地方。(2)通电观察在电路安装没有错误的情况下接通电源(先关断电源开关,待接通电源连线之后再打开电路的电源开关)。但接通电源后不要立即进行电路功能的测试,首先要充观察整个电路有无异常现象,电路中元器件是否有发热烧坏等现象,是否有漏电现象,电源是否有短路和开路现象等。如果电路在测试过程中出现异常,首先应该立即关闭电源,检查后排除故障再重新通电测试。然后再按要求测量各元器件引脚电源的电压,而不只是测量各路总电源电压,以保证元器件正常工作。(3)单元电路调试在调试单元电路时应明确本部分的调试要求。调试顺序应按照电路原理图中信号流向进行,这样可以把整个电路进行分步调试,把前面调试好的电路的输出信号作为后一级电路的输入信号。从而保证电路的调试更加顺利方便。单元调试包括静态和动态调试。静态调试一般是指在没有外加信号的条件下测试电路各点的电位,特别是有源器件的静态工作点。通过它可以及时发现已经损坏和处于临界状态的元器件。动态调试是用前级的输出信号或自身的信号测试单元的各种指标是否符合设计要求,包括信号幅值、波形形状、相位关系、放大倍数和频率等。对于信号产生电路一般只看动态指标。把静态和动态测试的结果与设计的指标加以比较,经深入分析后对电路与参数提出合理的修正。在调试过程中应有详尽记录。(4)整机联调各单元电路调试好以后,并不见得由它们组成的整体电路性能一定会好,因此还要进行整体电路调试。整体电路调试主要是观察和测量动态性能,把测量的结果与设计指标逐一对比,找出问题及解决办法,然后对电路及其参数进行修正,直到全部电路的性能完全符合设计要求为止。4.3实验测试4.3.1目的本次实验是为了测试搭建的基于单片机的超声波测距系统的精度、可测距范围、在误差允许下的可测距范围、温度对测距系统的影响。4.3.2方法按照超声传感器的测距范围4~400CM,在距目标板在4CM、10CM、20CM、30CM、40CM、50CM、60CM、70CM、80CM、90CM、1M、1.5M、2M、2.5M、3M时进行测距,通过LCD显示补偿前和补偿后的测距结果的对比。在温度方面,选用20℃、25℃、30℃,35℃、40℃在室内或者室外进行测距。4.3.3结果分析在测量的过程中发现,当测距范围小于2CM时几乎很难测到距离,经分析可知由于距离太小,发射超声波的频率较高,在短距离内,短时间发射探头会发射多次超声波,接收探头也多次接收到回波,几乎无法测量数据。而且当测距范围大于2.5米时,由于发射功率并不是很大,反射回来的回波经过一定距离后接收探头不能接收到,所以并不能达到传感器厂家资料所给的4米范围。此次实验也充分的说明的温度补偿的重要性,声速不能简单地取340M/S,必须经过温度的补偿,在特别的区域,甚至还要考虑湿度对其的影响。尽管说经过温度的补偿以后还是有误差,但在比未补偿前误差小了一倍不止。通过以上数据发现,系统本身的精度也会受温度的影响,在不考虑温度对声速的补偿情况下,温度越高,系统本身的精度也越高。

总结本文讨论了超声波测距原理、硬件电路实现和软件设计方法基础上,完成了超声波测距的设计要求。利用单片机的运算和控制功能,设计出的一种简单实用的超声波的测距系统。利用超声波检测往往比较迅速、方便、计算简单、易于做到实时控制,并且在测量精度方面能达到工业实用的要求,随着科学技术的快速发展,超声波的应用将越来越广。但就目前技术水平来说,人们可以具体利用的超声波技术还十分有限,因此,这是一个正在蓬勃发展而又有无限前景的技术及产业领域。超声波测距仪硬件电路的设计主要包括单片机系统及显示电路、超声波模块三部分。单片机采用STC89C51,利用12MHz高精度的晶振,以获得较稳定时钟频率,减小测量误差。超声波模块使用HC-SR04,该模块质量稳定,测量精度高,价格低廉,很适合做成产品。显示模块使用数码管,该数码管可显示2行,每行16个字符,相对数码管来说,可以显示更加丰富的内容。经实际测试证明,该类测距工作稳定,能满足一般近距离测距的要求,且成本较低、有良好的性价比。

参考文献[1]谢维成,杨加国.单片机原理与应用及C51程序设计.北京:清华大学出版社,2016[2]蔡菲娜.单片微型计算机原理和应用.杭州:杭州大学出版社,2015[3]李建忠.单片机原理及应用.西安:西安电子科技大学出版社,2017[4]张齐等.单片机应用系统设计技术基于C语言编程.北京:电子工业出版社,2018[5]吴延海.微型计算机接口技术.重庆:重庆大学出版社,2017[6]李丽霞.单片机在超声波测距中的应用[J].电子技术,2018[7]姜道连,宁延一,袁世良.用AT89C2051设计超声波测距仪[J].国外电子元器件,2017[8]张鹏,张有志.一种新型超生测距系统[J].山东:山东大学学报,2018,33(1)[9]贾伯年.传感器技术.南京:东南大学出版社,2018[10]陈大新,胡学同,周杏鹏.利用FPGA改进超声波测距模块设计[J].传感器技术,2015,24(2):57~59[11]阎石.数字电子技术基础.北京:高等教育出版社,2018[12]楼然苗.51系列单片机设计实例.北京:北京航空航天大学出版社,2018[13]谭浩强.C程序设计(第三版).北京:清华大学出版社,2015

附录电路图主程序#include<reg52.H>//器件配置文件#include<intrins.h>#include"eeprom52.h"//传感器接口sbitRX=P2^3;sbitTX=P2^2;//按键声明sbitS1=P1^4;sbitS2=P1^5;sbitS3=P1^6;sbitDIAN=P0^5;//蜂鸣器sbitFeng=P2^0;//变量声明unsignedinttime=0;unsignedinttimer=0;unsignedcharposit=0;unsignedlongS=0;unsignedlongBJS;//报警距离charnum=0;//模式0正常模式1调整charMode=0;bitflag=0,flag_BJ;unsignedcharconstdiscode[]={0x5F,0x44,0x9D,0xD5,0xC6,0xD3,0xDB,0x47,0xDF,0xD7,0x80}; //数码管显示码0123456789-和不显示unsignedchardisbuff[4] ={0,0,0,0}; //数组用于存放距离信息unsignedchardisbuff_BJ[4] ={0,0,0,0};//报警信息sbitW0=P2^4;sbitW1=P2^5;sbitW2=P2^6;sbitW3=P2^7;/******************把数据保存到单片机内部eeprom中******************/voidwrite_eeprom(){ SectorErase(0x2000); byte_write(0x2000,BJS%255); byte_write(0x2001,BJS/255); byte_write(0x2060,a_a); }/******************把数据从单片机内部eeprom中读出来*****************/voidread_eeprom(){ BJS=(byte_read(0x2001)*255)+byte_read(0x2000); a_a=byte_read(0x2060);}/**************开机自检eeprom初始化*****************/voidinit_eeprom(){ read_eeprom(); //先读 if(a_a!=1) //新的单片机初始单片机内问eeprom { BJS=40; a_a=1; write_eeprom(); //保存数据 } }//延时100ms(不精确)voiddelay(void){unsignedchara,b,c;for(c=10;c>0;c--)for(b=38;b>0;b--)for(a=130;a>0;a--);}//按键扫描voidKey_(){ //+ if(S1==0) { delay(); //延时去抖 delay(); //延时去抖 while(S1==0) { P1=P1|0x0f; } BJS++; //报警值加 if(BJS>500)//最大500 { BJS=1; } write_eeprom(); //保存数据 } //- elseif(S2==0) { delay(); delay(); //延时去抖 while(S2==0) { P1=P1|0x0f; } BJS--; //报警值减 if(BJS<1) //最小1 { BJS=500; } write_eeprom(); //保存数据 } //功能 elseif(S3==0) //设置键 { delay(); delay(); //延时去抖 while(S3==0) { P1=P1|0x0f; } Mode++; //模式加 num=0; if(Mode>=2) //加到2时清零 { Mode=0; } }}/**********************************************************************************************************///扫描数码管voidDisplay(void) { //正常显示 if(Mode==0) { num++; if(num==1) { W3=1; W0=1; P0=~discode[disbuff[0]]; DIAN=0; W1=0; } elseif(num==2) { W1=1; P0=~discode[disbuff[1]]; W2=0; } elseif(num>=3) { W2=1; P0=~discode[disbuff[2]]; W3=0; num=0; } } //报警显示 else { num++; if(num==1) { W3=1; P0=~0xCE; //11001110 W0=0; } elseif(num==2) { W0=1; P0=~discode[disbuff_BJ[0]]; DIAN=0; W1=0; } elseif(num==3) { W1=1; P0=~discode[disbuff_BJ[1]]; W2=0; } elseif(num>=4) { W2=1; P0=~discode[disbuff_BJ[2]]; W3=0; num=0; } }}/**********************************************************************************************************///计算voidConut(void){ time=TH0*256+TL0; //读出T0的计时数值 TH0=0; TL0=0; //清空计时器 S=(time*1.7)/100;//算出来是CM if(Mode==0) //非设置状态时 { if((S>=700)||flag==1)//超出测量范围显示“-” { flag=0; disbuff[0]=10; //“-” disbuff[1]=10;

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论