超声波测距总结报告

上传人:woxinch****an2018 文档编号:38999811 上传时间:2018-05-10 格式:DOC 页数:14 大小:254.12KB
返回 下载 相关 举报
超声波测距总结报告_第1页
第1页 / 共14页
超声波测距总结报告_第2页
第2页 / 共14页
超声波测距总结报告_第3页
第3页 / 共14页
超声波测距总结报告_第4页
第4页 / 共14页
超声波测距总结报告_第5页
第5页 / 共14页
点击查看更多>>
资源描述

《超声波测距总结报告》由会员分享,可在线阅读,更多相关《超声波测距总结报告(14页珍藏版)》请在金锄头文库上搜索。

1、 超声波测距模块总结报告超声波测距模块总结报告成 员 王瑞杰 王文祥 林世余 分分 院院 电子通信与物理学院 专专 业业 电子信息科学与技术 班班 级级 15 级(大一)电子信息科学与技术 1 班 指导员指导员 王佃涛 完成日期完成日期 2015 年 11 月 1 日 一、超声波测距原理一、超声波测距原理超声波是指频率高于 20KHZ 的机械波(我们采用 40KHZ)。为了以超声波作为检测手段,必须产生超声波和接收超声波。完成这种功能的装置超声波测距模块。该模块利用压电效应的原理将电能和超声波相互转化,即在发射超声波的时候,将电能转换,发射超声波;而在收到回波的时候,则将超声振动转换成电信号。

2、超声波测距的原理是测出超声波从发射到遇到障碍物返回所经历的时间,再乘以超声波的速度就可以得到二倍的声源与障碍物之间的距离。即:D=C*T/2。其中,D 为超声波测距模块到障碍物之间的距离;C 为超声波此时在空气中的传播速度;T 为超声波的发收时间。在空气中,声波的传播速度一般受温湿度的影响,在没有温湿度传感器或对测量精度要求不高的情况下,一般取 340m/s。在实验中,本程序采用 C=340m/s。二、超声波测距模块():二、超声波测距模块():1 1、板上接线方式:VCC、trig(控制端) 、echo(接收端) 、GND2、模块工作原理:(1)采用 IO 触发测距,给 10us 以上的高电

3、平信号;(2)模块自动发送 8 个 40khz 的方波,自动检测是否有信号返回;(3)有信号返回,通过 IO 输出一高电平,高电平持续的时间就是超声波从发射到返回的时间测试距离=(高电平时间*声速(340M/S)/2; 3、操作方法:用一个控制口发一个 10US 以上的高电平,在接收口等待高电平输出.当有高电平输出就可以开定时器计时,当此口变为低电平时就可以读定时器的值,此时就为此次测距的时间,方可算出距离.如此不断的周期测,就可以移动测量的值了4、局限性:该模块在将电信号转化成声波的过程中,所产生的声波并不是理想中的矩形,而是一个类似花瓣一样形状,发送超声波的波束角大约为 15 度。在实际应

4、用中,该波束应为一个立体的圆锥形,这也导致两个问题:1) 随着探测距离的延长,探测障碍物方位的准确性下降。即无法对障碍物进行准确定位。2) 探测距离越远,能量扩散越严重,在障碍物不理想的情况下,返回信号减弱,以至于在标准探测范围内,返回脉冲也达不到该模块的判断阈值。三、三、 单片机控制模块单片机控制模块系统采用 STC90C516RD+控制芯片。电路图:电路图:算法流程图如下:算法流程图如下:开始K3 被按下显示两个报警极限K2 被按下显示、修改最大极限显示最小报警极限模式选择K8 被按下K8 被按下静态测量修改最小极限等待模式选择T 请 在 此 放 置 您 的 文 字FFTFTFT动态测量模

5、式 1模式 2K8 被按下K8 被按下FTTF系统框架图如下:数码管51 单片机最小系统板独立按键蜂鸣器发光二极管超声波测距模块代码如下:#include#define UC unsigned char#define UI unsigned intvoid delay(UI);/延时 9.56us 程序sbit beep = P13;/用于声音报警sbit Lv = P17;/用于光报警sbit Hong = P16;sbit QD = P37;/K8 /P37 口(K8)为确定键,sbit GX = P31;/K7/P33 口(K2)为修改键,sbit SX = P36;/K6/P32(K3

6、)为测量键.sbit BX = P30;/K5/个(K7),十(K6),百(K5),三位修改键sbit a = P12;/百位/数码管位选sbit b = P11;/十位sbit c = P10;/个位sbit trig = P14;/方波发射端sbit echo = P15;/超声波接收端void IntConfiguration();/用来“设置中断“的函数,P33 口(K2)为修改键,P32(K3)为测量键.void TimeConfiguration();/用来“设置定时器“的函数sbit K1 = P34;/动态sbit K4 = P35;/静态/用于进行模式切换(K1、K4 键)v

7、oid xiaxian();/修改函数,用来修改下限void shangxian();/修改函数,用来修改上限UI min3=0,5,0;/报警极限,拆分为“百十个“三位UI max3=3,0,0;/MIN,MAX 用来存储最大和最小值void MINxianshi(UI);/最小范围和最大范围的显示void MAXxianshi(UI);UC code CharacterCode10 = 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;void main()TimeConfiguration();/设置定时器 0IntConfigurati

8、on();/设置中断允许,K4 键为修改键,K8 键为确定键while(1)MINxianshi(40);/1.50169000sMAXxianshi(40); /1.50098300svoid zhongduan_0() interrupt 0 /测量中断函数(外部中断 0)UI moshi = 0;UI juli = 0;UI time = 0;UI MAX, MIN;UI TT = 0;/用于第一次测量时给 P15 口置一,以便正确读取数值UI t1, t2, t3;UI GE = 0, SHI = 0, BAI = 0;/先定义三个变量,用来显示测量的距离.a = 0;b = 0;c

9、= 0;P2 = 0x00;/防止最后显示的那个数码管一直亮MAX = max0*100 + max1*10 + max2;/计算最大与最小值MIN = min0*100 + min1*10 + min2;while(1)/下面进行测量while(1)/*先进行模式判断*/if(0 = K1)moshi = 1;break;/模式 1 为动态测量if(0 = K4)moshi = 2;break;/模式 2 为静态测量if(0 = QD)return;/结束测量函数loop:beep = 1;Lv = 1;Hong = 1;a = 0; b = 0; c = 0;P2 = 0x00;if( (

10、0 = QD)if( (0 = QD)if(0 = QD)delay(55500);if(0 = QD)break;t1 = 350;t2 = 35;t3 = 235;trig = 0; echo = 0; delay(2);trig = 1; delay(2); trig = 0;while(echo = 0);TR0 = 1;while(echo = 1);TR0 = 0;+TT;if(1 = TT)delay(55500);TH0 = 0x00;TL0 = 0x00;goto loop;time=TL0+TH0*256;TH0=0x00;TL0=0x00;juli=( int )( (t

11、ime*0.034)/2 );BAI = ( (juli%1000)/100 );SHI = ( (juli%100)/10 );GE = ( juli%10 );if(juli MAX)Hong = 0;Lv = 1;while( t1- )a = 0; b = 1; c = 1; P2 = CharacterCodeBAI; delay(80);a = 1; b = 0; c = 1; P2 = CharacterCodeSHI; delay(80);a = 1; b = 1; c = 0; P2 = CharacterCodeGE; delay(70);beep = 0;if( (1 =

12、 moshi)if(moshi = 2)t1 = 2;if(0 = QD)goto loop;else if(juli MIN)Lv = 0;Hong = 1;while( t2- )a = 0; b = 1;c = 1; P2 = CharacterCodeBAI; delay(500);a = 1; b = 0;c = 1; P2 = CharacterCodeSHI; delay(500);a = 1; b = 1; c = 0; P2 = CharacterCodeGE; delay(400);beep = 0;delay(100);beep = 1;if( (1 = moshi)if

13、(2 = moshi)t2 = 2;if(0 = QD)goto loop;elsebeep = 1;Lv = 1;Hong = 1;while( t3- )a = 0; b = 1;c = 1;P2 = CharacterCodeBAI;delay(80);a = 1; b = 0; c = 1;P2 = CharacterCodeSHI;delay(80);a = 1; b = 1; c = 0;P2 = CharacterCodeGE;delay(70);if( (1 = moshi)if(2 = moshi) t3 = 2;if(0 = QD)goto loop;/显示结束void z

14、hongduan_1() interrupt 1TH0 = 0x00;TL0 = 0x00;void zhongduan_2() interrupt 2 /修改键(K4)的中断函数(外部中断 1)xiaxian();while(QD=0);shangxian();void MINxianshi(UI TT)/显示最小距离while(TT-)a = 0; b = 1; c = 1;P2 = CharacterCodemin0;delay(500);a = 1; b = 0; c = 1;P2 = CharacterCodemin1;delay(500);a = 1; b = 1; c = 0;P

15、2 = CharacterCodemin2;delay(500);P2 = 0x00;delay(55500);void MAXxianshi(UI TT)/显示最大距离while(TT-)a = 0; b = 1; c = 1;P2 = CharacterCodemax0;delay(500);a = 1; b = 0; c = 1;P2 = CharacterCodemax1;delay(500);a = 1; b = 1; c = 0;P2 = CharacterCodemax2;delay(500);P2 = 0x00;delay(55500);void delay(UI T)/延时程序while(T-);void IntConfiguration()/设置中断函数PT2 = 0; PS = 0; PT1 = 0; PX1 = 0; PT0 = 1; PX0 =

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 其它相关文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号