超声波测距仪设计(正文)_第1页
超声波测距仪设计(正文)_第2页
超声波测距仪设计(正文)_第3页
超声波测距仪设计(正文)_第4页
超声波测距仪设计(正文)_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

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

文档简介

1、西华大学课程设计说明书 目录1 前言11.1课题的研究背景和意义11.2 课题的国内外研究现状11.3 课题设计的任务和要求22 总体方案设计32.1 本设计的研究方法32.2系统整体方案的设计32.3 系统整体方案的论证32.4 超声波测距原理32.4.1 超声波概述32.4.2 超声波传感器介绍42.4.3 超声波测距的原理53 单元模块设计7US-100超声波测距模块73.1单片机主芯片电路73.1.1 时钟电路83.1.2复位电路83.2 US-100超声波测距模块93.2.1 概述93.2.2 主要技术参数93.2.3 接口说明103.2.4 电平触发测距工作原理103.2.5 超声

2、波测距的系统及其组成113.3 显示电路模块113.4 声光报警123.5 电源电路123.6 按键设置134 软件设计144.1 主程序设计144.2 超声波测距主程序的程序155 系统调试265.1 硬件调试265.2 软件测试266 系统功能和指标参数276.1 系统功能276.2 指标参数277 结论288 总结与体会298.1本设计总结298.2 对设计的进一步完善提出意见或建议299 致谢3010 参考文献31附录一:超声波测距仪原理图32附录二:超声波测距仪PCB图33 1 前言1.1课题的研究背景和意义超声波是指频率高于20KHz的声波,属于机械波的范畴,遵循一般机械波在弹性介

3、质中的传播规律,如在介质的分界面处发生反射和折射现象,在进入介质后被介质吸收而发生衰减等,正是因为有这些性质,使得超声波可以用于距离的测量,随着经济的发展,科技水平的不断提高,电子测量技术应用越来越广泛,超声波测量精度高,成本低,性能稳定则备受青睐,超声波测距技术被广泛的应用于人们生活和工作中。由于超声波测距是一种非接触检测技术,不受光线、被测对象颜色的影响,比其他仪器更卫生,具有不污染、高可靠、长寿命等特点,被广泛应用于纸业、矿业、电厂、化工业、污水处理厂、食品、水文、等行业中,可在不同环境中进行距离的准确度在标定,可直接用于水酒精、糖等液位控制,能达到工业实用的指标要求。还可以用于移动机器

4、人的视觉系统中,这样可使机器人自动躲避障碍物行走,及时获得障碍物的位置信息,同时超声波测距系统具有以上的这些特点,在汽车倒车雷达的研制方面也得到了广泛应用。1.2 课题的国内外研究现状目前国际国内,在超声波测距方面的研究方向和水平的不同,主要体现在对测距原理、超声波信号处理方法和超声波测距处理器的选用上。常见的超声波测距原理分为渡越时间法和相位差法两种。信号的处理方法大致分为阈值检验法、互相关延时估计法、伪随机码扩频测距法和最小均方法四种。在处理器方面大多以单片机为主,其中以51系列应用最为广泛,采用运算速度更快,效率更高dsp芯片作为处理器,也正成为一个非常活跃的研究方向。目前已研制的超声波

5、测距仪中,量程一般为3-12m,美国AIRMAR公司生产的airducer AR30超声波传感器的作用距离可达30m,但价格昂贵,准确度方面已控制在测量误差的0.4%左右,与真值的差距在厘米级的范围内,若采用互相关或伪随机法,最高可控制在0.05m内,在提高精确度方面,超声波测距还有很大的发展潜力和上升空间。1.3 课题设计的任务和要求通过本课题的研究,将所学到的知识用在实践中并有所创新和进步。该设计可广泛应用在生活、军事、工业等各个领域,它需要设计者有较好的数电、模电知识,并且有一定的编程能力,综合运用所学的知识实现对超声波发射与接收信号进行控制,通过单片机程序对超声波信号进行相应的分析、计

6、算、处理最后显示在1602液晶上。1、 利用单片机的优势设计该超声波测距仪。2、该测距仪可直接从LCD显示屏上读出所测得的距离值,测量范围为2cm-450cm,该测距仪的测量精度高达0.3cm+1%。3、利用按键设置测距的上下限,并进行声光报警提示。4、设计产品用途:广泛应用于防盗、倒车雷达、水位测量、建筑施工工地以及一些工业现场。2 总体方案设计2.1 本设计的研究方法本设计选用US-100超声波测距模块。了解超声波测距的原理,只有对理论知识有一定的学习才能运用到实际操作中。根据US-100超声波测距模块的硬件结构电路。对电路进行分析能够产生超声波,实现超声波的发送和接收,从而实现利用超声波

7、测距的方法测量物体之间的距离。具体设计一个基于单片机的超声波测距器,包括单片机控制电路,发射电路,接收电路,液晶显示电路。2.2系统整体方案的设计由于超声波指向性强,能量消耗缓慢,在介质中传播的距离较远,因而超声波经常用于距离的测量。利用超声波检测距离,设计比较方便,计算处理也较简单,并且在测量精度方面也能达到农业生产等自动化的使用要求。 超声波发生器可以分为两大类:一类是用电气方式产生超声波,一类是用机械方式产生超声波。电气方式包括压电型、电动型等;机械方式有加尔统笛、液哨和气流旋笛等。它们所产生的超声波的频率、功率、和声波特性各不相同,因而用途也各不相同。目前在近距离测量方面常用

8、的是压电式超声波换能器。根据设计要求并综合各方面因素,本文采用STC89C52单片机作为控制器,用动态扫描法实现液晶数字显示,并通过按键设置系统报警的最小值和安全范围。报警电路主要作用是对距离较近时进行报警。根据实际情况,当距离大于3.5m时,可认为是安全状态,液晶显示“”标志;在3.5m和1m之间时认为是正常的,显示实测距离;小于1m时,系统发出报警功能。2.3 系统整体方案的论证超声波测距的原理是利用超声波的发射和接收,根据超声波传播的时间来计算出传播距离。实用的测距方法有两种,一种是在被测距离的两端,一端发射,另一端接收的直接波方式,适用于身高计;一种是发射波被物体反射回来后接收的反射波

9、方式,适用于测距仪。此次设计采用反射波方式。测距仪的分辨率取决于对超声波传感器的选择。超声波传感器是一种采用压电效应的传感器,常用的材料是压电陶瓷。由于超声波在空气中传播时会有相当的衰减,衰减的程度与频率的高低成正比;而频率高分辨率也高,故短距离测量时应选择频率高的传感器,而长距离的测量时应用低频率的传感器。2.4 超声波测距原理2.4.1 超声波概述超声波是一种频率超过20的机械波。超声波作为一种特殊的声波,同样具有声波传输的基本物理特性反射、折射、干涉、衍射、散射。超声波具有方向性集中、振幅小、加速度大等特点,可产生较大力量,并且在不同的媒质介面,超声波的大部分能量会反射。利用超声检测往往

10、比较迅速,方便,易于做到实时控制,并且在测量精度方面能达到工业使用的要求,主要应用于倒车雷达、建筑施工工地以及一些工业现场,例如:液位、井深、管道长度等场合。超声波测量在国防、航空航天、电力、石化、机械、材料等众多领域具有广泛的作用,它不但可以保证产品质量、保障安全,还可起到节约能源、降低成本的作用。超声波与光波、电磁波、射线等检测相比,其最大特点是穿透力强,几乎可以在任何物体中传播,了解被测物体内部情况。超声检测设备还具有结构简单,成本低廉的优点,有利于工程实际使用。2.4.2 超声波传感器介绍超声波传感器是一种将其他形式的能转变为所需频率的超声能或是把超声能转变为同频率的其他形式的能的器件

11、。目前常用的超声波传感器有两大类,即电声型与流体动力型。电声型主要包括压电传感器、磁致伸缩传感器、静电传感器。流体动力型包括有气体和液体两种类型的哨笛。由于工作频率与应用目的不同,超声波传感器的结构形式是多种多样的,并且名称也有不同,例如在超声检测和诊断中习惯上都把超声波传感器称为探头,而工业中采用的流体动力型传感器称为“哨”或“笛”。压电传感器属于超声波传感器中电声型的一种。探头由压电晶片、楔块、接头等组成,是超声检测中最常用的实现电能和声能相互转换的一种传感器件,是超声波检测装置的重要组成部分。压电材料分为晶体和压电陶瓷两类。属于晶体的如石英、铌酸锂等,属于压电陶瓷的有锆钛酸铅,钛酸钡等。

12、其具有下列的特性:把这种材料置于电场之中,它就产生一定的应变;相反,对这种材料施以外力,则由于产生了应变就会在其内部产生一定方向的电场。所以,只要对这种材料加以交变电场,它就会产生交变的应变,从而产生超声振动。因此,用这种材料可以制成超声传感器。传感器的主要组成部分是压电晶片。当压电晶片受发射电脉冲激励后产生振动,即可发射声脉冲,是逆压电效应。当超声波作用于晶片时,晶片受迫振动引起的形变可转换成相应的电信号,是正压电效应。前者用于超声波的发射,后者即为超声波的接收。超声波传感器一般采用双压电陶瓷晶片制成。这种超声传感器需要的压电材料较少,价格低廉,且非常适用于气体和液体介质中。在压电陶瓷上加上

13、有大小和方向不断变化的交流电压时,根据压电效应,就会使压电陶瓷晶片产生机械变形,这种机械变形的大小和方向在一定范围内是与外加电压的大小和方向成正比的。也就是说,在压电陶瓷晶片上加有频率为f0交流电压,它就会产生同频率的机械振动,这种机械振动推动空气等媒介,便会产生超声波。如果在压电陶瓷晶片上有超声机械波作用,这将会使其产生机械变形,这种机械变形是与超声机械波一致的,机械变形使压电陶瓷晶片产生频率与超声机械波相同的电信号。压电式超声波发生器实际上是利用压电晶体的逆向压电效应来工作的。超声波发生器内部结构如图2.1所示,它有两个压电晶片和一个锥形振子,当它的两极外加脉冲信号,其频率等于压电晶片的固

14、有振荡频率时,压电晶片将会发生共振,并带动锥形振子振动,便产生超声波。反之,如果两极间未外加电压,当锥形振子接收到超声波时,将压迫压电晶片作振动,将机械能转化为电信号,这时它就成为超声波传感器。图2.1 压电式超声波传感器结构图压电陶瓷晶片有一个固定的谐振频率,即中心频率f0。发射超声波时,加在其上面的交变电压的频率要与它的固有谐振频率一致。这样,超声传感器才有较高的灵敏度。当所用压电材料不变时,改变压电陶瓷晶片的几何尺寸,就可非常方便的改变其固有谐振频率。利用这一特性可制作成各种频率的超声波传感器。一般常用的超声波传感器有两种:专用型和兼用型。专用型是发送器用作发送超声波,接收器用作接收超声

15、波;兼用型就是发送器和接收器是一体的传感器,既可以发送超声波,又可以接收超声波。2.4.3 超声波测距的原理超声波发射器向某一方向发射超声波,在发射的同时开始计时,超声波在空气中传播,途中碰到障碍物就立即返回来,超声波接收器收到发射波就立即停止计时。假设超声波在空气中的传播速度为,根据计时器记录的时间,发射点距障碍物的距离,如图2.2所示 图2.2 超声波测距原理 图2.2中被测距离为H,两探头中心距离的一半用M表示,超声波单程所走过的距离用表示,由图可得: (1) (2)将式(2)带入式(1)得: (3)在整个传播过程中,超声波所走过的距离为: (4)式中:为超声波的传播速度,为传播时间,即

16、为超声波从发射到接收的时间。将式(4)带入式(3)可得: (5)当被测距离H远远大于M时,式(5)变为: (6)这就是所谓的时间差测距法。首先测出超声波从发射到遇到障碍物返回所经历的时间,再乘以超声波的速度就得到二倍的声源与障碍物之间的距离2。由于是利用超声波测距,要测量预期的距离,所以产生的超声波要有一定的功率和合理的频率才能达到预定的传播距离,同时这是得到足够的回波功率的必要条件,只有得到足够的回波频率,接收电路才能检测到回波信号和防止外界干扰信号的干扰。经分析和大量实验表明,频率为40左右的超声波在空气中传播效果最佳,同时为了处理方便,发射的超声波被调制成具有一定间隔的调制脉冲波信号。3

17、 单元模块设计硬件电路的设计主要包括单片机系统及显示电路、超声波发射电路和超声波接收电路、声光报警输出电路、供电电路等几部分,如图3.1所示。单片机采用STC89C52,系统晶振采用12MHz高精度的晶振,以获得较稳定时钟频率,减小测量误差。单片机用P3.6端口产生10us高电平的触发信号, US-100超声波测距模块发射探头循环发出8个40kHz的方波信号,P3.7端口监测超声波接收电路输出的返回信号。显示电路采用简单实用液晶1602显示超声波测得距离。单片机控制系统(STC89C52)声光报警电路供电单元显示模块US-100超声波测距模块图3.1 系统整体框图3.1单片机主芯片电路STC8

18、9C52是一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash 存储器。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。 具有以下标准功能: 8k字节Flash,512字节RAM, 32 位I/O 口线,看门狗定时器,内置4KB EEPROM,MAX810复位电路,三个16 位 定时器/计数器,一个6向量2级中断结构,全双工串行口。另外 STC89X52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工作

19、。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。最高运作频率35Mhz,6T/12T可选。图3.2 单片机芯片STC89C52的电路图3.1.1 时钟电路首先介绍一下单片机的晶振电路,即时钟电路。单片机的工作流程,就是在系统时钟的作用下,一条一条地执行存储器中的程序。单片机的时钟电路由外接的一只晶振和两只起振电容,以及单片机内部的时钟电路组成,晶振的频率越高,单片机处理数据的速度越快,系统功耗也会相应增加,稳定性也会下降。单片机系统常用的晶振频率有6MHz、110592MHz、12MHz、本系统采用110592MHz晶振,电容选30pF,电路

20、如图3.3 。图3.3 晶振电路图3.1.2复位电路系统刚上电时,单片机内部的程序还没有开始执行,需要一段准备时间,也就是复位时间。一个稳定的单片机系统必须设计复位电路。当程序跑飞或死机时,也需要进行系统复位。复位电路有很多种,有上电复位,手动复位等,电路如图3.4 。 图3.3 复位电路图3.2 US-100超声波测距模块3.2.1 概述US-100超声波测距模块可实现2cm4.5m的非接触测距功能,拥有2.45.5V的宽电压输入范围,静态功耗低于2mA,自带温度传感器对测距结果进行校正,同时具有GPIO,串口等多种通信方式,内带看门狗,工作稳定可靠。本模块如图3.4和图3.5所示: 图3.

21、4 US-100正面图 图3.5 US-100背面图3.2.2 主要技术参数表3.1电气参数US-100超声波测距模块工作电压DC 2.4V5.5V静态电流2mA工作温度-20+70度输出方式电平或UART(跳线帽选择)感应角度小于15度探测距离2cm-450cm探测精度0.3cm+1%UART模式下串口配置波特率9600,起始位1位,停止位1位,数据位8位,无奇偶校验,无流控制。3.2.3 接口说明本模块共有两个接口,即模式选择跳线和5 Pin接口。模式选择跳线的间距为2.54mm,当插上跳线帽时为UART(串口)模式,拔掉时为电平触发模式。5 Pin接口从左到右依次编号1,2,3,4,5。

22、它们的定义如下:1号Pin:接VCC电源(供电范围2.4V5.5V);2号Pin:当为UART模式时,接外部电路UART的TX端;当为电平触发模式时,接外部电路的Trig端;3号Pin:当为UART模式时,接外部电路UART的RX端;当为电平触发模式时,接外部电路的Echo端;4号和5号Pin:接外部电路的地。3.2.4 电平触发测距工作原理在模块上电前,首先去掉模式选择跳线上的跳线帽,使模块处于电平触发模式。电平触发测距的时序如图3.6所示: 3.6 US-100测距时序图图3.6表明:只需要在Trig/TX管脚输入一个10US以上的高电平,系统便可发出8个40KHZ的超声波脉冲,然后检测回

23、波信号。当检测到回波信号后,模块还要进行温度值的测量,然后根据当前温度对测距结果进行校正,将校正后的结果通过Echo/RX管脚输出。在此模式下,模块将距离值转化为340m/s时的时间值的2倍,通过Echo端输出一高电平,可根据此高电平的持续时间来计算距离值。即距离值为:(高电平时间*340m/s)/2。注:因为距离值已经经过温度校正,此时无需再根据环境温度对超声波声速进行校正,即不管温度多少,声速选择340m/s即可。3.2.5 超声波测距的系统及其组成单片机STC89C52通过P3.6端口产生10us高电平的触发信号, 使US-100超声波测距模块发射探头循环发出8个40kHz的方波信号,然

24、后检测回波信号。当检测到回波信号后,模块还要进行温度值的测量,然后根据当前温度对测距结果进行校正,将校正后的结果通过Echo/RX管脚输出,同时单片机P3.7端口监测超声波接收电路输出的返回信号。电路如图3.7所示:图3.73.3 显示电路模块1602液晶也叫1602字符型液晶它是一种专门用来显示字母、数字、符号等的点阵型液晶模块它有若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符。每位之间有一个点距的间隔每行之间也有间隔起到了字符间距和行间距的作用,正因为如此所以它不能显示图形。1602采用标准的16脚接口,其中:第1脚:VSS为电源地;第2脚:VDD接5V电源正极

25、;第3脚:V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会 产生“鬼影”,使用时可以通过一个10K的电位器调整对比度);第4脚:RS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器;第5脚:RW为读写信号线,高电平(1)时进行读操作,低电平(0)时进行写操作;第6脚:E(或EN)端为使能(enable)端; 第714脚:D0D7为8位双向数据端;第1516脚:空脚或背灯电源,15脚背光正极,16脚背光负极。液晶1602接口电路如图3.8所示:图3.8 液晶1602接口电路3.4 声光报警当所测得的距离小于设置的报警距离时,P1.3口为低电

26、平,红色发光二极管D6亮,提醒司机注意;当所测得的距离在安全距离范围内时,P1.4口为低电平,黄色发光二极管D8亮,从而可以起到光报警的作用。当P1.2口输入低电平时三极管Q1导通蜂鸣器响,当P1.2口输入高电平时三极管Q1截止蜂鸣器不响,从而起到声音报警的作用。电路如图3.9 和 3.10 。 图3.9 声音报警图3.10 光报警3.5 电源电路电源电路主要是为系统提供电源,在本设计中,为了使电路简单,我们直接用USB接口提供5V直流电源为电路供电。图3.11中的第2个图是电源指示灯电路,指示是否给系统加电, 图3.11 电源电路3.6 按键设置通过按键设置系统报警的最小值和安全范围。报警电

27、路主要作用是在距离较近时进行报警。根据实际情况,当距离大于3.5m时,可认为是安全状态,液晶显示“-”标志;在3.5m和1m之间时认为是正常的,显示实测距离;小于1m时,应提醒注意,系统发出报警功能。通过按键S2选择最小值L或最大值H的设定;S5和S4设定其大小。按键电路如3.12所示:图3.12 按键电路4 软件设计4.1 主程序设计超声波测距的软件设计主要由超声波发生与接收程序及显示子程序组成。超声波测距的程序既有较复杂的计算(计算距离时),又要求精细计算程序运行时间(超声波测距时),所以控制程序可采用C语言编程。 主程序首先是对系统环境初始化,设定时器/计数器T0工作方式为方式

28、1且为定时模式,开总中断允许位EA和T0中断允许位ET0。所有的流程框图如下所示:初始化开始发送触发信号TX回波信号RX=1?启动定时器T0RX=0?关闭定时器T0计算显示、报警NNYY 外部中断关外部中断按键设置开外部中断返回图4.1 主程序设计框图4.2 超声波测距主程序的程序#include <reg52.h>/器件配置文件#include <intrins.h>sbit RX=P37;sbit TX=P36;sbit LCM_RW=P16; /定义LCD引脚sbit LCM_RS=P15;sbit LCM_E=P17;sbit SET=P32;sbit UP=P

29、26;sbit DOWN=P27;sbit BUZ=P12;sbit D1=P13;sbit D2=P14;#define LCM_Data P0#define Busy 0x80 /用于检测LCM状态字中的Busy标识#defineucharunsigned char#defineuintunsigned int unsigned long SET_H=35,SET_L=10;void LCMInit(void);void DisplayOneChar(uchar X, uchar Y, uchar DData);void DisplayListChar(uchar X, uchar Y,

30、uchar code *DData);void Delay5Ms(void);void Delay400Ms(void);void Decode(uchar ScanCode);void WriteDataLCM(uchar WDLCM);void WriteCommandLCM(uchar WCLCM,BuysC);uchar ReadDataLCM(void);uchar ReadStatusLCM(void);uchar code mcustudio ="Set:L1.0M H3.5M "uchar code email = "153607297"

31、uchar code Distance= "Distance: "uchar code Cls = " "uchar code ASCII15 = '0','1','2','3','4','5','6','7','8','9','.','-','M'static uchar DisNum = 0; /显示用指针 uint time=0; unsign

32、ed long S=0; bit flag =0; uchar disbuff4 = 0,0,0,0,;/写数据void WriteDataLCM(uchar WDLCM) ReadStatusLCM(); /检测忙LCM_Data = WDLCM;LCM_RS = 1;LCM_RW = 0;LCM_E = 0; /若晶振速度太高可以在这后加小的延时LCM_E = 0; /延时LCM_E = 1;/写指令void WriteCommandLCM(uchar WCLCM,BuysC) /BuysC为0时忽略忙检测if (BuysC) ReadStatusLCM(); /根据需要检测忙LCM_Da

33、ta = WCLCM;LCM_RS = 0;LCM_RW = 0;LCM_E = 0;LCM_E = 0;LCM_E = 1;/读数据uchar ReadDataLCM(void)LCM_RS = 1; LCM_RW = 1;LCM_E = 0;LCM_E = 0;LCM_E = 1;return(LCM_Data);/读状态uchar ReadStatusLCM(void)LCM_Data = 0xFF; LCM_RS = 0;LCM_RW = 1;LCM_E = 0;LCM_E = 0;LCM_E = 1;while (LCM_Data & Busy); /检测忙信号return(

34、LCM_Data);void LCMInit(void) /LCM初始化LCM_Data = 0;WriteCommandLCM(0x38,0); /三次显示模式设置,不检测忙信号Delay5Ms(); WriteCommandLCM(0x38,0);Delay5Ms(); WriteCommandLCM(0x38,0);Delay5Ms(); WriteCommandLCM(0x38,1); /显示模式设置,开始要求每次检测忙信号WriteCommandLCM(0x08,1); /关闭显示WriteCommandLCM(0x01,1); /显示清屏WriteCommandLCM(0x06,1

35、); / 显示光标移动设置WriteCommandLCM(0x0F,1); / 显示开及光标设置/按指定位置显示一个字符void DisplayOneChar(uchar X, uchar Y, uchar DData)Y &= 0x1;X &= 0xF; /限制X不能大于15,Y不能大于1if (Y) X |= 0x40; /当要显示第二行时地址码+0x40;X |= 0x80; /算出指令码WriteCommandLCM(X, 1); /发命令字WriteDataLCM(DData); /发数据/按指定位置显示一串字符void DisplayListChar(uchar X

36、,uchar Y, uchar code *DData)unsigned char ListLength; ListLength = 0;Y &= 0x1;X &= 0xF; /限制X不能大于15,Y不能大于1while (DDataListLength>0x19) /若到达字串尾则退出if (X <= 0xF) /X坐标应小于0xFDisplayOneChar(X, Y, DDataListLength); /显示单个字符ListLength+;X+;/5ms延时void Delay5Ms(void)uint TempCyc = 5552;while(TempCy

37、c-);/400ms延时void Delay400Ms(void)uchar TempCycA = 5;uint TempCycB;while(TempCycA-)TempCycB=7269;while(TempCycB-);/*/void Conut(void)time=TH0*256+TL0;TH0=0;TL0=0;S=(time*1.8446)/10; /算出来是MMif(S>SET_H*100)|flag=1) /超出测量范围显示“-” flag=0;BUZ=1;D1=1;D2=1;DisplayOneChar( 9, 1, ASCII11);DisplayOneChar(10,

38、 1, ASCII10);/显示点DisplayOneChar(11, 1, ASCII11);DisplayOneChar(12, 1, ASCII11);DisplayOneChar(13, 1, ASCII11);DisplayOneChar(14, 1, ASCII12);/显示M else if(S<SET_L*100)BUZ=0;D1=0;D2=1;disbuff0=S/1000;disbuff1=S/100%10;disbuff2=S/10 %10;disbuff3=S%10;DisplayOneChar( 9, 1, ASCIIdisbuff0); DisplayOneC

39、har(10, 1, ASCII10);/显示点DisplayOneChar(11, 1, ASCIIdisbuff1);DisplayOneChar(12, 1, ASCIIdisbuff2);DisplayOneChar(13, 1, ASCIIdisbuff3);DisplayOneChar(14, 1, ASCII12);/显示MelseBUZ=1; D1=1; D2=0; disbuff0=S/1000; disbuff1=S/100%10; disbuff2=S/10 %10; disbuff3=S%10; DisplayOneChar( 9, 1, ASCIIdisbuff0);

40、 DisplayOneChar(10, 1, ASCII10);/显示点 DisplayOneChar(11, 1, ASCIIdisbuff1); DisplayOneChar(12, 1, ASCIIdisbuff2); DisplayOneChar(13, 1, ASCIIdisbuff3); DisplayOneChar(14, 1, ASCII12);/显示M/*/void zd0() interrupt 1 /T0中断用来计数器溢出,超过测距范围flag=1; /中断溢出标志/*/void StartModule() /启动模块TX=1; /启动一次模块_nop_(); _nop_

41、(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();_nop_(); _nop_(); _nop_(); _nop_();/*/ void delayms(uint ms)uchar i=100,j;for(;ms;ms-)while(-i)j=10;while(-j);/*/void keyscan() /按键扫描 - 处理uchar H,L;while(SET)Writ

42、eCommandLCM(0x80+7,1);if(!UP) while(!UP); /等待按键松开SET_L+;if(SET_L>20) SET_L = 2 ;H = SET_L/10;L = SET_L%10;DisplayOneChar(5,0,ASCIIH);DisplayOneChar(6,0,ASCII10);DisplayOneChar(7,0,ASCIIL);if(!DOWN) while(!DOWN); /等待按键松开SET_L-;if(SET_L<2) SET_L = 20 ;H = SET_L/10;L = SET_L%10;DisplayOneChar(5,0

43、,ASCIIH);DisplayOneChar(6,0,ASCII10);DisplayOneChar(7,0,ASCIIL);if(!SET)while(!SET); /等待按键松开while(SET)WriteCommandLCM(0x80+13,1);if(!UP) while(!UP); /等待按键松开SET_H+;if(SET_H>45) SET_H = 21 ;H = SET_H/10;L = SET_H%10;DisplayOneChar(11,0,ASCIIH);DisplayOneChar(12,0,ASCII10);DisplayOneChar(13,0,ASCIIL

44、);if(!DOWN) while(!DOWN); /等待按键松开SET_H-;if(SET_H<21) SET_H = 45 ;H = SET_H/10;L = SET_H%10;DisplayOneChar(11,0,ASCIIH);DisplayOneChar(12,0,ASCII10);DisplayOneChar(13,0,ASCIIL);void int0 () interrupt 0EX0=0;delayms(30);/20MSkeyscan();delayms(20);EX0=1; void main(void)uchar TempCyc;BUZ=1;D1=1;D2=1;

45、Delay400Ms(); /启动等待,等LCM讲入工作状态LCMInit(); /LCM初始化Delay5Ms(); /延时片刻(可不要)DisplayListChar(0, 0, mcustudio);DisplayListChar(0, 1, email);ReadDataLCM();/测试用句无意义for (TempCyc=0; TempCyc<10; TempCyc+)Delay400Ms(); /延时DisplayListChar(0, 1, Cls);DisplayListChar(0, 1, Distance);while(1)TMOD=0x01; /设T0为方式1,GA

46、TE=1;TH0=0;TL0=0; ET0=1; /允许T0中断EA=1;EX0=1;IT0=0; /开启总中断while(1)/ keyscan();StartModule(); while(!RX);/当RX为零时等待 TR0=1; /开启计数 while(RX);/当RX为1计数并等待 TR0=0;/关闭计数 Conut();/计算delayms(60);/60MS 5 系统调试5.1 硬件调试在完成电路图的仿真之后,进入了实物设计,实物设计主要是对自己所设计的电路图进去焊接。在完成第一部分的焊接后,要对一些部件进行电压的测量,第一部分的焊接主要焊接电阻,电源,USB接口,发光二极管等,

47、焊接完成后,我们接上USB接口,发现电路板上的USB接口处的发光二极管发亮,这说明已经通电,之后我们使用万用表对USP接口,稳压二极管,电源进行电压的测量,测量出来的电压值均在+5.00V左右,说明之前焊接的电路正确。 之后我们断开电源再将电路素所需要的芯片的连接板和电容等器件焊接到电路板上,焊接时必须注意芯片和电容的正负极,例如电容的正负极判断为“长正短负”,就是电容所接的长的那根导线接正极,短的那根接负极。在焊接完成之后,我们再次接通电源和USP接口的电源,按下开关电源,USB接口处的发光二极管再次发亮,此时再次用万用表对电路板的电源,稳压二极管,USB接口及其各个芯片和单片机进行电压的测

48、量,测量出来的全部都在+5.00V,说明电路正确,此时我们将所用的芯片包括单片机接上电路板,然后开启电源,将程序载入单片机运行整个电路。焊接完每个模块以后,再进行模块的单独测试,以确保在整个系统焊接完能正常的工作,原件安装完毕后,将写好程序的STC89C52单片机机装到测距板上,通电后将测距板的超声波头对着墙面往复移动,看数码管的显示结果会不会变化,在测量范围内能否正常显示。如果一直显示“- - -”,则需将下限值增大。本测距板1s测量4-5次,超声波发送功率较大时,测量距离远,则相应的上限值应设置为低值。试验板中的声速设有温度补偿,可以较为准确的测量。5.2 软件测试硬件测试好后,便可将程序

49、编译下载到单片机试运行。在调试时我们所编写的第一个程序没有按键设置功能,不能进行上下限的设置,有很大的局限性。根据实际情况增加了这部分功能,增加了按键设置功能后,发现当按下按键时不能立即响应,需长按设置按钮SET。经过我们组员仔细讨论,我们决定采用中断解决这方面的问题。其次测量精度不高,只能精确到厘米,后经过修改程序使得精度变为毫米。6 系统功能和指标参数6.1 系统功能由于超声波测距是一种非接触检测技术,不受光线、被测对象颜色的影响,可以用于移动机器人的视觉系统中,这样可使机器人自动躲避障碍物行走,及时获得障碍物的位置信息,同时超声波测距系统具有以上的这些特点,在汽车倒车雷达的研制方面也得到

50、了广泛应用。随着社会经济的发展和交通运输业的不断兴旺,汽车的数量在不断的增加。交通拥挤状况也日益严重,撞车事件也经常发生,造成了很多不可避免的人声伤亡和经济损失,面对这种情况,设计一种响应快、可靠性高并且比较经济的汽车防撞预警系统显得非常的重要。超声波测距法是一种最常见的距离测量方法。可以利用超声波测距法设计一种倒车防撞报警系统。其主要作用是在汽车尾部与障碍物距离较近时进行报警。根据实际情况,当汽车尾部与障碍物距离大于3.5m时,可认为是安全状态,液晶显示“”标志;在3.5m和1m之间时认为是正常的,显示实测距离;小于1m时,应提醒司机注意,系统发出报警功能。6.2 指标参数在主电路板中需要测

51、量出的参数:电源电压,稳压管电压,各个芯片的电压以及单片机的电压,以下为各电压的值:1.电源电压的测量值为5.00V2.稳压管的电压测量值为5.02V3.单片机的电压值为5.02V所以对于电源为5V电路来说,以上参数都是正确的。1.电路板中单片机的晶振电路中晶振元件12MHZ2.光报警电路中的限流电阻的大小为1K在声光报警电路中当所测得的距离小于设置的报警距离时,P1.3口为低电平,红色发光二极管D6亮,提醒注意;当所测得的距离在安全距离范围内时,P1.4口为低电平,黄色发光二极管D8亮,从而可以起到光报警的作用。当P1.2口输入低电平时三极管Q1导通蜂鸣器响,当P1.2口输入高电平时三极管Q1截止蜂鸣器不响,从而起到声音报警的作用。7 结论本文主要讲述了倒车雷达,即超声波测距仪的原理和设计方法,设计的最终结果是使超声波测距仪能够产生超声波,实现超声波的发送与接收,从而实现利用超声波方法测量物体间的距离,并以数字的形式显示测量距离,在距离小于1m时发出报警。超声波测距的原理是利用超声波的发射和接收,根据超声波传播的时间来计算出传播距离。超声波测距仪硬件电路的设计主要包括单片机系统及显示电路、超声波发射电

温馨提示

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

评论

0/150

提交评论