51单片机超声波测距代码
时间: 2023-07-23 17:34:28 浏览: 50
以下是51单片机超声波测距的简单代码,你可根据需求进行调整:
```
#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 i) //微秒级延时函数
{
while(i--)
{
_nop_();
_nop_();
_nop_();
_nop_();
}
}
void delay_ms(uint i) //毫秒级延时函数
{
while(i--)
{
delay_us(1000);
}
}
uint distance(void) //超声波测距函数
{
uint dis;
Trig = 0; //超声波发射脚置低电平
delay_us(2);
Trig = 1; //超声波发射脚置高电平
delay_us(10);
Trig = 0; //超声波发射脚置低电平
while(!Echo); //等待超声波接收脚置高电平
TR0 = 1; //打开定时器0
while(Echo); //等待超声波接收脚置低电平
TR0 = 0; //关闭定时器0
dis = TH0*256+TL0; //计算超声波行程时间
dis = dis*17/1000; //计算距离,单位为厘米
return dis;
}
void main()
{
TMOD = 0x01; //定时器0工作模式1
TH0 = 0; //定时器0高位清零
TL0 = 0; //定时器0低位清零
while(1)
{
printf("Distance: %d cm\n", distance()); //显示距离
delay_ms(100); //延时100毫秒
}
}
```
注:上述代码中使用了定时器0,需要在程序中加入相应的中断服务函数。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)