新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于單片機系統的紅外遙控器應用

        基于單片機系統的紅外遙控器應用

        作者: 時間:2012-03-30 來源:網絡 收藏

        這里需要合理設置定時器的預分頻值,筆者多次實驗,得出較為合理的預分頻值為1∶8,定時器時間分辨率為8μs,最大定時時間為 (4×256+252)×8×1μs=10.2 ms,測量精度達到最高,誤差為32μs。通過對所得數據分析,得出的信號碼格式如圖4所示。

        18.jpg

        圖中“頭”(即引導脈沖):低8.84 ms,高4.40 ms。 “1”:低0.60 ms,高1.62 ms;“0”:0.60 ms低,0.50ms高;16 b識別碼:19D6H采用PIC16C72,最多可以檢測54 b的信號碼,足以滿足一般情況下的需求。

        4 軟件解碼程序

        在已知信號碼格式的條件下,可以通過軟件程序實現解碼。以筆者手中的為例,根據上面已測得的信號碼,采用PIC16C54,4 MHz晶振,提供一種軟件解碼的程序。

        PIC16C54單片機是一款有著較高性能價格比的低檔單片機,最適合低價格、低功耗、小體積的設備。PIC16C54沒有中斷,程序采用軟件查詢法,查詢輸入引腳的電平變化,采用定時器定時,根據定時器的記錄值和已知的信號格式比較,判斷各部分接收是否正確以及分辨鍵碼并執行相應的命令。

        由于遙控器脈寬時間值是在一個小范圍內波動,而且檢測過程中定時器也存在誤差。因此,對信號的識別不能采取精確比較法,本程序采用了區間比較法,即判斷定時器的記錄值是否在預先計算的區間內。由88于引導脈沖和數據脈沖的時間相差很大,解碼時對定時器采用不同的預分頻,以盡量提高解碼的準確度。  

        ①引導脈沖判斷:低8.84 ms,高4.40 ms,預分頻1∶64,理論計算得定時器值應為:低8AH,高44H。如實際所得低部分在85H和90H之間、高部分在40H和4AH之間,則認為引導脈沖接收正確。

        ②“0”,“1”判斷:數據脈沖流的低電平脈寬相同,忽略不判斷;高電平脈寬是判斷數據流每位是“0”還是“1”的依據。“0”對應高0.50 ms,“1”對應高1.62 ms,預分頻1∶8,理論計算得定時器值應為:“0”對應高3EH,“1”對應高0CAH。如所得“0”對應高在39H和42H之間、“1”對應高在 0C5H和0D0H之間則認為接收正確。

        ③判斷16 b識別碼是否和已知的識別碼(19D6H)相同。

        ④判斷8 b鍵碼是否與8 b鍵碼的反碼相對應。⑤根據鍵碼,選擇所應執行的命令。

        由于篇幅所限,僅給出判斷“0”部分程序:  

        19.jpg

        注意,在程序容易發生死循環或者出錯的地方,要檢驗定時器是否溢出。一旦發生溢出,要立即使程序復位,以便程序能夠在出錯之后返回到程序開始部分,增強的可靠性。以上設計思想可以在多種單片機上實現遙控器的解碼。讀者可自行嘗試中斷方法實現遙控器的信號解碼。

        本文所介紹的遙控器接收發送原理及信號碼識別和解碼程序,可以方便地移植到其他,其方法簡潔靈活。此方法具有一般性,對于具體的應用,可自行變通。

        參考文獻
        [1]竇振中.PIC系列單片機原理和程序設計[M].北京:北京航空航天大學出版社,1998.

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


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

        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 宜黄县| 沙田区| 阿坝| 阜南县| 濉溪县| 汨罗市| 儋州市| 徐州市| 陇西县| 垣曲县| 寿宁县| 永新县| 松溪县| 八宿县| 尖扎县| 陵川县| 兰坪| 当涂县| 门源| 称多县| 玉树县| 茂名市| 新泰市| 互助| 德昌县| 阜宁县| 星座| 防城港市| 新泰市| 禄丰县| 湖南省| 呼图壁县| 精河县| 如东县| 陈巴尔虎旗| 广安市| 吴堡县| 托里县| 甘肃省| 吐鲁番市| 柳河县|