久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 6664|回復(fù): 10
收起左側(cè)

單片機(jī)藍(lán)牙+紅外學(xué)習(xí)轉(zhuǎn)發(fā)模塊源程序 實(shí)現(xiàn)用安卓手機(jī)控制所有家電

  [復(fù)制鏈接]
ID:12816 發(fā)表于 2019-5-12 22:40 | 顯示全部樓層 |閱讀模式
本帖最后由 lbq691477940 于 2019-6-1 16:06 編輯

單片機(jī)藍(lán)牙遙控模塊 紅外遙控學(xué)習(xí)轉(zhuǎn)發(fā)模塊 附源程序
用安卓手機(jī)按制所有帶紅外遙控器的家電、設(shè)備
一個(gè)APP界面可以學(xué)習(xí)家里所有以38K紅外載波編碼的任意紅外遙控器,再也不用看場(chǎng)電視要拿好幾個(gè)紅外遙控器了。
如:空調(diào)、電視、機(jī)頂盒、風(fēng)扇、臺(tái)燈..........等等,常用的按鍵學(xué)習(xí)在手機(jī)APP中,從而達(dá)到一機(jī)在手控制家里的所有家電的目的。

提取碼:wcvd
22.png

11.png

33.png

Screenshot_2019-05-13-21-16-44-66.png

單片機(jī)源程序如下:
  1. /***************************************************************************************************
  2. 單片機(jī):
  3.         STC11F02E或兼容芯片
  4. 晶振:
  5.         11.0592Mhz
  6. 波特率:57600

  7. 紅外接收:
  8.         P3.3口即外部中斷1(此引腳不可自由更改)
  9. 定時(shí)器0:
  10.         1.接收紅外碼時(shí)為12T/16位計(jì)數(shù)模式不使用定時(shí)器0中斷功能
  11.         2.發(fā)射紅外碼時(shí)為1T/8位自重載模式且用定時(shí)器0產(chǎn)生38Khz=13uS中斷功能
  12. 定時(shí)器1:
  13.         為1T/8位自重載模式作為串口波特率發(fā)生器(使能波特率加倍)
  14. 紅外發(fā)射管:
  15.         為P1.0口驅(qū)動(dòng)NPN三極管(此引腳可自由更改)
  16. 紅外發(fā)射狀態(tài)指標(biāo)燈:
  17.         為P3.4口驅(qū)動(dòng)LED低電平有效(此引腳可自由更改)
  18. /***************************************************************************************************/
  19. #include <STC12C5A60S2.H>
  20. #define uchar unsigned char
  21. #define uint unsigned int
  22. /***************************************************************************************************/
  23. #define IR_BYTE         200         //接收的最大位數(shù)為500位
  24. /***************************************************************************************************/
  25. sbit IR_IN = P3^3;                        //一體化紅外接收頭的輸出腳連到此腳作為紅外線輸入
  26. sbit LED = P3^4;                        //狀態(tài)指標(biāo)燈
  27. sbit IR_out = P1^0;                        //紅外發(fā)射管控制腳,驅(qū)動(dòng)NPN三極管J3印字即S8050貼片
  28. /***************************************************************************************************/
  29. bit UART_RI;                                //串口接收完成標(biāo)志位
  30. bit flag;                                        //發(fā)射高電平碼還是低電平碼標(biāo)志位
  31. bit IR_OK;                                        //紅外線接收完成標(biāo)志位
  32. uchar idata IR_data[IR_BYTE];        //紅外接收及串口接收緩沖區(qū)
  33. uint IR_re;                                        //紅外接收的數(shù)據(jù)個(gè)數(shù)計(jì)數(shù)器        
  34. uint UART_re;                                //串口接收的數(shù)據(jù)個(gè)數(shù)計(jì)數(shù)器                                
  35. uint count;                //中斷計(jì)數(shù)
  36. /***************************************************************************************************
  37. 名稱:sys_initial
  38. 功能:系統(tǒng)初始化
  39. //如果外部中斷是僅下降沿觸發(fā),要求必須在相應(yīng)的引腳維持高電平至少1個(gè)系統(tǒng)時(shí)鐘,而且低電平也要持續(xù)至少一個(gè)系統(tǒng)
  40.   時(shí)鐘,才能確保該下降沿被CPU檢測(cè)到
  41. //如果外部中斷是低電平可觸發(fā),則要求必須在相應(yīng)的引腳維持低電平至少2個(gè)系統(tǒng)時(shí)鐘,這樣才能確保CPU能夠檢測(cè)到該低電平信號(hào)
  42. /***************************************************************************************************/
  43. void sys_initial()
  44. {
  45.         PCON |= 0x80;                                //使能波特率倍速位SMOD
  46.         SCON = 0x50;                                //8位數(shù)據(jù),可變波特率
  47.         AUXR |= 0x40;                                //定時(shí)器1時(shí)鐘為Fosc,即1T
  48.         AUXR &= 0xFE;                                //串口1選擇定時(shí)器1為波特率發(fā)生器
  49.         TMOD &= 0x0F;                                //清除定時(shí)器1模式位
  50.         TMOD |= 0x21;                                //設(shè)定定時(shí)器1為8位自動(dòng)重裝方式/設(shè)定定時(shí)器0為16位方式
  51.         TH1        = TL1 = 0xF4;                        //設(shè)定定時(shí)初值  11.0592Mhz / 57600
  52.         ET1 = 0;                                        //禁止定時(shí)器1中斷
  53.         TR1 = 1;                                        //啟動(dòng)定時(shí)器1
  54.         
  55.         ES = REN = 1;                                //允許串口接收中斷
  56.         IT1 = 1;                                //設(shè)置INT1的中斷類型 (1:低電平觸發(fā) 0:下降沿觸發(fā))
  57.     EX1 = 1;                                //使能INT1中斷
  58.         EA = 1;                                                //使能總中斷
  59.         IR_OK = 0;               
  60. }
  61. /***************************************************************************************************
  62. 名稱:com
  63. 功能:串口發(fā)送字符數(shù)據(jù);
  64. 形參:TS=數(shù)據(jù)指針;n=字符長(zhǎng)度
  65. /***************************************************************************************************/
  66. void UART1_SEND(uchar *TS,uchar n)
  67. {
  68.         uchar m;
  69.         for(m = 0;m < n;m++)
  70.         {
  71.                 SBUF = *(TS + m);
  72.                 while(!TI);
  73.                 TI = 0;
  74.         }
  75. }
  76. /***************************************************************************************************/
  77. void main()
  78. {        
  79.         uint i;
  80.         sys_initial();
  81.         LED = 0;
  82.         while(1)
  83.         {
  84.                 if(UART_RI)        //接收成功
  85.                 {
  86.                         ES = 0;                                                //禁止串口中斷
  87.                         UART_RI = 0;                                //清除串口接收完成標(biāo)志位
  88. /***************************************************************************************************************/                        
  89.                         if((IR_data[0] == 0xFE) && (IR_data[1] == 0xFD) && (UART_re > 10))
  90.                         {//判斷接收到的前二個(gè)指令碼是否為 0xFE和0xFD且大于10個(gè)數(shù)據(jù)
  91.                                 EX1 = 0;                                //進(jìn)行紅外發(fā)碼前先關(guān)閉外部中斷0
  92.                                 PT0 = ET0 = 1;                        //設(shè)定時(shí)器0中斷優(yōu)先及允許定時(shí)器0中斷
  93.                                 if(UART_re % 2)                        //如果收到的是單個(gè)字節(jié)則自行加一個(gè)緩沖區(qū)數(shù)據(jù)
  94.                                 {
  95.                                         UART_re += 1;
  96.                                         IR_data[UART_re] = 2;//隨便給個(gè)值即可
  97.                                 }
  98. /***************************************************************************************/                        
  99.                                 for(i = 2;i < UART_re;i++)
  100.                                 {                                
  101.                                         flag = ~(bit)(i % 2);                                  //紅外發(fā)送標(biāo)志=1
  102.                                         TF0 = count = 0;                                          //中斷計(jì)數(shù)=0
  103.                                         TR0 = 1;        //啟動(dòng)定時(shí)器0
  104.                                         // if(IR_data[ i] <= 5)
  105.                                         // {
  106.                                                 // IR_data[ i] = 5;
  107.                                         // }
  108.                                         while(count < (IR_data[ i] * 90 / 13));
  109.                                         TR0 = 0;                                                         //關(guān)閉定時(shí)器0
  110.                                 }                                
  111. /***************************************************************************************                        
  112.                                 for(i = 2;i < UART_re;)
  113.                                 {                                
  114.                                         //編碼中的低電平
  115.                                         flag = 1;                                                          //紅外發(fā)送標(biāo)志=1
  116.                                         TF0 = count = 0;                                          //中斷計(jì)數(shù)=0
  117.                                         TR0 = 1;                                                          //啟動(dòng)定時(shí)器0
  118.                                         while(count < (IR_data[ i] * 90 / 13));
  119.                                         TR0 = 0;        
  120.                                         i++;//關(guān)閉定時(shí)器0
  121.                                         //編碼中的高電平
  122.                                         flag = 0;                                                          //紅外發(fā)送標(biāo)志
  123.                                         TF0 = count = 0;                                          //中斷計(jì)數(shù)=0
  124.                                         TR0 = 1;                                                          //啟動(dòng)定時(shí)器0
  125.                                         while(count < (IR_data[ i] * 90 / 13));
  126.                                         TR0 = 0;                                                          //關(guān)閉定時(shí)器0
  127.                                 }
  128. /***************************************************************************************/                                
  129.                                 SBUF = 0xFC;                                        //發(fā)射完成返回一個(gè)0xFC給PC機(jī)表示發(fā)射完畢
  130.                                 while(!TI);
  131.                                 TI = 0;
  132. /***************************************************************************************/                                
  133.                                 EX1 = 1;                                                //紅外發(fā)碼發(fā)完后才再次允許外部中斷0
  134.                         }
  135.                         for(UART_re = IR_BYTE;UART_re > 0;UART_re--)
  136.                                 IR_data[UART_re] = 0;                        //清除串口接收區(qū),且將UART_re清0
  137.                         LED = IR_out = 0;                                        //紅外管 = 0不發(fā)光
  138.                         ES = 1;                                                                //重新允許串口中斷
  139. /***************************************************************************************************************/                        
  140.                 }               
  141.         }
  142. }
  143. /***************************************************************************************************************/
  144. void timer0(void) interrupt 1
  145. {
  146.         count += 1;
  147.         if(flag == 1)                        //如果紅外發(fā)送標(biāo)志=1
  148.         {
  149.                 //這里可以改為=1不取反另用ne555產(chǎn)生38K信號(hào)與IR_out口的信號(hào)相與后接IR
  150.                 LED = ~LED;                        //紅外發(fā)射指示狀態(tài)=取反
  151.         }                                                
  152.         else
  153.         {
  154.                 IR_out = 0;                        //紅外管=0不發(fā)光
  155.         }
  156. }
  157. /***************************************************************************************************************/
復(fù)制代碼






評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:536970 發(fā)表于 2019-5-13 15:11 | 顯示全部樓層
高手,學(xué)習(xí)下!
回復(fù)

使用道具 舉報(bào)

ID:164850 發(fā)表于 2019-5-15 05:42 來(lái)自手機(jī) | 顯示全部樓層
藍(lán)牙app麻煩上傳一下
回復(fù)

使用道具 舉報(bào)

ID:12816 發(fā)表于 2019-5-17 18:24 | 顯示全部樓層
luxianjun 發(fā)表于 2019-5-15 05:42
藍(lán)牙app麻煩上傳一下

這是安卓手機(jī)端軟件,寫的不太完美但是能用
紅外線遙控學(xué)習(xí)轉(zhuǎn)發(fā).rar (4.2 MB, 下載次數(shù): 45)

回復(fù)

使用道具 舉報(bào)

ID:164850 發(fā)表于 2019-5-19 12:00 來(lái)自手機(jī) | 顯示全部樓層
下非常感謝,下載試試。
回復(fù)

使用道具 舉報(bào)

ID:556770 發(fā)表于 2019-8-26 20:53 | 顯示全部樓層
學(xué)習(xí)了
回復(fù)

使用道具 舉報(bào)

ID:12816 發(fā)表于 2020-5-26 22:09 | 顯示全部樓層
Universal Remote_V1指令表(混合字節(jié)版).PNG
1.PNG

2.PNG

3.PNG

4.PNG

5.PNG

6.PNG

回復(fù)

使用道具 舉報(bào)

ID:377382 發(fā)表于 2020-5-27 23:06 | 顯示全部樓層
高手,學(xué)習(xí)下
回復(fù)

使用道具 舉報(bào)

ID:756506 發(fā)表于 2020-6-1 15:50 | 顯示全部樓層
很厲害,學(xué)習(xí)下。。謝謝!
回復(fù)

使用道具 舉報(bào)

ID:12816 發(fā)表于 2020-7-20 23:04 | 顯示全部樓層
增加安卓手機(jī)操作軟件 onenet mqtt協(xié)議
MQTT-IR遙控.rar (782.48 KB, 下載次數(shù): 11)



TT截圖未命名.jpg

Screenshot_2020-07-19-22-13-23-77_9cc0f5dcc843e493bbac78b10eaa8e45.jpg

Screenshot_2020-07-18-20-40-05-94_9cc0f5dcc843e493bbac78b10eaa8e45.jpg




回復(fù)

使用道具 舉報(bào)

ID:462436 發(fā)表于 2020-12-28 13:14 | 顯示全部樓層
謝謝,下載學(xué)習(xí)資料。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 在线看片网站 | 九九热在线观看视频 | 97视频在线观看免费 | 国产精品久久久久久久久久免费看 | 成人亚洲精品久久久久软件 | 日本不卡高字幕在线2019 | 欧美精品一二三 | 伊人春色在线观看 | 亚洲欧美激情精品一区二区 | 精品欧美乱码久久久久久 | 欧美男人天堂 | 国产亚洲欧美在线视频 | av中文字幕网 | aaaaaaa片毛片免费观看 | 国产日韩欧美 | 亚洲一区二区三区四区五区中文 | 91香蕉视频在线观看 | 高清欧美性猛交xxxx黑人猛交 | 国产一区中文字幕 | 日本高清视频在线播放 | 日韩一区二区免费视频 | 第四色播日韩第一页 | 污视频免费在线观看 | 久久久久久久97 | 自拍第1页 | 国产91精品久久久久久久网曝门 | 精品国产免费人成在线观看 | 精品国产精品国产偷麻豆 | 亚洲一区二区精品视频 | 一区二区久久 | 粉嫩一区二区三区性色av | 狠狠热视频 | 亚洲激情在线观看 | 欧美精品一区二区三区蜜臀 | 成人一区二区三区 | 国产精品久久久久久久久图文区 | 一区二区三区四区在线 | 免费av观看 | 中文字幕在线精品 | 国产成人精品一区二区三区视频 | 日韩av在线一区 |