51单片机超声波测距代码距离小于50cm蜂鸣器自动报警
时间: 2023-07-29 18:13:47 浏览: 195
51单片机超声波测距代码
好的,以下是基于51单片机的超声波测距代码,当检测到距离小于50cm时,会触发蜂鸣器报警:
```c
#include <reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit Trig=P1^0;
sbit Echo=P1^1;
sbit Beep=P2^3;
void delay(uint xms) //延时函数
{
uint i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}
void Ultrasonic() //超声波测距函数
{
uint distance;
Trig=1;
delay(10);
Trig=0;
while(!Echo);
TR1=1;
while(Echo);
TR1=0;
distance=TH1*256+TL1;
distance=distance/58;
if(distance<50) //距离小于50cm时触发蜂鸣器报警
{
Beep=0;
delay(100);
Beep=1;
delay(100);
}
}
void main()
{
TMOD=0x10;
TH1=TL1=0;
while(1)
{
Ultrasonic();
delay(100);
}
}
```
需要注意的是,由于超声波传播的速度是固定的,所以我们可以通过计算信号的往返时间来计算出距离。在代码中,我们使用定时器来计算时间,具体实现可以参考上面的代码。
阅读全文