<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 手機與無(wú)線(xiàn)通信 > 設計應用 > 用增強型51單片機實(shí)驗板實(shí)現紅外線(xiàn)遙控

用增強型51單片機實(shí)驗板實(shí)現紅外線(xiàn)遙控

作者: 時(shí)間:2012-06-28 來(lái)源:網(wǎng)絡(luò ) 收藏

標簽:化紅外接收 集紅外接收

本文引用地址:http://dyxdggzs.com/article/154531.htm

是目前使用最廣泛的一種通信和手段。工業(yè)設備中,在高壓、輻射、有毒氣體、粉塵等環(huán)境下,采用不僅完全可靠而且能有效地隔離電氣干擾。

1.紅外遙控系統

通用紅外遙控系統由發(fā)射和接收兩大部分組成,使用編/解碼專(zhuān)用集成電路芯片來(lái)進(jìn)行控制操作。發(fā)射部分包括鍵盤(pán)矩陣、編碼調制、LED紅外發(fā)射器;接收部分包括光、電轉換放大器、解調、解碼部分電路。

2.遙控發(fā)射器及其編碼

下面以日本NEC的uPD6121G組成發(fā)射電路為例說(shuō)明編碼原理。當發(fā)射器按鍵按下后,有遙控碼發(fā)出,所按的鍵不同遙控編碼也不同。這種遙控碼具有以下特征:

采用脈寬調制的串行碼,以脈寬為0.565ms、間隔0.56ms、周期為1.125ms的組合表示二進(jìn)制的“0”;以脈寬為0.565ms、間隔1.685ms、周期為2.25ms的組合表示二進(jìn)制的“1”,其”0”、“1”定義波形如圖2所示。

上述“0”和“1”組成的32位二進(jìn)制碼經(jīng)38kt_{z的載頻進(jìn)行二次調制以提高發(fā)射效率,達到降低電源功耗的目的。然后再通過(guò)紅外發(fā)射二極管產(chǎn)生向空間發(fā)射,如圖3所示為最終發(fā)射出去的紅外信號波形。

uPD6121G產(chǎn)生的遙控編碼是連續的32位二進(jìn)制碼組,其中前16位為用戶(hù)識別碼,能區別不同的電器設備,防止不同機種遙控碼互相干擾。該芯片的用戶(hù)識別碼固定為十六進(jìn)制0仆1.;后16位為8位操作碼(功能碼)及其反碼。UPD6121G最多額128種不同組合的編碼。遙控器在按鍵按下后,周期性地發(fā)出同一種32位二進(jìn)制碼,周期約為108ms。一組碼本身的持續時(shí)間隨它包含的二進(jìn)制“0”和“1”的個(gè)數不同而不同,大約在45~63ms之間,圖4為發(fā)射波形圖。

當一個(gè)鍵按下超過(guò)36ms,振蕩器使芯片激活,將發(fā)射一組108ms的編碼脈沖,這108ms發(fā)射代碼由一個(gè)起始碼(9ms),一個(gè)結果碼(4.5ms),低8位地址碼(9ms~18ms),高8位地址碼(9ms~18ms)。8位數據碼(9ms~18ms)和這8位數據的反碼(9ms~18ms)組成。如果鍵按下超過(guò)108ms仍未松開(kāi),接下來(lái)發(fā)射的代碼(連發(fā)代碼)將僅由起始碼(9ms)和結束碼(2.5ms)組成。

3.接收頭及解碼

一體化紅外線(xiàn)接收頭是一種集紅外線(xiàn)接收和放大于一體,不需要任何外接元件,就能完成從紅外線(xiàn)接收到輸出與TTL電平信號兼容的所有工作,而體積較小,很多家電中都采用此類(lèi)紅外接收頭,它適合于各種紅外線(xiàn)遙控和紅外線(xiàn)數據傳輸,如圖1左下角所示為51板上的一體化紅外線(xiàn)接收頭。

下面我們就來(lái)一起看一下51板是如何來(lái)解uPD6121紅外線(xiàn)編碼及如何使用紅外線(xiàn)來(lái)進(jìn)行各式各樣的控制。

學(xué)習了紅外發(fā)射原理后,可以想到解碼的關(guān)鍵是如何識別“0”和“1”,從位的定義我們可以發(fā)現”0”、“1”均以0.56ms的低電平開(kāi)始,不同的是高電平的寬度不同,“0”為0.56ms,“1”為1.68ms,所以必須根據高電平的寬度區別“0”和“1”。如果從0.56ms低電平過(guò)后,開(kāi)始延時(shí),0.56ms以后,若讀到的電平為低,說(shuō)明該位為”0”,反之則為“1”,為了可靠起見(jiàn),延時(shí)必須比0.56ms長(cháng)些,但又不能超過(guò)1.12ms,否則如果該位為”0”,讀到的已是下一位的高電平,因此取(1.12ms+0.56ms)/2=0.84ms最為可靠,一般取0.84ms左右均可。同時(shí),我們還應注意的是,根據碼的格式,應該等待9ms的起始碼和4.5ms的結果碼完成后才能讀碼。

學(xué)習板上的一體化紅外接收頭一共有3個(gè)腳,分別是“地”、“電源”、“數據”,其“數據”腳與51的“INTO”腳,整個(gè)過(guò)程可以分成兩步,第一步是讀取并判斷引導碼是否正確,如果不是則直接返回并初始化檢測參數;第二步是連續4次,按照每次8bit讀取4個(gè)字節的后續數據,其中,檢測過(guò)程里對”0”和“1”的判斷必須是在開(kāi)啟計時(shí)之后,以減少因為程序執行而導致的測量時(shí)間長(cháng)度上誤差。

解碼過(guò)程關(guān)鍵是使用的定時(shí)器,我們可以用引導碼的下降沿來(lái)觸發(fā)的定時(shí)器開(kāi)始計時(shí)處理,這樣就可以獲得電平的時(shí)間長(cháng)度了,一般的遙控器編碼在長(cháng)按按鍵的時(shí)候,會(huì )連續發(fā)數據,可能是同樣的數據,也有可能是個(gè)特定的所謂的重復幀,但大致上15ms之內沒(méi)有信號收到就表示當前的數據幀已經(jīng)接收完畢。

解碼部分程序代碼如下:

unsignedcharuPD6121_read_code_8(void){unsignedchartemp=0;unsignedchari;for(i=0;8;i++){temp=temp》1:

while(ir_receive==0);//等待高電平測試結束TR1=0;//高電平測試結束,停止計時(shí)high_level_time=TH1*256+TL1;//保存高電平的數據TH1=0;TL1=0;TR1=1;//啟動(dòng)對低電平的測試while(ir_receive==1){if(TH1>0x4e){decode_error=1;return0;}//超時(shí)出錯,返回}

TR1=0;//低電平測試結束Iow_level_time=TH1*256+TL1;//保存低電平的數據TH1=0;TL1=0;TR1=1;//如果電平長(cháng)度不在合理的范圍內,則認為出錯if((high_level_time400)II(high_level_time>700)II(Iow_level_time400)II(Iow_level—time>1900)){decode_error=1;returnO;}

if((Iow_level_time>400)(Iow_level_time700))temp=temp0x7f;if((Iow_level_time>1400)(Iow_level_time1900))temp=temp1ox80;} returntemp;}nsignedcharuPD6121_decode(void)//解碼出錯返回1,對則返回OTR1=1://開(kāi)始測量引導碼(或重復碼)的高電平寬度while(ir_receive==0);//等待電平變高,不需要超時(shí)監測TR1=0;//高電平(對發(fā)射電路而言)測試結束high_level_time=TH1*256+TL1://保存高電平的數據//————————————————————TH1=0;TL1=0;TR1=1;//啟動(dòng)對低電平的測試while(ir_receive==1)//在對高電平進(jìn)行查詢(xún)時(shí),計超時(shí)。大于20ms出錯{if(TH1>0x4e)return1://測試超時(shí)后直接初始化相關(guān)變量,開(kāi)始下次測試}


上一頁(yè) 1 2 下一頁(yè)

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>