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

標題: 基于stm32的紅外遙控器學習與發(fā)射程序源碼 [打印本頁]

作者: wjs1033    時間: 2018-7-12 15:21
標題: 基于stm32的紅外遙控器學習與發(fā)射程序源碼
通過載波學習紅外,并可還原發(fā)送出去

單片機源程序如下:
  1. #include "stdio.h"
  2. #include "delay.h"
  3. #include "sys.h"
  4. #include "led.h"
  5. #include "myuart.h"
  6. #include "ir.h"
  7. #include "irsend.h"
  8. #include "learn.h"
  9. #include "key.h"
  10. #include "pwm.h"
  11. #include "remoteflash.h"

  12. #include "lcd.h"


  13. /* 接口
  14. 發(fā)送指示燈 LED_SEND -- PC.0
  15. 學習指示燈 LED_COPY -- PC.1
  16. 按鍵                         K1 -- PA.3
  17.                                  K2 -- PA.4
  18.                                  K3 -- PA.5
  19.                                  K4 -- PA.6
  20.                                  K5 -- PA.7
  21. 學習按鍵        KEY -- PA.2
  22. 接收使能                 DQ -- PC.3
  23. 紅外接收引腳        OUT -- PA.1
  24. 載波38K         38K -- PA.0
  25. 發(fā)送控制             Txd -- PC.2
  26. */

  27. u8 Flag_RemoteSet = 0;
  28. u8 Flag_LearnState = 0;
  29. extern u16 PulseTab[];
  30. int main(void)               
  31. {       
  32.         u16 i;
  33.         u8 temp = 0;       
  34.         /* 延時函數(shù)初始化 */
  35.         DelayInit();
  36.         NVIC_Configuration();        //設置NVIC中斷分組2:2位搶占優(yōu)先級,2位響應優(yōu)先級
  37.         /* MYUART 初始化 */
  38.         MY_UartInit(9600);
  39.         /* KEY 初始化 */
  40.         KEY_Init();
  41.         LearnKEY_Init();
  42.         /* PWM 初始化 */
  43.         TIM2_PWM_Init(1895,0);        //72000/(1895+1) = 37.99K
  44.         /* LED 初始化 */                      
  45.         LED_Init();
  46.         /* IR 初始化 */
  47.         IR_Init();                // 紅外接收函數(shù)
  48.         SendPort_Init();
  49.         /* TFT1.8初始化 */
  50.         LCD_PortInit();
  51.         LCD_Init();
  52. /***************************** 以下添加代碼區(qū) *****************************/
  53.         /* 設置窗口 */
  54.         LCD_SetRamAddr(0,127, 0,29);
  55.         for(i=0; i<3839; i++)        LCD_Wirte_Data16(CYAN);
  56.         ChineseChar(32,10,0,BLACK,CYAN,1);        // 遙
  57.            ChineseChar(48,10,0,BLACK,CYAN,2);        // 控
  58.            ChineseChar(64,10,0,BLACK,CYAN,3);        // 器
  59.            ChineseChar(80,10,0,BLACK,CYAN,4);        // 碼

  60.         LCD_SetRamAddr(0,127,30,89);
  61.         for(i=0; i<11520; i++)        LCD_Wirte_Data16(YELLOW);
  62.         ChineseChar(0,40,0,BLACK,YELLOW,5);        // 紅
  63.         ChineseChar(15,40,0,BLACK,YELLOW,6);// 外
  64.         ChineseChar(30,40,0,BLACK,YELLOW,7);// 協(xié)
  65.         ChineseChar(45,40,0,BLACK,YELLOW,8);// 議
  66.         LCD_ShowChar(55,40,BLACK,YELLOW,':');

  67.         LCD_SetRamAddr(0,127,90,159);
  68.         for(i=0; i<11520; i++)        LCD_Wirte_Data16(PUEPLE);
  69.         ChineseChar( 0,100,0,BLACK,PUEPLE,1);        // 紅
  70.         ChineseChar(15,100,0,BLACK,PUEPLE,2);        // 外
  71.         ChineseChar(30,100,0,BLACK,PUEPLE,9);        // 狀
  72.         ChineseChar(45,100,0,BLACK,PUEPLE,10);        // 態(tài)
  73.         LCD_ShowChar(55,100,BLACK,PUEPLE,':');
  74. /***************************** 以上添加代碼區(qū) *****************************/
  75.         LEARN_ON = 0;        // 關閉紅外接收
  76.         LED1 = 1;  // 收到脈沖指示
  77.         LED_SEND = 1;  // 發(fā)送狀態(tài)指示
  78.         LED2 = 0;
  79.         LED2 = 1;
  80.         LED3 = 1;               
  81.         LED4 = 1;
  82.         LED5 = 1;
  83. //        TFTDisplay();        // 測試
  84.           while(1)
  85.         {       
  86. /* 頁面定義 */
  87. //#define KEY1_ADDR 0x0807E000        VOL+
  88. //#define KEY2_ADDR 0x0807E800        VOL-
  89. //#define KEY3_ADDR 0x0807F000        CH+
  90. //#define KEY4_ADDR 0x0807F800        CH-
  91. //#define KEY5_ADDR 0x0807D800        POWER

  92. //#define VOL_UP        1
  93. //#define VOL_DOWN        2
  94. //#define CH_UP                3
  95. //#define CH_DOWN        4
  96. //#define PWR_ON        5       
  97.                 LED2 = 0;
  98.                 temp = KEY_Scan(0);        // 按鍵掃描,非連按模式
  99.                 /* 紅外協(xié)議檢測 */
  100.                 if(PulseTab[1]>3500 && PulseTab[1]<5500) {
  101.                         LCD_ShowString(50,65,BLACK,YELLOW,"NEC   ");
  102.                 }else{
  103.                         LCD_ShowString(50,65,BLACK,YELLOW,"Other");
  104.                 }
  105.                 /* 遙控器狀態(tài)檢測 */
  106.                 if((Flag_RemoteSet==0) && (temp!=0)) {
  107.                         LCD_ShowString(18,120,BLACK,PUEPLE,"Sending....");
  108.                 }
  109.                 if((Flag_RemoteSet==0) && (temp==0)) {
  110.                         LCD_ShowString(18,120,BLACK,PUEPLE,"Idle State ");
  111.                 }
  112. //                TFTDisplay();        // 測試
  113. //=======================學習狀態(tài)=======================//
  114.                 if(Flag_RemoteSet == 1){
  115. //                        ChineseChar(20,110,2,BLACK,PUEPLE,1);// 學
  116. //                        ChineseChar(45,110,2,BLACK,PUEPLE,2);// 習
  117. //                        ChineseChar(70,1`        10,2,BLACK,PUEPLE,3);// 中
  118. //                        LCD_ShowString(95,115,BLACK,YELLOW,"...");
  119.                         //LCD_ShowString(18,115,BLACK,PUEPLE,"Learning...");
  120.                         switch(temp){
  121.                                 case VOL_UP  :temp = 0;                 // 按鍵按下標志清零
  122.                                                           LED3 = ~LED3;         // 調(diào)試用
  123.                                                           FLASH_WriteData(KEY1_ADDR,PulseTab,200);        // 紅外脈沖寬度值保存到相應按鍵下
  124.                                                           break;
  125.                                 case VOL_DOWN:temp = 0;                 // 按鍵按下標志清零
  126.                                                           LED3 = ~LED3;
  127.                                                           FLASH_WriteData(KEY2_ADDR,PulseTab,200);        // 紅外脈沖寬度值保存到相應按鍵下
  128.                                                           break;
  129.                                 case CH_UP   :temp = 0;                 // 按鍵按下標志清零
  130.                                                           LED3 = ~LED3;
  131.                                                           FLASH_WriteData(KEY3_ADDR,PulseTab,200);        // 紅外脈沖寬度值保存到相應按鍵下
  132.                                                           break;
  133.                                 case CH_DOWN :temp = 0;                 // 按鍵按下標志清零
  134.                                                           LED3 = ~LED3;
  135.                                                           FLASH_WriteData(KEY4_ADDR,PulseTab,200);        // 紅外脈沖寬度值保存到相應按鍵下
  136.                                                           break;
  137.                                 case PWR_ON  :temp = 0;                 // 按鍵按下標志清零
  138.                                                           LED3 = ~LED3;
  139.                                                           FLASH_WriteData(KEY5_ADDR,PulseTab,200);        // 紅外脈沖寬度值保存到相應按鍵下
  140.                                                           break;
  141.                         }
  142.                 }
  143. //=======================發(fā)送狀態(tài)=======================//
  144.                 if(Flag_RemoteSet == 0){
  145.                         //LCD_ShowString(18,115,BLACK,PUEPLE,"SendingStat");
  146.                         switch(temp){
  147.                                 case VOL_UP  :temp = 0;                 // 按鍵按下標志清零
  148.                                                           SendLight(1);  // 發(fā)送指示燈亮                                                                 
  149.                                                           //LED3 = ~LED3;         // 調(diào)試用
  150.                                                           IR_SendData(KEY1_ADDR);  // 紅外發(fā)送
  151.                                                           delay_ms(150);
  152.                                                           SendLight(0);  // 發(fā)送完熄滅
  153.                                                           break;
  154.                                 case VOL_DOWN:temp = 0;                 // 按鍵按下標志清零
  155.                                                           SendLight(1); //發(fā)送指示燈亮
  156.                                                           //LED3 = ~LED3;       
  157.                                                           IR_SendData(KEY2_ADDR);
  158.                                                           delay_ms(150);
  159.                                                           SendLight(0);
  160.                                                           break;
  161.                                 case CH_UP   :temp = 0;                 // 按鍵按下標志清零
  162.                                                           SendLight(1); //發(fā)送指示燈亮
  163.                                                           //LED3 = ~LED3;
  164.                                                           IR_SendData(KEY3_ADDR);
  165.                                                           delay_ms(150);
  166.                                                           SendLight(0);
  167.                                                           break;
  168.                                 case CH_DOWN :temp = 0;                 // 按鍵按下標志清零
  169.                                                           SendLight(1); //發(fā)送指示燈亮
  170.                                                           //LED3 = ~LED3;
  171.                                                           IR_SendData(KEY4_ADDR);
  172.                                                           delay_ms(150);
  173.                                                           SendLight(0);
  174.                                                           break;
  175.                                 case PWR_ON  :temp = 0;                 // 按鍵按下標志清零
  176.                                                           SendLight(1); //發(fā)送指示燈亮
  177.                                                           //LED3 = ~LED3;                               
  178.                                                           IR_SendData(KEY5_ADDR);
  179.                                                           delay_ms(150);
  180.                                                           SendLight(0);
  181.                                                           break;
  182.                         }
  183.                 }       
  184.         }                                                                                                                   
  185. }

復制代碼

所有資料51hei提供下載:
IR_remote.zip (382.88 KB, 下載次數(shù): 579)



作者: 擇一城終老    時間: 2018-7-30 15:54
樓主你好,很有用的學習資料,這里想問個問題,這個紅外發(fā)射的硬件電路,你是通過三極管b基級(即PC2口)負責控制,c集電極是38K載波信號,是這樣的嗎?
作者: 擇一城終老    時間: 2018-7-30 15:58
樓主你好,資料非常有用,想問個問題,紅外發(fā)射模塊的硬件電路,是b基級(PC2口)負責控制,然后c集電極是38K載波信號嗎?
作者: leng_qian    時間: 2018-11-14 11:18
樓主你好,很有用的學習資料,這里想問個問題,這個紅外發(fā)射的硬件電路,你是通過三極管b基級(即PC2口)負責控制,c集電極是38K載波信號,是這樣的嗎?
作者: hughtain    時間: 2019-2-28 10:31
感謝樓主的分享,我下載來參考,如果可行,真的感激
作者: li121788501    時間: 2019-3-25 16:42

感謝樓主的分享,我下載來參考,如果可行,真的感激
作者: 1436925556    時間: 2019-5-1 07:47
下載試試看,謝謝分享
作者: yuanxiang1    時間: 2019-5-2 07:45
資料不錯值得學習
作者: hopepan    時間: 2019-7-17 11:48
就想要個積分下載,以后可能用得上,先儲存
作者: zxasq    時間: 2019-7-20 11:12
很好像下載過來看看

作者: wang930626    時間: 2019-8-2 09:38
下載學習學習,感謝樓主分享!!!
作者: BG6BXN    時間: 2019-8-2 18:52
沒有看到硬件原理圖
作者: 壹勿所知    時間: 2019-11-18 15:59
感謝樓主分享
作者: czr027010    時間: 2019-11-19 20:35
非常感謝
作者: Monday_    時間: 2019-11-24 20:41
非常感謝樓主的分享
作者: 取個名字真的難    時間: 2020-3-21 23:05
感謝樓主的分享,我下載來參考,如果可行,真的感激

作者: roadgo    時間: 2020-3-24 21:40
感謝樓主的分享,我下載來參考,如果可行,真的感激
作者: potatoo    時間: 2020-3-25 15:23
非常感謝樓主分享,下載來做參考,感謝。
作者: lyseg    時間: 2020-3-27 09:55
非常感謝樓主的分享
作者: liberv    時間: 2021-1-29 08:41
沒有看到硬件原理圖
作者: Grey.Tu    時間: 2021-7-25 16:33
@擇一城終老
好像紅外頻率是38K吧, 三極管選型需要支持38K.




歡迎光臨 (http://m.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 一区二区三区国产 | 在线视频h| xxxx亚洲| www.99热| 亚洲欧美一区二区三区在线 | 99国产精品99久久久久久 | 国产一级片免费看 | 免费在线毛片 | 国产成人一区二区三区 | 亚洲黄色片 | 黄色小说视频 | 啪啪免费网站 | 色婷婷久久久 | 欧美日韩在线一区二区三区 | 精品一区三区 | 午夜丁香| 日本中文在线观看 | 国产一区中文字幕 | 欧美视频免费在线观看 | 日韩欧美三区 | 玖玖在线观看 | 日韩一区二区在线观看视频 | 在线观看国产小视频 | 国产成人精品一区二区三区福利 | 成人永久免费视频 | 国产精品高潮呻吟久久 | 国产精品久久久久久中文字 | 91丝袜一区在线观看 | 欧美区在线 | 欧洲美一区二区三区亚洲 | 亚洲国产精品suv | 中文字幕日韩视频 | 天天综合网站 | 91看片在线观看 | 亚洲日本国产 | 黄色av免费 | 黄色大毛片 | 羞羞网站在线观看 | 精品亚洲一区二区三区 | 国产成人精品av在线观 | 日韩专区在线观看 |