紅外線遙控是目前使用很廣泛的一種通信和遙控技術(shù)。由于紅外線遙控裝置具有體積小、功耗低、功能強(qiáng)、成本低等特點(diǎn),因而,繼彩電、錄像機(jī)之后,在錄音機(jī)、音響設(shè)備、空凋機(jī)以及玩具等其它小型電器裝置上也紛紛采用紅外線遙控。工業(yè)設(shè)備中,在高壓、輻射、有毒氣體、粉塵等環(huán)境下,采用紅外線遙控不僅完全可*而且能有效地隔離電氣干擾。
紅外線是太陽(yáng)光線中眾多不可見光線中的一種,由德國(guó)科學(xué)家霍胥爾于1800年發(fā)現(xiàn),又稱為紅外熱輻射,他將太陽(yáng)光用三棱鏡分解開,在各種不同顏色的色帶位置上放置了溫度計(jì),試圖測(cè)量各種顏色的光的加熱效應(yīng)。結(jié)果發(fā)現(xiàn),位于紅光外側(cè)的那支溫度計(jì)升溫最快。因此得到結(jié)論:太陽(yáng)光譜中,紅光的外側(cè)必定存在看不見的光線,這就是紅外線。也可以當(dāng)作傳輸之媒界。 太陽(yáng)光譜上紅外線的波長(zhǎng)大于可見光線,波長(zhǎng)為0.75~1000μm。紅外線可分為三部分,即近紅外線,波長(zhǎng)為0.75~1.50μm之間;中紅外線,波長(zhǎng)為1.50~6.0μm之間;遠(yuǎn)紅外線,波長(zhǎng)為6.0~l000μm 之間。
真正的紅外線夜視儀是光電倍增管成像,與望遠(yuǎn)鏡原理全完不同,白天不能使用,價(jià)格昂貴且需電源才能工作。
通用紅外遙控系統(tǒng)由發(fā)射和接收兩大部分組成,應(yīng)用編/解碼專用集成電路芯片來進(jìn)行控制操作,如圖1所示。發(fā)射部分包括鍵盤矩陣、編碼調(diào)制、LED紅外發(fā)送器;接收部分包括光、電轉(zhuǎn)換放大器、解調(diào)、解碼電路。
紅外遙控發(fā)射器專用芯片很多,根據(jù)編碼格式可以分成兩大類,這里我們以運(yùn)用比較廣泛,解碼比較容易的一類來加以說明,現(xiàn)以日本NEC的uPD6121G組成發(fā)射電路為例說明編碼原理。當(dāng)發(fā)射器按鍵按下后,即有遙控碼發(fā)出,所按的鍵不同遙控編碼也不同。這種遙控碼具有以下特征:
采用脈寬調(diào)制的串行碼,以脈寬為0.565ms、間隔0.56ms、周期為1.125ms的組合表示二進(jìn)制的“0”;以脈寬為0.565ms、間隔1.685ms、周期為2.25ms的組合表示二進(jìn)制的“1”,其波形如圖2所示。
上述“0”和“1”組成的32位二進(jìn)制碼經(jīng)38kHz的載頻進(jìn)行二次調(diào)制以提高發(fā)射效率,達(dá)到降低電源功耗的目的。然后再通過紅外發(fā)射二極管產(chǎn)生紅外線向空間發(fā)射,如圖3所示,連發(fā)波形如圖4所示。
UPD6121G產(chǎn)生的遙控編碼是連續(xù)的32位二進(jìn)制碼組,其中前16位為用戶識(shí)別碼,能區(qū)別不同的電器設(shè)備,防止不同機(jī)種遙控碼互相干擾。該芯片的用戶識(shí)別碼固定為十六進(jìn)制01H;后16位為8位操作碼(功能碼)及其反碼。UPD6121G最多額128種不同組合的編碼。
當(dāng)遙控器在按鍵按下后,周期性地發(fā)出同一種32位二進(jìn)制碼,周期約為108ms。一組碼本身的持續(xù)時(shí)間隨它包含的二進(jìn)制“0”和“1”的個(gè)數(shù)不同而不同,大約在45~63ms之間,圖4為發(fā)射波形圖。
當(dāng)一個(gè)鍵按下超過36ms,振蕩器使芯片激活,將發(fā)射一組108ms的編碼脈沖,這108ms發(fā)射代碼由一個(gè)起始碼(9ms),一個(gè)結(jié)果碼(4.5ms),低8位地址碼(9ms~18ms),高8位地址碼(9ms~18ms),8位數(shù)據(jù)碼(9ms~18ms)和這8位數(shù)據(jù)的反碼(9ms~18ms)組成。如果鍵按下超過108ms仍未松開,接下來發(fā)射的代碼(連發(fā)代碼)將僅由起始碼(9ms)和結(jié)束碼(2.5ms)組成。
代碼格式(以接收代碼為準(zhǔn),接收代碼與發(fā)射代碼反向)
① 位定義
② 單發(fā)代碼格式
③ 連發(fā)代碼格式
注:代碼寬度算法:
16位地址碼的最短寬度:1.12×16=18ms 16位地址碼的最長(zhǎng)寬度:2.24ms×16=36ms
已知8位數(shù)據(jù)代碼及其8位反代碼的寬度和不變:(1.12ms+2.24ms)×8=27ms
∴ 32位代碼的寬度為(18ms+27ms)~(36ms+27ms)
1. 解碼的關(guān)鍵是如何識(shí)別“0”和“1”,從位的定義我們可以發(fā)現(xiàn)“0”、“1”均以0.56ms的低電平開始,不同的是高電平的寬度不同,“0”為0.56ms,“1”為1.68ms,所以必須根據(jù)高電平的寬度區(qū)別“0”和“1”。如果從0.56ms低電平過后,開始延時(shí),0.56ms以后,若讀到的電平為低,說明該位為“0”,反之則為“1”,為了可*起見,延時(shí)必須比0.56ms長(zhǎng)些,但又不能超過1.12ms,否則如果該位為“0”,讀到的已是下一位的高電平,因此取(1.12ms+0.56ms)/2=0.84ms最為可*,一般取0.84ms左右均可。
2. 根據(jù)碼的格式,應(yīng)該等待9ms的起始碼和4.5ms的結(jié)果碼完成后才能讀碼。
【紅外遙控解碼實(shí)驗(yàn)硬件】
一體化紅外線接收器是一種集紅外線接收和放大整形于一體,不需要任何外接元件,就能完成從紅外線接收到輸出與TTL電平信號(hào)兼容的所有工作,而體積又很小巧,它適合于各種紅外線遙控和紅外線數(shù)據(jù)傳輸,廣泛用于電視機(jī)、衛(wèi)星接收機(jī)、VCD、DVD、音響、空調(diào)等家用電器中接收紅外信號(hào),圖5是一體化接收頭的引腳排列圖,圖6是本站產(chǎn)品配套的采用屏蔽線焊接的一體化紅外接收頭,采用屏蔽線焊接,抗干擾能力強(qiáng),接收更可*。沒有購(gòu)買實(shí)驗(yàn)板配套的一體化紅外接收頭的網(wǎng)友可以根據(jù)圖2所示接收頭引腳排列圖自己焊接一個(gè)。
圖5:一體化紅外接收頭
(引腳排列圖) 圖6:本站產(chǎn)品配套一體化紅外接收頭(已經(jīng)用屏蔽線焊接好,抗干擾能力強(qiáng),插入實(shí)驗(yàn)板即可使用)
下面就是我們將要進(jìn)行紅外遙控解碼實(shí)驗(yàn)所要用到的硬件設(shè)備:S51增強(qiáng)型實(shí)驗(yàn)板、ISP編程器、AT89S51實(shí)驗(yàn)芯片、豪華型多功能紅外線遙控器。
圖7:S51增強(qiáng)型單片機(jī)實(shí)驗(yàn)板及防插反紅外遙控接口
圖8:豪華型多功能紅外遙控器 + 高靈敏度一體化紅外接收頭(23元)
圖9:32鍵豪華型紅外遙控器原理圖
圖10:ISP編程器燒寫實(shí)驗(yàn)單片機(jī)芯片AT89S51
【紅外遙控解碼實(shí)驗(yàn)】
我們經(jīng)過對(duì)前面的遙控編解碼知識(shí)的學(xué)習(xí),對(duì)紅外遙控有了基本的了解,下面我們馬上進(jìn)行解碼實(shí)驗(yàn)。本紅外遙控解碼實(shí)驗(yàn)的的功能是:程序?qū)b控器發(fā)射的遙控碼進(jìn)行解碼,解碼成功時(shí)蜂鳴器發(fā)出“嘀嘀”的解碼成功提示音,如果按壓的是數(shù)字鍵“0~9”就將按鍵值在實(shí)驗(yàn)板上的5位數(shù)碼管上顯示出按鍵值,同時(shí)將按鍵的十六進(jìn)制值用P1口的8位發(fā)光二極管指示出來;如果按壓的不是數(shù)字鍵“0~9”,就直接從P1口輸出鍵值;下面是遙控解碼匯編源程序。
實(shí)驗(yàn)時(shí)將先連接好硬件設(shè)備,將配套的一體化紅外遙控接收頭插入實(shí)驗(yàn)板上的“紅外遙控”接口內(nèi),在Keil單片機(jī)集成開發(fā)環(huán)境中新建工程,通過Keil將源程序編譯得到HEX格式目標(biāo)文件yk.hex,最后使用ISP編程器將目標(biāo)文件燒寫到AT89S51單片機(jī)中,插到S51增強(qiáng)型實(shí)驗(yàn)板上運(yùn)行,拿出配套的紅外遙控器進(jìn)行解碼測(cè)試,看看實(shí)驗(yàn)結(jié)果是否和程序相同。。。
》》》 點(diǎn)此下載HEX格式目標(biāo)文件 yk.hex 》》》
》》》 點(diǎn)此下載遙控解碼源程序和Keil工程文件 》》》
ORG 0000H
MAIN: MOV SP,#60H
MOV P0,#0FFH
MOV P1,#0FFH
MOV P2,#0FFH
MOV P3,#0FFH
JNB P3.2,$;等待遙控信號(hào)出現(xiàn)
MOV R6,#10
SB: ACALL YS1 ;調(diào)用882微秒延時(shí)子程序
JBP3.2,MAIN ;延時(shí)882微秒后判斷P3.2腳是否出現(xiàn)高電平如果有就退出解碼程序
DJNZR6, SB;重復(fù)10次,目的是檢測(cè)在8820微秒內(nèi)如果出現(xiàn)高電平就退出解碼程序
;以上完成對(duì)遙控信號(hào)的9000微秒的初始低電平信號(hào)的識(shí)別。
JNB P3.2, $ ;等待高電平避開9毫秒低電平引導(dǎo)脈沖
ACALL YS2 ;延時(shí)4.74毫秒避開4.5毫秒的結(jié)果碼
MOV R1,#1AH ;設(shè)定1AH為起始RAM區(qū)
MOV R2,#4
PP: MOV R3,#8
JJJJ: JNB P3.2,$;等待地址碼第一位的高電平信號(hào)
LCALL YS1 ;高電平開始后用882微秒的時(shí)間尺去判斷信號(hào)此時(shí)的高低電平狀態(tài)
MOV C,P3.2;將P3.2引腳此時(shí)的電平狀態(tài)0或1存入C中
JNC UUU ;如果為0就跳轉(zhuǎn)到UUU
JBP3.2,$;如果為1就等待高電平信號(hào)結(jié)束
UUU: MOV A,@R1 ;將R1中地址的給A
RRC A ;將C中的值0或1移入A中的最低位
MOV @R1,A ;將A中的數(shù)暫時(shí)存放在R1中
DJNZR3,JJJJ ;接收地址碼的高8位
INC R1;對(duì)R1中的值加1,換成下一個(gè)RAM
DJNZR2,PP ;接收完16位地址碼和8位數(shù)據(jù)碼和8位數(shù)據(jù)反碼,存放在1AH/1BH/1CH/1DH的RAM中
;以下對(duì)代碼是否正確和定義進(jìn)行識(shí)別
MOV A,1AH ;比較高8位地址碼
XRL A,#00000000B;判斷1AH的值是否等于00000000,相等的話A為0
JNZ MAIN;如果不相等說明解碼失敗退出解碼程序
MOV A,1BH ;比較低8位地址
XRL A,#11111111B;再判斷高8位地址是否正確
JNZ MAIN;如果不相等說明解碼失敗退出解碼程序
MOV A,1CH ;比較數(shù)據(jù)碼和數(shù)據(jù)反碼是否正確?
CPL A
XRL A,1DH ;將1CH的值取反后和1DH比較 不同則無(wú)效丟棄,核對(duì)數(shù)據(jù)是否準(zhǔn)確
JNZ MAIN;如果不相等說明解碼失敗退出解碼程序
LCALL SOUND ;解碼成功,聲音提示
MOV A,1AH
CPL A
MOV P1,A;遙控碼十六進(jìn)制值通過P1口LED顯示出來
;-------- 下面為0~9鍵碼判斷并在實(shí)驗(yàn)板的5位數(shù)碼管中顯示鍵值 --------
JZPD: MOV A,1AH
IRD0: CJNEA,#00H,IRD1 ;按鍵“0”判斷顯示
MOV P0,#0C0H
MOV P2,#11100000B
AJMPMAIN
IRD1: CJNEA,#01H,IRD2 ;按鍵“1”判斷顯示
MOV P0,#0F9H
MOV P2,#11100000B
AJMPMAIN
IRD2: CJNEA,#02H,IRD3 ;按鍵“2”判斷顯示
MOV P0,#0A4H
MOV P2,#11100000B
AJMPMAIN
IRD3: CJNEA,#03H,IRD4 ;按鍵“3”判斷顯示
MOV P0,#0B0H
MOV P2,#11100000B
AJMPMAIN
IRD4: CJNEA,#04H,IRD5 ;按鍵“4”判斷顯示
MOV P0,#99H
MOV P2,#11100000B
AJMPMAIN
IRD5: CJNEA,#05H,IRD6 ;按鍵“5”判斷顯示
MOV P0,#92H
MOV P2,#11100000B
AJMPMAIN
IRD6: CJNEA,#06H,IRD7 ;按鍵“6”判斷顯示
MOV P0,#82H
MOV P2,#11100000B
AJMPMAIN
IRD7: CJNEA,#07H,IRD8 ;按鍵“7”判斷顯示
MOV P0,#0F8H
MOV P2,#11100000B
AJMPMAIN
IRD8: CJNEA,#08H,IRD9 ;按鍵“8”判斷顯示
MOV P0,#80H
MOV P2,#11100000B
AJMPMAIN
IRD9: CJNEA,#09H,IRDOR ;按鍵“9”判斷顯示
MOV P0,#90H
MOV P2,#11100000B
AJMPMAIN
IRDOR:MOV P2,#0FFH ;關(guān)閉數(shù)碼管使能。“0~9”以外的非數(shù)字功能按鍵鍵值不采用數(shù)碼管顯示,直接從P1口輸出鍵值
AJMPMAIN
YS1: MOV R4,#19 ;延時(shí)子程序1
D1: MOV R5,#18
DJNZR5,$
DJNZR4,D1
RET
YS2: MOV R4,#10 ;延時(shí)子程序2
D2: MOV R5,#216
DJNZR5,$
DJNZR4,D2
RET
SOUND:MOV R7,#228 ;音效延時(shí)子程序
SDL1: CPL P3.7
MOV R6,#0FFH
SDL0: DJNZR6,SDL0
DJNZR7,SDL1
RET
把上面程序?qū)懭隺t89S51單片機(jī)中,一個(gè)簡(jiǎn)單的單片機(jī)紅外遙控器設(shè)計(jì)就完成了哈哈,是不是很有興趣了,通電后,按壓遙控器上的0~9按鍵,則實(shí)驗(yàn)板上的數(shù)碼管上就顯示出對(duì)應(yīng)的按鍵值,同時(shí)解碼成功后發(fā)出聲音指示。。。
-
芯片
+關(guān)注
關(guān)注
455文章
50714瀏覽量
423137 -
單片機(jī)
+關(guān)注
關(guān)注
6035文章
44554瀏覽量
634634 -
連接器
+關(guān)注
關(guān)注
98文章
14476瀏覽量
136429
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論