接收到一个红外码后,发送1个相同或不同的红外码来实现中继或转译,
作用:智能语音音箱可以控制部分红外家电,但有一部分不能控制。通过转译可以控制更多,本程序不能控制空调。
有掉电模式,很节能。管脚电路自己看吧。本人不会画图。
制作出来的实物图如下:
单片机源程序如下:
- //////////////////////////// main.c ////////////////////////////////////////
- // 红外接收数据,中断方式,并通过串口发送接收到的4字节,晶振:22.118400 MHz
- // 接收头信号引脚P3.3,串口波特率9600
- ///////////////////////////////////////////////////////////////////////////
- #include "STC15W4K.H"
- #include "IR.H"
- #include "IRSEND.H"
- #include "intrins.h"
- void keysm(); //扫描函数
- void delay500ms();
- void main()
- {
- led=0;
- port(); //普通IO
- Timer1Init(); // 定时器2初始化
- int1_init(); //T0初始化
- while (1)
- {
-
- keysm();
- led=1;
- PCON=0x02;_nop_();_nop_();_nop_();_nop_();led=0;
-
- }
-
-
- }
- void keysm()//按键扫描函数
- {
- if(IRflag)
- {
- delay500ms();
- EX0=0; // 关闭外中断0
- if(Ir_Buf[0]==0xB3&&Ir_Buf[1]==0x4C)
- {
- if(Ir_Buf[2]==0xDC) ir_Send(0x00,0xFF,0x1C) ;
- if(Ir_Buf[2]==0x80) ir_Send(0x00,0xFF,0x42) ;
- //if(Ir_Buf[2]==0x5D) ir_Send(0x00,0xFF,0x1C) ;
- //if(Ir_Buf[2]==0x5D) ir_Send(0x00,0xFF,0x1C) ;
- }
- if(Ir_Buf[0]==0x00&&Ir_Buf[1]==0xFF&&Ir_Buf[2]==0x88)
- { ir_Send(0x00,0xFF,0x88) ; }
- }
- EX0=1; // 开启外中断1
- }
- void delay500ms(void) //误差 -0.000000000063us
- {
- unsigned char a,b,c;
- for(c=212;c>0;c--)
- for(b=160;b>0;b--)
- for(a=80;a>0;a--);
- }
复制代码 全部资料51hei下载地址:
红外转译.zip
(63.98 KB, 下载次数: 22)
|