接收到一個紅外碼后,發送1個相同或不同的紅外碼來實現中繼或轉譯,
作用:智能語音音箱可以控制部分紅外家電,但有一部分不能控制。通過轉譯可以控制更多,本程序不能控制空調。
有掉電模式,很節能。管腳電路自己看吧。本人不會畫圖。
制作出來的實物圖如下:
651773ef1482a8814d31f66c072987a.jpg (185.61 KB, 下載次數: 81)
下載附件
2020-2-22 00:01 上傳
3cec3af3a6062004cf4b840809ebd99.jpg (274.52 KB, 下載次數: 77)
下載附件
2020-2-22 00:01 上傳
單片機源程序如下:
- //////////////////////////// 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, 下載次數: 23)
2020-2-21 23:56 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|