基于STC8H8K的HC-SR04超声波测距模块代码
时间: 2023-09-27 13:06:13 浏览: 212
以下是基于STC8H8K的HC-SR04超声波测距模块代码:
```c
#include <STC8.H>
#define uint8_t unsigned char
#define uint16_t unsigned int
sbit SR04_TRIG = P1^0; // 超声波发送引脚
sbit SR04_ECHO = P1^1; // 超声波接收引脚
uint16_t Distance = 0; // 距离
void delay_us(uint16_t us) // 微秒级延时函数
{
while (us--);
}
void delay_ms(uint16_t ms) // 毫秒级延时函数
{
while (ms--)
{
delay_us(1000);
}
}
void SR04_Init() // 超声波模块初始化
{
SR04_TRIG = 0;
SR04_ECHO = 0;
}
uint16_t SR04_Get_Distance() // 获取距离函数
{
uint16_t Time = 0; // 时间
uint16_t i = 0;
SR04_TRIG = 1; // 发送超声波
delay_us(10);
SR04_TRIG = 0;
while (!SR04_ECHO); // 等待接收到超声波
while (SR04_ECHO) // 计算时间
{
delay_us(1);
Time++;
if (Time > 5000) // 超时
{
return 0;
}
}
Distance = Time / 58; // 计算距离,单位为厘米
return Distance;
}
void main()
{
uint16_t Distance = 0;
SR04_Init();
while (1)
{
Distance = SR04_Get_Distance();
if (Distance > 0)
{
printf("Distance: %dcm\n", Distance);
}
delay_ms(500);
}
}
```
需要注意的是,此代码是基于STC8H8K芯片编写的,如果你使用的是其他芯片,需要相应地进行修改。此外,由于不同超声波测距模块的工作电压、引脚定义等可能不同,也需要根据具体情况进行修改。
阅读全文