




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、單片機實現(xiàn)紅外接收解碼摘要:接收到紅外遙控器的脈沖波形,并通過解析其波形得到紅外遙控器的相應解碼,實習對相應設備的控制。本文詳細接受紅外遙控技術原理并如何通過C51單片機實現(xiàn)紅外遙控。關鍵字:單片機,紅外遙控,解碼1.引言遙控器相信大家不會陌生,日常生活中會使用到各種各樣的遙控器,比如電視機、DVD機、空調、機頂盒甚至音響、熱水器等都用到遙控器,其實紅外技術已經走進與人們的生活并且與人們的生活息息相關了。紅外遙控器作為設備的輸入控制具有操作簡便、價格便宜等諸多好處。您可以根據(jù)您公司產品需要和遙控器提供商協(xié)商定制遙控器,包括遙控器鍵盤布局、每個按鍵的鍵碼等。遙控器鍵盤上每個按鍵的鍵碼是一個小于2
2、56的一個數(shù)值,按鍵后通過遙控器紅外管產生脈沖發(fā)送出去,紅外接收器接收到脈沖后,對脈沖流進行分析,提取鍵碼值,并按照鍵碼值實現(xiàn)其遙控目的。2.紅外接收原理紅外遙控信號接收:紅外接收電路可以使用集成接收器,接收器包括紅外接收管及信號處理IC,接收器對外只有三個引腳,一個接電源的Vcc腳、一個接地的GND腳、一個脈沖信號輸出腳,當然脈沖信號輸出腳直接接單片機的某個可以使用的IO腳就可以了。3.脈沖波形分析:每次按鍵,紅外接收器這邊會收到一串脈沖寬度不等的脈沖波形流,其脈沖流由35個脈沖波形構成:前導碼:第1個脈沖波形用戶碼1:第2到第9個脈沖波形用戶碼2:第10到第17個脈沖波形鍵碼:第18到第2
3、5個脈沖波形鍵碼反碼:第26到第33個脈沖波形連續(xù)按鍵脈沖:第34和第35個脈沖為結束脈沖(也即連續(xù)按鍵脈沖),在每次按鍵結束后會有兩個結束脈沖,如果一直按鍵不放的話,會一直發(fā)送連續(xù)按鍵脈沖,并可以認為在收到10個連續(xù)按鍵脈沖后是下一個按鍵。注意:不同的遙控器產生的用戶碼值可能不一樣,筆者碰到兩種不同的用戶碼:0x00,0xFF及0x04,0x7F。 脈沖流中有四種不同的脈沖波形寬度:其中前導碼脈寬為:40(4ms) < 脈沖寬度 < 50(5ms)連續(xù)按鍵脈寬為: 21(2.1ms) < 脈沖寬度 < 25(2.5ms)bit "0" 脈寬為: 3
4、(0.3ms) < 脈沖寬度 < 7(0.7ms)bit "1" 脈寬為: 14(1.4ms) < 脈沖寬度 < 19(1.9ms) 在收到一串脈沖流后,就要對其進行分析,先要檢測第一個脈沖波形是不是前導碼,如果不是,則繼續(xù)檢測前導碼,如果是則檢測如下32個脈沖波形:用戶碼1為1字節(jié),由8個脈沖波形組成(其中一個脈沖波形表示字節(jié)中1 bit);用戶碼2為1字節(jié);鍵值為1字節(jié);鍵值反碼為1字節(jié),鍵值反碼為鍵值取反值。先判斷所收到用戶碼是否正確,如果不正確則丟棄此次所收鍵碼,如果正確則利用鍵值反碼取反與鍵值比較,判斷收碼是否正確,如果不正確則丟棄所收鍵碼
5、。如下圖所示:前導碼:用戶碼:鍵碼:結束碼:從上圖可以看出其用戶碼為:0b00100000-0b11111110,由于其低位在前,故轉換后得到用戶碼為:0b00000100-0b01111111,即0x04,0x7F;其鍵碼及鍵碼反碼為:0b00010010-0b11101101,同樣也是低位在前,轉換后得到鍵碼及鍵碼反碼為:0b01001000-0b10110111,即0x48,0xB7。4.實現(xiàn):4.1初始化初始化時當然要先初始化單片機紅外接收管腳為高阻輸入狀態(tài),其次要初始化定時器,因為檢測分析脈沖波形時需要用到定時器,根據(jù)上面對脈沖流波形分析可以知道最窄的脈寬為bit “0”,為0.3m
6、s左右,所以定時器最好定時為每0.1ms中斷一次比較好,但是定時器的值怎么設置呢,這樣根據(jù)單片機的振蕩器決定。4.2脈沖波形分析首先當然是檢測前導碼,單片機紅外接收管腳在初始化時已經設置為高阻輸入狀態(tài)(即高電平狀態(tài)),當有紅外輸入時,狀態(tài)變?yōu)榈碗娖綘顟B(tài),一旦檢測到有低電平過來,則開始準備檢測前導碼。得到每個脈沖波形序號,并根據(jù)定時器統(tǒng)計出每個脈沖波形在高電平狀態(tài)維持的時間,通過其時間值檢測第一個脈沖是否是前導碼,如果不是則重新檢測前導碼,如果是前導碼則分析其后每個脈沖波形是bit “0”,還是bit “1”,并按順序每八個波形為一個字節(jié)方式保存到用戶碼1字節(jié)變量、用戶碼2字節(jié)變量、鍵碼字節(jié)變量
7、、鍵碼反碼字節(jié)變量,直到收滿32個bits。4.3收碼判斷所收到的用戶碼是否正確、鍵碼及鍵碼反碼是否正確,如果都正確則認為此次收碼為正確收碼,否則丟棄。收碼完后,還會有結束脈沖波形,如果用戶一直按住某個鍵不放,遙控器會一直發(fā)送連續(xù)按鍵脈沖波形,如果多次收到連續(xù)按鍵,可以認為再次收到鍵碼,這個可以根據(jù)實際需要定。5.程序代碼#include <reg51.h>#define uint unsigned int#define uchar unsigned charuchar code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,
8、0x6f,0x77,0x7c,0x39, 0x5e, 0x79, 0x71;uchar code weitable=0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f;uchar irnum; /定時器0定時時間計數(shù)uchar bitnum; /存放接收到的位數(shù)uchar startflag; /開始標志uchar irdata33;uchar irreceok=0; /判斷是否接收到一幀數(shù)據(jù),33位uchar ircode4; /存放4個碼值uchar irprosok;uchar disp8;sbit LS138A=P22; /138譯碼器的A端由P2.2口控制
9、sbit LS138B=P23; /138譯碼器的B端由P2.3口控制sbit LS138C=P24; /138譯碼器的C端由P2.4口控制void delay(uint i)/定時1msuchar j;for(i;i>0;i-)for(j=110;j>0;j-) ;void init() /初始化 T0, exter 0 IT0=1; /外部中斷,下降沿觸發(fā)IE0=1;/外部中斷0允許EX0=1; /開中斷/定時計數(shù)器0中斷TMOD=0x02; / 工作方式1,16位TH0=0x00; /定時0.256ms TL0=0x00;ET0=1; / 開中斷EA=1;TR0=1; / 定
10、時計數(shù)器啟動中斷 void irpros(void) /解碼 uchar i,j,k; uchar value; k=1; for(j=0;j<4;j+) for(i=0;i<8;i+)value=value>>1; if(irdatak>6) /接收的數(shù)據(jù)為0或1,0為1.125ms<5,1為2.25約89,曲中間 value=value|0x80; k+;ircodej=value; /編碼值給ircode,value=0; irprosok=1; /紅外數(shù)據(jù)提取完畢/顯示,要將接收到的碼拆開8位顯示void irwork(void)/將接收到的碼拆開顯
11、示disp0=ircode0/16; /按16進制顯示disp1=ircode0%16;disp2=ircode1/16;disp3=ircode1%16;disp4=ircode2/16; /按16進制顯示disp5=ircode2%16;disp6=ircode3/16;disp7=ircode3%16;void display(void) /送到數(shù)碼管顯示LS138C=0;LS138B=0;LS138A=0; P0=tabledisp0; delay(10);/第一個數(shù)碼管顯示1LS138C=0;LS138B=0;LS138A=1; P0=tabledisp1; delay(10);/第
12、一個數(shù)碼管顯示2LS138C=0;LS138B=1;LS138A=0; P0=tabledisp2; delay(10);LS138C=0;LS138B=1;LS138A=1; P0=tabledisp3; delay(10);LS138C=1;LS138B=0;LS138A=0; P0=tabledisp4; delay(10);LS138C=1;LS138B=0;LS138A=1; P0=tabledisp5; delay(10);LS138C=1;LS138B=1;LS138A=0; P0=tabledisp6; delay(10);LS138C=1;LS138B=1;LS138A=1; P0=tabledisp7; delay(10);void main()init();while(1)if(irreceok) /若接收到數(shù)據(jù)irpros();/解碼irreceok=0;if(irprosok) /數(shù)據(jù)解碼完畢,拆開顯示irwork();irprosok=0;display();void exter0() interrupt 0 if(irnum>50) /收到引
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 社區(qū)共享廚房加盟店加盟店市場調研與競爭分析協(xié)議
- 資產評估機構合伙人合作協(xié)議及保密責任承諾書
- 建筑節(jié)能改造工程全過程審計監(jiān)管協(xié)議
- 2025年中國白皮杉醇行業(yè)市場規(guī)模調研及投資前景研究分析報告
- 生物農藥田間試驗技術支持與成果轉化協(xié)議
- 網絡數(shù)據(jù)恢復硬盤租賃與數(shù)據(jù)恢復技術培訓合同
- 跨境電商平臺客服外包及售后服務合同
- 智能倉儲物流標準補充協(xié)議
- 拉美市場外企運營專員職位招聘及績效評估合同
- 留學歸國人員國際科技合作項目推廣聘用合同
- 2023學年完整公開課版井岡翠竹
- 兒童成長相冊PPT
- 2023年安徽馬鞍山市市場監(jiān)督管理局招聘編外聘用人員29人(共500題含答案解析)筆試必備資料歷年高頻考點試題摘選
- 英語1 山大本科考試題庫及答案
- 高中音樂-《音樂與詩詞》教學課件設計
- 九個特種設備安全員守則
- 中國哲學經典著作導讀知到章節(jié)答案智慧樹2023年西安交通大學
- 2023年鄭州大學第一附屬醫(yī)院住院醫(yī)師規(guī)范化培訓招生(口腔科)考試參考題庫+答案
- 保潔員(五級)技能理論考試題庫(匯總版)
- 拖拉管施工專項施工方案(交叉口)
- 七年級下冊英語第三次月考試題
評論
0/150
提交評論