基于單片機(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è),還剩15頁(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)介

1、 基于單片機(jī)的紅外遙控設(shè)計(jì)與制作 13工試2班 陳舒佳 章韜略1、 設(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)越廣。2、 設(shè)計(jì)要求基本功能要求:1. 以一個(gè)單片機(jī)作為控制遙控器,另一個(gè)單片機(jī)

2、控制系統(tǒng)為被遙控對(duì)象;2. 用遙控器的10個(gè)遙控開(kāi)關(guān),控制遙控對(duì)象的10個(gè)電源開(kāi)關(guān)通斷;3. 能實(shí)現(xiàn)10個(gè)電源開(kāi)關(guān)狀態(tài)顯示;4. 能實(shí)現(xiàn)定時(shí)開(kāi)關(guān)某一個(gè)電源開(kāi)關(guān)。擴(kuò)展功能:1. 能實(shí)現(xiàn)燈光亮度連續(xù)調(diào)節(jié);2. 能根據(jù)不同電器實(shí)現(xiàn)不同時(shí)間通斷控制;3. 其他擴(kuò)展功能。3、 方案設(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ì)所編寫(xiě)的程序比較簡(jiǎn)單,

3、功能也比較少,所用到的輸入輸出端口也不是很多,所以我們決定用STC89C52單片機(jī)來(lái)完成本設(shè)計(jì),既方便也很實(shí)用。3.4紅外遙控系統(tǒng)電路的原理框圖以及各部分作用各部分作用: (1)行列式鍵盤 行列式鍵盤又稱為矩陣式鍵盤,用I/O線組成行列結(jié)構(gòu),按鍵設(shè)置在行列的交點(diǎn)上,行列式分別連接到按鍵開(kāi)關(guān)的兩端。鍵盤中有無(wú)按鍵按下是由行線送入掃描字及列線讀入列線狀態(tài)字來(lái)判斷的,有鍵按下時(shí)通過(guò)查鍵并執(zhí)行鍵功能程序。 (2)紅外線發(fā)射電路 遙控器信息碼由單片機(jī)的定時(shí)器1中斷產(chǎn)生40KHZ紅外線方波信號(hào)。由P3.5口輸出,經(jīng)過(guò)三極管放大,由紅外線發(fā)射管發(fā)送。 (3)

4、單片機(jī) 單片機(jī)用于輸出方波信號(hào)控制紅外發(fā)射電路的工作。3.5紅外接收部分原理框圖以及各部分作用各部分作用: (1)+5V電源電路 給單片機(jī)最小系統(tǒng)、控制電路提供以及紅外接收電路提供電壓。(2)紅外接收電路 紅外接收電路把接收到的狀態(tài)在內(nèi)部進(jìn)行解碼,從而實(shí)現(xiàn)不同的功能。 (3)控制電路 通過(guò)發(fā)射電路的按鍵實(shí)現(xiàn)對(duì)控制電路的控制作用。3.6系統(tǒng)硬件電路的設(shè)計(jì)紅外發(fā)射電路:紅外接收電路:4、 遙控發(fā)射及接收控制電路的軟件設(shè)計(jì)4.1 軟件設(shè)計(jì)流程圖4.1.1鍵掃描程序流程圖 相應(yīng)的按鍵掃描程序:#include<reg

5、52.h> #define uint unsigned int #define uchar unsigned char #define keyrow P0 #define keyline P2 uchar code keyv8=1,2,4,8; uchar keyscan(void) uchar keyval,i; keyval=0; keyrow=0xfe; if(keyline!=0xff) for(i=0;i<4;i+) if(keyline=keyvi) keyval=i+1; keyrow=0xfd; if(keyline!=0xff) for(i=0;i<4;i+

6、) if(keyline=keyvi) keyval=i+5; keyrow=0xfb; if(keyline!=0xff) for(i=0;i<4;i+) if(keyline=keyvi) keyval=i+9; keyrow=0xf7; if(keyline!=0xff) for(i=0;i<4;i+) if(keyline=keyvi) keyval=i+13; while(keyline!=0xff); return(keyval); 4.1.2遙控碼發(fā)射程序流程圖紅外信號(hào)發(fā)射過(guò)程: 該遙控器采用脈沖個(gè)數(shù)編碼,不同的脈沖個(gè)數(shù)代表不同的碼,最小為2個(gè)脈沖,最大為1

7、7個(gè)脈沖,為了使接收可靠,第一位碼寬為3ms,其余為1ms,遙控碼數(shù)據(jù)幀間隔大于10ms 。當(dāng)某個(gè)被控電器的電源開(kāi)關(guān)被按下時(shí),單片機(jī)先讀出鍵值,然后根據(jù)鍵值設(shè)定遙控碼的脈沖個(gè)數(shù),再調(diào)制成40kHz方波由紅外線發(fā)光管發(fā)身出去。相應(yīng)的遙控碼發(fā)射程序如下: sbit remoteout=P35; extern void delay1ms(uint time); /*初始化函數(shù)*/ void init(void) remoteout=0; IE=0x00; IP=0x08; TMOD=0x22; TH1=0xf3; TL1=0xf3; EA=1; /*發(fā)射函數(shù)*/ void sen

8、d_infrared(uchar keyval) uchar m; 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ā)生器*/ void time_intt1(void) interrupt 3 remoteout=remoteout; 4.1.3遙控發(fā)射主程序流程圖遙控發(fā)射的主程序流程圖:首先初始化程序,然后調(diào)用鍵掃描程序。相應(yīng)的發(fā)

9、射主程序如下:#include<reg52.h> #define uint unsigned int #define uchar unsigned char extern uchar keyscan(void); extern void init(void); extern void send_infrared(uchar keyval); void delay1ms(uint time) uint i,j; for(i=0;i<time;i+) for(j=0;j<110;j+); void main() uint keyval; init(); while(1) k

10、eyval=keyscan(); while(keyscan(); if(keyval) send_infrared(keyval); 4.1.4 中斷程序流程圖中斷過(guò)程:首先判斷低電平脈寬度是否大于2ms,若脈寬不到2ms,則中斷返回;若低電平大于2ms,則接收并對(duì)低電平脈沖計(jì)數(shù),接下來(lái)看判斷高電平脈寬度沖是否大于3ms,若脈寬不到3ms,則返回上一接收計(jì)數(shù)過(guò)程;若高電平脈寬大于3ms,則按照脈沖個(gè)數(shù)至對(duì)應(yīng)功能程序。此時(shí)中斷返回。相應(yīng)的中斷程序如下: #include<reg52.h> #include<intrins.h> #define uch

11、ar unsigned char #define uint unsigned int sbit remotein=P31; extern void delay1ms(uint time); uchar value; /*初始化*/ void clearmen(void) EX0=1; EA=1; /*外中斷遙控接收函數(shù)*/ void intt0(void) interrupt 0 uchar keyval,k,sign; EX0=0;sign=0;keyval=0; if(remotein=0) delay1ms(2); if(remotein=0) while(1) while(remote

12、in=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> #define uchar unsigned char #define uint unsigned int extern void clearmen(void); extern uchar

13、 value; uchar temp; void delay1ms(uint time) uint i,j; for(i=0;i<time;i+) for(j=0;j<110;j+); void youyi(void) /7個(gè)流水燈逐個(gè)閃動(dòng) uint i; temp=0x01; for(i=0;i<8;i+) P2=temp;delay1ms(1000); temp<<=1; void zuoyi(void) /7個(gè)流水燈反向逐個(gè)閃動(dòng) uint i; temp=0x80; for(i=0;i<8;i+) P2=temp;delay1ms(1000); Tem

14、p>>=1; void quanliang(void)uint i; temp=0xfe; for(i=0;i<8;i+) /7個(gè)流水燈依次全部點(diǎn)亮 P2=temp; delay1ms(1000); temp<<=1; void fquanliang(void) uint i; temp=0x7f; for(i=0;i<8;i+) /7個(gè)流水燈依次全部點(diǎn)亮 P2=temp; delay1ms(1000); Temp>>=1; void main() clearmen(); P0=0xff; while(1) if(value=1) P2=0xfe

15、; 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(); 5、 演示結(jié)果當(dāng)按下鍵1

16、時(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ā)

17、光二極管LED8-LED1依次全亮;當(dāng)按下鍵14時(shí),發(fā)光二極管LED1-LED8依次全亮; 附錄:1.程序:#include<reg52.h> #define uint unsigned int #define uchar unsigned char #define keyrow P0 #define keyline P2 uchar code keyv8=1,2,4,8; uchar keyscan(void) uchar keyval,i; keyval=0; keyrow=0xfe; if(keyline!=0xff) for(i=0;i<4;i+) if(k

18、eyline=keyvi) keyval=i+1; keyrow=0xfd; if(keyline!=0xff) for(i=0;i<4;i+) if(keyline=keyvi) keyval=i+5; keyrow=0xfb; if(keyline!=0xff) for(i=0;i<4;i+) if(keyline=keyvi) keyval=i+9; keyrow=0xf7; if(keyline!=0xff) for(i=0;i<4;i+) if(keyline=keyvi) keyval=i+13; while(keyline!=0xff); return(keyv

19、al); sbit remoteout=P35; extern void delay1ms(uint time); /*初始化函數(shù)*/ void init(void) remoteout=0; IE=0x00; IP=0x08; TMOD=0x22; TH1=0xf3; TL1=0xf3; EA=1; /*發(fā)射函數(shù)*/ void send_infrared(uchar keyval) uchar m; ET1=1;TR1=1;delay1ms(3);ET1=0;TR1=0;remoteout=0; for(m=keyval;m>0;m-) delay1 ET1=1;TR1=1;delay

20、1ms(1);ET1=0;TR1=0;remoteout=0; delay1ms(10); /*40KHZ發(fā)生器*/ void time_intt1(void) interrupt 3 remoteout=remoteout; extern uchar keyscan(void); extern void init(void); extern void send_infrared(uchar keyval); void delay1ms(uint time) uint i,j; for(i=0;i<time;i+) for(j=0;j<110;j+); void main() ui

21、nt keyval; init(); while(1) keyval=keyscan(); while(keyscan(); if(keyval) send_infrared(keyval); 接收系統(tǒng):#include<reg52.h> #include<intrins.h> #define uchar unsigned char #define uint unsigned int sbit remotein=P31; extern void delay1ms(uint time); uchar value; /*初始化*/ void clearmen(void) E

22、X0=1; EA=1; /*外中斷遙控接收函數(shù)*/ void intt0(void) interrupt 0 uchar keyval,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; 接收主程序:

23、 extern void clearmen(void); extern uchar value; uchar temp; void delay1ms(uint time) uint i,j; for(i=0;i<time;i+) for(j=0;j<110;j+); void youyi(void) uint i; temp=0x01; for(i=0;i<8;i+) P2=temp;delay1ms(1000); temp<<=1; void zuoyi(void) uint i; temp=0x80; for(i=0;i<8;i+) P2=temp;de

24、lay1ms(1000); Temp>>=1; void quanliang(void)uint i; temp=0xfe; for(i=0;i<8;i+) P2=temp; delay1ms(1000); temp<<=1; void fquanliang(void) uint i; temp=0x7f; for(i=0;i<8;i+) P2=temp; delay1ms(1000); Temp>>=1; void main() 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;

溫馨提示

  • 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)論