超声波原理:
超声波是利用反射的原理测量距离的,被测距离一端为超声波传感器,另一端必须有能反射超声波的物体。测量距离时,将超声波传感器对准反射物发射超声波,并开始计时,超声波在空气中传播到达障碍物后被反射回来,传感器接收到反射脉冲后立即停止计时,然后根据超声波的传播速度和计时时间就能计算出两端的距离。
超声波测距模块:
超声波测距模块有好多种类型,目前比较常用的有URM37超声波传感器默认是232接口,可以调为TTL接口,URM05大功率超声波传感器测试距离能到10米,算是目前来说测试距离比较远的一款了,另外还有比较常用的国外的几款SRF系列的超声波模块,目前的超声波模块精度能到1cm
超声波初始化部分代码:
sbit Trig = P1^1; //给trig和echo分配接口
sbit Echo = P1^0;
void InitUlartsonic(){ //初始化超声波,让trig置0,再置1产生超声波,最后再置0
Trig = 0;
Trig = 1;
delay10us(); //定义了一个函数让高电平时间延迟10us
Trig = 0;
}
void Stime(){ //开始计时
TH0=0;
TL0=0;
TR0=1;
}
void Etime(){ //关闭计时
TR0=0;
}
main函数中的部分代码:
while(1){
InitUlartsonic();
while(Echo != 1); //echo等于1时,退出,开始计时
Stime();
while(Echo != 0); //echo等于0时,退出,结束计时
Etime();
time =GetUT(); //用time接收超声波的时间
dis = GetDis(); //用dis接收超声波的距离