51单片机红外遥控示例
时间: 2023-12-06 13:57:28 浏览: 36
以下是一个基于51单片机的红外遥控示例代码:
```c
#include <reg52.h>
sbit IRIN=P3^2; //红外接收器模块引脚定义
unsigned char code table[]={0x06,0x8A,0x0E,0x8E,0x2A,0xAA,0x9A,0x92,0x8C,0x40}; //红外码表
void main()
{
unsigned char i,j,k;
while(1)
{
if(IRIN==0) //红外接收器接收到信号
{
delay(1000); //延时一段时间,等待信号稳定
if(IRIN==0) //再次确认信号
{
while(!IRIN); //等待信号结束
for(i=0;i<4;i++) //接收4组红外码
{
for(j=0;j<8;j++) //接收每组红外码的8位
{
while(IRIN); //等待红外信号高电平结束
delay(3); //等待50us,根据红外协议
k=k>>1; //k用来存放接收到的红外码,每次将它右移一位
if(IRIN) k|=0x80; //如果红外信号为高电平,将k的最高位设为1
delay(3); //等待50us,根据红外协议
}
if(k==table[i]) //判断接收到的红外码是否与码表匹配
{
switch(i) //根据不同的红外码执行不同的操作
{
case 0: //执行操作1
break;
case 1: //执行操作2
break;
case 2: //执行操作3
break;
case 3: //执行操作4
break;
}
}
k=0; //清空k,为接收下一组红外码做准备
}
}
}
}
}
void delay(unsigned int t) //延时函数,t的值决定延时的时间,单位为毫秒
{
unsigned int i,j;
for(i=0;i<t;i++)
for(j=0;j<500;j++);
}
```
在这个示例中,使用了一个红外码表,其中存储了4组8位的红外码。当红外接收器接收到红外信号时,程序会先进行一些延时,等待信号稳定。然后程序会接收4组8位的红外码,并将它们与红外码表中的数据进行匹配。如果匹配成功,程序会执行相应的操作。需要根据实际情况修改红外码表和操作。