欧美视频综合-欧美视频中文字幕-欧美视频在线观在线看-欧美视频在线观看网站-直接观看黄网站免费视频-正在播放久久

機電之家資源網
單片機首頁|單片機基礎|單片機應用|單片機開發|單片機文案|軟件資料下載|音響制作|電路圖下載 |嵌入式開發
培訓信息
贊助商
紅外遙控系統原理及單片機軟件解碼實例
紅外遙控系統原理及單片機軟件解碼實例
 更新時間:2009-12-23 16:40:06  點擊數:0
【字體: 字體顏色
   紅外線遙控是目前使用最廣泛的一種通信和遙控手段。由于紅外線遙控裝置具有體積小、功耗低、功能強、成本低等特點,因而,繼彩電、錄像機之后,在錄音機、音響設備、空凋機以及玩具等其它小型電器裝置上也紛紛采用紅外線遙控。工業設備中,在高壓、輻射、有毒氣體、粉塵等環境下,采用紅外線遙控不僅完全可靠而且能有效地隔離電氣干擾。

1 紅外遙控系統

    通用紅外遙控系統由發射和接收兩大部分組成。應用編/解碼專用集成電路芯片來進行控制操作,如圖1所示。發射部分包括鍵盤矩陣、編碼調制、LED紅外發送器;接收部分包括光、電轉換放大器、解調、解碼電路。
圖1 紅外線遙控系統框圖
 
2 遙控發射器及其編碼
 
       遙控發射器專用芯片很多,根據編碼格式可以分成兩大類,這里我們以運用比較廣泛,解碼比較容易的一類來加以說明,現以日本NEC的uPD6121G組成發射電路為例說明編碼原理(一般家庭用的DVD、VCD、音響都使用這種編碼方式)。當發射器按鍵按下后,即有遙控碼發出,所按的鍵不同遙控編碼也不同。這種遙控碼具有以下特征:

       采用脈寬調制的串行碼,以脈寬為0.565ms、間隔0.56ms、周期為1.125ms的組合表示二進制的“0”;以脈寬為0.565ms、間隔1.685ms、周期為2.25ms的組合表示二進制的“1”,其波形如圖2所示。
圖2 遙控碼的“0”和“1” (注:所有波形為接收端的與發射相反)

       上述“0”和“1”組成的32位二進制碼經38kHz的載頻進行二次調制以提高發射效率,達到降低電源功耗的目的。然后再通過紅外發射二極管產生紅外線向空間發射,如圖3所示。
圖3 遙控信號編碼波形圖

       UPD6121G產生的遙控編碼是連續的32位二進制碼組,其中前16位為用戶識別碼,能區別不同的電器設備,防止不同機種遙控碼互相干擾。該芯片的用戶識別碼固定為十六進制01H;后16位為8位操作碼(功能碼)及其反碼。UPD6121G最多額128種不同組合的編碼。

       遙控器在按鍵按下后,周期性地發出同一種32位二進制碼,周期約為108ms。一組碼本身的持續時間隨它包含的二進制“0”和“1”的個數不同而不同,大約在45~63ms之間,圖4為發射波形圖。

圖4 遙控連發信號波形
 
       當一個鍵按下超過36ms,振蕩器使芯片激活,將發射一組108ms的編碼脈沖,這108ms發射代碼由一個引導碼(9ms),一個結果碼(4.5ms),低8位地址碼(9ms~18ms),高8位地址碼(9ms~18ms),8位數據碼(9ms~18ms)和這8位數據的反碼(9ms~18ms)組成。如果鍵按下超過108ms仍未松開,接下來發射的代碼(連發碼)將僅由起始碼(9ms)和結束碼(2.25ms)組成。
圖5 引導碼                  圖6連發碼
 
3 遙控信號接收
 
       接收電路可以使用一種集紅外線接收和放大于一體的一體化紅外線接收器,不需要任何外接元件,就能完成從紅外線接收到輸出與TTL電平信號兼容的所有工作,而體積和普通的塑封三極管大小一樣,它適合于各種紅外線遙控和紅外線數據傳輸。
       接收器對外只有3個引腳:Out、GND、Vcc與單片機接口非常方便,如圖7所示。
   圖 7
       ① 脈沖信號輸出接,直接接單片機的IO 口。
       ② GND接系統的地線(0V);
       ③ Vcc接系統的電源正極(+5V);
4 遙控信號的解碼
 
       下面是一個對51實驗板配套的紅外線遙控器的解碼程序,它可以把紅外遙控器每一個按鍵的鍵值讀出來,并且通過實驗板上P1口的8個LED顯示出來,在解碼成功的同時并且能發出“嘀嘀嘀”的提示音。
      
;=================================================
; 紅外遙控接收    
;=================================================
;   ew51仿真編程器    配套實驗板學習例程
;
;   中山單片機學習網    智佳科技   逸風
;
;   http://www.zsMCU.com
;   E-mail:info@zsmcu.com
;=================================================
ORG 0000H
 
MAIN:
    JNB    P2.2,IR        ;遙控掃描
    LJMP   MAIN           ;在正常無遙控信號時,一體化紅外接收頭輸出是高電平,程序一直在循環。
 
;=================================================
;   解碼程序
IR:
    ;以下對遙控信號的9000微秒的初始低電平信號的識別,波形見圖5。
    MOV    R6,#10
IR_SB:
    ACALL DELAY882        ;調用882微秒延時子程序
    JB     P2.2,IR_ERROR  ;延時882微秒后判斷P2.2腳是否出現高電平如果有就退出解碼程序
    DJNZ   R6,IR_SB       ;重復10次,目的是檢測在8820微秒內如果出現高電平就退出解碼程序
 
    ;識別連發碼,和跳過4.5ma的高電平。
    JNB     P2.2, $       ;等待高電平避開9毫秒低電平引導脈沖
    ACALL  DELAY2400
    JNB     P2.2,IR_Rp    ;這里為低電平,認為是連發碼信號,見圖6。
    ACALL  DELAY2400      ;延時4.74毫秒避開4.5毫秒的結果碼
 
    ;以下32數據碼的讀取 ,0和1的識別 請看圖2
    MOV     R1,#1AH        ;設定1AH為起始RAM區
    MOV     R2,#4
IR_4BYTE:
    MOV     R3,#8
IR_8BIT:  
    JNB     P2.2,$         ;等待地址碼第一位的高電平信號
    LCALL  DELAY882        ;高電平開始后用882微秒的時間尺去判斷信號此時的高低電平狀態
    MOV    C,P2.2          ;將P2.2引腳此時的電平狀態0或1存入C中
    JNC     IR_8BIT_0      ;如果為0就跳轉到IR_8BIT_0
    LCALL  DELAY1000
IR_8BIT_0:
    MOV    A,@R1           ;將R1中地址的給A
    RRC    A               ;將C中的值0或1移入A中的最低位
    MOV    @R1,A           ;將A中的數暫時存放在R1中
    DJNZ   R3,IR_8BIT      ;接收地址碼的高8位
    INC    R1              ;對R1中的值加1,換下一個RAM
    DJNZ   R2,IR_4BYTE     ;接收完16位地址碼和8位數據碼和8位數據,
                           ;存放在1AH/1BH/1CH/1DH的RAM中
    ;解碼成功
    JMP    IR_GOTO
 
IR_Rp:
    ;這里為重復碼執行處
    ;按住遙控按鍵時,每過108ms就到這里來
    JMP    IR_GOTO
 
IR_ERROR:
    ;錯語退出
    LJMP   MAIN ;退出解碼子程序
 
;=================================================
;遙控執行部份
IR_GOTO:
    ;這里還要判斷1AH和1BH 兩個系統碼或用戶碼,用于識別不同的遙控器
    ;MOV   A,1AH
    ;CJNE  A,#xxH,IR_ERROR   ;用戶碼1不對則退出
    ;MOV   A,1BH
    ;CJNE  A,#xxH,IR_ERROR   ;用戶碼2不對則退出
 
 
 
    ;判斷兩個數據碼是否相反
    MOV    A,1CH
    CPL    A
    CJNE   A,1DH,IR_ERROR    ;兩個數據碼不相反則退出
    ;遙控執行部份
    ;MOV   A,1DH             ;判斷對應按鍵
    ;CJNE  A,#xxH,$+6
    ;LJMP  -à跳到對應按鍵執行處
    ;CJNE  A,#xxH,$+6
    ;LJMP  -à跳到對應按鍵執行處
    ;.
 
    MOV     P1,1DH         ;將按鍵的鍵值通過P1口的8個LED顯示出來!
    CLR     P2.3          ;蜂鳴器鳴響-嘀嘀嘀-的聲音,表示解碼成功
    LCALL  DELAY2400
    LCALL  DELAY2400
    LCALL  DELAY2400
    SETB   P2.3          ;蜂鳴器停止
 
    ;清除遙控值使連按失效
    MOV    1AH,#00H
    MOV    1BH,#00H
    MOV    1CH,#00H
    MOV    1DH,#00H
    LJMP   MAIN
;=================================================
; 延時子程序
;=============================882
DELAY882: ;1.085x ((202x4)+5)=882
    MOV R7,#202
DELAY882_A:
    NOP
    NOP
    DJNZ   R7,DELAY882_A
RET
 
;=============================1000
DELAY1000: ;1.085x ((229x4)+5)=999.285
    MOV R7,#229
DELAY1000_A:
    NOP
    NOP
    DJNZ   R7,DELAY1000_A
RET
;=============================2400
DELAY2400: ;1.085x ((245x9)+5)=2397.85
    MOV R7,#245
DELAY2400_A:
    NOP
    NOP
    NOP
    NOP
    NOP
   NOP
    NOP
    DJNZ   R7,DELAY2400_A
RET
END
 
  • 上一篇: STC89C52串口下載的冷啟動法與帶電下載法
  • 下一篇: 沒有了
  • 發表評論   告訴好友   打印此文  收藏此頁  關閉窗口  返回頂部
    熱點文章
     
    推薦文章
     
    相關文章
    網友評論:(只顯示最新5條。)
    關于我們 | 聯系我們 | 廣告合作 | 付款方式 | 使用幫助 | 機電之家 | 會員助手 | 免費鏈接

    點擊這里給我發消息66821730(技術支持)點擊這里給我發消息66821730(廣告投放) 點擊這里給我發消息41031197(編輯) 點擊這里給我發消息58733127(審核)
    本站提供的機電設備,機電供求等信息由機電企業自行提供,該企業負責信息內容的真實性、準確性和合法性。
    機電之家對此不承擔任何保證責任,有侵犯您利益的地方請聯系機電之家,機電之家將及時作出處理。
    Copyright 2007 機電之家 Inc All Rights Reserved.機電之家-由機電一體化網更名-聲明
    電話:0571-87774297 傳真:0571-87774298
    杭州濱興科技有限公司提供技術支持

    主辦:杭州市高新區(濱江)機電一體化學會
    中國行業電子商務100強網站

    網站經營許可證:浙B2-20080178-1