基于單片機(jī)的紅外遙控設(shè)計(jì)與制作_第1頁(yè)
基于單片機(jī)的紅外遙控設(shè)計(jì)與制作_第2頁(yè)
基于單片機(jī)的紅外遙控設(shè)計(jì)與制作_第3頁(yè)
基于單片機(jī)的紅外遙控設(shè)計(jì)與制作_第4頁(yè)
基于單片機(jī)的紅外遙控設(shè)計(jì)與制作_第5頁(yè)
已閱讀5頁(yè),還剩10頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

基于單片機(jī)的紅外遙控設(shè)計(jì)與制作13工試2班陳舒佳章韜略設(shè)計(jì)目的對(duì)于本課題的研究,其理論中的價(jià)值是對(duì)紅外線這種電磁波的特性進(jìn)行更加深入的研究。同時(shí)在與單片機(jī)和電子電路的共同作用下,找到單片機(jī)及電子電路在實(shí)際運(yùn)用中的更多功能,從而挖掘出紅外線和硬件設(shè)備結(jié)合中的更多可能性。在現(xiàn)實(shí)意義中,對(duì)于紅外線的使用,它不僅提高了單片機(jī)、硬件設(shè)備和硬件系統(tǒng)在智能遙控領(lǐng)域的廣泛應(yīng)用,而相對(duì)了在硬件設(shè)施上使用了紅外線的遙控技術(shù),也同時(shí)大大拓寬了硬件設(shè)施的應(yīng)用范圍。在不久的將來(lái),我相信,人們對(duì)于紅外遙控控制的運(yùn)用,會(huì)變得越來(lái)越廣。設(shè)計(jì)要求根本功能要求:以一個(gè)單片機(jī)作為控制遙控器,另一個(gè)單片機(jī)控制系統(tǒng)為被遙控對(duì)象;用遙控器的10個(gè)遙控開關(guān),控制遙控對(duì)象的10個(gè)電源開關(guān)通斷;能實(shí)現(xiàn)10個(gè)電源開關(guān)狀態(tài)顯示;能實(shí)現(xiàn)定時(shí)開關(guān)某一個(gè)電源開關(guān)。擴(kuò)展功能:能實(shí)現(xiàn)燈光亮度連續(xù)調(diào)節(jié);能根據(jù)不同電器實(shí)現(xiàn)不同時(shí)間通斷控制;其他擴(kuò)展功能。方案設(shè)計(jì)3.1紅外遙控發(fā)射電路的方案采用指令鍵產(chǎn)生電路產(chǎn)生不同的控制指令,單片機(jī)進(jìn)行狀態(tài)的編碼,直接由單片機(jī)的口輸出方波信號(hào)控制紅外發(fā)射管進(jìn)行發(fā)射。紅外發(fā)射管采用普通的紅外發(fā)射二極管。3.2紅外遙控接收電路的方案遙控系統(tǒng)采用紅外線脈沖個(gè)數(shù)編碼,直接利用單片機(jī)軟件解碼,實(shí)現(xiàn)功能的遙控。3.3單片機(jī)的選擇本設(shè)計(jì)所編寫的程序比擬簡(jiǎn)單,功能也比擬少,所用到的輸入輸出端口也不是很多,所以我們決定用STC89C52單片機(jī)來(lái)完本錢設(shè)計(jì),既方便也很實(shí)用。3.4紅外遙控系統(tǒng)電路的原理框圖以及各局部作用各局部作用:〔1〕行列式鍵盤行列式鍵盤又稱為矩陣式鍵盤,用I/O線組成行列結(jié)構(gòu),按鍵設(shè)置在行列的交點(diǎn)上,行列式分別連接到按鍵開關(guān)的兩端。鍵盤中有無(wú)按鍵按下是由行線送入掃描字及列線讀入列線狀態(tài)字來(lái)判斷的,有鍵按下時(shí)通過(guò)查鍵并執(zhí)行鍵功能程序?!?〕紅外線發(fā)射電路遙控器信息碼由單片機(jī)的定時(shí)器1中斷產(chǎn)生40KHZ紅外線方波信號(hào)。由P3.5口輸出,經(jīng)過(guò)三極管放大,由紅外線發(fā)射管發(fā)送。〔3〕單片機(jī)單片機(jī)用于輸出方波信號(hào)控制紅外發(fā)射電路的工作。3.5紅外接收局部原理框圖以及各局部作用各局部作用:(1)+5V電源電路給單片機(jī)最小系統(tǒng)、控制電路提供以及紅外接收電路提供電壓。〔2〕紅外接收電路紅外接收電路把接收到的狀態(tài)在內(nèi)部進(jìn)行解碼,從而實(shí)現(xiàn)不同的功能?!?〕控制電路通過(guò)發(fā)射電路的按鍵實(shí)現(xiàn)對(duì)控制電路的控制作用。3.6系統(tǒng)硬件電路的設(shè)計(jì)紅外發(fā)射電路:紅外接收電路:遙控發(fā)射及接收控制電路的軟件設(shè)計(jì)4.1軟件設(shè)計(jì)流程圖4.1.1鍵掃描程序流程圖相應(yīng)的按鍵掃描程序:#include<reg52.h>#defineuintunsignedint#defineucharunsignedchar#definekeyrowP0#definekeylineP2ucharcodekeyv[8]={1,2,4,8};ucharkeyscan(void){ucharkeyval,i;keyval=0;keyrow=0xfe;if(keyline!=0xff)for(i=0;i<4;i++)if(~keyline==keyv[i])keyval=i+1;keyrow=0xfd;if(keyline!=0xff)for(i=0;i<4;i++)if(~keyline==keyv[i])keyval=i+5;keyrow=0xfb;if(keyline!=0xff)for(i=0;i<4;i++)if(~keyline==keyv[i])keyval=i+9;keyrow=0xf7;if(keyline!=0xff)for(i=0;i<4;i++)if(~keyline==keyv[i])keyval=i+13;while(keyline!=0xff);return(keyval);}4.1.2遙控碼發(fā)射程序流程圖紅外信號(hào)發(fā)射過(guò)程:該遙控器采用脈沖個(gè)數(shù)編碼,不同的脈沖個(gè)數(shù)代表不同的碼,最小為2個(gè)脈沖,最大為17個(gè)脈沖,為了使接收可靠,第一位碼寬為3ms,其余為1ms,遙控碼數(shù)據(jù)幀間隔大于10ms。當(dāng)某個(gè)被控電器的電源開關(guān)被按下時(shí),單片機(jī)先讀出鍵值,然后根據(jù)鍵值設(shè)定遙控碼的脈沖個(gè)數(shù),再調(diào)制成40kHz方波由紅外線發(fā)光管發(fā)身出去。相應(yīng)的遙控碼發(fā)射程序如下:sbitremoteout=P3^5;externvoiddelay1ms(uinttime);/*************初始化函數(shù)***********/voidinit(void){remoteout=0;IE=0x00;IP=0x08;TMOD=0x22;TH1=0xf3;TL1=0xf3;EA=1;}/*****************發(fā)射函數(shù)***********/voidsend_infrared(ucharkeyval){ucharm;ET1=1;TR1=1;delay1ms(3);ET1=0;TR1=0;remoteout=0;for(m=keyval;m>0;m--){delay1ms(1);ET1=1;TR1=1;delay1ms(1);ET1=0;TR1=0;remoteout=0;}delay1ms(10);}/******************40KHZ發(fā)生器************/voidtime_intt1(void)interrupt3{remoteout=~remoteout;}4.1.3遙控發(fā)射主程序流程圖遙控發(fā)射的主程序流程圖:首先初始化程序,然后調(diào)用鍵掃描程序。相應(yīng)的發(fā)射主程序如下:#include<reg52.h>#defineuintunsignedint#defineucharunsignedcharexternucharkeyscan(void);externvoidinit(void);externvoidsend_infrared(ucharkeyval);voiddelay1ms(uinttime){uinti,j;for(i=0;i<time;i++)for(j=0;j<110;j++);}voidmain(){uintkeyval;init();while(1){keyval=keyscan();while(keyscan());if(keyval){send_infrared(keyval);}}}中斷程序流程圖中斷過(guò)程:首先判斷低電平脈寬度是否大于2ms,假設(shè)脈寬不到2ms,那么中斷返回;假設(shè)低電平大于2ms,那么接收并對(duì)低電平脈沖計(jì)數(shù),接下來(lái)看判斷高電平脈寬度沖是否大于3ms,假設(shè)脈寬不到3ms,那么返回上一接收計(jì)數(shù)過(guò)程;假設(shè)高電平脈寬大于3ms,那么按照脈沖個(gè)數(shù)至對(duì)應(yīng)功能程序。此時(shí)中斷返回。相應(yīng)的中斷程序如下:#include<reg52.h>#include<intrins.h>#defineucharunsignedchar#defineuintunsignedintsbitremotein=P3^1;externvoiddelay1ms(uinttime);ucharvalue;/***********初始化********/voidclearmen(void){EX0=1;EA=1;}/**************外中斷遙控接收函數(shù)**************/voidintt0(void)interrupt0{ucharkeyval,k,sign;EX0=0;sign=0;keyval=0;if(remotein==0){delay1ms(2);if(remotein==0)while(1){while(remotein==0);keyval++;k=0;delay1ms(1);while(remotein==1){delay1ms(1);k++;if(k>2){value=keyval-1;sign=1;break;}}if(sign)break;}}EX0=1;}4.1.5遙控接收器主程序流程圖相應(yīng)的接收主程序:#include<reg52.h>#include<intrins.h>#defineucharunsignedchar#defineuintunsignedintexternvoidclearmen(void);externucharvalue;uchartemp;voiddelay1ms(uinttime){uinti,j;for(i=0;i<time;i++)for(j=0;j<110;j++);}voidyouyi(void)//7個(gè)流水燈逐個(gè)閃動(dòng){uinti;temp=0x01;for(i=0;i<8;i++){P2=~temp;delay1ms(1000);temp<<=1;}}voidzuoyi(void)//7個(gè)流水燈反向逐個(gè)閃動(dòng){uinti;temp=0x80;for(i=0;i<8;i++){P2=~temp;delay1ms(1000);Temp>>=1;}}voidquanliang(void){uinti;temp=0xfe;for(i=0;i<8;i++)//7個(gè)流水燈依次全部點(diǎn)亮{P2=temp;delay1ms(1000);temp<<=1;}}voidfquanliang(void){uinti;temp=0x7f;for(i=0;i<8;i++)//7個(gè)流水燈依次全部點(diǎn)亮{P2=temp;delay1ms(1000);Temp>>=1;}}voidmain(){clearmen();P0=0xff;while(1){if(value==1){P2=0xfe;}if(value==2){P2=0xfd;}if(value==3){P2=0xfb;}if(value==4{P2=0xf7;}if(value==5){P2=0xef;}if(value==6){P2=0xdf;}if(value==7){P2=0xbf;}if(value==8){P2=0x7f;}if(value==9){P1=0xfe;}if(value==10){P1=0xfd;}if(value==11)youyi();if(value==12)zuoyi();if(value==13)quanliang();if(value==14)fquanliang();}}演示結(jié)果當(dāng)按下鍵1時(shí),發(fā)光二極管LED1亮;當(dāng)按下鍵2時(shí),發(fā)光二極管LED2亮;當(dāng)按下鍵3時(shí),發(fā)光二極管LED3亮;當(dāng)按下鍵4時(shí),發(fā)光二極管LED4亮;當(dāng)按下鍵5時(shí),發(fā)光二極管LED5亮;當(dāng)按下鍵6時(shí),發(fā)光二極管LED6亮;當(dāng)按下鍵7時(shí),發(fā)光二極管LED7亮;當(dāng)按下鍵8時(shí),發(fā)光二極管LED8亮;當(dāng)按下鍵9時(shí),發(fā)光二極管LED9亮;當(dāng)按下鍵10時(shí),發(fā)光二極管LED10亮;當(dāng)按下鍵11時(shí),發(fā)光二極管LED8-LED1依次漸亮;當(dāng)按下鍵12時(shí),發(fā)光二極管LED1-LED8依次漸亮;當(dāng)按下鍵13時(shí),發(fā)光二極管LED8-LED1依次全亮;當(dāng)按下鍵14時(shí),發(fā)光二極管LED1-LED8依次全亮;附錄:1.程序:#include<reg52.h>#defineuintunsignedint#defineucharunsignedchar#definekeyrowP0#definekeylineP2ucharcodekeyv[8]={1,2,4,8};ucharkeyscan(void){ucharkeyval,i;keyval=0;keyrow=0xfe;if(keyline!=0xff)for(i=0;i<4;i++)if(~keyline==keyv[i])keyval=i+1;keyrow=0xfd;if(keyline!=0xff)for(i=0;i<4;i++)if(~keyline==keyv[i])keyval=i+5;keyrow=0xfb;if(keyline!=0xff)for(i=0;i<4;i++)if(~keyline==keyv[i])keyval=i+9;keyrow=0xf7;if(keyline!=0xff)for(i=0;i<4;i++)if(~keyline==keyv[i])keyval=i+13;while(keyline!=0xff);return(keyval);}sbitremoteout=P3^5;externvoiddelay1ms(uinttime);/*************初始化函數(shù)***********/voidinit(void){remoteout=0;IE=0x00;IP=0x08;TMOD=0x22;TH1=0xf3;TL1=0xf3;EA=1;}/*****************發(fā)射函數(shù)***********/voidsend_infrared(ucharkeyval){ucharm;ET1=1;TR1=1;delay1ms(3);ET1=0;TR1=0;remoteout=0;for(m=keyval;m>0;m--){delay1ET1=1;TR1=1;delay1ms(1);ET1=0;TR1=0;remoteout=0;}delay1ms(10);}/******************40KHZ發(fā)生器************/voidtime_intt1(void)interrupt3{remoteout=~remoteout;}externucharkeyscan(void);externvoidinit(void);externvoidsend_infrared(ucharkeyval);voiddelay1ms(uinttime){uinti,j;for(i=0;i<time;i++)for(j=0;j<110;j++);}voidmain(){uintkeyval;init();while(1){keyval=keyscan();while(keyscan());if(keyval){send_infrared(keyval);}}}接收系統(tǒng):#include<reg52.h>#include<intrins.h>#defineucharunsignedchar#defineuintunsignedintsbitremotein=P3^1;externvoiddelay1ms(uinttime);ucharvalue;/***********初始化********/voidclearmen(void){EX0=1;EA=1;}/**************外中斷遙控接收函數(shù)**************/voidintt0(void)interrupt0{ucharkeyval,k,sign;EX0=0;sign=0;keyval=0;if(remotein==0){delay1ms(2);if(remotein==0)while(1){while(remotein==0);keyval++;k=0;delay1ms(1);while(remotein==1){delay1ms(1);k++;if(k>2){value=keyval-1;sign=1;break;}}if(sign)break;}}EX0=1;}接收主程序:externvoidclearmen(void);externucharvalue;uchartemp;voiddelay1ms(uinttime){uinti,j;for(i=0;i<time;i++)for(j=0;j<110;j++);}voidyouyi(void){uinti;temp=0x01;for(i=0;i<8;i++){P2=~temp;delay1ms(1000);temp<<=1;}}voidzuoyi(void){uinti;temp=0x80;for(i=0;i<8;i++){P2=~temp;delay1ms(1000);Temp>>=1;}}voidquanliang(void){uinti;temp=0xfe;for(i=0;i<8;i++){P2=temp;delay1ms(1000);temp<<=1;}}voidfquanliang(void){uinti;temp=0x7f;for(i=0;i<8;i++){P2=temp;delay1ms(1000);Temp>>=1;}}voidmain(){clearmen();P0=0xff;while(1){if(value==1){P2=0xfe;}if(value==2){P2=0xfd;}if(value==3)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論