写一个基于c51单片机的超声波测距程序
时间: 2023-09-22 15:08:19 浏览: 105
好的,以下是基于C51单片机的超声波测距程序:
```c
#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit Trig=P3^4; //超声波发射引脚
sbit Echo=P3^5; //超声波接收引脚
void delay_us(uint us) //延时函数,单位为微秒
{
while(us--)
{
_nop_();
_nop_();
_nop_();
_nop_();
}
}
void delay_ms(uint ms) //延时函数,单位为毫秒
{
while(ms--)
{
delay_us(1000);
}
}
void send_pulse() //发送超声波脉冲
{
Trig=1;
delay_us(10);
Trig=0;
}
uint measure_distance() //测量距离
{
uint distance;
uint time;
send_pulse(); //发送超声波脉冲
while(Echo==0); //等待超声波返回
TR0=1; //启动计时器0
while(Echo==1); //等待超声波停止返回
TR0=0; //停止计时器0
time=TH0*256+TL0; //计算时间
distance=time/58; //计算距离(单位:厘米)
return distance;
}
void main() //主函数
{
TMOD=0x01; //设置计时器0为模式1
TH0=0; //清零计时器0的高字节
TL0=0; //清零计时器0的低字节
while(1)
{
printf("Distance=%d cm\n",measure_distance()); //输出距离
delay_ms(500); //延时500毫秒
}
}
```
注:以上代码仅供参考,具体实现方式可能因硬件环境和需求而有所不同。
阅读全文