315m的无线模块51 两路无线开关

之前买了快315m的无线模块
一直没用,不知道干点什么好,闲着没事呢就用它做了个无线开关遥控模块,开关数是两路,每路是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位数据,可变波特率    
    TMOD &= 0x0F;        //清除定时器1模式位
    TMOD |= 0x20;        //设定定时器1为8位自动重装方式
    TL1 = 0xe8;        //设定定时初值       //1200
    TH1 = 0xe8;        //设定定时器重装值
    ET1 = 0;        //禁止定时器1中断
    TR1 = 1;        //启动定时器1
    EA=1;
}
void main()
{
    int i;
    timerinit();
    while(1)
    {
        if(k1==0)                
        {
            delay(10);
            if(k1==0)               //按键动作被接受
            {
                while(k1==0);       //等待松手
                bell=0;led1=~led1; //按键指示部分
                delay(10);
                bell=1;                    
                for(i=0;i<5;i++)  //发送按键1的编码f0发送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,发送5次
                {
                    SBUF=0x0f;
                    while(TI==0);
                    TI=0;
                }            
            }
        }
     }
}
帮顶的,有代码你更不会回帖,对此说呵呵
接收端的代码

#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位数据,可变波特率    
    TMOD &= 0x0F;        //清除定时器1模式位
    TMOD |= 0x20;        //设定定时器1为8位自动重装方式
    TL1 = 0xe8;        //设定定时初值       //1200
    TH1 = 0xe8;        //设定定时器重装值
    ET1 = 0;        //禁止定时器1中断
    TR1 = 1;        //启动定时器1
    ES=1;
    EA=1;
}
void main()
{
    timerinit();
    while(1)
    {        
    }
}
/*串口接收*/
void uart() interrupt 4
{
    static unsigned char  dat;
    if(RI)                               //接收中断
    {    
        RI=0;                           //读取接受到的数据
        dat=SBUF;
    }                                   //如果是按键1的编码
    if(dat==0xf0)
    {                          
        REN=0;                        //继电器开关受控做出反应                 times=0;    
        delay(200);                    //延时确保受控电器不致于频繁开关            
        jk1=~jk1;
        led1=~led1;                   //开关指示灯状态    ,灯灭断开,灯亮接通
        dat=0;
        REN=1;    
    }
    if(dat==0x0f)
    {                
        REN=0;
        delay(200);                
        jk2=~jk2;
        led2=~led2;
        dat=0;

    }
}

315m的无线模块51 两路无线开关》有1条评论

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注