hc-sr04超声波测距模块 90c54代码
时间: 2023-09-24 17:09:45 浏览: 53
以下是使用90C54单片机编写的HC-SR04超声波测距模块的代码。需要注意的是,该代码仅供参考,需要根据具体硬件连接和实际需求进行修改。
```c
#include <regx51.h>
sbit Trig = P1^0; // 触发引脚
sbit Echo = P1^1; // 接收引脚
unsigned int count; // 计时器计数器
float distance; // 距离
unsigned char dis[4]; // 存储距离的数组
void delay(unsigned int x) // 延时函数
{
unsigned int i, j;
for(i = x; i > 0; i--)
{
for(j = 110; j > 0; j--);
}
}
void Timer0Init() // 定时器初始化函数
{
TMOD |= 0x01; // 16位定时器模式
TH0 = 0; // 定时器初值
TL0 = 0;
ET0 = 1; // 开启定时器中断
TR0 = 1; // 启动定时器
EA = 1; // 开启总中断
}
void main()
{
Timer0Init(); // 定时器初始化
while(1)
{
Trig = 1; // 触发引脚置高
delay(10); // 等待10us
Trig = 0; // 触发引脚置低
while(!Echo); // 等待接收引脚置高
count = 0; // 计时器计数器清零
while(Echo) // 计时器开始计数
{
if(count > 60000) // 超时处理
{
break;
}
count++;
}
distance = count * 0.017; // 计算距离
dis[0] = distance / 100 + 48; // 转换成字符数组
dis[1] = (distance / 10) % 10 + 48;
dis[2] = (int)distance % 10 + 48;
dis[3] = 'c'; // 单位为厘米
// 将距离输出到串口或LCD等显示设备
}
}
void Timer0() interrupt 1 // 定时器中断函数
{
TH0 = 0; // 定时器初值
TL0 = 0;
count++; // 计时器计数器加一
}
```
阅读全文