![紅外數(shù)據(jù)傳輸_第1頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-1/19/4e056104-6598-4885-83da-f3afdcdf0f2c/4e056104-6598-4885-83da-f3afdcdf0f2c1.gif)
![紅外數(shù)據(jù)傳輸_第2頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-1/19/4e056104-6598-4885-83da-f3afdcdf0f2c/4e056104-6598-4885-83da-f3afdcdf0f2c2.gif)
![紅外數(shù)據(jù)傳輸_第3頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-1/19/4e056104-6598-4885-83da-f3afdcdf0f2c/4e056104-6598-4885-83da-f3afdcdf0f2c3.gif)
![紅外數(shù)據(jù)傳輸_第4頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-1/19/4e056104-6598-4885-83da-f3afdcdf0f2c/4e056104-6598-4885-83da-f3afdcdf0f2c4.gif)
![紅外數(shù)據(jù)傳輸_第5頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-1/19/4e056104-6598-4885-83da-f3afdcdf0f2c/4e056104-6598-4885-83da-f3afdcdf0f2c5.gif)
版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、紅外數(shù)據(jù)傳輸一、 紅外通信原理紅外遙控有發(fā)送和接收兩個(gè)組成部分。發(fā)送端采用單片機(jī)將待發(fā)送的二進(jìn)制信號(hào)編碼調(diào)制為一系列的脈沖串信號(hào),通過(guò)紅外發(fā)射管發(fā)射紅外信號(hào)。紅外接收完成對(duì)紅外信號(hào)的接收、放大、檢波、整形,并解調(diào)出遙控編碼脈沖。為了減少干擾,采用的是價(jià)格便宜性能可靠的一體化紅外接收頭(HS0038, 它接收紅外信號(hào)頻率為38kHz,周期約26s) 接收紅外信號(hào),它同時(shí)對(duì)信號(hào)進(jìn)行放大、檢波、整形得到TTL 電平的編碼信號(hào),再送給單片機(jī),經(jīng)單片機(jī)解碼并執(zhí)行去控制相關(guān)對(duì)象。如圖1 所示:紅外發(fā)送部分由51單片機(jī)、鍵盤(pán)、紅外發(fā)光二極管和7段數(shù)碼管組成。鍵
2、盤(pán)用于輸入指令, 51單片機(jī)檢測(cè)鍵盤(pán)上按鍵的狀態(tài),并對(duì)紅外信號(hào)進(jìn)行調(diào)制,發(fā)光二極管產(chǎn)生紅外線,數(shù)碼管用來(lái)顯示發(fā)送的鍵值。圖2紅外發(fā)射電路紅外接收部分由51單片機(jī)、一體化紅外接收頭HS0038和7段數(shù)碼管組成。51單片機(jī)檢測(cè)HS0038,并對(duì)HS0038接收到的數(shù)據(jù)解碼,通過(guò)數(shù)碼管顯示接收到的鍵值。圖 3紅外接收電路二、 編碼、解碼(1) 二進(jìn)制信號(hào)的調(diào)制 二進(jìn)制信號(hào)的調(diào)制由單片機(jī)來(lái)完成,它把編碼后的二進(jìn)制信號(hào)調(diào)制成頻率為38kHz 的間斷脈沖串,相當(dāng)于用二進(jìn)制信號(hào)的編碼乘以頻率為38kHz 的脈沖信號(hào)得到的間斷脈沖串,即是調(diào)制后用于紅外發(fā)射二極管
3、發(fā)送的信號(hào)如圖4 二進(jìn)制碼的調(diào)制所示(2) 紅外接收需先進(jìn)行解調(diào),解調(diào)的過(guò)程是通過(guò)紅外接收管進(jìn)行接收的。其基本工作過(guò)程為:當(dāng)接收到調(diào)制信號(hào)時(shí),輸出高電平,否則輸出為低電平,是調(diào)制的逆過(guò)程(圖5 解調(diào))。HS0038是一體化集成的紅外接收器件,直接就可以輸出解調(diào)后的高低電平信號(hào);紅外接收器HS0038的應(yīng)用電路(圖6)。(3)紅外遙控發(fā)射芯片采用 PPM 編碼方式,當(dāng)發(fā)射器按鍵按下后 ,將發(fā)射一組 108ms 的編碼脈沖。遙控編碼脈沖由前導(dǎo)碼、16位地址碼(8 位地址碼、 8 位地址碼的反碼)和16位操作碼(8 位操作碼、 8 位操作碼的反碼)組成。通過(guò)對(duì)用戶(hù)碼的檢驗(yàn),每個(gè)遙控器只能控制一個(gè)設(shè)備
4、動(dòng)作,這樣可以有效地防止多個(gè)設(shè)備之間的干擾。編碼后面還要有編碼的反碼,用來(lái)檢驗(yàn)編碼接收的正確性,防止誤操作,增強(qiáng)系統(tǒng)的可靠性。前導(dǎo)碼是一個(gè)遙控碼的起始部分,由一個(gè) 9ms 的高電平 ( 起始碼 ) 和一個(gè) 4. 5ms 的低電平 ( 結(jié)果碼 ) 組成,作為接受數(shù)據(jù)的準(zhǔn)備脈沖。以脈寬為 0. 56ms 、周期為 1. 12ms 的組合表示二進(jìn)制的 “0” ;以脈寬為 1. 68ms 、周期為 2. 24ms 的組合表示二進(jìn)制的 “1” 。(4)單片機(jī)采用外部中斷 INT0 管腳和紅外接收頭的信號(hào)線相連,中斷方式為邊沿觸發(fā)方式。計(jì)算中斷的間隔時(shí)間,來(lái)區(qū)分前導(dǎo)碼、二進(jìn)制的 “1” 、 “0” 碼。并
5、將 8 位操作碼提取出來(lái)在數(shù)碼管上顯示。紅外接收頭輸出的原始遙控?cái)?shù)據(jù)信號(hào),正好和發(fā)射端倒向.也就是以前發(fā)射端原始信號(hào)是高電平,那接收頭輸出的就是低電平,反之.軟件原理:開(kāi)始時(shí)發(fā)射一個(gè)特定的同步碼頭,對(duì)于接收端而言就是一個(gè)9ms的低電平,和一個(gè)4.5ms的高電平,這個(gè)同步碼頭可以使程序知道從這個(gè)同步碼頭以后可以開(kāi)始接收數(shù)據(jù)。采用脈寬調(diào)制的串行碼,以脈寬為0.565ms、間隔0.56ms、周期為1.125ms的組合表示二進(jìn)制的“0”;以脈寬為0.565ms、間隔1.685ms、周期為2.25ms 的組合表示二進(jìn)制的“1”。解碼的關(guān)鍵是如何識(shí)別“0”和“1”,從位的定義我們可以發(fā)現(xiàn)“0”、“1”均以
6、0.56ms的高電平開(kāi)始,不同的是低電平的寬度不同,“0”為0.56ms,“1”為1.685ms,所以必須根據(jù)高電平的寬度區(qū)別“0”和“1”。如果從0.56ms低電平過(guò)后,開(kāi)始延時(shí),0.56ms以后,若讀到的電平為低,說(shuō)明該位為“0”,反之則為“1”,為了可靠起見(jiàn),延時(shí)必須比0.56ms長(zhǎng)些,但又不能超過(guò)1.12ms,否則如果該位為“0”,讀到的已是下一位的高電平,因此?。?.12ms+0.56ms)/2=0.84ms最為可靠,一般取0.84ms 左右即可。根據(jù)紅外編碼的格式,程序應(yīng)該等待9ms的起始碼和4.5ms的結(jié)果碼完成后才能讀碼。HS0038紅外接收器,接收紅外遙控器發(fā)射的信號(hào),輸出D
7、ATA口和單片機(jī)的外部中斷0P3.2口相連。當(dāng)有紅外信號(hào)時(shí),觸發(fā)中斷查詢(xún)中斷時(shí)間,并和紅外起始碼,“0”、“1”、終止碼的時(shí)間進(jìn)行比較。從而檢測(cè)紅外的操作碼。整體流程圖(1)發(fā)射部分:通過(guò)中斷產(chǎn)生38K 的載波,TX 端口產(chǎn)生發(fā)送的數(shù)據(jù),然后經(jīng)過(guò)與門(mén)放大經(jīng)發(fā)射管發(fā)射數(shù)據(jù):38k 載波 第一列有效發(fā)送數(shù)據(jù) 第二列對(duì)管發(fā)射數(shù)據(jù) 第三列2)接受部分:HS0038A2接受到38k載波時(shí),會(huì)輸出低電平,否則輸出高電平。將HS0038A2產(chǎn)生的信號(hào)經(jīng)過(guò)非門(mén)后得的原來(lái)的信號(hào)。HS0038A2 產(chǎn)生信號(hào) 第一列經(jīng)過(guò)非門(mén)后得到原來(lái)數(shù)據(jù) 第二列經(jīng)過(guò)與門(mén) (3)設(shè)計(jì)思想簡(jiǎn)介:1:對(duì)輸入的數(shù)據(jù)進(jìn)行編碼。2:對(duì)編碼進(jìn)行
8、脈沖調(diào)制。3:信號(hào)放大后,通過(guò)發(fā)射管發(fā)送38khz信號(hào)。4:接收信號(hào),進(jìn)行解碼。5:讓51對(duì)信號(hào)進(jìn)行處理(顯示,統(tǒng)計(jì),分析)。51可參考的程序(1)發(fā)送程序 #include <reg52.h> static bit OP; /紅外發(fā)射管的亮滅 static unsigned int count; /延時(shí)計(jì)數(shù)器 static unsigned int endcount; /終止延時(shí)計(jì)數(shù) static unsigned int temp; /按鍵 static unsigned char flag; /紅外發(fā)送標(biāo)志 static unsigned char num; sbit ir_
9、in=P34; char iraddr1; /十六位地址的第一個(gè)字節(jié) char iraddr2; /十六位地址的第二個(gè)字節(jié) unsigned char code table=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e; /共陽(yáng)數(shù)碼管 0f void SendIRdata(char p_irdata); void delay(unsigned int); void keyscan(); /*主函數(shù)*/ void main(void) num=0; P2=0x3f; count =
10、0; flag = 0; OP = 0; ir_in= 0; EA = 1; /允許CPU中斷 TMOD = 0x11; /設(shè)定時(shí)器0和1為16位模式1 ET0 = 1; /定時(shí)器0中斷允許 TH0 = 0xFF; TL0 = 0xE6; /設(shè)定時(shí)值0為38K 也就是每隔26us中斷一次 TR0 = 1;/開(kāi)始計(jì)數(shù) iraddr1=3;/00000011 iraddr2=252;/11111100 dokeyscan(); while(1); /*定時(shí)器0中斷處理 */ void timeint(void) interrupt 1 TH0=0xFF; TL0=0xE6; /設(shè)定時(shí)值為38K 也
11、就是每隔26us中斷一次 count+; if (flag=1) OP=OP; else OP = 0; ir_in= OP; void SendIRdata(char p_irdata) int i; char irdata=p_irdata; /發(fā)送9ms的起始碼 endcount=223; flag=1; count=0; dowhile(count<endcount); /*發(fā)送4.5ms的結(jié)果碼*/ endcount=117; flag=0; count=0; dowhile(count<endcount); /*發(fā)送十六位地址的前八位*/ irdata=iraddr1;
12、 for(i=0;i<8;i+) /*先發(fā)送0.56ms的38KHZ紅外波(即編碼中0.56ms的低電平)*/ endcount=10; flag=1; count=0; dowhile(count<endcount); /*停止發(fā)送紅外信號(hào)(即編碼中的高電平)*/ if(irdata-(irdata/2)*2) /判斷二進(jìn)制數(shù)個(gè)位為1還是0 endcount=41; /1為寬的高電平 else endcount=15; /0為窄的高電平 flag=0; count=0; dowhile(count<endcount); irdata=irdata>>1; /*發(fā)
13、送十六位地址的后八位*/ irdata=iraddr2; for(i=0;i<8;i+) endcount=10; flag=1; count=0; dowhile(count<endcount); if(irdata-(irdata/2)*2) endcount=41; else endcount=15; flag=0; count=0; dowhile(count<endcount); irdata=irdata>>1; /*發(fā)送八位數(shù)據(jù)*/ irdata=p_irdata; for(i=0;i<8;i+) endcount=10; flag=1; co
14、unt=0; dowhile(count<endcount); if(irdata-(irdata/2)*2) endcount=41; else endcount=15; flag=0; count=0; dowhile(count<endcount); irdata=irdata>>1; /*發(fā)送八位數(shù)據(jù)的反碼*/ irdata=p_irdata; for(i=0;i<8;i+) endcount=10; flag=1; count=0; dowhile(count<endcount); if(irdata-(irdata/2)*2) endcount=
15、41; else endcount=15; flag=0; count=0; dowhile(count<endcount); irdata=irdata>>1; endcount=10; flag=1; count=0; dowhile(count<endcount); flag=0; void delay(unsigned int z) unsigned char x,y; for(x=z;x>0;x-) for(y=110;y>0;y-); /*4×4鍵盤(pán)掃描按下按鍵發(fā)射數(shù)據(jù)*/ void keyscan() P1=0xfe; temp=P1
16、; temp=temp&0xf0; while(temp!=0xf0) temp=P1; switch(temp) case 0xee:num=1; break; case 0xde:num=2; break; case 0xbe:num=3; break; case 0x7e:num=4; break; while(temp!=0xf0) temp=P1; temp=temp&0xf0; P2=tablenum-1; SendIRdata(tablenum-1); P1=0xfd; temp=P1; temp=temp&0xf0; while(temp!=0xf0)
17、temp=P1; switch(temp) case 0xed:num=5; break; case 0xdd:num=6; break; case 0xbd:num=7; break; case 0x7d:num=8;break; while(temp!=0xf0) temp=P1; temp=temp&0xf0; P2=tablenum-1; SendIRdata(tablenum-1); P1=0xfb; temp=P1; temp=temp&0xf0; while(temp!=0xf0) temp=P1; switch(temp) case 0xeb:num=9; br
18、eak; case 0xdb:num=10; break; case 0xbb:num=11; break; case 0x7b:num=12; break; while(temp!=0xf0) temp=P1; temp=temp&0xf0; P2=tablenum-1; SendIRdata(tablenum-1); P1=0xf7; temp=P1; temp=temp&0xf0; while(temp!=0xf0) temp=P1; switch(temp) case 0xe7:num=13; break; case 0xd7:num=14; break; case 0
19、xb7:num=15; break; case 0x77:num=16; break; while(temp!=0xf0) temp=P1; temp=temp&0xf0; P2=tablenum-1; SendIRdata(tablenum-1); (2)接收程序 #include"reg52.h" #define uchar unsigned char #define uint unsigned int uchar dis_num,num,num1,num2,num3; sbit led=P10; unsigned char code table= 0xc0,0
20、xf9,0xa4,0xb0, 0x99,0x92,0x82,0xf8, 0x80,0x90,0x88,0x83, 0xc6,0xa1,0x86,0x8e; /共陽(yáng)數(shù)碼管 0f sbit prem =P32; /定義遙控頭的接收腳 uchar ram4=0,0,0,0;/存放接受到的4個(gè)數(shù)據(jù) 地址碼16位+按鍵碼8位+按鍵碼取反的8位 void delaytime(uint time) /延遲90uS uchar a,b; for(a=time;a>0;a-) for(b=40;b>0;b-); void rem()interrupt 0 /中斷函數(shù) uchar ramc=0; /定
21、義接收了4個(gè)字節(jié)的變量 uchar count=0; /定義現(xiàn)在接收第幾位變量 uint i=0; /此處變量用來(lái)在下面配合連續(xù)監(jiān)測(cè)9MS 內(nèi)是否有高電平 prem=1; for(i=0;i<1100;i+) /以下FOR語(yǔ)句執(zhí)行時(shí)間為8MS左右 if(prem) /進(jìn)入遙控接收程序首先進(jìn)入引導(dǎo)碼的前半部判斷,即:是否有9MS左右的低電平 return; /引導(dǎo)碼錯(cuò)誤則退出 while(prem!=1); /等待引導(dǎo)碼的后半部 4.5 MS 高電平開(kāi)始的到來(lái)。 delaytime(50); /延時(shí)大于4.5MS時(shí)間,跨過(guò)引導(dǎo)碼的后半部分,來(lái)到真正遙控?cái)?shù)據(jù)32位中/第一位數(shù)據(jù)的0.56MS
22、開(kāi)始脈沖 for(ramc=0;ramc<4;ramc+)/循環(huán)4次接收4個(gè)字節(jié) for(count=0;count<8;count+) /循環(huán)8次接收8位(一個(gè)字節(jié)) while(prem!=1); /開(kāi)始判斷現(xiàn)在接收到的數(shù)據(jù)是0或者1 ,首先在這行本句話時(shí), /保已經(jīng)進(jìn)入數(shù)據(jù)的0.56MS 低電平階段 /等待本次接受數(shù)據(jù)的高電平的到來(lái)。 delaytime(9);/高電平到來(lái)后,數(shù)據(jù)0 高電平最多延續(xù)0.56MS,而數(shù)據(jù)1,高電平可/延續(xù)1.66MS大于0.8MS 后我們可以再判斷遙控接收腳的電平, if(prem) /如果這時(shí)高電平仍然在繼續(xù)那么接收到的數(shù)據(jù)是1的編碼 ramramc=(ramramc<<1)+1;/將目前接收到的數(shù)據(jù)位1放到對(duì)應(yīng)的字節(jié)中 delaytime(11); /如果本次接受到的數(shù)據(jù)是1,那么要繼續(xù)延遲1MS,這樣才能跨入/下個(gè)位編碼的低電平中(即是開(kāi)始的0.56MS中) else /否則
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 教育科技研究合作項(xiàng)目協(xié)議
- 商場(chǎng)服裝店鋪轉(zhuǎn)讓協(xié)議書(shū)
- 電子垃圾回收利用項(xiàng)目的專(zhuān)項(xiàng)投資合同
- 數(shù)據(jù)可視化技術(shù)應(yīng)用合同
- 智能建筑項(xiàng)目施工協(xié)議
- 高空作業(yè)安全合同(19篇)
- 融資租賃與保理業(yè)務(wù)協(xié)議
- 房屋裝飾施工工程承包合同
- 股份制企業(yè)合同審查要點(diǎn)解析
- 美容美發(fā)行業(yè)服務(wù)效果不滿(mǎn)意退款協(xié)議
- 【課件】第11課+美術(shù)的曙光-史前與早期文明的美術(shù)+課件高中美術(shù)人教版(2019)美術(shù)鑒賞
- 高中化學(xué)人教版一輪復(fù)習(xí)-晶體結(jié)構(gòu)與性質(zhì)(復(fù)習(xí)課件)
- GB/T 22919.3-2008水產(chǎn)配合飼料第3部分:鱸魚(yú)配合飼料
- 船舶涂裝課件
- 軌道檢測(cè)列車(chē)介紹課件
- 二年級(jí)閱讀導(dǎo)航(下)
- 鹽霧試驗(yàn)過(guò)程記錄表
- 小學(xué)校務(wù)監(jiān)督委員會(huì)實(shí)施方案
- Q∕SY 13006-2016 招標(biāo)項(xiàng)目標(biāo)段(包)劃分指南
- 醫(yī)院消毒供應(yīng)中心清洗、消毒、滅菌質(zhì)控評(píng)分表
- 27供應(yīng)室清洗消毒及滅菌效果監(jiān)測(cè)制度
評(píng)論
0/150
提交評(píng)論