|
之前買了快315m的無(wú)線模塊 一直沒(méi)用,不知道干點(diǎn)什么好,閑著沒(méi)事呢就用它做了個(gè)無(wú)線開關(guān)遙控模塊,開關(guān)數(shù)是兩路,每路是250v10a,功率很足嘛,
        源代碼 #include<reg51.h> sbit datout=P2^0; sbit k1=P2^1; sbit k2=P2^2; //sbit k1=P3^3; //sbit k2=P3^4; sbit led1=P2^3; sbit led2=P2^4; sbit bell=P2^0; void delay(int t) { char i; while(t--) { for(i=0;i<100;i++); } } void timerinit() { PCON &= 0x7F; //波特率不倍速 SCON = 0x50; //8位數(shù)據(jù),可變波特率 TMOD &= 0x0F; //清除定時(shí)器1模式位 TMOD |= 0x20; //設(shè)定定時(shí)器1為8位自動(dòng)重裝方式 TL1 = 0xe8; //設(shè)定定時(shí)初值 //1200 TH1 = 0xe8; //設(shè)定定時(shí)器重裝值 ET1 = 0; //禁止定時(shí)器1中斷 TR1 = 1; //啟動(dòng)定時(shí)器1 EA=1; } void main() { int i; timerinit(); while(1) { if(k1==0) { delay(10); if(k1==0) //按鍵動(dòng)作被接受 { while(k1==0); //等待松手 bell=0;led1=~led1; //按鍵指示部分 delay(10); bell=1; for(i=0;i<5;i++) //發(fā)送按鍵1的編碼f0發(fā)送5次 { SBUF=0xf0; while(TI==0); TI=0; } } } if(k2==0) { delay(10); if(k2==0) { while(k2==0); bell=0;led2=~led2; delay(10); for(i=0;i<5;i++)//按鍵2的編碼0f,發(fā)送5次 { SBUF=0x0f; while(TI==0); TI=0; } } } } } 幫頂?shù)?有代碼你更不會(huì)回帖,對(duì)此說(shuō)呵呵 接收端的代碼 #include<reg51.h> sbit jk1=P2^0; sbit jk2=P2^1; sbit led1=P2^6; sbit led2=P2^7; void delay(int t) { char i; while(t--) { for(i=0;i<100;i++); } } void timerinit() { PCON &= 0x7F; //波特率不倍速 SCON = 0x50; //8位數(shù)據(jù),可變波特率 TMOD &= 0x0F; //清除定時(shí)器1模式位 TMOD |= 0x20; //設(shè)定定時(shí)器1為8位自動(dòng)重裝方式 TL1 = 0xe8; //設(shè)定定時(shí)初值 //1200 TH1 = 0xe8; //設(shè)定定時(shí)器重裝值 ET1 = 0; //禁止定時(shí)器1中斷 TR1 = 1; //啟動(dòng)定時(shí)器1 ES=1; EA=1; } void main() { timerinit(); while(1) { } } /*串口接收*/ void uart() interrupt 4 { static unsigned char dat; if(RI) //接收中斷 { RI=0; //讀取接受到的數(shù)據(jù) dat=SBUF; } //如果是按鍵1的編碼 if(dat==0xf0) { REN=0; //繼電器開關(guān)受控做出反應(yīng) times=0; delay(200); //延時(shí)確保受控電器不致于頻繁開關(guān) jk1=~jk1; led1=~led1; //開關(guān)指示燈狀態(tài) ,燈滅斷開,燈亮接通 dat=0; REN=1; } if(dat==0x0f) { REN=0; delay(200); jk2=~jk2; led2=~led2; dat=0; } }
|
評(píng)分
-
查看全部評(píng)分
|