基于單片機(jī)的遠(yuǎn)程多路控制器設(shè)計_第1頁
基于單片機(jī)的遠(yuǎn)程多路控制器設(shè)計_第2頁
基于單片機(jī)的遠(yuǎn)程多路控制器設(shè)計_第3頁
基于單片機(jī)的遠(yuǎn)程多路控制器設(shè)計_第4頁
基于單片機(jī)的遠(yuǎn)程多路控制器設(shè)計_第5頁
已閱讀5頁,還剩36頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

目錄TOC\o"1-3"\h\u摘要 附錄1總電路圖

附錄2元件清單序號品名規(guī)格型號單位數(shù)量備注1單片機(jī)芯片AT89C51片22無線傳輸芯片IRLINK片13電阻10k個14電阻1K個15按鍵開關(guān)個166晶振CRYSTAL個27瓷片電容30pF個48電解電容10uF個29電阻2個110驅(qū)動器74LS240片211LED數(shù)碼顯示器8-LED共陰極數(shù)碼管個1

附錄3程序清單附錄3.1:發(fā)射程序#include<REG51.h>#include<intrins.h>#defineucharunsignedchar#defineuintunsignedint#defineSBM0x80//識別碼#definem9(65536-9000) //約9mS#definem4_5(65536-4500) //約4.5mS#definem1_6(65536-1630) //約1.65mS#definem_65(65536-580) //約0.65mS#definem_56(65536-560) //約0.56mS#definem40(65536-40000)//約40mS#definem56(65536-56000)//56mS#definem2_25(65536-2250)//約2.25mSsbitIR=P3^5; //定義發(fā)射引腳(接PNP三極管基極)sbitLED=P3^7; //發(fā)射指示燈ucharKEY(void);voidSanZhuan(void);voidZZ(ucharx);voidZ0(uchartemp);voidTT0(bitBT,uintx);voidYS(uchartime);/*┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈函數(shù)功能:主函數(shù)┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈*/voidmain(void){TMOD=0x01;//T016位工作方式IR=1; //發(fā)射端口常態(tài)為高電平while(1){SanZhuan();}}/***************************************************************函數(shù)功能:4×4矩陣鍵盤鍵值P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7││││││││┃│││└────13141516┃││└────────9101112┃│└────────────5678┃└────────────────1234┃***************************************************************/ucharKEY(void){ucharH,L;//行值,列值H=0;L=0;P1=0xf0;//將鍵盤端口行值設(shè)為1,列值設(shè)為0if(P1!=0xf0)//檢測是否有按鍵按下,如果有則hangval必不為0x0f{YS(10);//按鍵去抖動,延時10毫秒if(P1!=0xf0)//確實(shí)有按鍵按下{H=P1&0xf0;//按鍵后得到按鍵的行標(biāo)志位,將行標(biāo)志位賦值給hangvalP1=0x0f;//翻轉(zhuǎn)鍵盤接口輸出L=P1&0x0f;//得到列標(biāo)志位} return(H+L);}return0;}/***************************************************************函數(shù)功能:散轉(zhuǎn)程序入口參數(shù):v////13141516//9101112//5678//1234***************************************************************/voidSanZhuan(void){ucharv;v=KEY();switch(v){case0x77:ZZ(0x01);v=0;break; //""case0xb7:ZZ(0x02);v=0;break; //""case0xd7:ZZ(0x03);v=0;break; //""case0xe7:ZZ(0x04);v=0;break; //""case0x7b:ZZ(0x05);v=0;break; //""case0xbb:ZZ(0x06);v=0;break; //""case0xdb:ZZ(0x07);v=0;break; //""case0xeb:ZZ(0x08);v=0;break; //""case0x7d:ZZ(0x09);v=0;break; //""case0xbd:ZZ(0x10);v=0;break; //""case0xdd:ZZ(0x11);v=0;break; //""case0xed:ZZ(0x12);v=0;break; //""case0x7e:ZZ(0x13);v=0;break; //""case0xbe:ZZ(0x14);v=0;break; //""case0xde:ZZ(0x15);v=0;break; //""case0xee:ZZ(0x16);v=0;break; //""default:v=0;}}/*┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈函數(shù)功能:發(fā)送主程序┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈*/voidZZ(ucharx){TT0(1,m9); //高電平9mSTT0(0,m4_5); //低電平4.5mS/*┈發(fā)送4幀數(shù)據(jù)┈*/Z0(SBM); Z0(~SBM);Z0(x);Z0(~x);/*┈┈結(jié)束碼┈┈*/TT0(1,m_65);TT0(0,m40);/*┈┈重復(fù)碼┈┈*/while(KEY()){TT0(1,m9);TT0(0,m2_25);TT0(1,m_56);TT0(0,m40); TT0(0,m56); LED=!LED; //指示燈 }LED=1; }/*┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈函數(shù)功能:單幀發(fā)送程序入口參數(shù):1幀數(shù)據(jù)┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈*/voidZ0(uchartemp){ucharv;for(v=0;v<8;v++)//循環(huán)8次移位{ TT0(1,m_65); //高電平0.65mS if(temp&0x01)TT0(0,m1_6);//發(fā)送最低位 elseTT0(0,m_56); temp>>=1;//右移一位}}/*┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈函數(shù)功能:38KHz脈沖發(fā)射+延時程序入口參數(shù):(是否發(fā)射脈沖,延時約x(uS))┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈*/voidTT0(bitBT,uintx){TH0=x>>8; //輸入T0初始值TL0=x;TF0=0; //清0TR0=1; //啟動定時器0if(BT==0)while(!TF0); //BT=0時不發(fā)射38KHz脈沖只延時;BT=1發(fā)射38KHz脈沖且延時;elsewhile(1) //38KHz脈沖,占空比5:26{ IR=0; if(TF0)break; if(TF0)break; IR=1; if(TF0)break; if(TF0)break; if(TF0)break; if(TF0)break; if(TF0)break; if(TF0)break; if(TF0)break; if(TF0)break; if(TF0)break; if(TF0)break; }TR0=0; //關(guān)閉定時器0TF0=0; //標(biāo)志位溢出則清0IR=1; //脈沖停止后,發(fā)射端口常態(tài)為高電平}/***************************************************************函數(shù)功能:按鍵消抖延時程序入口參數(shù):1ms×time(晶振=12MHz)***************************************************************/voidYS(uchartime){uchari,j; for(i=0;i<time;i++)for(j=0;j<247;j++)_nop_();}附錄3.2:接收程序#include<REGX52.H>#include<intrins.h>#defineucharunsignedchar#defineuintunsignedintucharcodetab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0X88,0X83,0XC6,0XA1,0X86,0X8E,0xFF};sbit IR=P3^2; uchar N[4]; //識別碼,操作碼存放ucharX1,X2,X3,X4;voidXSQ(void);voidYS(uchartime);/******************主函數(shù)*******************/voidmain(void){ X1=X2=X3=X4=0;IT0=1;EX0=1;EA=1;while(1){XSQ();}}/**********************數(shù)碼管顯示函數(shù)************************/voidXSQ(void){ P2_7=1;P0=tab[X1];P2_0=0;YS(1); //識別碼P2_0=1;P0=tab[X2];P2_1=0;YS(1);P2_1=1;P0=tab[16];P2_2=0;YS(1);P2_2=1;P0=tab[16];P2_3=0;YS(1);P2_3=1;P0=tab[16];P2_4=0;YS(1);P2_4=1;P0=tab[16];P2_5=0;YS(1);P2_5=1;P0=tab[X3];P2_6=0;YS(1); //操作碼P2_6=1;P0=tab[X4];P2_7=0;YS(1);}/**********************外部中斷函數(shù)************************/voidexint0()interrupt0{ uintcnt;uchari;EX0=0;cnt=0; while(!IR)cnt++;//記錄引導(dǎo)碼時間if(cnt<1000){EX0=1;return;}//9ms的計數(shù)值(12MHz:1000<cnt<1500) cnt=0; while(IR)if(cnt++>400){EX0=1;return;}//防卡死,超時保護(hù)(12MHz:>300)if(cnt<200){EX0=1;return;}//(12MHz不分頻:<260) for(i=0;i<32;i++)//讀取32位位碼

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論