• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

    EEPW首頁 > 嵌入式系統 > 新品快遞 > 從零開始學GD32_紅外遙控實驗

    從零開始學GD32_紅外遙控實驗

    作者: 時間:2015-04-09 來源:電子產品世界 收藏

          從零開始學GD32

    本文引用地址:http://www.czjhyjcfj.com/article/272282.htm

      第一節 紅外遙控實驗

      遙控器是一種無線發射裝置,通過現代的數字編碼技術,將按鍵信息進行編碼,通過紅外線二極管發射光波,光波經接收機的紅外線接收器將收到的紅外信號轉變成電信號,由處理器進行解碼,解調出相應的指令來達到控制機頂盒等設備完成所需的操作要求。

      一、原理

      很多電器都采用紅外線遙控,那么紅外線遙控的工作原理是什么呢?首先我們來看看什么是紅外線。

      人的眼睛能看到的可見光按波長從長到短排列,依次為紅、橙、黃、綠、青、藍、紫。其中紅光的波長范圍為0.62~0.76μm;紫光的波長范圍為0.38~0.46μm。比紫光波長還短的光叫紫外線,比紅光波長還長的光叫紅外線。

      紅外線遙控就是利用波長為0.76~1.5μm之間的近紅外線來傳送控制信號的。

      常用的紅外線遙控系統一般分發射和接收兩個部分。

      發射部分的主要元件為紅外發光二極管。它實際上是一只特殊的發光二極管,由于其內部材料不同于普通發光二極管,因而在其兩端施加一定電壓時,它便發出的是紅外線而不是可見光。

      大量使用的紅外發光二極管發出的紅外線波長為940nm左右,外形與普通發光二極管相同,只是顏色不同。

      紅外發光二極管一般有黑色、深藍、透明三種顏色。

      判斷紅外發光二極管好壞的辦法與判斷普通二極管一樣:用萬用表電阻擋量一下紅外發光二極管的正、反向電阻即可。

      紅外發光二極管的發光效率要用專門的儀器才能精確測定,而業余條件下只能用拉距法來粗略判定。接收部分的紅外接收管是一種光敏二極管。

      在實際應用中要給紅外接收二極管加反向偏壓,它才能正常工作,亦即紅外接收二極管在電路中應用時是反向運用,這樣才能獲得較高的靈敏度。

      紅外接收二極管一般有圓形和方形兩種。

      由于紅外發光二極管的發射功率一般都較小(15mW左右),所以紅外接收二極管接收到的信號比較微弱,因此就要增加高增益放大電路。

      前些年常用μPC1373H、CX20106A等紅外接收專用放大電路。最近幾年不論是業余制作還是正式產品,大多都采用成品紅外接收頭。

      成品紅外接收頭的封裝大致有兩種:一種采用鐵皮屏蔽;一種是塑料封裝。均有三只引腳,即電源正(VDD)、電源負 (GND)和數據輸出(VO或OUT)。紅外接收頭的引腳排列因型號不同而不盡相同,可參考廠家的使用說明。成品紅外接收頭的優點是不需要復雜的調試和外 殼屏蔽,使用起來如同一只三極管,非常方便。但在使用時注意成品紅外接收頭的載波頻率。

      紅外遙控常用的載波頻率為38kHz,這是由發射端所使用的455kHz陶振來決定的。

      在發射端要對晶振進行整數分頻,分頻系數一般取12,所以455kHz÷12≈37.9 kHz≈38kHz。也有一些遙控系統采用36kHz、40kHz、56kHz等,一般由發射端晶振的振蕩頻率來決定。

      二、紅外遙控編碼

      常用的有通過脈沖寬度來實現信號調制的脈寬調制(PWM)和通過脈沖串之間的時間間隔來實現信號調制的脈時調制(PPM)兩種方法。

      我的遙控器使用的是NEC協議,即PWM方法,其特點如下:

      1、8位地址和8位指令長度;

      2、地址和命令2次傳輸(確保可靠性)

      3、PWM脈沖位置調制,以發射紅外載波的占空比代表“0”和“1”;

      4、載波頻率為38Khz;

      5、位時間為1.125ms或2.25ms;

      NEC碼的位定義:一個脈沖對應560us的連續載波,一個邏輯1傳輸需要2.25ms(560us脈沖+1680us低電平),一個邏輯0的傳輸需要1.125ms(560us脈沖+560us低電平)。而遙控接收頭在收到脈沖的時候為低電平,在沒有脈沖的時候為高電平,這樣,我們在接收頭端收到的信號為:邏輯1應該是560us低+1680us高,邏輯0應該是560us低+560us高。

      NEC遙控指令的數據格式為:同步碼頭、地址碼、地址反碼、控制碼、控制反碼。同步碼由一個9ms的低電平和一個4.5ms的高電平組成,地址碼、地址反碼、控制碼、控制反碼均是8位數據格式。按照低位在前,高位在后的順序發送。采用反碼是為了增加傳輸的可靠性(可用于校驗)。

      三、解碼過程

      

     

      

     

      從圖中可以看到,其地址碼為0,控制碼為168。可以看到在100ms之后,我們還受到了幾個脈沖,這是NEC碼規定的連發碼(由9ms低電平+2.5m高電平+0.56ms低電平+97.94ms高電平組成),如果在一幀數據發送完畢之后,按鍵仍然沒有放開,則發射重復碼,即連發碼,可以通過統計連發碼的次數來標記按鍵按下的長短/次數。

      四、實驗操作

      基于GD32 實驗21 紅外遙控實驗基礎上,在remote.h文件中添加以下宏定義:

      #defineBUTTON_1 218

      #defineBUTTON_2 242

      #defineBUTTON_3 202

      #defineBUTTON_4 90

      #defineBUTTON_5 240

      #defineBUTTON_6 122

      #defineBUTTON_7 106

      #defineBUTTON_8 114

      #defineBUTTON_9 74

      #defineBUTTON_0 170

      #define BUTTON_POWER 234

      作為遙控器的新鍵值。

      main.c文件中的switch函數也進行了如下修改:

      switch(key)

      {

      caseBUTTON_POWER:

      LCD_ShowString(86,150,"POWER");

      break;

      caseBUTTON_1:

      LCD_ShowString(86,150,"1 ");

      break;

      caseBUTTON_2:

      LCD_ShowString(86,150,"2 ");

      break;

      caseBUTTON_3:

      LCD_ShowString(86,150,"3 ");

      break;

      caseBUTTON_4:

      LCD_ShowString(86,150,"4 ");

      break;

      caseBUTTON_5:

      LCD_ShowString(86,150,"5 ");

      break;

      caseBUTTON_6:

      LCD_ShowString(86,150,"6 ");

      break;

      caseBUTTON_7:

      LCD_ShowString(86,150,"7 ");

      break;

      caseBUTTON_8:

      LCD_ShowString(86,150,"8 ");

      break;

      caseBUTTON_9:

      LCD_ShowString(86,150,"9 ");

      break;

      caseBUTTON_0:

      LCD_ShowString(86,150,"0 ");

      break;

      default:

      break;

      }

      最后,測試一切正常!

    萬能遙控器相關文章:萬能遙控器代碼


    萬用表相關文章:萬用表怎么用


    手機電池相關文章:手機電池修復


    紅外遙控器相關文章:紅外遙控器原理
    晶振相關文章:晶振原理
    脈沖點火器相關文章:脈沖點火器原理
    脈寬調制相關文章:脈寬調制原理


    關鍵詞: 紅外遙控器

    評論


    相關推薦

    技術專區

    關閉
    主站蜘蛛池模板: 澄江县| 出国| 保德县| 通山县| 罗山县| 巴马| 德清县| 大同县| 旬阳县| 博乐市| 达州市| 双鸭山市| 英吉沙县| 株洲县| 宣城市| 时尚| 章丘市| 乐都县| 阜城县| 金湖县| 根河市| 怀柔区| 仁布县| 福建省| 彩票| 威海市| 昭苏县| 交口县| 宜丰县| 定西市| 涪陵区| 曲水县| 壶关县| 渝北区| 黄陵县| 蒲江县| 商南县| 繁峙县| 莱芜市| 宜春市| 佛山市|