![在这里插入图片描述](https://img-blog.csdnimg.cn/97943d88939e449788aa5d5b3b2371bf.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA77-044Wk77-077-044Wk,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)
发射出去的超声波在介质中传播,声波具有反射特性,当遇到障碍物时就会反射回来,当超声波的接收端接收到反射回来的超声波时,计时停止。
介质为空气时,声速为 340m/s,根据记录的时间 t,利用公式计算出发射位置与障碍物之间的距离。
因为超声波测距在2cm-400cm之间,超声波速度约为340m/s,即超声波极限用时4/340=11ms,计时器不会爆表。
亮灯是给低电平
#include <reg52.h>
sbit LED=P3^7;
sbit Trig=P0^0;
sbit Echo=P0^1;
sfr AUXR=0x8E;
double time;
double dis;
void Delay10us()
{
unsigned char i;
i = 2;
while (--i);
}
void Delay300ms()
{
unsigned char i, j, k;
i = 3;
j = 26;
k = 223;
do
{
do
{
while (--k);
} while (--j);
} while (--i);
}
void Timer0Init(void)
{
AUXR &= 0x7F;
TMOD &= 0xF0;
TMOD |= 0x01;
TL0 = 0x00;
TH0 = 0x00;
TR0 = 0;
}
void TrigInit()
{
Trig=0;
Trig=1;
Delay10us();
Trig=0;
}
void Bc_Dis()
{
while(Echo==0);
TR0=1;
while(Echo==1);
TR0=0;
time=(TH0*256+TL0)*1.085/1000000;
dis=time*17000;
if(dis<15)
{
LED=0;
}
else
{
LED=1;
}
Delay300ms();
}
void main()
{
while(1)
{
Timer0Init();
TrigInit();
Bc_Dis();
}
}