劉萬(wàn)斌,于 群
(山東科技大學(xué) 信息與電氣工程學(xué)院,山東 青島 266510)
紅外遙控器是一種無(wú)線的、非接觸控制裝置,具有抗干擾能力強(qiáng)、信息傳輸可靠、功耗低、成本低的特點(diǎn),廣泛應(yīng)用于日常生活和工業(yè)中[1]。由于不同公司生產(chǎn)的遙控器編碼碼制往往不同,通常不可移植??紤]到C語(yǔ)言與匯編語(yǔ)言相比具有書(shū)寫(xiě)方便易于開(kāi)發(fā)等特點(diǎn),本文設(shè)計(jì)了一種簡(jiǎn)單的紅外線接收電路,通過(guò)C語(yǔ)言軟件設(shè)計(jì),實(shí)現(xiàn)對(duì)萬(wàn)用遙控器的解碼,可以方便地應(yīng)用于其他紅外遙控設(shè)備。
紅外通信主要由發(fā)射和接收兩部分組成。發(fā)射端將待發(fā)送的二進(jìn)制信號(hào)編碼成一系列脈沖串信號(hào),通過(guò)紅外發(fā)射管發(fā)送。接收端接收信號(hào)的同時(shí),對(duì)紅外信號(hào)進(jìn)行放大、檢波、整形后得到TTL電平編碼,送入單片機(jī)處理[2]。紅外發(fā)射二極管發(fā)送的信號(hào)是頻率為38 kHz的間斷脈沖串,相當(dāng)于用二進(jìn)制信號(hào)的編碼乘以頻率為38 kHz的脈沖信號(hào)得到的間斷脈沖串。如圖1所示,A是二進(jìn)制信號(hào)的編碼波形,B是頻率為38 kHz周期為26 μs的連續(xù)脈沖串,C是經(jīng)調(diào)制后的間斷脈沖串(相當(dāng)于C=A×B),用于紅外發(fā)射二極管發(fā)送的波形。圖1中,待發(fā)送的二進(jìn)制數(shù)據(jù)為101。
圖1 紅外信號(hào)產(chǎn)生原理
本文采用的紅外遙控器共6個(gè)鍵,分別是開(kāi)關(guān)、震動(dòng)、氣泡、定時(shí)、加溫、減溫。接收的部分選用HS0038紅外接收探頭,接收頻率為38 kHz、周期為26 μs的紅外信號(hào)。HS0038是黑色環(huán)氧樹(shù)脂封裝,不受日光、熒光燈等光源干擾,內(nèi)附磁屏蔽,功耗低,靈敏度高。在用小功率發(fā)射管發(fā)射信號(hào)的情況下,其接收距離可達(dá)35 m;它能與TTL、CMOS電路兼容;HS0038為直立側(cè)面收光型,同時(shí)能對(duì)信號(hào)進(jìn)行放大、檢波、整形得到TTL電平的編碼信號(hào)。3個(gè)管腳分別是地、+5 V電源、解調(diào)信號(hào)輸出端。
紅外解碼電路如圖2所示,當(dāng)HS0038接收到紅外信號(hào)時(shí),輸出端輸出脈沖,觸發(fā)三極管導(dǎo)通,發(fā)光二極管通電發(fā)光[3],這樣可以直觀地看到發(fā)射、接收部分是否正常工作。輸出端接AT87C52單片機(jī)的T0口,下降沿觸發(fā)T0計(jì)數(shù)器計(jì)數(shù)[4]。
圖2 紅外解碼電路圖
單片機(jī)T0口接收到脈沖下降沿后,T0計(jì)數(shù)器計(jì)數(shù),下一次下降沿觸發(fā)計(jì)數(shù)器停止,并把結(jié)果存在預(yù)先設(shè)置好的數(shù)組中。數(shù)組里面的數(shù)字代表一個(gè)信號(hào)的長(zhǎng)短。雖然不同廠商的紅外遙控器編碼形制不同,但在所有的編碼中,0、1信號(hào)只有長(zhǎng)度的區(qū)別。根據(jù)這個(gè)原理,對(duì)采集到的信號(hào)組進(jìn)行分析,定義長(zhǎng)的信號(hào)為1,短的信號(hào)為0。反復(fù)實(shí)驗(yàn)就得到各個(gè)按鍵的編碼,破解后的遙控器可以用作單片機(jī)的擴(kuò)展鍵盤(pán)。圖3為解碼程序主流程圖。
主要程序清單如下:
數(shù)據(jù)分析:以開(kāi)關(guān)鍵為例,采到的數(shù)據(jù)如表1所示。
表1 開(kāi)關(guān)鍵測(cè)試數(shù)據(jù)
由表1可以看出,開(kāi)頭與結(jié)尾的3個(gè)信號(hào)時(shí)間比較長(zhǎng),其余的信號(hào)可分為兩種(大約是 1 100和 2 200)。開(kāi)頭的13 521是引導(dǎo)碼,結(jié)尾的40 498和11 235是終止碼。把2 200定義為邏輯1,1 100定義為邏輯0,得到第一個(gè)鍵碼制為00FF30CF。用同樣的方法得到其他鍵的碼 值 分 別 為 00FF10EF、00FF20DF、00FF00FF、00FF807F、00FFA05F。前16位相同,是客戶代碼。
遙控器解碼之后,可以通過(guò)單片機(jī)將其用于其他裝置(此系統(tǒng)已成功應(yīng)用于本實(shí)驗(yàn)室的微機(jī)繼電保護(hù)系統(tǒng)中)。由于計(jì)數(shù)器低8位的數(shù)值對(duì)整體影響不大,本文根據(jù)高8位的數(shù)值判斷收到的信號(hào)為0或1,根據(jù)之前測(cè)得脈沖范圍,規(guī)定TH0接收的數(shù)值在0x07~0x09之間,鍵位碼為1;數(shù)值在0x02~0x05之間,鍵位碼為 0。如此循環(huán)即可得到一個(gè)完整的碼值。然后進(jìn)入功能實(shí)現(xiàn)區(qū),用戶可以根據(jù)自己的需要,定義鍵位功能,具有很高的靈活性。
應(yīng)用部分軟件設(shè)計(jì):
(1)讀鍵位循環(huán)的代碼如下:
基于AT87C52單片機(jī)的萬(wàn)能遙控器解碼及其應(yīng)用,提出了一種簡(jiǎn)易的紅外遙控器解碼方法,此法可以在完全不知遙控引導(dǎo)碼和結(jié)束碼使用的編碼規(guī)則的情況下,直接解碼,自主定義1和0。具有操作簡(jiǎn)便,可移植性強(qiáng)的特點(diǎn)。
[1]戴培山,馮承德,劉棟.基于 keilC51的紅外解碼設(shè)計(jì)[J].自動(dòng)化儀器與儀表,2003(6):11-23.
[2]盧靈,劉遠(yuǎn)峰.紅外通信技術(shù)在溫濕度變送器上的應(yīng)用[J].微 計(jì) 算 機(jī) 信 息 ,2010(9-2):158-160.
[3]童詩(shī)白,華成英.模擬電子技術(shù)基礎(chǔ)(第四版)[M].北京:高等教育出版社,1980.
[4]魏立峰,王寶興.單片機(jī)原理與應(yīng)用技術(shù)[M].北京:北京大學(xué)出版社,2006.
[5]馬忠梅,籍順心,張凱,等.單片機(jī)的C語(yǔ)言應(yīng)用程序設(shè)計(jì)(第四版)[M].北京:北京航空航天大學(xué)出版社,2007.