hx1838红外遥控51代码
时间: 2023-11-12 15:10:16 浏览: 90
51单片机VS1838红外遥控解码程序NEC
以下是一个简单的 hx1838 红外遥控控制 51 单片机的代码示例:
```c
#include <reg51.h>
#define IR_PORT P3
sbit IR_RECV_PIN = P1^0; // 红外接收器信号引脚定义
unsigned char code IR_CODE_TABLE[4] = {0x1F, 0x12, 0x5E, 0x08}; // 遥控器发送的红外编码表
void delay(unsigned int t) // 延时函数
{
unsigned int i, j;
for (i = 0; i < t; i++)
for (j = 0; j < 125; j++);
}
void InitIR() // 初始化红外接收器
{
IT0 = 1; // 外部中断0下降沿触发
EX0 = 1; // 打开外部中断0
EA = 1; // 打开总中断
}
void IR_ISR() interrupt 0 // 红外接收器中断服务程序
{
unsigned char i;
unsigned char ir_code = 0;
delay(10); // 稍微延时一下
if (IR_RECV_PIN == 0) // 判断是否为起始信号
{
delay(10); // 等待一个数据码的时间
for (i = 0; i < 8; i++) // 接收8位数据
{
delay(10); // 等待一个数据位的时间
ir_code >>= 1; // 低位先接收,右移一位
if (IR_RECV_PIN == 1) // 如果数据位为1
ir_code |= 0x80; // 置高位
}
for (i = 0; i < 4; i++) // 遍历编码表
{
if (ir_code == IR_CODE_TABLE[i]) // 如果接收到的编码与编码表中的匹配
{
IR_PORT = i + 1; // 控制 P3 输出对应的值
break;
}
}
}
}
void main()
{
InitIR();
while (1);
}
```
在上述代码中,我们使用了 P1.0 作为红外接收器的信号引脚,P3 口作为控制输出口,如果接收到编码表中的编码,就会控制 P3 输出对应的值。需要注意的是,不同的遥控器发送的红外编码可能不同,需要根据具体情况修改编码表中的值。
阅读全文