找回密码
 立即注册
查看: 192|回复: 10

433M无线解码程序

[复制链接]
  • TA的每日心情
    奋斗
    2024-4-27 17:55
  • 签到天数: 1 天

    [LV.1]初来乍到

    5

    主题

    2

    回帖

    89

    积分

    注册会员

    积分
    89
    发表于 2024-3-25 19:13:10 | 显示全部楼层 |阅读模式
    各位大神,我有找了一个433M无线解码程序,解码不成功,都无法执行到取码,求赐教。!!!

    89C522RC的芯片


    #include <reg51.h>
    #include <intrins.h>

    #define uchar unsigned char
    #define uint  unsigned int


    sbit RF                           =        P0^5;           //信号输入
    sbit LED                =        P2^0;           //         P3^4;
                                                                                             
    sbit D0                        =        P2^1;          //用于后面按位取键值        3^6;
    sbit D1                        =        P2^2;          //        3^7;
    sbit D2                        =        P2^3;          //P4^1;
    sbit D3                        =        P2^4;           // P4^2;
    sbit VT                        =        P3^5;     //解码成功



    bit  decode_ok;                 //解码成功标志
    uchar  hh_w,ll_w;           //高低电平宽度
    uchar  ma_x;                //接收到第几位编码
    uchar  bma1,bma2,bma3,bma4; //四个字节存放编码   第一次的
    uchar idata mmb1,mmb2,mmb3,mmb4; // 存放编码  第二次  当两次一样才算一次有效按键

    bit rf_ok1,rf_ok2;                 //临时成功接收标志  分别第一次和第二次
    bit rf_ok;               //接收成功 可以解码
    bit old_rc5;             //接收到24为码可以开始解码
    bit tb_ok;               //同步码接收成功标志

    uchar  mma1,mma2,mma3,mma4; //四个字节用来存放编码
    uchar temp_h;temp_l;
    bit bt_auto;     //自动设置遥控接收波特率标志 根据码不同的长度做不同的波特率
    uint s,s1;//用于系统延迟 分别为留时间做第二次解码 和 留时间实现功能  目的保证系统稳定性


    void timeint() interrupt 1    //定时器中断
       {          
    //          D0=0X80;
    //         TL0=0xb5;
    //        TH0=0xfb;
              if(!bt_auto)          //
                       {
                                        TL0=0x70;             //   90
                                    TH0=0xfB;                                //fc     定时器100us
                            }
                    else
                            {
                                    TL0=temp_l;             //
                                    TH0=temp_h;                       
                            }

              TF0=0;                //
               
          if (!RF)
           { ll_w++;old_rc5=0; }           //接收到低电平
                  else                                      // 接收到高电平
                   { //D0=1;
                     hh_w++;
             if (!old_rc5)                          // 检测到从低到高的跳变  表示接收到一个完整的(高-低)电平周期
              {
                      if (((hh_w>=2)&&(hh_w<=8))&&((ll_w>=50)&&(ll_w<=190)))          // 满足同步码时长   H:0.4ms L:12ms
                 {         //D0=1;
                                    if((ll_w>=110)&&(ll_w<=140)){ma_x=0;tb_ok=1;bma1=0; bma2=0; bma3=0; bt_auto=0;}         //根据更精确的时长确定波特率和后面的定时器长度 保证精确
                                       else
                                            {  
                                              if((ll_w>140)&&(ll_w<=160))
                                                      { ma_x=0;tb_ok=1;bma1=0; bma2=0; bma3=0; bt_auto=1;temp_h=0xfe;temp_l=0x6b; }                                  
                                               else
                                                     {  
                                                      if((ll_w>160)&&(ll_w<=190))
                                                              { ma_x=0;tb_ok=1;bma1=0; bma2=0; bma3=0; bt_auto=1;temp_h=0xfd;temp_l=0xdc; }
                                                            else
                                                                    {                                          
                                                                      if((ll_w>70)&&(ll_w<=90))
                                                                              {ma_x=0;tb_ok=1;bma1=0; bma2=0; bma3=0; bt_auto=1;temp_h=0xff;temp_l=0x30; }
                                                                            else
                                                                                    {
                                                                                      if((ll_w>90)&&(ll_w<=110))
                                                                                              {ma_x=0;tb_ok=1;bma1=0; bma2=0; bma3=0; bt_auto=1;temp_h=0xff;temp_l=0x00; }
                                                                                            else
                                                                                              {
                                                                                                     if((ll_w>=50)&&(ll_w<=70))
                                                                                                              {ma_x=0;tb_ok=1;bma1=0; bma2=0; bma3=0; bt_auto=1;temp_h=0xff;temp_l=0x7a; }                                                                       
                                                                                              }
                                                                                    }
                                                                    }                                                          
                                                     }
                                              }                       
                 }
                else if ((tb_ok)&&((ll_w>=10)&&(ll_w<=14)))         //  已经接收到同步码  且下一个电平周期的低电平时长满足H:0.4ms L:1.2ms 判0
                                    {        
                                            ma_x++;                        //取编码的数量  达到24表示接收到一个完整的码
                                            if(ma_x>23)
                                                    {
                                                       if(!rf_ok1)//第一次接收到
                                                              {
                                                              mma1=bma1;mma2=bma2;mma3=bma3;mma4=bma4;//将接收到的码放入解码寄存器    (第一次解码的寄存器)                       
                                  rf_ok1=1;                                // 可以解码
                                  tb_ok=0;
                                                              bt_auto=0;
                                                              s=1500;                                                               
                                                            }
                                                            else  //第二次接收到
                                                                    {
                                                                      mmb1=bma1;mmb2=bma2;mmb3=bma3;mmb4=bma4;//将接收到的码放入解码寄存器 (第二次解码的寄存器)                                          
                                      rf_ok2=1;                                //可以解码
                                      tb_ok=0;
                                                                      bt_auto=0;                                                                                                                                                       
                                                                    }
                                                    }
                                     }  
                else if ((tb_ok)&&((ll_w>=2)&&(ll_w<=8)))                   // 已经接收到同步码  且下一个电平周期的低电平时长满足H:1.2ms L:0.4ms 判1     
                      { switch (ma_x)  //判1   所以按位或等于取1
                         {
                                               case 0 : { bma1=bma1 | 0x80; break; }//遥控编码第一位
                           case 1 : { bma1=bma1 | 0x40; break; }
                           case 2 : { bma1=bma1 | 0x20; break; }
                           case 3 : { bma1=bma1 | 0x10; break; }
                           case 4 : { bma1=bma1 | 0x08; break; }
                           case 5 : { bma1=bma1 | 0x04; break; }
                           case 6 : { bma1=bma1 | 0x02; break; }
                           case 7 : { bma1=bma1 | 0x01; break; }
                           case 8 : { bma2=bma2 | 0x80; break; }
                           case 9 : { bma2=bma2 | 0x40; break; }
                           case 10: { bma2=bma2 | 0x20; break; }
                           case 11: { bma2=bma2 | 0x10; break; }
                           case 12: { bma2=bma2 | 0x08; break; }
                           case 13: { bma2=bma2 | 0x04; break; }
                           case 14: { bma2=bma2 | 0x02; break; }
                           case 15: { bma2=bma2 | 0x01; break; }
                           case 16: { bma3=bma3 | 0x80; break; }
                           case 17: { bma3=bma3 | 0x40; break; }
                           case 18: { bma3=bma3 | 0x20; break; }
                           case 19: { bma3=bma3 | 0x10; break; }
                           case 20: { bma4=bma4 | 0x80; break; }//°′?ü×′ì?μú1??
                           case 21: { bma4=bma4 | 0x40; break; }
                           case 22: { bma4=bma4 | 0x20; break; }
                           case 23: { bma4=bma4 | 0x10;
                                               if(!rf_ok1)
                                                                              { mma1=bma1;mma2=bma2;mma3=bma3;mma4=bma4;//将接收到的编码复制到寄存器中  前面是最后一个键值为0  这里是最后一个键值为1        (为1的第一次用于解码的寄存器)                  
                                              rf_ok1=1;                                // 可以解码
                                              tb_ok=0;
                                                                              bt_auto=0;
                                                                              s=1500;
                                                                              break;                                                                       
                                                                            }
                                                                            else
                                                                                    {
                                                                                      mmb1=bma1;mmb2=bma2;mmb3=bma3;mmb4=bma4;//将接收到的编码复制到寄存器中  前面是最后一个键值为0  这里是最后一个键值为1      (为1的第二次用于解码的寄存器)
                                                      rf_ok2=1;                                // 可以解码
                                                      tb_ok=0;
                                                                                      bt_auto=0;
                                                                                      break;                                                                                                                                                       
                                                                                    }
                                       
                                    }
                         }
                        ma_x++;
                                           
                      }
                else {ma_x=0; tb_ok=0; bt_auto=0;bma1=0; bma2=0; bma3=0; bma4=0;hh_w=1;ll_w=0;}      //没有接收到同步码
                   ll_w=0;hh_w=1;
                               }         
             old_rc5=1;      // 记录本次电平
           }
            if(rf_ok1)                //成功接收两次编码有效
                    {
                            s--;
                            if(!s) rf_ok1=0;
                            if(rf_ok2)
                                    {
                                      if((mma1==mmb1)&&(mma2==mmb2)&&(mma3==mmb3)&&(mma4==mmb4))//两次编码相等  为有效
                                               {
                                              rf_ok=1;   //解码有效 接收成功的标志
                                              rf_ok1=0;
                                              rf_ok2=0;                                         
                                             }
                                             else
                                               {
                                                      rf_ok=0;
                                                      rf_ok1=0;
                                                      rf_ok2=0;                         
                                               }                                                 
                                    }                                       
                    }
        if((rf_ok))                 //解码有效  接收成功
                            {         
                                    EA=0;
                                    rf_ok=0;                                                                                       
    //                                D3=mma4 & 0x80;    //取出键码
    //                                D2=mma4 & 0x40;
    //                                D1=mma4 & 0x20;
    //                                D0=mma4 & 0x10;
    ////                                D4=mma4 & 0xC0;
                                    D0=1;
                                    decode_ok=1;
                                    VT=0;               
                                    s1=1500;
                                    EA=1;
                            }


       if(decode_ok)   //接收成功标志
                      {
                            s1--;
                            if(!s1)
                                    {
                                            VT=1;//接收成功亮灯
                                            decode_ok=0;//接收成功标志位置零 用于下一次
                                    }                                  
                      }
       }

    void system_start()   //系统初始化       
    {       
    //         AUXR=0xb5;          
    //        P0M0=0x01;
    //        P0M1=0x20;
    //        P3M0=0xC0;
    //        P3M1=0x00;
    //        P4M0=0x06;
    //        P4M1=0x00;
            P0=0xfe;
    //         P3=0x3f;         //将LED灯拉低电平 判高电平亮
    //        P4=0xf9;
              TMOD =   0x11;   //T1/T0改为定时器方式1
            TL0=0xb5;
            TH0=0xfb;
            ET0=1;
            TR0=1;                       
            EA=1;
    }

    void main()
    {
      system_start();
      D0=0;
      while(1);
    }


    #include <reg51.h>
    #include <intrins.h>

    #define uchar unsigned char
    #define uint  unsigned int


    sbit RF                           =        P0^5;           //信号输入
    sbit LED                =        P2^0;           //         P3^4;
                                                                                             
    sbit D0                        =        P2^1;          //用于后面按位取键值        3^6;
    sbit D1                        =        P2^2;          //        3^7;
    sbit D2                        =        P2^3;          //P4^1;
    sbit D3                        =        P2^4;           // P4^2;
    sbit VT                        =        P3^5;     //解码成功



    bit  decode_ok;                 //解码成功标志
    uchar  hh_w,ll_w;           //高低电平宽度
    uchar  ma_x;                //接收到第几位编码
    uchar  bma1,bma2,bma3,bma4; //四个字节存放编码   第一次的
    uchar idata mmb1,mmb2,mmb3,mmb4; // 存放编码  第二次  当两次一样才算一次有效按键

    bit rf_ok1,rf_ok2;                 //临时成功接收标志  分别第一次和第二次
    bit rf_ok;               //接收成功 可以解码
    bit old_rc5;             //接收到24为码可以开始解码
    bit tb_ok;               //同步码接收成功标志

    uchar  mma1,mma2,mma3,mma4; //四个字节用来存放编码
    uchar temp_h;temp_l;
    bit bt_auto;     //自动设置遥控接收波特率标志 根据码不同的长度做不同的波特率
    uint s,s1;//用于系统延迟 分别为留时间做第二次解码 和 留时间实现功能  目的保证系统稳定性


    void timeint() interrupt 1    //定时器中断
       {          
    //          D0=0X80;
    //         TL0=0xb5;
    //        TH0=0xfb;
              if(!bt_auto)          //
                       {
                                        TL0=0x70;             //   90
                                    TH0=0xfB;                                //fc     定时器100us
                            }
                    else
                            {
                                    TL0=temp_l;             //
                                    TH0=temp_h;                       
                            }

              TF0=0;                //
               
          if (!RF)
           { ll_w++;old_rc5=0; }           //接收到低电平
                  else                                      // 接收到高电平
                   { //D0=1;
                     hh_w++;
             if (!old_rc5)                          // 检测到从低到高的跳变  表示接收到一个完整的(高-低)电平周期
              {
                      if (((hh_w>=2)&&(hh_w<=8))&&((ll_w>=50)&&(ll_w<=190)))          // 满足同步码时长   H:0.4ms L:12ms
                 {         //D0=1;
                                    if((ll_w>=110)&&(ll_w<=140)){ma_x=0;tb_ok=1;bma1=0; bma2=0; bma3=0; bt_auto=0;}         //根据更精确的时长确定波特率和后面的定时器长度 保证精确
                                       else
                                            {  
                                              if((ll_w>140)&&(ll_w<=160))
                                                      { ma_x=0;tb_ok=1;bma1=0; bma2=0; bma3=0; bt_auto=1;temp_h=0xfe;temp_l=0x6b; }                                  
                                               else
                                                     {  
                                                      if((ll_w>160)&&(ll_w<=190))
                                                              { ma_x=0;tb_ok=1;bma1=0; bma2=0; bma3=0; bt_auto=1;temp_h=0xfd;temp_l=0xdc; }
                                                            else
                                                                    {                                          
                                                                      if((ll_w>70)&&(ll_w<=90))
                                                                              {ma_x=0;tb_ok=1;bma1=0; bma2=0; bma3=0; bt_auto=1;temp_h=0xff;temp_l=0x30; }
                                                                            else
                                                                                    {
                                                                                      if((ll_w>90)&&(ll_w<=110))
                                                                                              {ma_x=0;tb_ok=1;bma1=0; bma2=0; bma3=0; bt_auto=1;temp_h=0xff;temp_l=0x00; }
                                                                                            else
                                                                                              {
                                                                                                     if((ll_w>=50)&&(ll_w<=70))
                                                                                                              {ma_x=0;tb_ok=1;bma1=0; bma2=0; bma3=0; bt_auto=1;temp_h=0xff;temp_l=0x7a; }                                                                       
                                                                                              }
                                                                                    }
                                                                    }                                                          
                                                     }
                                              }                       
                 }
                else if ((tb_ok)&&((ll_w>=10)&&(ll_w<=14)))         //  已经接收到同步码  且下一个电平周期的低电平时长满足H:0.4ms L:1.2ms 判0
                                    {        
                                            ma_x++;                        //取编码的数量  达到24表示接收到一个完整的码
                                            if(ma_x>23)
                                                    {
                                                       if(!rf_ok1)//第一次接收到
                                                              {
                                                              mma1=bma1;mma2=bma2;mma3=bma3;mma4=bma4;//将接收到的码放入解码寄存器    (第一次解码的寄存器)                       
                                  rf_ok1=1;                                // 可以解码
                                  tb_ok=0;
                                                              bt_auto=0;
                                                              s=1500;                                                               
                                                            }
                                                            else  //第二次接收到
                                                                    {
                                                                      mmb1=bma1;mmb2=bma2;mmb3=bma3;mmb4=bma4;//将接收到的码放入解码寄存器 (第二次解码的寄存器)                                          
                                      rf_ok2=1;                                //可以解码
                                      tb_ok=0;
                                                                      bt_auto=0;                                                                                                                                                       
                                                                    }
                                                    }
                                     }  
                else if ((tb_ok)&&((ll_w>=2)&&(ll_w<=8)))                   // 已经接收到同步码  且下一个电平周期的低电平时长满足H:1.2ms L:0.4ms 判1     
                      { switch (ma_x)  //判1   所以按位或等于取1
                         {
                                               case 0 : { bma1=bma1 | 0x80; break; }//遥控编码第一位
                           case 1 : { bma1=bma1 | 0x40; break; }
                           case 2 : { bma1=bma1 | 0x20; break; }
                           case 3 : { bma1=bma1 | 0x10; break; }
                           case 4 : { bma1=bma1 | 0x08; break; }
                           case 5 : { bma1=bma1 | 0x04; break; }
                           case 6 : { bma1=bma1 | 0x02; break; }
                           case 7 : { bma1=bma1 | 0x01; break; }
                           case 8 : { bma2=bma2 | 0x80; break; }
                           case 9 : { bma2=bma2 | 0x40; break; }
                           case 10: { bma2=bma2 | 0x20; break; }
                           case 11: { bma2=bma2 | 0x10; break; }
                           case 12: { bma2=bma2 | 0x08; break; }
                           case 13: { bma2=bma2 | 0x04; break; }
                           case 14: { bma2=bma2 | 0x02; break; }
                           case 15: { bma2=bma2 | 0x01; break; }
                           case 16: { bma3=bma3 | 0x80; break; }
                           case 17: { bma3=bma3 | 0x40; break; }
                           case 18: { bma3=bma3 | 0x20; break; }
                           case 19: { bma3=bma3 | 0x10; break; }
                           case 20: { bma4=bma4 | 0x80; break; }//°′?ü×′ì?μú1??
                           case 21: { bma4=bma4 | 0x40; break; }
                           case 22: { bma4=bma4 | 0x20; break; }
                           case 23: { bma4=bma4 | 0x10;
                                               if(!rf_ok1)
                                                                              { mma1=bma1;mma2=bma2;mma3=bma3;mma4=bma4;//将接收到的编码复制到寄存器中  前面是最后一个键值为0  这里是最后一个键值为1        (为1的第一次用于解码的寄存器)                  
                                              rf_ok1=1;                                // 可以解码
                                              tb_ok=0;
                                                                              bt_auto=0;
                                                                              s=1500;
                                                                              break;                                                                       
                                                                            }
                                                                            else
                                                                                    {
                                                                                      mmb1=bma1;mmb2=bma2;mmb3=bma3;mmb4=bma4;//将接收到的编码复制到寄存器中  前面是最后一个键值为0  这里是最后一个键值为1      (为1的第二次用于解码的寄存器)
                                                      rf_ok2=1;                                // 可以解码
                                                      tb_ok=0;
                                                                                      bt_auto=0;
                                                                                      break;                                                                                                                                                       
                                                                                    }
                                       
                                    }
                         }
                        ma_x++;
                                           
                      }
                else {ma_x=0; tb_ok=0; bt_auto=0;bma1=0; bma2=0; bma3=0; bma4=0;hh_w=1;ll_w=0;}      //没有接收到同步码
                   ll_w=0;hh_w=1;
                               }         
             old_rc5=1;      // 记录本次电平
           }
            if(rf_ok1)                //成功接收两次编码有效
                    {
                            s--;
                            if(!s) rf_ok1=0;
                            if(rf_ok2)
                                    {
                                      if((mma1==mmb1)&&(mma2==mmb2)&&(mma3==mmb3)&&(mma4==mmb4))//两次编码相等  为有效
                                               {
                                              rf_ok=1;   //解码有效 接收成功的标志
                                              rf_ok1=0;
                                              rf_ok2=0;                                         
                                             }
                                             else
                                               {
                                                      rf_ok=0;
                                                      rf_ok1=0;
                                                      rf_ok2=0;                         
                                               }                                                 
                                    }                                       
                    }
        if((rf_ok))                 //解码有效  接收成功
                            {         
                                    EA=0;
                                    rf_ok=0;                                                                                       
    //                                D3=mma4 & 0x80;    //取出键码
    //                                D2=mma4 & 0x40;
    //                                D1=mma4 & 0x20;
    //                                D0=mma4 & 0x10;
    ////                                D4=mma4 & 0xC0;
                                    D0=1;
                                    decode_ok=1;
                                    VT=0;               
                                    s1=1500;
                                    EA=1;
                            }


       if(decode_ok)   //接收成功标志
                      {
                            s1--;
                            if(!s1)
                                    {
                                            VT=1;//接收成功亮灯
                                            decode_ok=0;//接收成功标志位置零 用于下一次
                                    }                                  
                      }
       }

    void system_start()   //系统初始化       
    {       
    //         AUXR=0xb5;          
    //        P0M0=0x01;
    //        P0M1=0x20;
    //        P3M0=0xC0;
    //        P3M1=0x00;
    //        P4M0=0x06;
    //        P4M1=0x00;
            P0=0xfe;
    //         P3=0x3f;         //将LED灯拉低电平 判高电平亮
    //        P4=0xf9;
              TMOD =   0x11;   //T1/T0改为定时器方式1
            TL0=0xb5;
            TH0=0xfb;
            ET0=1;
            TR0=1;                       
            EA=1;
    }

    void main()
    {
      system_start();
      D0=0;
      while(1);
    }


    回复 送花

    使用道具 举报

    该用户从未签到

    46

    主题

    2966

    回帖

    6685

    积分

    超级版主

    积分
    6685
    发表于 2024-3-25 21:28:17 | 显示全部楼层
    单单发个程序是看不懂的,完全不知道你的编码,是没人可以猜测的。发下你的编码波形吧。
    315M、433M这种收发模块,做好使用朝外差的(带晶振,便宜、可靠、省电),编码最好使用曼彻斯特编码(归0码,最合适无线电收发)。
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    6 小时前
  • 签到天数: 119 天

    [LV.6]常住居民II

    8

    主题

    67

    回帖

    698

    积分

    高级会员

    积分
    698
    发表于 2024-3-30 08:40:13 | 显示全部楼层
    梁工 发表于 2024-3-25 21:28
    单单发个程序是看不懂的,完全不知道你的编码,是没人可以猜测的。发下你的编码波形吧。
    315M、433M这种收 ...

    之前写过一个,我回家找找看能不能找到,找到我再上传给你
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    6 小时前
  • 签到天数: 119 天

    [LV.6]常住居民II

    8

    主题

    67

    回帖

    698

    积分

    高级会员

    积分
    698
    发表于 2024-3-30 08:40:58 | 显示全部楼层
    之前写过一个,我回家找找看能不能找到,找到我再上传给你
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    6 小时前
  • 签到天数: 119 天

    [LV.6]常住居民II

    8

    主题

    67

    回帖

    698

    积分

    高级会员

    积分
    698
    发表于 2024-3-30 08:45:58 | 显示全部楼层
    本帖最后由 国学芯用 于 2024-3-30 08:59 编辑

    找到了  改下头文件

    解码程序 - HC89F0411P.rar

    49.57 KB, 下载次数: 18

    点评

    我要的是你现在的编码波形,才能知道解码方式,不是要你以前的某个程序。  详情 回复 发表于 2024-3-30 10:53
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    46

    主题

    2966

    回帖

    6685

    积分

    超级版主

    积分
    6685
    发表于 2024-3-30 10:53:32 | 显示全部楼层
    小坤 发表于 2024-3-30 08:45
    找到了  改下头文件

    我要的是你现在的编码波形,才能知道解码方式,不是要你以前的某个程序。
    这种简单编码类似红外遥控的处理方式即可。
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    6 小时前
  • 签到天数: 119 天

    [LV.6]常住居民II

    8

    主题

    67

    回帖

    698

    积分

    高级会员

    积分
    698
    发表于 2024-3-30 20:53:31 | 显示全部楼层
    小坤 发表于 2024-3-30 08:45
    找到了  改下头文件

    编码芯片EV1527

    点评

    EV1527这种简单不归0编码,收发都很容易实现。下面是接收: 上升沿捕获低电平时间,下降沿捕获高电平时间,也可以用定时器中断采样计数方式。 H4+L128:同步头。 H4+L12:数据0 H12+L4:数据1 简单处理即可,比曼彻  详情 回复 发表于 2024-3-30 22:47
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    46

    主题

    2966

    回帖

    6685

    积分

    超级版主

    积分
    6685
    发表于 2024-3-30 22:47:21 | 显示全部楼层

    EV1527这种简单不归0编码,收发都很容易实现。下面是接收:
    上升沿捕获低电平时间,下降沿捕获高电平时间,也可以用定时器中断采样计数方式。
    H4+L128:同步头。
    H4+L12:数据0
    H12+L4:数据1

    简单处理即可,比曼彻斯特编码简单得多,但效果没有曼彻斯特编码好。
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    6 小时前
  • 签到天数: 119 天

    [LV.6]常住居民II

    8

    主题

    67

    回帖

    698

    积分

    高级会员

    积分
    698
    发表于 2024-3-31 15:29:41 | 显示全部楼层
    梁工 发表于 2024-3-30 22:47
    EV1527这种简单不归0编码,收发都很容易实现。下面是接收:
    上升沿捕获低电平时间,下降沿捕获高电平时间 ...

    现在这种简单的4键 315MHZ/433MHZ 基本采用EV1527发送,然后接收使用个单片机解码

    点评

    可以使用8脚的MCU,STC8G1K08-SOP8,一个IO输入信号,一个IO接解码指示灯,4个IO输出,刚好够。  详情 回复 发表于 2024-3-31 16:21
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    46

    主题

    2966

    回帖

    6685

    积分

    超级版主

    积分
    6685
    发表于 2024-3-31 16:21:51 | 显示全部楼层
    小坤 发表于 2024-3-31 15:29
    现在这种简单的4键 315MHZ/433MHZ 基本采用EV1527发送,然后接收使用个单片机解码 ...

    可以使用8脚的MCU,STC8G1K08-SOP8,一个IO输入信号,一个IO接解码指示灯,4个IO输出,刚好够。
    回复 支持 反对 送花

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

    GMT+8, 2024-5-8 15:27 , Processed in 0.079311 second(s), 69 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

    快速回复 返回顶部 返回列表