51单片机超声波测距代码
时间: 2023-07-23 16:24:09 浏览: 82
以下是一个简单的基于51单片机的超声波测距代码:
```c
#include <reg52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit Trig = P1^0;
sbit Echo = P1^1;
void delay_us(uint t)
{
while(t--);
}
void delay_ms(uint t)
{
while(t--)
{
delay_us(1000);
}
}
void send_pulse(void)
{
Trig = 1;
_nop_();
_nop_();
_nop_();
_nop_();
Trig = 0;
}
void main()
{
uchar count = 0;
uint dis = 0;
EA = 1;
TMOD = 0x01;
TH0 = 0;
TL0 = 0;
while(1)
{
send_pulse();
while(!Echo);
TR0 = 1;
while(Echo);
TR0 = 0;
dis = TH0*256 + TL0;
dis = dis/58;
TH0 = 0;
TL0 = 0;
if(dis < 500)
{
count++;
if(count == 10)
{
P2 = 0x55;
delay_ms(500);
P2 = 0xAA;
delay_ms(500);
count = 0;
}
}
else
{
count = 0;
}
}
}
```
该代码使用了P1.0和P1.1分别连接超声波传感器的Trig和Echo引脚。当Trig引脚输出高电平时,超声波传感器会发出一个8个周期的40kHz脉冲信号。当Echo引脚检测到超声波传感器返回的声波信号时,会将TH0和TL0寄存器中的值记录下来。通过计算TH0和TL0的值,可以得到超声波传感器到障碍物的距离。在该代码中,每当检测到距离小于500cm时,会让P2端口发出交替的0x55和0xAA信号。
阅读全文