新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 一種基于單片機的紅外遙控信號解碼新方法

        一種基于單片機的紅外遙控信號解碼新方法

        作者: 時間:2012-08-21 來源:網絡 收藏

        摘要:器在家電產品中已廣泛使用。在嵌入式系統應用方面,也是多種多樣。本文簡要介紹的硬件構成與軟件編程思路,然后針對兩種常用的紅外編碼結構,闡述了使用51定時器門控方式的具體,并給出了代碼示例與軟件流程。
        關鍵詞:紅外解碼;門控方式;51

        引言
        隨著家用電器、試聽產品的普及,紅外器已經被廣泛應用在各種類型的家電產品中(如遙控開關、智能開關等)。紅外遙控是一種把紅外線作為載體的控制方式,由于其波長遠小于無線電的波長,因此在采用紅外遙控方式時不會干擾其他電器的正常使用,也不會影響臨近的無線電設備。另外,紅外遙控器件具有體積小、功耗低、性價比高的優點,是理想的人機輸入設備,非常適合電子工程師和電子愛好者DIY開發與制作。紅外遙控系統主要由發射和接收兩大部分組成,由于發射部分使用的是購買來的遙控器成品,所以本文的重點是紅外接收、解碼部分。下面將從硬件結構和軟件編程兩個方面出發,介紹一種51系列匯編語言的紅外遙控解碼新

        1 硬件構成
        紅外接收頭的種類很多,本文使用的是市場上常見的VS1838B,外觀如圖1所示。它采用內、外雙屏蔽直捅式封裝,輸出匹配TTL、CMOS電平,靈敏度高,抗干擾性能好,接收距離可達20 m。從正面看,其3個引腳分別是輸出端、電源地與電源正。硬件電路連接非常簡單,如圖2所示。圖中0.1μF瓷片電容用來濾波,供電引腳與電源之間接入100Ω的電阻以進一步降低電源干擾。在本文中輸出端接51單片機最小系統的外部中斷1口(即P3.3),這樣一個簡單的硬件電路就搭好了。

        本文引用地址:http://www.104case.com/article/171007.htm

        a.JPG



        2 軟件編程方法
        2.1 基本方法介紹
        大多數人使用的方法是在兩次外部中斷下降沿中,通過軟件手動開啟與關閉定時器得到時間寬度。本文的思路是通過51單片機固有的外部中斷與定時器自動配合的“門控方式”來獲得紅外信號波形信息。具體做法如下:參考表1,設置51單片機定時器工作方式寄存器(TMOD)
        Bit7=1,即定時器T1為門控方式。此時只有當T1運行控制化TR1=1并且外部中斷1為高電平時,定時器T1才啟動;TR1=0或者外部中斷1為低電平時T1就自動停止計數。

        b.JPG


        每次當信號是高電平時定時器1自動開始計時,下降沿信號來臨的時候,在外部中斷1中自動獲取TH1與TL1的值,這樣就得到了信號的時間寬度,從而可以區分出引導碼、重復碼、位0、位1的信息,再經過后續的軟件處理就可以得到紅外遙控按鍵的鍵碼了。紅外遙控器解碼的關鍵在于對發射器波形規范的理解,常見的遙控器編碼有32位和42位兩種模式,主要區別在于系統碼的位數不一樣。值得注意的是,同樣位數模式的遙控器的結束碼也可能會不同。另外在按鍵連按狀態下,不同遙控器發出的重復碼各異,這些都會影響到程序的編寫。下文將列舉出兩款不同位數的遙控器,分別闡述其門控方式下的軟件編程思路。
        2.2 32位編碼
        硬件使用的是購置的超薄型遙控器,內置芯片為uPD6121G,采用NEC32位格式。其數據格式如圖3所示,包括了起始碼、用戶碼、數據碼和數據反碼。其中,起始碼由9 ms高電平和4.5 ms低電平構成,后接16位用戶碼、8位數據碼以及8位數據反碼。數據反碼是數據碼取反后的編碼,編程時可以用于數據糾錯。位定義如圖4所示,位1用高電平0.56 ms加低電平1.68 ms表示。位0用高電平0.56 ms加低電平0.56 ms表爾。要注意的是當一直按住按鍵時,芯片發出一次鍵碼后就不停地發重復碼了,寫程序時對重復碼要有特別的區分,其重復碼的波形如圖5所示。

        c.JPG


        上一頁 1 2 3 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 江西省| 玉山县| 志丹县| 光泽县| 花莲市| 唐河县| 三亚市| 米泉市| 游戏| 勃利县| 莱州市| 高陵县| 会东县| 武安市| 石景山区| 科技| 黔西县| 新津县| 宿州市| 孙吴县| 紫阳县| 丰顺县| 敦化市| 大化| 阿坝县| 漳平市| 仁布县| 黄冈市| 外汇| 偃师市| 新津县| 吐鲁番市| 肥城市| 新源县| 辽宁省| 聊城市| 株洲县| 平武县| 思茅市| 夏河县| 关岭|