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

433M无线解码程序

[复制链接]

该用户从未签到

5

主题

2

回帖

87

积分

注册会员

积分
87
发表于 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);
}


回复 送花

使用道具 举报

该用户从未签到

45

主题

2912

回帖

6546

积分

超级版主

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

使用道具 举报

  • TA的每日心情
    开心
    昨天 08:35
  • 签到天数: 112 天

    [LV.6]常住居民II

    8

    主题

    67

    回帖

    668

    积分

    高级会员

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

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

    使用道具 举报

  • TA的每日心情
    开心
    昨天 08:35
  • 签到天数: 112 天

    [LV.6]常住居民II

    8

    主题

    67

    回帖

    668

    积分

    高级会员

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

    使用道具 举报

  • TA的每日心情
    开心
    昨天 08:35
  • 签到天数: 112 天

    [LV.6]常住居民II

    8

    主题

    67

    回帖

    668

    积分

    高级会员

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

    找到了  改下头文件

    解码程序 - HC89F0411P.rar

    49.57 KB, 下载次数: 10

    点评

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

    使用道具 举报

    该用户从未签到

    45

    主题

    2912

    回帖

    6546

    积分

    超级版主

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

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

    使用道具 举报

  • TA的每日心情
    开心
    昨天 08:35
  • 签到天数: 112 天

    [LV.6]常住居民II

    8

    主题

    67

    回帖

    668

    积分

    高级会员

    积分
    668
    发表于 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
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    45

    主题

    2912

    回帖

    6546

    积分

    超级版主

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

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

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

    使用道具 举报

  • TA的每日心情
    开心
    昨天 08:35
  • 签到天数: 112 天

    [LV.6]常住居民II

    8

    主题

    67

    回帖

    668

    积分

    高级会员

    积分
    668
    发表于 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
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    45

    主题

    2912

    回帖

    6546

    积分

    超级版主

    积分
    6546
    发表于 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-4-27 14:39 , Processed in 0.083271 second(s), 74 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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