C52单片机红外测距超过60cmLED灯亮的程序
时间: 2024-01-08 11:02:15 浏览: 145
红外测距程序(可以试下)
5星 · 资源好评率100%
下面是C52单片机红外测距超过60cm LED灯亮的程序:
```
#include <reg52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit LED = P1^0;
sbit IR = P3^7;
uchar distance;
void delay(uint t)
{
while(t--);
}
void main()
{
while(1)
{
IR = 1; // 发送红外线信号
delay(10); // 延时10us
IR = 0;
while (IR == 0); // 检测是否接收到反射的红外线信号
TR0 = 1; // 启动计时器
while (IR == 1); // 检测反射的红外线信号是否结束
TR0 = 0; // 停止计时器
distance = TL0; // 读取计时器的值
distance |= TH0 << 8;
distance = distance / 12; // 计算距离,单位为厘米
if (distance > 60) // 距离大于60cm
{
LED = 1; // 点亮LED
}
else
{
LED = 0; // 关闭LED
}
TL0 = 0; // 清空计时器
TH0 = 0;
}
}
```
注:这个程序使用了定时器计算距离,所以需要初始化定时器。程序中使用的是定时器0,如果需要修改使用的定时器,请在程序中相应地修改。另外,计算距离的公式是基于红外线传感器的特性,如果使用其他类型的传感器,请参考相应的文档。
阅读全文