51单片机超声波测距源代码
时间: 2023-12-10 09:04:45 浏览: 88
本文提供51单片机超声波测距源代码,代码实现了超声波测距功能。
```c
#include<reg51.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
sbit Trig=P1^0; //超声波模块Trig引脚连接单片机P1^0
sbit Echo=P1^1; //超声波模块Echo引脚连接单片机P1^1
//延时函数
void Delay10us() //@11.0592MHz
{
unsigned char i;
_nop_();
i = 2;
while (--i);
}
//超声波测距函数
uint Ultrasonic()
{
uint distance; //定义距离变量
Trig=1; //Trig置高电平
Delay10us(); //延时10us
Trig=0; //Trig置低电平
while(!Echo); //等待Echo引脚变高
TR0=1; //启动计时器
while(Echo); //等待Echo引脚变低
TR0=0; //关闭计时器
distance=TH0*256+TL0; //将计时器的值合并成一个16位数
distance=distance/58; //将计时器的值转化为距离,单位为cm
return distance; //返回距离值
}
void main()
{
uint distance; //定义距离变量
TMOD=0x01; //设置定时器0为模式1
TH0=0; //清零计时器的高8位
TL0=0; //清零计时器的低8位
while(1)
{
distance=Ultrasonic(); //调用超声波测距函数
if(distance<30) //如果距离小于30cm,LED亮起
{
P2=0x00; //P2置低电平
}
else //否则LED熄灭
{
P2=0xff; //P2置高电平
}
}
}
```
以上就是51单片机超声波测距源代码,代码实现了超声波测距功能,并且在测距结果小于30cm时点亮LED,反之LED熄灭。需要注意的是,本代码中使用的是定时器0进行计时,需要根据实际情况调整计时器模式和计时器的初值。
阅读全文