紅外遙控器解碼軟件設(shè)計(jì)及應(yīng)用
摘 要: 傳統(tǒng)的紅外遙控器解碼,需要預(yù)知發(fā)射端紅外編碼格式,不同的編碼格式軟件不通用,可移植性差。通過對遙控器紅外信號的采集、分析,提出基于AT87C52單片機(jī)外部中斷,利用HS0038紅外線接收器的紅外遙控器的解碼軟件的設(shè)計(jì)及其應(yīng)用,可以在不掌握遙控器的編碼格式的情況下,破譯每個(gè)鍵的紅外編碼,進(jìn)而將其擴(kuò)展為單片機(jī)的鍵盤系統(tǒng)。其程序通用性好,裝置集成化高,可以方便地應(yīng)用于其他紅外遙控接收裝置。
關(guān)鍵詞: 單片機(jī);外部中斷;紅外遙控器;解碼;鍵盤
紅外遙控器是一種無線的、非接觸控制裝置,具有抗干擾能力強(qiáng)、信息傳輸可靠、功耗低、成本低的特點(diǎn),廣泛應(yīng)用于日常生活和工業(yè)中[1]。由于不同公司生產(chǎn)的遙控器編碼碼制往往不同,通常不可移植??紤]到C語言與匯編語言相比具有書寫方便易于開發(fā)等特點(diǎn),本文設(shè)計(jì)了一種簡單的紅外線接收電路,通過C語言軟件設(shè)計(jì),實(shí)現(xiàn)對萬用遙控器的解碼,可以方便地應(yīng)用于其他紅外遙控設(shè)備。
1 系統(tǒng)的實(shí)現(xiàn)
1.1 紅外信號的構(gòu)成
紅外通信主要由發(fā)射和接收兩部分組成。發(fā)射端將待發(fā)送的二進(jìn)制信號編碼成一系列脈沖串信號,通過紅外發(fā)射管發(fā)送。接收端接收信號的同時(shí),對紅外信號進(jìn)行放大、檢波、整形后得到TTL電平編碼,送入單片機(jī)處理[2]。紅外發(fā)射二極管發(fā)送的信號是頻率為38 kHz的間斷脈沖串,相當(dāng)于用二進(jìn)制信號的編碼乘以頻率為38 kHz的脈沖信號得到的間斷脈沖串。如圖1所示,A是二進(jìn)制信號的編碼波形,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.2 紅外發(fā)射接收部分設(shè)計(jì)
本文采用的紅外遙控器共6個(gè)鍵,分別是開關(guān)、震動(dòng)、氣泡、定時(shí)、加溫、減溫。接收的部分選用HS0038紅外接收探頭,接收頻率為38 kHz、周期為26 μs的紅外信號。HS0038是黑色環(huán)氧樹脂封裝,不受日光、熒光燈等光源干擾,內(nèi)附磁屏蔽,功耗低,靈敏度高。在用小功率發(fā)射管發(fā)射信號的情況下,其接收距離可達(dá)35 m;它能與TTL、CMOS電路兼容;HS0038為直立側(cè)面收光型,同時(shí)能對信號進(jìn)行放大、檢波、整形得到TTL電平的編碼信號。3個(gè)管腳分別是地、+5 V電源、解調(diào)信號輸出端。
紅外解碼電路如圖2所示,當(dāng)HS0038接收到紅外信號時(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è)信號的長短。雖然不同廠商的紅外遙控器編碼形制不同,但在所有的編碼中,0、1信號只有長度的區(qū)別。根據(jù)這個(gè)原理,對采集到的信號組進(jìn)行分析,定義長的信號為1,短的信號為0。反復(fù)實(shí)驗(yàn)就得到各個(gè)按鍵的編碼,破解后的遙控器可以用作單片機(jī)的擴(kuò)展鍵盤。圖3為解碼程序主流程圖。