《超声波模块在单片机开发板上的使用》由会员分享,可在线阅读,更多相关《超声波模块在单片机开发板上的使用(13页珍藏版)》请在金锄头文库上搜索。
1、SP40-38FSP40-38F 超声波测距模块超声波测距模块 3838 元元/ /块块SP-40-38FSP-40-38F 超声波测距模块超声波测距模块, ,测量范围在测量范围在 0.105.00m,测,测量精度量精度 1cm,测量时与被测物体无直接接触,能够清晰稳定地,测量时与被测物体无直接接触,能够清晰稳定地显示测量结果。由于超声波指向性强,能量消耗缓慢,在介质显示测量结果。由于超声波指向性强,能量消耗缓慢,在介质中传播的距离较远,因而超声波经常用于距离的测量,如测距中传播的距离较远,因而超声波经常用于距离的测量,如测距仪和物位测量仪等都可以通过超声波来实现。超声波测距器,仪和物位测量仪
2、等都可以通过超声波来实现。超声波测距器,可以应用于汽车倒车、建筑施工工地以及一些工业现场的位置可以应用于汽车倒车、建筑施工工地以及一些工业现场的位置监控,也可用于液位、井深、管道长度的测量等场合。利用超监控,也可用于液位、井深、管道长度的测量等场合。利用超声波检测往往比较迅速、方便、计算简单、易于做到实时控制,声波检测往往比较迅速、方便、计算简单、易于做到实时控制,并且在测量精度方面能达到工业实用的要求,因此在移动机器并且在测量精度方面能达到工业实用的要求,因此在移动机器人的研制上也得到了广泛的应用人的研制上也得到了广泛的应用SP-40-38FSP-40-38F 此款超声波模块距离检测方便,测
3、试距离精确,此款超声波模块距离检测方便,测试距离精确,功耗低,但此模块价格已经放到最低,只是希望大家都能用上功耗低,但此模块价格已经放到最低,只是希望大家都能用上好用实用的超声波模块。此模块价格便宜稳定性好,只占用单好用实用的超声波模块。此模块价格便宜稳定性好,只占用单片机的片机的 2 2 个个 IOIO 口,测试简单方便,购买同时还送口,测试简单方便,购买同时还送 5151 单片机的单片机的检测程序,连接好电路即可检测距离。检测程序,连接好电路即可检测距离。此模块应用于机器人控制、小车躲避障碍等实际用处,小车上此模块应用于机器人控制、小车躲避障碍等实际用处,小车上安装此模块配合舵机使用能控制
4、得更方便安装此模块配合舵机使用能控制得更方便购买超声波模块还购买超声波模块还 附送附送 5151 检测距离程序检测距离程序 非常实用非常实用超声波测距原理超声波测距原理发射器发出的超声波以速度发射器发出的超声波以速度 在空气中传播,在到达被测在空气中传播,在到达被测物体时被反射返回,由接收器接收,其往返时间为物体时被反射返回,由接收器接收,其往返时间为 t,由,由s=vt/2 即可算出被测物体的距离。由于超声波也是一种声波,即可算出被测物体的距离。由于超声波也是一种声波,其声速其声速 v 与温度有关,下表列出了几种不同温度下的声速。在与温度有关,下表列出了几种不同温度下的声速。在使用时,如果温
5、度变化不大,则可认为声速是基本不变的。如使用时,如果温度变化不大,则可认为声速是基本不变的。如果测距精度要求很高,则应通过温度补偿的方法加以校正果测距精度要求很高,则应通过温度补偿的方法加以校正单片机发出单片机发出 40kHZ 的信号,经放大后通过超声波发射器输出;的信号,经放大后通过超声波发射器输出;超声波接收器将接收到的超声波信号经放大器放大,检波处理超声波接收器将接收到的超声波信号经放大器放大,检波处理后,启动单片机中断程序,测得时间为后,启动单片机中断程序,测得时间为 t,再由软件进行判别、,再由软件进行判别、计算,得出距离数并送计算,得出距离数并送 LED 显示显示超声波测距模块框图
6、如下图所示超声波测距模块框图如下图所示这是这是 SP-40-38FSP-40-38F 和和 SP-28USBSP-28USB 单片机实验板配合的测距实验。单片机实验板配合的测距实验。首先,将首先,将 VCC,GN 接好后,将接好后,将 TX 接接 P2.0(用于控制发出(用于控制发出 10 次次40KHZ 的超声波)的超声波) ,RX 接接 P3.2(RX 低电平时,外部中断低电平时,外部中断 0) 。数码。数码管的程序大家需自行修改,因为我的数码管可能跟大家的不一样。我管的程序大家需自行修改,因为我的数码管可能跟大家的不一样。我在下面也有指出。在下面也有指出。下面是下面是 keil c51
7、的代码,供大家参考。的代码,供大家参考。 (注:此代码经本人测试,没有(注:此代码经本人测试,没有任何问题!)任何问题!)#include#include#define uchar unsigned char#define uint unsigned intuchar i,timerH,timerL;uint time,distance;sbit text=P17;/P17 为测试灯位,距为测试灯位,距离超过离超过 1000cm 时测试灯将会熄灭时测试灯将会熄灭sbit TX=P20;/超声波模块的超声波模块的 TX 口接口接P2.0,RX 口接外部中断口接外部中断 0 的的 P3.2 口口s
8、bit RX=P32;sbit wela=P27;/数码管的位选位(需视数码管的位选位(需视情况自行修改)情况自行修改)sbit dula=P26;/数码管的段选位(需视数码管的段选位(需视情况自行修改)情况自行修改)void send10();/生成生成 10 次次 40KHZ 的超的超声波声波void delay20us();void delay(uchar z);void count();/通过通过 T0 的时间来计算距离的时间来计算距离distancevoid display(uint temp);/用数码管显示用数码管显示 distance uchar code table10=0x
9、3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, /数码管显示为数码管显示为 0-9 的数组的数组 (需视情况自行修改)(需视情况自行修改)0x07,0x7f,0x6f;void main()TX=0;text=0;EA=1;EX0=0;ET0=1;/中断初始化,外部中断初始化,外部中断中断 0 先关闭先关闭IT0=0;TMOD=0x01;/定时器初始化定时器初始化TH0=0;TL0=0;TX=1;TR0=1;/开始计数,此时计数较开始计数,此时计数较早,使时间略大早,使时间略大send10();/开始给开始给 TX 脚,脚,10 次次40KHZ 的方波,使模块发出超声波的方
10、波,使模块发出超声波TX=0;while(!RX);/等待等待 RX 脚变为高电平脚变为高电平delay20us();/防止防止 RX 直接接收到模块直接接收到模块发射端的超声波发射端的超声波EX0=1;/开启外部中断开启外部中断while(TR0);/等待外部中断等待外部中断count();/计算计算if(distance1000)distance=0;text=!text;else display(distance);/显示函数显示函数void send10()/TX 端产生方波端产生方波for(i=0;i0;x-)for(y=110;y0;y-);void display(unsigne
11、d int temp)/数码管的显示函数数码管的显示函数(需视情况自行修该)(需视情况自行修该)while(1)uchar ge,shi,bai;bai=(temp%1000)/100;shi=(temp%100)/10;ge=temp%10;wela=0;P0=0xf7;wela=1;wela=0;dula=0; P0=tablebai;dula=1;dula=0;delay(5);wela=0;P0=0xef;wela=1;wela=0;dula=0;P0=tableshi;dula=1;dula=0;delay(5);wela=0;P0=0xdf; wela=1;wela=0;dula=0;P0=tablege;dula=1;dula=0; delay(5);void int0() interrupt 0/外部中断,关闭定外部中断,关闭定时器,提取时间时器,提取时间TR0=0;timerH=TH0;timerL=TL0;IE0=0;EX0=0;void t0() interrupt 1TL0=0;TH0=0;常熟理工东南校区电常熟理工东南校区电气气 101 陆松陆松2012 11 15