吳 賡
(福建船政交通職業(yè)學院,福州 350011)
在單片機紅外控制應用系統(tǒng)中, 紅外遙控編碼是利用38kHz載波進行脈沖幅度調(diào)制后便形成紅外信號,經(jīng)紅外發(fā)射管發(fā)射出去,發(fā)射距離一般10m以內(nèi)。利用紅外接收管接收紅外發(fā)射信號,并按照一定的規(guī)律將信號轉換成一系列的二進制數(shù)。這些對應的二進制數(shù)可以用來傳送控制信號和數(shù)據(jù)信息,以實現(xiàn)單片機非接觸傳遞信號的功能,在彩電、錄像機、錄音機、音響設備、空調(diào)機以及玩具等其他小型電器裝置上采用紅外線遙控比較方便和適應。在工業(yè)設備應用中,在高壓、輻射、有毒氣體、粉塵等環(huán)境下,采用紅外線遙控不僅安全可靠而且能有效地隔離電氣干擾。
紅外使用方便,價格便宜,信號采集和編程靈活,功能多,目前已應用廣泛。現(xiàn)在在市場上非常容易買到(見圖1)。同時,將紅外發(fā)射接收遙控裝置應用在單片機控制系統(tǒng)中時,能將遙控器上許多的按鍵解碼出來,用作單片機系統(tǒng)的輸入,則解決了常規(guī)矩陣鍵盤線路板過大、布線復雜、占用I/O口過多的弊病。而且通過使用紅外發(fā)射接收遙控裝置,操作時可實現(xiàn)人與設備的分離,從而更加方便靈活使用。
實現(xiàn)單片機系統(tǒng)紅外通信的關鍵在于紅外接口電路的設計和程序的編寫?,F(xiàn)在普遍使用的編碼規(guī)則是:一次按鍵動作的遙控編碼信息包含一引導脈沖和32位串行二進制碼。前16位碼為用戶碼,不隨按鍵的不同而變化。它是為了表示特定用戶而設置的一個辨識標志,以區(qū)別不同機種和不同用戶發(fā)射的遙控信號,防止誤操作。后16位碼隨著按鍵的不同而改變,是按鍵的識別碼。前8位為鍵碼的正碼,后8位為鍵碼的反碼。
紅外編碼是用發(fā)射不同電平的高低電壓信號來表示二進制信號“0”和“1”的,對于二進制信號“0”,是一個脈沖周期為1.125ms,其中低電平占0.56ms,其余是高電平的信號;對于二進制信號“1”,一個脈沖周期為2.25ms其中低電平占0.56ms,其余是高電平的信號?!?”脈沖的占空比一般為1∶1,“1”脈沖的占空比一般為1∶3解調(diào)后的“0”和“1”波形及單片機編碼如圖2所示。
紅外遙控器發(fā)送數(shù)據(jù)時,是將二進制數(shù)據(jù)調(diào)制成一系列的脈沖信號通過紅外發(fā)射管發(fā)射出去,紅外載波為頻率 38kHz的方波,紅外接收端在收到 38kHz的載波信號時,會輸出低電平,否則輸出高電平,從而可以將“時斷時續(xù)”的紅外光信號解調(diào)成一定周期的連續(xù)方波信號,再經(jīng)過一體化紅外接收頭解調(diào)便可以恢復出原數(shù)據(jù)信號。
當紅外發(fā)射裝置發(fā)射紅外線時,通過載波的方式加載發(fā)射,這樣可以減小發(fā)射功率。如果沒有接收到紅外遙控信號,接收器的輸出端口保持高電平,當接收到紅外遙控信號時,接收頭就接收到低電平,這時利用單片機中斷的方式采集低電平的時間,存儲起來,然后根據(jù)時間的不同可以定義不同的編碼信號。
(1)引導脈沖是通過定時器接收低電平信號,當紅外發(fā)射結束而接收到高電平信號時保存記錄低電平的時間,這個時間值在定時器中保存的數(shù)值介于2300H到23FFH之間的16位2進制數(shù),高電平的計時時間忽略。
(2)數(shù)據(jù)脈沖0是通過定時器接收低電平信號,當紅外發(fā)射結束而接收到高電平信號時保存記錄低電平的時間,這個時間值在定時器中保存的數(shù)值介于0000H到00FFH之間的16位2進制數(shù),高電平的計時時間忽略。
(3)數(shù)據(jù)脈沖1是通過定時器接收低電平信號,當紅外發(fā)射結束而接收到高電平信號時保存記錄低電平的時間,這個時間值在定時器中保存的數(shù)值介于0100H到01FFH之間的16位2進制數(shù),高電平的計時時間忽略。
(4)數(shù)據(jù)脈沖2是通過定時器接收低電平信號,當紅外發(fā)射結束而接收到高電平信號時保存記錄低電平的時間,這個時間值在定時器中保存的數(shù)值介于0200H到02FFH之間的16位2進制數(shù),高電平的計時時間忽略。
(5)數(shù)據(jù)脈沖3是通過定時器接收低電平信號,當紅外發(fā)射結束而接收到高電平信號時保存記錄低電平的時間,這個時間值在定時器中保存的數(shù)值介于0300H到03FFH之間的16位2進制數(shù),高電平的計時時間忽略。
(6)數(shù)據(jù)脈沖4是通過定時器接收低電平信號,當紅外發(fā)射結束而接收到高電平信號時保存記錄低電平的時間,這個時間值在定時器中保存的數(shù)值介于0400H到04FFH之間的16位2進制數(shù),高電平的計時時間忽略。
(7)數(shù)據(jù)脈沖5是通過定時器接收低電平信號,當紅外發(fā)射結束而接收到高電平信號時保存記錄低電平的時間,這個時間值在定時器中保存的數(shù)值介于0500H到05FFH之間的16位2進制數(shù),高電平的計時時間忽略。
(8)數(shù)據(jù)脈沖6是通過定時器接收低電平信號,當紅外發(fā)射結束而接收到高電平信號時保存記錄低電平的時間,這個時間值在定時器中保存的數(shù)值介于0600H到06FFH之間的16位2進制數(shù),高電平的計時時間忽略。
(9)數(shù)據(jù)脈沖7是通過定時器接收低電平信號,當紅外發(fā)射結束而接收到高電平信號時保存記錄低電平的時間,這個時間值在定時器中保存的數(shù)值介于0700H到07FFH之間的16位2進制數(shù),高電平的計時時間忽略。
(10)數(shù)據(jù)脈沖8是通過定時器接收低電平信號,當紅外發(fā)射結束而接收到高電平信號時保存記錄低電平的時間,這個時間值在定時器中保存的數(shù)值介于0800H到08FFH之間的16位2進制數(shù),高電平的計時時間忽略。
(11)數(shù)據(jù)脈沖9是通過定時器接收低電平信號,當紅外發(fā)射結束而接收到高電平信號時保存記錄低電平的時間,這個時間值在定時器中保存的數(shù)值介于0900H到09FFH之間的16位2進制數(shù),高電平的計時時間忽略。
將這些脈沖組合起來形成紅外發(fā)射序列,可以得到不同的數(shù)碼信號,當單片機接收到這些信號時,記錄時間,并進行比較,得出一系列的數(shù)字信號,這些數(shù)字信號可以代表編程者不同的控制命令,從而為單片機產(chǎn)生不同的執(zhí)行指令服務。
一種簡單的組合是一個控制命令由一個引導脈沖、一個數(shù)據(jù)脈沖構成,比如要產(chǎn)生命令0,必須發(fā)射兩個脈沖:引導脈沖、0數(shù)據(jù)脈沖。這樣我們可以得到各種命令,能夠滿足一般遙控需要要求。這種發(fā)射編碼所需要的脈沖個數(shù)少,發(fā)射的時間周期短,產(chǎn)生誤碼的概率很小,比較適用于數(shù)據(jù)的傳送。
復雜的組合可以由一個引導脈沖和多個數(shù)據(jù)脈沖構成,這樣在執(zhí)行多個控制命令時不會出現(xiàn)重碼和誤碼的錯誤。這樣我們可以得到各種命令,能夠滿足一般遙控需要要求。這種發(fā)射編碼所需要的脈沖個數(shù)少,發(fā)射的時間周期短,產(chǎn)生誤碼的概率很小,比較適用于數(shù)據(jù)的傳送。
本文應用紅外遙控發(fā)射和接收進行數(shù)據(jù)傳輸,進而可以數(shù)據(jù)顯示和相應控制處理,同時本設計還涉及AD及LM35的溫度采樣,能實時顯示溫度,并把溫度傳給另一方。
由上述可知,應用這種軟件編寫單片機紅外發(fā)射程序簡單,經(jīng)過上述的應用設計檢測,紅外遙控信號的發(fā)射和接收沒有出現(xiàn)傳輸誤碼,可靠、實用,在編碼解碼方面降低了硬件成本。單片機通過采用上述方法對遙控接收信號進行分析判斷,就可將其轉換成相應的二進制代碼。這樣就可以根據(jù)事先約定代碼所代表的功能,單片機就可以去執(zhí)行各種控制動作,從而達到遙控的目的。
[1]郭天祥.新概念51單片機C語言教程[M].北京:電子工業(yè)出版社,2009.
[2]薛小玲.單片機接口模塊應用與開發(fā)實例詳解[M].北京:北京航空航天大學出版社,2010.
[3]徐文明.嵌入式系統(tǒng)結構特點[J].電測與儀表,2004,41(8):36~38.
[4]聶詩良,李磊民.紅外遙控信號的一種編碼解碼方法[J].儀表技術與傳感器,2004,(8).
[5]崔如春,譚海燕.紅外遙控信號的編碼方法與單片機譯碼程序的設計[J].計算機與現(xiàn)代化,2000,(6).
[6]蔡明文.紅外遙控編碼的唯一性研究[J].蘭州工業(yè)高等??茖W校學報,2008,15(4).
[7]劉曉明,安敏,黃克初.軟件解碼實現(xiàn)智能儀器紅外遙控[J].計算機自動測量與控制,2001,9(3).