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

下載本文檔

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

文檔簡介

1、 基于單片機的紅外遙控設(shè)計與制作 13工試2班 陳舒佳 章韜略1、 設(shè)計目的 對于本課題的研究,其理論中的價值是對紅外線這種電磁波的特性進行更加深入的研究。同時在與單片機和電子電路的共同作用下,找到單片機及電子電路在實際運用中的更多功能,從而挖掘出紅外線和硬件設(shè)備結(jié)合中的更多可能性。在現(xiàn)實意義中,對于紅外線的使用,它不僅提高了單片機、硬件設(shè)備和硬件系統(tǒng)在智能遙控領(lǐng)域的廣泛應(yīng)用,而相對了在硬件設(shè)施上使用了紅外線的遙控技術(shù),也同時大大拓寬了硬件設(shè)施的應(yīng)用范圍。在不久的將來,我相信,人們對于紅外遙控控制的運用,會變得越來越廣。2、 設(shè)計要求基本功能要求:1. 以一個單片機作為控制遙控器,另一個單片機

2、控制系統(tǒng)為被遙控對象;2. 用遙控器的10個遙控開關(guān),控制遙控對象的10個電源開關(guān)通斷;3. 能實現(xiàn)10個電源開關(guān)狀態(tài)顯示;4. 能實現(xiàn)定時開關(guān)某一個電源開關(guān)。擴展功能:1. 能實現(xiàn)燈光亮度連續(xù)調(diào)節(jié);2. 能根據(jù)不同電器實現(xiàn)不同時間通斷控制;3. 其他擴展功能。3、 方案設(shè)計3.1紅外遙控發(fā)射電路的方案 采用指令鍵產(chǎn)生電路產(chǎn)生不同的控制指令,單片機進行狀態(tài)的編碼,直接由單片機的口輸出方波信號控制紅外發(fā)射管進行發(fā)射。紅外發(fā)射管采用普通的紅外發(fā)射二極管。3.2紅外遙控接收電路的方案遙控系統(tǒng)采用紅外線脈沖個數(shù)編碼,直接利用單片機軟件解碼,實現(xiàn)功能的遙控。3.3單片機的選擇本設(shè)計所編寫的程序比較簡單,

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

4、外接收部分原理框圖以及各部分作用各部分作用:(1)+5v電源電路給單片機最小系統(tǒng)、控制電路提供以及紅外接收電路提供電壓。(2)紅外接收電路紅外接收電路把接收到的狀態(tài)在內(nèi)部進行解碼,從而實現(xiàn)不同的功能。(3)控制電路通過發(fā)射電路的按鍵實現(xiàn)對控制電路的控制作用。3.6系統(tǒng)硬件電路的設(shè)計紅外發(fā)射電路:紅外接收電路:4、 遙控發(fā)射及接收控制電路的軟件設(shè)計4.1軟件設(shè)計流程圖4.1.1鍵掃描程序流程圖相應(yīng)的按鍵掃描程序:#include #define uint unsigned int #define uchar unsigned char #define keyrow p0 #define keyl

5、ine p2 uchar code keyv8=1,2,4,8; uchar keyscan(void) uchar keyval,i; keyval=0; keyrow=0xfe; if(keyline!=0xff) for(i=0;i4;i+) if(keyline=keyvi) keyval=i+1; keyrow=0xfd; if(keyline!=0xff) for(i=0;i4;i+) if(keyline=keyvi) keyval=i+5; keyrow=0xfb; if(keyline!=0xff) for(i=0;i4;i+) if(keyline=keyvi) keyva

6、l=i+9; keyrow=0xf7; if(keyline!=0xff) for(i=0;i0;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ā)射主程序如下:#include #define uint unsigned int #define ucha

7、r 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;itime;i+) for(j=0;j110;j+); void main() uint keyval; init(); while(1) keyval=keyscan(); while(keyscan(); if(keyval) send_infrared(keyval); 4.1.4中斷程序

8、流程圖中斷過程:首先判斷低電平脈寬度是否大于2ms,若脈寬不到2ms,則中斷返回;若低電平大于2ms,則接收并對低電平脈沖計數(shù),接下來看判斷高電平脈寬度沖是否大于3ms,若脈寬不到3ms,則返回上一接收計數(shù)過程;若高電平脈寬大于3ms,則按照脈沖個數(shù)至對應(yīng)功能程序。此時中斷返回。相應(yīng)的中斷程序如下:#include #include #define uchar unsigned char #define uint unsigned int sbit remotein=p31; extern void delay1ms(uint time); uchar value; /*初始化*/ void

9、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(remotein=0); keyval+;k=0;delay1ms(1); while(remotein=1) delay1ms(1);k+; if(k2) value=keyval-1; sign=1; break; if(sign) break; e

10、x0=1; 4.1.5遙控接收器主程序流程圖相應(yīng)的接收主程序:#include #include #define uchar unsigned char #define uint unsigned int extern void clearmen(void); extern uchar value; uchar temp; void delay1ms(uint time) uint i,j; for(i=0;itime;i+) for(j=0;j110;j+); void youyi(void) /7個流水燈逐個閃動 uint i; temp=0x01; for(i=0;i8;i+) p2=t

11、emp;delay1ms(1000); temp=1; void zuoyi(void) /7個流水燈反向逐個閃動 uint i; temp=0x80; for(i=0;i=1; void quanliang(void)uint i; temp=0xfe; for(i=0;i8;i+) /7個流水燈依次全部點亮 p2=temp; delay1ms(1000); temp=1; void fquanliang(void) uint i; temp=0x7f; for(i=0;i=1; void main() clearmen(); p0=0xff; while(1) if(value=1) p2

12、=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(); 5、 演示結(jié)果

13、當(dāng)按下鍵1時,發(fā)光二極管led1亮;當(dāng)按下鍵2時,發(fā)光二極管led2亮;當(dāng)按下鍵3時,發(fā)光二極管led3亮;當(dāng)按下鍵4時,發(fā)光二極管led4亮;當(dāng)按下鍵5時,發(fā)光二極管led5亮;當(dāng)按下鍵6時,發(fā)光二極管led6亮;當(dāng)按下鍵7時,發(fā)光二極管led7亮;當(dāng)按下鍵8時,發(fā)光二極管led8亮;當(dāng)按下鍵9時,發(fā)光二極管led9亮;當(dāng)按下鍵10時,發(fā)光二極管led10亮;當(dāng)按下鍵11時,發(fā)光二極管led8-led1依次漸亮;當(dāng)按下鍵12時,發(fā)光二極管led1-led8依次漸亮;當(dāng)按下鍵13時,發(fā)光二極管led8-led1依次全亮;當(dāng)按下鍵14時,發(fā)光二極管led1-led8依次全亮;附錄:1.程序:#i

14、nclude #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;i4;i+) if(keyline=keyvi) keyval=i+1; keyrow=0xfd; if(keyline!=0xff) for(i=0;i4;i+) if(keyli

15、ne=keyvi) keyval=i+5; keyrow=0xfb; if(keyline!=0xff) for(i=0;i4;i+) if(keyline=keyvi) keyval=i+9; keyrow=0xf7; if(keyline!=0xff) for(i=0;i0;m-) delay1 et1=1;tr1=1;delay1ms(1);et1=0;tr1=0;remoteout=0; delay1ms(10); /*40khz發(fā)生器*/ void time_intt1(void) interrupt 3 remoteout=remoteout; extern uchar keysc

16、an(void); extern void init(void); extern void send_infrared(uchar keyval); void delay1ms(uint time) uint i,j; for(i=0;itime;i+) for(j=0;j110;j+); void main() uint keyval; init(); while(1) keyval=keyscan(); while(keyscan(); if(keyval) send_infrared(keyval); 接收系統(tǒng):#include #include #define uchar unsign

17、ed 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(remotein=0); ke

18、yval+;k=0;delay1ms(1); while(remotein=1) delay1ms(1);k+; if(k2) value=keyval-1; sign=1; break; if(sign) break; ex0=1; 接收主程序: extern void clearmen(void); extern uchar value; uchar temp; void delay1ms(uint time) uint i,j; for(i=0;itime;i+) for(j=0;j110;j+); void youyi(void) uint i; temp=0x01; for(i=0;

19、i8;i+) p2=temp;delay1ms(1000); temp=1; void zuoyi(void) uint i; temp=0x80; for(i=0;i=1; void quanliang(void)uint i; temp=0xfe; for(i=0;i8;i+) p2=temp; delay1ms(1000); temp=1; void fquanliang(void) uint i; temp=0x7f; for(i=0;i=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; 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(); i

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論