資源描述:
《紅外遙控解碼原理.doc》由會(huì)員上傳分享,免費(fèi)在線(xiàn)閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。
1、第五講紅外遙控一、紅外接收頭外形及與單片機(jī)連接電路(a)(b)圖1圖1(a)為紅外接收頭HX1838的外形圖,它有三個(gè)引腳,其中1為接收端2為地端3為電源端。其與單片機(jī)連接電路圖見(jiàn)(b)所示,紅外接收頭的接收引腳與單片機(jī)的P3.2相連。二、紅外遙控簡(jiǎn)介紅外遙控是一種比較廉價(jià)的近距離遙控方式。它由發(fā)射模塊和接收模塊兩部分組成,編碼格式有脈沖寬度調(diào)制和脈沖相位調(diào)制兩大類(lèi)。本節(jié)我們不考慮發(fā)射模塊而只研究接收端的解碼。本例我們以比較容易的脈沖寬度調(diào)制來(lái)介紹解碼原理。三、發(fā)射端數(shù)據(jù)的編碼當(dāng)我們按下遙控器后,遙控器發(fā)出一幀數(shù)據(jù)。這一幀數(shù)據(jù)由前導(dǎo)碼、用戶(hù)碼高8位、用戶(hù)碼低8位、數(shù)據(jù)碼、數(shù)據(jù)反碼組成。其中
2、前導(dǎo)碼為9ms高電平接著4.5ms低電平,標(biāo)志數(shù)據(jù)幀的開(kāi)始;用戶(hù)碼(共16位)為紅外接收器識(shí)別遙控器的身份的標(biāo)志,不同的遙控器一般用戶(hù)碼不同,以防止不同電器設(shè)備之間遙控碼的干擾;數(shù)據(jù)碼為紅外接收器識(shí)別遙控器上不同的按鍵的標(biāo)志,對(duì)同一遙控器來(lái)說(shuō),按不同的鍵所發(fā)出的二進(jìn)制編碼具有相同的用戶(hù)碼,不同的數(shù)據(jù)碼,如圖1所示.數(shù)據(jù)反碼用于信息正確接收校驗(yàn)。圖1紅外遙控解碼精簡(jiǎn)設(shè)計(jì)。孫衛(wèi)鋒,,鄭秀娥。山東理工大學(xué)學(xué)報(bào)(自然科學(xué)版)第20卷第6期2006年26~291、16位用戶(hù)碼,8位數(shù)據(jù)碼和8位數(shù)據(jù)反碼中的數(shù)據(jù)位定義以脈寬0.56ms間隔0.565ms周期1.125ms表示二進(jìn)制“0”,以脈寬0.56
3、ms間隔1.69ms周期2.25ms表示二進(jìn)制“1”,其波形分別如圖2(a)和(b)所示。(a)(b)圖22、重復(fù)碼以9ms高電平,2.25ms低電平,再0.56ms高電平定義為重復(fù)碼,持續(xù)按鍵時(shí),該鍵編碼連續(xù)發(fā)送,首幀為數(shù)據(jù)幀,其后為重復(fù)碼,周期為108us,如圖3所示。圖3四、接收端的解碼原理解碼就是將HX1838輸出的脈沖還原為二進(jìn)制的“0”和“1”,得到二進(jìn)制“0”,“1”序列,進(jìn)而分析所含的用戶(hù)碼和數(shù)據(jù)碼。當(dāng)HX1838在遙控有效距離內(nèi),接收到紅外遙控脈沖信號(hào)后,由內(nèi)部轉(zhuǎn)換成電壓信號(hào)并經(jīng)放大、長(zhǎng)時(shí)控制、干擾抑制、帶通濾波并整形后輸出遙控代碼脈沖.脈沖的形式為遙控器發(fā)射脈沖的倒像.
4、圖4表明了遙控發(fā)射碼與HX1838解碼輸出碼之間的波形關(guān)系.一定要注意,單片機(jī)接收端與發(fā)射端的信號(hào)是倒像關(guān)系,發(fā)射端引導(dǎo)碼是9ms高電平,2.25ms低電平,在單片機(jī)接收端就變成了9ms低電平和2.25ms高電平,發(fā)射端發(fā)射位0,則單片機(jī)接收端為高電平。五、應(yīng)用實(shí)例應(yīng)用紅外接收頭HX1838接收紅外信號(hào)并送LCD1602顯示遙控器按鍵編碼。#include#include#defineucharunsignedchar#defineuintunsignedintsbitIR=P3^2;sbitRS=P2^6;sbitRW=P2^7;sbitE=P2^
5、5;ucharIRcom[6];uintLowTime,HighTime;#definedelay_4_nop(){_nop_();_nop_();_nop_();_nop_();}/************************延時(shí)****************************************/voiddelay(uchari){uchark,j;for(k=0;k
6、d_R_Busy(){bits;RW=1;delay_4_nop();RS=0;delay_4_nop();E=1;delay_4_nop();s=(P0&0x80);delay_4_nop();E=0;delay_4_nop();return(s);}voidLcd_W_Cmd(ucharcom){while(Lcd_R_Busy()!=0);RW=0;delay_4_nop();RS=0;delay_4_nop();E=1;delay_4_nop();P0=com;delay_4_nop();E=0;delay_4_nop();}voidLcd_W_Dat(uchardat){whil
7、e(Lcd_R_Busy()!=0);RW=0;delay_4_nop();RS=1;delay_4_nop();E=1;delay_4_nop();P0=dat;delay_4_nop();E=0;delay_4_nop();}voidLcd_Init(){Lcd_W_Cmd(0x3c);Lcd_W_Cmd(0x0c);Lcd_W_Cmd(0x01);Lcd_W_Cmd(0x06);Lcd_W_Cmd(0x80);}/