下面是一个使用C51单片机实现超声波测距的简单示例代码:
```C
#include <reg51.h> // 引入51单片机的寄存器定义
sbit Trig = P1^0; // 定义超声波模块的触发引脚
sbit Echo = P1^1; // 定义超声波模块的接收引脚
void delay(unsigned int count) // 延时函数
{
unsigned int i, j;
for (i = 0; i < count; i++)
for (j = 0; j < 1000; j++)
;
}
unsigned int measure_distance() // 测量距离函数
{
unsigned int distance;
Trig = 1; // 触发引脚发出短脉冲
delay(1);
Trig = 0;
while (Echo == 0); // 等待超声波模块接收到回波
while (Echo == 1) // 计算回波时间
{
distance++;
delay(1);
}
return distance * 0.034 / 2; // 将回波时间转换为距离(单位:厘米)
}
void main()
{
unsigned int distance;
while (1)
{
distance = measure_distance(); // 测量距离
// 以下是根据距离做出相应动作的示例操作
if (distance < 10)
{
// 超声波测距小于10cm,执行某种操作
}
else if (distance < 20)
{
// 超声波测距在10cm到20cm之间,执行某种操作
}
else
{
// 超声波测距大于20cm,执行某种操作
}
}
}
```
以上代码中使用了C51单片机的P1.0引脚作为超声波探头的触发引脚,P1.1引脚作为超声波模块的接收引脚。在`measure_distance`函数中,通过触发超声波模块的脉冲并测量回波时间,计算出距离。在`main`函数中,通过调用`measure_distance`函数来测量距离,并根据距离的不同进行相应的操作。
请注意,具体的代码和硬件配置可能会依赖于所使用的C51单片机型号和超声波模块型号。请参考相关的开发文档和手册,以确保正确的引脚配置和操作。