紅外遙控器信號的接收和轉發(fā)
紅外遙控在家電產(chǎn)品中有廣泛應用,但各產(chǎn)生的遙控器不能相互兼容。目前市場(chǎng)上常見(jiàn)的萬(wàn)能遙控器只能對某幾種產(chǎn)品進(jìn)行控制,不是真正的“萬(wàn)能”,而且不能對新上市的產(chǎn)品進(jìn)行控制。本文介紹一種用單片機對紅外遙控器信號接收和轉發(fā)的方法,由于只關(guān)心發(fā)射信號波形中的高低電平的寬度,不管其如何編碼,因此可以用來(lái)實(shí)現自學(xué)習萬(wàn)能遙控器。
一、紅外信號的接收和波形測量
所有紅外遙控器的輸出都是用編碼后串行數據對38~40kHz的方波進(jìn)行脈沖幅度調制而產(chǎn)生的。如果直接對已調波進(jìn)行測量,由于單片機的指令周期是微秒(μs)級,而已調波的脈寬只有20多μs,會(huì )產(chǎn)生很大的誤差。因此先要對已調波進(jìn)行解調,對解調后的波形進(jìn)行測量。
紅外遙控接收芯片CX20106可以完成對遙控信號的前置放大、限幅放大、帶通濾波、峰值檢波和波形整形,只需加上簡(jiǎn)單的外圍電路即可完成對已調波的解調,原理如圖1所示。
將CX20106解調出的遙控編碼脈沖直接連入8751單片機的INT0和T0腳,定時(shí)器T)和T1都初始化為定時(shí)器工作方式1,T0的GATE位置位。每次外部中斷首先停止定時(shí),記錄T0、T1的計數值,然后將T0、T1的計數值清零,并重新啟動(dòng)定時(shí)。T0的值即為高電平脈寬,T1-T0的值為低電平脈寬,如圖2所示。
測量波形的外部中斷服務(wù)程序的流程如圖3所示。
測量波形的外部中斷服務(wù)程序如下:
interup0:clr tr0
clr tr1
push psw
push acc
inc test
jb first,RE
mov a,tl0
mov temp1,a
mov a,th0
mov temp2,a
mov a,tl1
clr c
subb a,temp1
movx @dptr,a
inc dptr
mov a,th1
subb a,temp2
movx @dptr,a
inc dptr
mov a,temp1
movx @dptr,a
inc dptr
mov a,temp2
movx @dptr,a
inc dptr
RE:clr first
mov tl0,#0
mov th0,#0
mov tl1,#0
mov th1,#0
setb tr0
setb tr1
二、測量數據的轉發(fā)
只須用的數據周期性地改變P1.0就可以得到原來(lái)的遙控編碼脈沖,流程如圖4所示。
三、產(chǎn)生遙控發(fā)射信號
用遙控脈沖信號調制38kHz方波,然后將已調波放大,驅動(dòng)紅外發(fā)光二極管,就可以得到遙發(fā)射信號。調制可用一個(gè)或門(mén)實(shí)現,38kHz方波可用8751的定時(shí)器T1產(chǎn)生,如圖5所示。
有些遙控器的載頻可能是40kHz,只須稍微加大發(fā)射功率仍然可用38kHz載頻使其接收電路動(dòng)作。
四、應用領(lǐng)域
只須加上鍵盤(pán)和液晶或數碼顯示電路,并擴展一定數量的RAM,就可以用此方法實(shí)現自學(xué)習萬(wàn)能遙控器。筆者已對目前市面上的彩電、影蝶機、錄像機、投影儀、空調器等產(chǎn)品的常見(jiàn)品牌進(jìn)行過(guò)實(shí)驗,均實(shí)現了準確的接收和轉發(fā)。此外,只要在圖5所示電路前加一級編碼模塊(可用軟件實(shí)現)作為發(fā)射單元;圖1所示電路加上波形測量軟件作接收單元,再加上相應的解碼控制軟件就可組成一個(gè)通用紅外收發(fā)控制系統或數據傳輸系統,不需要再增加額外的硬件。
評論