<>超声波测距模块的使用

<>超声波测距模块:

超声波测距模块有好多种类型,目前比较常用的有URM37超声波传感器默认是232接口,可以调为TTL接口,URM05大功率超声波传感器测试距离能到10米,算是目前来说测试距离比较远的一款了,另外还有比较常用的国外的几款SRF系列的超声波模块,目前的超声波模块精度能到1cm

<>工作原理:

超声波测距模块是用来测量距离的一种产品,通过发送和就接收超声波,利用时间差和声音传播速度,计算出模块到前方障碍物的距离。

<>具体使用及代码

1、定义引脚
#include<reg52.h> #include<stdio.h> sbit Trig = P1^0; sbit Echo = P1^1;
2、设定串口波特率
void init_115200() { SCON = 0x50; T2CON |= 0X30; TH1 = 0xFF; TL1 = 0xFD;
RCAP2H = 0XFF; RCAP2L = 0XFD; TR2 = 1; ES = 1; EA = 1; ET0=1; }
3、设定发送时间
void Delay10us() { TMOD |= 0x1; TH0 = 0xFF; TL0 = 0xF6; TR0 = 1; while(!TF0);
TF0 = 0; } void CSB_Rstart() //启动超声波模块,初始化 { Trig=0; Trig=1; Delay10us();
Trig=0; }
4、获取时间和距离
int gettime()//获取时间 { unsigned int time = 0; time = TH0<<8 | TL0;
//TH0*256+TL0 return time; } float CSB_Getdis(unsigned int time) //获取距离 { float
distance; distance = (float)time * 0.0017; TH0=0; TL0=0;//清空计时器· return
distance; } void star() { TH0 = 0; TL0 = 0; TR0 = 1; } void end() { TR0 = 0; }
void CSB_GetOnce() //获取一次超声波测距模块的距离 { CSB_Rstart(); while(!Echo);//当Echo为零时等待
star(); while(Echo);//当Echo为1计数并等待 end(); }
5、将所测距离打印出来
int main() { unsigned int time = 0; float dis; char buf[24]={'\0'};
init_115200(); while(1) { CSB_GetOnce(); time = gettime(); dis =
CSB_Getdis(time); sprintf(buf,"dis=%fcm\r\n",dis); delay(); upt(buf); } return
0; }
打印函数
void shuchu(char c) { SBUF = c; while(TI==0); TI = 0; } void upt(char *p) {
while(*p != '\0'){ shuchu(*p); p++; } }
延时函数
void delay() { int i; int j; for(i=0;i<100;i++) for(j = 0;j<2000;j++); }

技术
下载桌面版
GitHub
Gitee
SourceForge
百度网盘(提取码:draw)
云服务器优惠
华为云优惠券
腾讯云优惠券
阿里云优惠券
Vultr优惠券
站点信息
问题反馈
邮箱:[email protected]
吐槽一下
QQ群:766591547
关注微信