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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4477|回復: 1
打印 上一主題 下一主題
收起左側

STM32單片機紅外遙控1838原理分析及源代碼

[復制鏈接]
跳轉到指定樓層
樓主
ID:585517 發表于 2019-7-30 11:00 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
遙控  :NEC 編碼  960nm的波長  晶振為455KHZ,對應的發射頻率(載波頻率)為38KHZ,
        遙控ID為0(即系統識別碼),反碼為255,不同的遙控ID有可能不一樣。
接收頭:1838 脈沖型

遙控碼由三部分組成
1、leader code   9ms的高電平 + 4.5ms 的低電平
2、系統識別碼    區別不同的紅外遙控設備
3、操作碼        8bit操作碼和8bit的操作反碼組成

發送方的電平跟接收方解調出來的電平是反向的。
紅外接收頭接收到遙控器的信號后,解碼出后的數據格式如下:
寫程序即根據這個信號的格式來寫。
__________________               _______   _   _   _   _   _   _   _   _   ____   ____   ____   ____   ____   ____   ____   ____                                 ___________________________________               _______   ___________________________________________________________
                  |_____________|       |_| |_| |_| |_| |_| |_| |_| |_| |_|    |_|    |_|    |_|    |_|    |_|    |_|    |_|    |x x x x x x x x|x x x x x x x x|                                   |_____________|       |_|                                                                    
                      |<-    9ms  ->|<4.5ms>|
                  |----leader code------|-----custom code 8bit----------|-----------------custom code' 8bit---------------------| key data 8bit |key data'8bit  |<---------------40ms---------------><----9ms-----><2.1ms>--|--------------- 此時的高電平超過40ms,然后出現9ms的低電平,2.1ms的高電平 連發碼----------------


0和1均以0.56ms的低電平開始(實際測量是500us的樣子),不同的是后面出現的高電平,
如果高電平是0.56ms(實際測量是500us的樣子),則表示0,如果高電平是1.68ms(0.56*3=1.68)則表示1
0.56ms:|_|
      _   _   _
0:     |_| |_| |
      _   ____   ____  
1:     |_|    |_|    |_

寫代碼的時候只需要檢測高電平的時間即可。
以下時間都是通過示波器實際測量所得。
引導碼的高電平:4.5ms
0的高電平     :0.56ms(實測0.5ms的樣子)
1的高電平     :1.68ms
連發碼的高電平:2.1ms

-------------------------------------------------------------------------------------------------------
不同的遙控按鍵值是不一樣的,需要實際測量,測量的時候可通過串口打印出鍵值來測量
下面的鍵值是野火ISO STM32開發板配套的遙控器對應的鍵值

電源  :162
MENU  : 226
TEST  : 34
+     : 2
RETURN: 194
|<<   : 224
>     : 168
>>|   : 144
0     : 104
-     : 152
C     : 176
1     :48
2     :24
3     :122
4     :16
5     :56
6     :90
7     :66
8     :74
9     :82  

main函數:

  1. int main(void)
  2. {        
  3. uint8_t key_val;

  4. /* config the led */
  5. LED_GPIO_Config();
  6. LED1_ON;

  7. /* 配置SysTick 為10us中斷一次 */
  8. SysTick_Init();

  9. /* 重新配置SysTick的中斷優先級為最高,要不然SysTick延時中斷搶占不了IO EXTI中斷
  10. * 因為SysTick初始化時默認配置的優先級是最低的
  11. * 或者當你用其他定時器做延時的時候,要配置定時器的優先級高于IO EXTI中斷的優先級
  12. */
  13. NVIC_SetPriority (SysTick_IRQn, 0);


  14. /* USART config 115200 8-N-1 */
  15. Debug_USART_Config();
  16. printf("\r\n 這是一個紅外遙控發射與接收實驗 \r\n");

  17. /* 初始化紅外接收頭CP1838用到的IO */
  18. IrDa_Init();

  19. for(;;)
  20. {        
  21. if( frame_flag == 1 ) /* 一幀紅外數據接收完成 */
  22. {
  23. key_val = IrDa_Process();
  24. printf("\r\n key_val=%d \r\n",key_val);
  25. printf("\r\n 按鍵次數frame_cnt=%d \r\n",frame_cnt);
  26. printf("\r\n 中斷次數isr_cnt=%d \r\n",isr_cnt);

  27. /* 不同的遙控器面板對應不同的鍵值,需要實際測量 */
  28. switch( key_val )
  29. {
  30. case 0:
  31. LED1_TOGGLE;
  32. printf("\r\n key_val=%d \r\n",key_val);
  33. printf("\r\n Error \r\n");
  34. break;

  35. case 162:
  36. LED1_TOGGLE;
  37. printf("\r\n key_val=%d \r\n",key_val);
  38. printf("\r\n POWER \r\n");
  39. break;

  40. case 226:
  41. LED1_TOGGLE;
  42. printf("\r\n key_val=%d \r\n",key_val);
  43. printf("\r\n MENU \r\n");
  44. break;

  45. case 34:
  46. LED1_TOGGLE;
  47. printf("\r\n key_val=%d \r\n",key_val);
  48. printf("\r\n TEST \r\n");
  49. break;

  50. case 2:
  51. LED1_TOGGLE;
  52. printf("\r\n key_val=%d \r\n",key_val);
  53. printf("\r\n + \r\n");
  54. break;

  55. case 194:
  56. LED1_TOGGLE;
  57. printf("\r\n key_val=%d \r\n",key_val);
  58. printf("\r\n RETURN \r\n");
  59. break;

  60. case 224:
  61. LED1_TOGGLE;
  62. printf("\r\n key_val=%d \r\n",key_val);
  63. printf("\r\n |<< \r\n");
  64. break;

  65. case 168:
  66. LED1_TOGGLE;
  67. printf("\r\n key_val=%d \r\n",key_val);
  68. printf("\r\n > \r\n");
  69. break;

  70. case 144:
  71. LED1_TOGGLE;
  72. printf("\r\n key_val=%d \r\n",key_val);
  73. printf("\r\n >>| \r\n");
  74. break;

  75. case 104:
  76. LED1_TOGGLE;
  77. printf("\r\n key_val=%d \r\n",key_val);
  78. printf("\r\n 0 \r\n");
  79. break;

  80. case 152:
  81. LED1_TOGGLE;
  82. printf("\r\n key_val=%d \r\n",key_val);
  83. printf("\r\n - \r\n");
  84. break;

  85. case 176:
  86. LED1_TOGGLE;
  87. printf("\r\n key_val=%d \r\n",key_val);
  88. printf("\r\n C \r\n");
  89. break;

  90. case 48:
  91. LED1_TOGGLE;
  92. printf("\r\n key_val=%d \r\n",key_val);
  93. printf("\r\n 1 \r\n");
  94. break;

  95. case 24:
  96. LED1_TOGGLE;
  97. printf("\r\n key_val=%d \r\n",key_val);
  98. printf("\r\n 2 \r\n");
  99. break;

  100. case 122:
  101. LED1_TOGGLE;
  102. printf("\r\n key_val=%d \r\n",key_val);
  103. printf("\r\n 3 \r\n");
  104. break;

  105. case 16:
  106. LED1_TOGGLE;
  107. printf("\r\n key_val=%d \r\n",key_val);
  108. printf("\r\n 4 \r\n");
  109. break;

  110. case 56:
  111. LED1_TOGGLE;
  112. printf("\r\n key_val=%d \r\n",key_val);
  113. printf("\r\n 5 \r\n");
  114. break;

  115. case 90:
  116. LED1_TOGGLE;
  117. printf("\r\n key_val=%d \r\n",key_val);
  118. printf("\r\n 6 \r\n");
  119. break;

  120. case 66:
  121. LED1_TOGGLE;
  122. printf("\r\n key_val=%d \r\n",key_val);
  123. printf("\r\n 7 \r\n");
  124. break;

  125. case 74:
  126. LED1_TOGGLE;
  127. printf("\r\n key_val=%d \r\n",key_val);
  128. printf("\r\n 8 \r\n");
  129. break;

  130. case 82:
  131. LED1_TOGGLE;
  132. printf("\r\n key_val=%d \r\n",key_val);
  133. printf("\r\n 9 \r\n");
  134. break;

  135. default:
  136. break;
  137. }
  138. }
  139. }
  140. }
復制代碼
全部資料51hei下載地址:
程序.7z (363.33 KB, 下載次數: 67)

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:222621 發表于 2019-9-3 15:34 | 只看該作者
感謝樓主分享,我拿去學學
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 羞羞色视频| 国产农村一级国产农村 | 在线免费观看成人 | 日韩av网址在线观看 | 综合久久av| 黄色小视频大全 | 99国产精品久久久 | 欧美日韩高清在线观看 | 国产精品日韩 | 一区二区三区四区毛片 | 91久久久久久久久久久 | av一二三区 | 久久久久久免费毛片精品 | 日韩h| 亚洲欧美视频一区 | 日本淫视频 | 亚洲精品电影在线观看 | 亚洲精品视频在线 | 亚州国产 | 一区二区不卡 | 国产美女特级嫩嫩嫩bbb片 | 国产视频日韩 | 热久久免费视频 | 欧美 日韩 在线播放 | 国产精品a级| 91看片网| 操人网站| 成人久久久久 | 免费视频二区 | 免费看黄色国产 | 亚洲激情自拍偷拍 | 91精品国产一区二区在线观看 | 亚洲男人天堂 | 亚洲一区三区在线观看 | 一区二区三区四区毛片 | 粉嫩粉嫩芽的虎白女18在线视频 | 日韩中文在线视频 | 国产欧美一区二区三区国产幕精品 | 久久看片 | 日本精品视频一区二区 | 欧美二区在线 |