<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          關 閉

          新聞中心

          EEPW首頁 > 工控自動化 > 設計應用 > 智能紅外遙控開關原理及設計

          智能紅外遙控開關原理及設計

          作者: 時間:2010-10-08 來源:網(wǎng)絡 收藏

          3 程序
          接收頭解調(diào)出的編碼是串行二進制碼,包含著器按鍵信息。但它還不便于CPU讀取識別,因此需要先對這些串行二進制碼進行解碼。本采用的是軟件解碼方式對接收到的信號進行解碼。
          3.1 器發(fā)射編碼簡介
          目前應用中的各種紅外遙控系統(tǒng)的都大同小異,區(qū)別只是在于各系統(tǒng)的信號編碼格式不同。遙控器所產(chǎn)生的脈沖編碼的格式一般為:

          其中,引導脈沖為寬度是10 ms左右的一個高脈沖和一個低脈沖的組合,用來標識指令碼的開始。識別碼、鍵碼、鍵碼的反碼均為數(shù)據(jù)編碼脈沖,用二進制數(shù)表示。“O”和“1”均由毫秒量級的高低脈沖的組合代表識別碼(即用戶碼)是對每個遙控系統(tǒng)的標識。當指令鍵按下時,指令信號產(chǎn)生電路便產(chǎn)生脈沖編碼。鍵碼后面一般還要有鍵碼的校驗碼,用來檢驗鍵碼接收的正確性,防止誤動作,增強系統(tǒng)的可靠性。
          3.2存儲編碼程序
          當按下“記憶”按鍵S1時,單片機進入存儲記憶紅外遙控編碼的狀態(tài)。ATmega8L單片機首先關閉中斷,等待遙控器發(fā)出的紅外遙控編碼輸入。當紅外遙控編碼輸入后,單片機將其保存至E2PROM中。這樣,即使斷電之后,單片機存儲在E2PROM中的信息也不會丟失,可以保證斷電后的正常使用。存儲紅外信號的編碼程序流程圖如圖4所示。

          本文引用地址:http://www.ex-cimer.com/article/162805.htm


          3.3 軟件解碼程序設計
          軟件解碼則由ATmega8L單片機的外部中斷、定時器以及軟件構(gòu)成一個紅外遙控接收系統(tǒng)。定時器用于延時測量兩個脈沖串之間的間隔。外部中斷用于當接收到紅外脈沖信號時觸發(fā)定時器進行數(shù)據(jù)接收。當紅外接收管接收到紅外脈沖時,程序首先出發(fā)外部中斷,由外部中斷啟動定時器,每個一段時間間隔就采樣一次,并將采樣到的紅外脈沖編碼保存到RAM變量中,然后與存儲編碼程序中所保存的編碼進行比較,當
          兩者相同時則認為是按下了按鍵,進行相應的操作,否則程序不執(zhí)行操作。軟件解碼程序的流程圖如圖5所示。

          4 結(jié)語
          目前的家用電器,如電視機、VCD、DVD和功放機等一般都配備了遙控器及化控制技術,給人們的使用帶來了極大的方便。隨之而來的小家電如電燈的控制也在向自動化、化操作方面發(fā)展,這樣才能滿足人們的生活需求。紅外遙控開關充分利用了現(xiàn)在家用電器繁多的遙控器,實現(xiàn)了遙控器的功能復用,而且在軟件解碼紅外遙控系統(tǒng)中,解碼的核心是CPU,電路極為簡單無須外圍器件,體積小,抗干擾能力強。經(jīng)過實驗多次測試,該開關可以替換原墻壁開關,不用再增加連線,為安裝和使用提供了方便。把原機械式墻壁換成該遙控開關不僅實用,也很安全經(jīng)濟。


          上一頁 1 2 3 下一頁

          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();