久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 10992|回復: 32
打印 上一主題 下一主題
收起左側

315-433MHZ單片機學習遙控器無線解碼程序

  [復制鏈接]
跳轉到指定樓層
樓主
ID:127035 發表于 2023-6-10 22:32 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
315-433MHZ學習遙控器芯片設置說明

支持1527  2264  2260  2262   SC5211  HS2240等解碼,自動適應振蕩電阻
2260 2262 2264 如果不進行人工地址編碼,好多個遙控器地址編碼一樣的,只要學習一個遙控器,所有的遙控器都能同時用

一:如何設置自鎖,互鎖,點動輸出
1:斷電。按住學習鍵然后上電保持1-2秒鐘后松開,學習燈閃3次,設置為自鎖輸出。
2:斷電。按住學習鍵然后上電保持1-2秒鐘后松開,學習燈閃1次,設置為互鎖輸出。
3:斷電。按住學習鍵然后上電保持1-2秒鐘后松開,學習燈閃2次,設置為點動輸出。
二:遙控器學習:
以上輸出模式設置后斷開電源,然后上電,按一下學習鍵,學習燈保持亮,再按遙控器上的任意一鍵,學習燈熄滅,遙控器學習成功。重復上述操作可以學習多達20個遙控器。1527 2260 2262 2264等的遙控器可以混合學習使用。
三:如何清空已學習過的遙控器:
斷電,按住學習鍵然后上電保持4秒以上再松開按鍵,學習燈閃爍4次,說明已學習過的遙控器已被清空。

電路原理圖如下:


下載燒錄說明
IRC頻率選11.0592M
如果已燒錄過的單片機,燒錄前必須下載后恢復下出廠設置。才能再燒錄,新單片機不用恢復
操作:按住學習鍵,上電保持10秒以上松開即可。

單片機源程序如下:
  1. //內部晶振:11.0592M
  2. //測試芯片:STC15F104E/STC11F04W        
  3. //By David Xu 2020/08/18
  4. //硬件最簡版
  5. //實現2262、1527解碼輸出,學習、自適應多阻值,片內EEPROM存儲相關信息

  6. #include <reg52.h>
  7. #include <intrins.h>
  8.                                                          
  9. sfr AUXR=0x8e;

  10. sfr IAP_DATA    = 0xC2;                //片內EEPROM資源聲明
  11. sfr IAP_ADDRH   = 0xC3;
  12. sfr IAP_ADDRL   = 0xC4;
  13. sfr IAP_CMD     = 0xC5;
  14. sfr IAP_TRIG    = 0xC6;
  15. sfr IAP_CONTR   = 0xC7;

  16. sfr P3M0                =0xb2;
  17. sfr P3M1                =0xb1;

  18. #define uchar unsigned char
  19. #define uint  unsigned int

  20. sbit RF                        =        P3^4;          //射頻引腳定義                                                                                                                    
  21. sbit set                 =        P3^3;          //設置鍵定義
  22.          
  23. sbit keya                =        P3^0;          //第一路
  24. sbit keyb                =        P3^1;          //第二路  
  25. sbit keyc                =        P3^2;          //第三路
  26. sbit keyd                =        P3^5;          //第四路


  27. uint   ll_w;
  28. uchar  hh_w;           //高,低電平寬度
  29. uchar  ma_x;                //接收到第幾位編碼了
  30. uchar  idata bma1,bma2,bma3; //用于接收過程存放遙控編碼,編碼比較兩次,這是第一次
  31. uchar idata mmb1,mmb2,mmb3; //        用于接收過程存放遙控編碼,第二次
  32. uchar key_data;   
  33. uchar short_k;
  34. uchar  mma1,mma2,mma3; //用于解碼過程                        
  35. uchar L_M_select;
  36. uchar xplx;
  37. uint s,s1;

  38. bit old_rc5;             //保存上一次查詢到的電平狀態
  39. bit tb_ok;               //接收到同步的馬時置1
  40. bit rf_ok1,rf_ok2;                 //解碼過程中的臨時接收成功標志
  41. bit rf_ok;               //接收到一個完整的遙控命令后置1,通知解碼程序可以解碼了
  42. bit study;                                 //進入學習狀態標志
  43. bit system_int;                         //系統清零標志
  44. bit m1,m2,m3,m4;
  45. bit flag_zs;
  46. bit  decode_ok;                 //解碼成功

  47. uchar idata key_number[61];               


  48. void delay_1ms(uint x)    //1毫秒延時
  49. {
  50.         uchar b,c;
  51.         for(x;x>0;x--)
  52.                 {
  53.                         for(b=5;b>0;b--)
  54.                                 {
  55.                                         for(c=150;c>0;c--);
  56.                                 }
  57.                 }
  58. }

  59. void BB(uint size,uchar Number)
  60. {
  61.                                                                           
  62.         if(Number)
  63.                 {
  64.                         for(Number;Number>0;Number--)
  65.                                 {
  66.                                         set=0;
  67.                                          delay_1ms(size);
  68.                                         set=1;
  69.                                         delay_1ms(size);                                
  70.                                 }               
  71.                 }
  72.              else
  73.                            {
  74.                                 set=0;
  75.                                  delay_1ms(size);
  76.                                 set=1;                        
  77.                         }
  78. }

  79. void chick1527(uchar d)
  80. {
  81.         uchar u;
  82.         for(u=0;u<4;u++)
  83.                 {
  84.                         if(((d>>(u*2)) & 3)==2)
  85.                                  {
  86.                                          xplx=0x55;
  87.                                   }
  88.                 }
  89. }


  90. //====================================================
  91. /////////片內EEPROM讀寫驅動程序///////////////////////////
  92. //====================================================


  93. void IAP_Disable()           //關閉IAP
  94. {
  95.     //關閉IAP 功能, 清相關的特殊功能寄存器,使CPU 處于安全狀態,
  96.     //一次連續的IAP 操作完成之后建議關閉IAP 功能,不需要每次都關
  97.     IAP_CONTR = 0;      //關閉IAP 功能
  98.     IAP_CMD   = 0;      //清命令寄存器,使命令寄存器無命令,此句可不用
  99.     IAP_TRIG = 0;      //清命令觸發寄存器,使命令觸發寄存器無觸發,此句可不用
  100.     IAP_ADDRH = 0;
  101.     IAP_ADDRL = 0;
  102. }//



  103. //讀一字節,調用前需打開IAP 功能,入口:DPTR = 字節地址,返回:A = 讀出字節
  104. uchar read_add(uint addr)         //讀EEPROM
  105. {
  106.     IAP_DATA = 0x00;
  107.     IAP_CONTR = 0x84;         //打開IAP 功能, 設置Flash 操作等待時間
  108.     IAP_CMD = 0x01;                 //IAP/ISP/EEPROM 字節讀命令

  109.     IAP_ADDRH = addr>>8;    //設置目標單元地址的高8 位地址
  110.     IAP_ADDRL = addr&0xff;    //設置目標單元地址的低8 位地址

  111.     EA = 0;
  112.     IAP_TRIG = 0x5a;   //先送 46h,再送B9h 到ISP/IAP 觸發寄存器,每次都需如此
  113.     IAP_TRIG = 0xa5;   //送完 B9h 后,ISP/IAP 命令立即被觸發起動
  114.     _nop_();
  115.     EA = 1;
  116.     IAP_Disable(); //關閉IAP 功能, 清相關的特殊功能寄存器,使CPU 處于安全狀態,
  117.                     //一次連續的IAP 操作完成之后建議關閉IAP 功能,不需要每次都關
  118.     return (IAP_DATA);
  119. }//------------------------------------------------------------------------------


  120. //字節編程,調用前需打開IAP 功能,入口:DPTR = 字節地址, A= 須編程字節的數據
  121. void write_add(uint addr,uchar ch)         //直接寫EEPROM
  122. {
  123.     IAP_CONTR = 0x84;         //打開 IAP 功能, 設置Flash 操作等待時間
  124.     IAP_CMD = 0x02;                 //IAP/ISP/EEPROM 字節編程命令


  125.     IAP_ADDRH = addr>>8;    //設置目標單元地址的高8 位地址
  126.     IAP_ADDRL = addr&0xff;    //設置目標單元地址的低8 位地址

  127.     IAP_DATA = ch;                  //要編程的數據先送進IAP_DATA 寄存器
  128.     EA = 0;
  129.     IAP_TRIG = 0x5a;   //先送 46h,再送B9h 到ISP/IAP 觸發寄存器,每次都需如此
  130.     IAP_TRIG = 0xa5;   //送完 B9h 后,ISP/IAP 命令立即被觸發起動
  131.     _nop_();
  132.     EA = 1;
  133.     IAP_Disable(); //關閉IAP 功能, 清相關的特殊功能寄存器,使CPU 處于安全狀態,
  134.                     //一次連續的IAP 操作完成之后建議關閉IAP 功能,不需要每次都關
  135. }//------------------------------------------------------------------------------
  136. //擦除扇區, 入口:DPTR = 扇區地址


  137. void Sector_Erase(uint addr)         //扇區擦除
  138. {
  139.     IAP_CONTR = 0x84;         //打開IAP 功能, 設置Flash 操作等待時間
  140.     IAP_CMD = 0x03;                 //IAP/ISP/EEPROM 扇區擦除命令

  141.     IAP_ADDRH =addr>>8;    //設置目標單元地址的高8 位地址
  142.     IAP_ADDRL =addr&0xff;    //設置目標單元地址的低8 位地址

  143.     EA = 0;
  144.     IAP_TRIG = 0x5a;   //先送 46h,再送B9h 到ISP/IAP 觸發寄存器,每次都需如此
  145.     IAP_TRIG = 0xa5;   //送完 B9h 后,ISP/IAP 命令立即被觸發起動
  146.     _nop_();
  147.     EA = 1;
  148. }//------------------------------------------------------------------------------

  149. void timeint() interrupt 1    //遙控接收,通過定時器0中斷,定時去查詢
  150.    {           
  151.           uchar x1;
  152.           TF0=0;           // 清除T0中斷標志
  153.           TL0=0x30;           //b5
  154.           TH0=0xff;           //fe
  155.                         
  156.       if (!RF) { ll_w++;old_rc5=0; }           // 檢測到低電平 低電平時間加1,記錄本次電平狀態
  157.         else                                      // 檢測到高電平
  158.                { hh_w++;
  159.                  if (!old_rc5)                          // 檢測到從低到高的跳變,已檢測到一個完整(高-低)電平周期
  160.                   {
  161.                                  if (((hh_w*16)<ll_w) && (hh_w*38)>ll_w )          //判同步碼                           
  162.                        {                                 
  163.                                        
  164.                                                 short_k=ll_w/31;
  165.                                                 ma_x=0;
  166.                                                 tb_ok=1;
  167.                                                 bma1=0;
  168.                                                 bma2=0;
  169.                                                 bma3=0;          //根據不同 同步碼 寬度,T0加載不同初值                        
  170.                        }        
  171.             else if ((tb_ok)&&((ll_w>short_k*2)&&(ll_w<short_k*5)))         //   10/14
  172.                                 {         
  173.                                         ma_x++;                                //已經接收到同步碼,判0
  174.                                         if(ma_x>23)
  175.                                                 {
  176.                                                    if(!rf_ok1)
  177.                                                           {
  178.                                                                   mma1=bma1;mma2=bma2;mma3=bma3;//將接收到的編碼復制到解碼寄存器中                             
  179.                                                rf_ok1=1;                                // 通知解碼子程序可以解碼了
  180.                                                tb_ok=0;
  181.                                                                   s=5000;                                                               
  182.                                                         }
  183.                                                         else
  184.                                                                 {
  185.                                                                   mmb1=bma1;mmb2=bma2;mmb3=bma3;//將接收到的編碼復制到解碼寄存器中                             
  186.                                   rf_ok2=1;                                // 通知解碼子程序可以解碼了
  187.                                   tb_ok=0;                                                                                                                                                        
  188.                                                                 }
  189.                                                 }
  190.                                  }  
  191.             else if ((tb_ok)&&((ll_w>short_k/6)&&(ll_w<short_k*2)))                   //   3/5
  192.                   { switch (ma_x)
  193.                      {
  194.                                            case 0 : { bma1=bma1 | 0x80; break; }//遙控編碼第1位
  195.                        case 1 : { bma1=bma1 | 0x40; break; }
  196.                        case 2 : { bma1=bma1 | 0x20; break; }
  197.                        case 3 : { bma1=bma1 | 0x10; break; }
  198.                        case 4 : { bma1=bma1 | 0x08; break; }
  199.                        case 5 : { bma1=bma1 | 0x04; break; }
  200.                        case 6 : { bma1=bma1 | 0x02; break; }
  201.                        case 7 : { bma1=bma1 | 0x01; break; }
  202.                        case 8 : { bma2=bma2 | 0x80; break; }
  203.                        case 9 : { bma2=bma2 | 0x40; break; }
  204.                        case 10: { bma2=bma2 | 0x20; break; }
  205.                        case 11: { bma2=bma2 | 0x10; break; }
  206.                        case 12: { bma2=bma2 | 0x08; break; }
  207.                        case 13: { bma2=bma2 | 0x04; break; }
  208.                        case 14: { bma2=bma2 | 0x02; break; }
  209.                        case 15: { bma2=bma2 | 0x01; break; }
  210.                        case 16: { bma3=bma3 | 0x80; break; }
  211.                        case 17: { bma3=bma3 | 0x40; break; }
  212.                        case 18: { bma3=bma3 | 0x20; break; }
  213.                        case 19: { bma3=bma3 | 0x10; break; }
  214.                        case 20: { bma3=bma3 | 0x08; break; }//按鍵狀態第1位
  215.                        case 21: { bma3=bma3 | 0x04; break; }
  216.                        case 22: { bma3=bma3 | 0x02; break; }
  217.                        case 23: { bma3=bma3 | 0x01;
  218.                                           
  219.                                                                      if(!rf_ok1)
  220.                                                                           {
  221.                                                                           mma1=bma1;mma2=bma2;mma3=bma3;//將接收到的編碼復制到解碼寄存器中                             
  222.                                                     rf_ok1=1;                                // 通知解碼子程序可以解碼了
  223.                                                     tb_ok=0;
  224.                                                                           s=5000;
  225.                                                                           break;                                                                        
  226.                                                                         }
  227.                                                                         else
  228.                                                                                 {
  229.                                                                                   mmb1=bma1;mmb2=bma2;mmb3=bma3;//將再次接收到的編碼復制到解碼寄存器中,                             
  230.                                                   rf_ok2=1;                                // 通知解碼子程序可以解碼了
  231.                                                   tb_ok=0;
  232.                                                                                   break;                                                                                                                                                        
  233.                                                                                 }
  234.                                    
  235.                                 }
  236.                      }
  237.                     ma_x++;
  238.                                        
  239.                   }
  240.            else {ma_x=0; tb_ok=0; bma1=0; bma2=0; bma3=0;hh_w=1;ll_w=0;}      //接收到不符合的高-低電平序列
  241.                ll_w=0;hh_w=1;         
  242.                            }         
  243.          old_rc5=1;      // 記錄本次電平狀態
  244.        }

  245.         if(rf_ok1)                //規定時間內接受到2幀相同的編碼數據才有效
  246.                 {
  247.                         s--;
  248.                         if(!s) rf_ok1=0;
  249.                         if(rf_ok2)
  250.                                 {
  251.                                   if((mma1==mmb1)&&(mma2==mmb2)&&(mma3==mmb3))
  252.                                            {                                          
  253.                                                   rf_ok=1;rf_ok1=0;rf_ok2=0;                                                                                                            
  254.                                          }
  255.                                          else
  256.                                            {
  257.                                                   rf_ok=0;
  258.                                                   rf_ok1=0;
  259.                                                   rf_ok2=0;                                         
  260.                                            }
  261.                                                                   
  262.                                 }                                       
  263.                 }


  264.     if(rf_ok)                 //判斷是否是學習狀態&&()
  265.                         {         
  266.                                 
  267.                                 EA=0;
  268.                                 chick1527(mma1);         
  269.                             if(xplx!=0x55){chick1527(mma2);}
  270.                             if(xplx!=0x55){chick1527(mma3);}
  271.      
  272.                  if(xplx==0x55)
  273.                     {
  274.                               xplx=0;        
  275.                               key_data=mma3 & 0x0f;         
  276.                                         mma3=mma3>>4;
  277.                     }
  278.                   else      
  279.                      {               
  280.                           xplx=1;
  281.                                           key_data=0;
  282.                           for(x1=0;x1<4;x1++){if(((mma3>>(x1*2))&3)==3) key_data|=1<<x1;}                                   
  283.                           mma3=0;
  284.                      }

  285.                                 if(!study)
  286.                                         {        
  287.                                                  rf_ok=0;
  288.                                                  for(x1=0;x1<20;x1++)
  289.                                                    {
  290.                                                                 if((mma1==key_number[x1*3+1])&&(mma2==key_number[x1*3+2])&&(mma3==key_number[x1*3+3]))
  291.                                                                         {
  292.                                                                                 if((!((mma1==0)&&(mma2==0)))&&(!((mma1==0xff)&&(mma2==0xff)))&&key_data)
  293.                                                                                         {
  294.                                                                                                 if(L_M_select==3)
  295.                                                                                                         {
  296.                                                                                                                 m1=(key_data & 0x08);              
  297.                                                                                                                 m2=(key_data & 0x04);
  298.                                                                                                                 m3=(key_data & 0x02);        
  299.                                                                                                                 m4=(key_data & 0x01);                                                                        
  300.                                                                                                         }
  301.                                                                                                    else
  302.                                                                                                              {
  303.                                                                                                                     keya=(key_data & 0x08);      
  304.                                                                                                                   keyb=(key_data & 0x04);
  305.                                                                                                           keyc=(key_data & 0x02);        
  306.                                                                                                           keyd=(key_data & 0x01);
  307.                                                                                                           }
  308.                                                                                                 decode_ok=1;
  309.                                                                                                 set=0;                                       
  310.                                                                                                 s1=12000;
  311.                                                                                                 break;
  312.                                                                                         }
  313.                                                                         }
  314.                                                                                                 
  315.                                                         }
  316.                                                 EA=1;
  317.                                         }                                 
  318.                                 
  319.                         }


  320.     if(decode_ok)   
  321.                   {
  322.                         s1--;
  323.                         if(!s1)
  324.                                 {
  325.                                         set=1;
  326.                                         decode_ok=0;
  327.                                         flag_zs=0;
  328.                                         if(L_M_select==2)
  329.                                                 {
  330.                                                         keya=0;
  331.                                                         keyb=0;
  332.                                                         keyc=0;
  333.                                                         keyd=0;                                                
  334.                                                 }
  335.                                        
  336.                                 }
  337.                         if((L_M_select==3)&&(!flag_zs)&&decode_ok)
  338.                                 {

  339.                                                    flag_zs=1;
  340.                                                    if(m1)keya=!keya;
  341.                                                    if(m2)keyb=!keyb;
  342.                                                    if(m3)keyc=!keyc;
  343.                                                    if(m4)keyd=!keyd;                                
  344.                                 }                                                                          
  345.                   }         
  346.    }


  347. void key_buffer()                  //把遙控器碼從 EEPROM 復制到DATA
  348. {
  349.         uchar n;

  350.         for(n=0;n<61;n++)
  351.                 {
  352.                    key_number[n]=read_add(0x0000+n);                        
  353.                 }
  354. }

  355. void KEY_study()        //遙控器學習
  356. {        
  357.         uchar num_rf;
  358.         uchar d_num;
  359.         if(study==1)
  360.                 {
  361.                            rf_ok=0;
  362.                         d_num=0;
  363.         
  364.                         while(!rf_ok)
  365.                                 {
  366.                                         delay_1ms(100);
  367.                                         d_num++;
  368.                                         if(d_num>200) break;                                                                        
  369.                                 }
  370.                         d_num=0;
  371.                         if(rf_ok==1)
  372.                                 {
  373.                                         EA=0;
  374.                                         num_rf=key_number[0];                   //取已學習的遙控器數量
  375.                                         if(num_rf>20){num_rf=0;}        //如果遙控器數量超過20個,覆蓋最先學習的
  376.                                         key_number[num_rf*3+1]=mma1;
  377.                                         key_number[num_rf*3+2]=mma2;
  378.                                         key_number[num_rf*3+3]=mma3;
  379.                                         key_number[0]=num_rf+1;

  380.                                         Sector_Erase(0x0000);
  381.                                         for(num_rf=0;num_rf<61;num_rf++)
  382.                                                 {
  383.                                                         write_add(0x0000+num_rf,key_number[num_rf]);
  384.                                                         
  385.                                                 }

  386.                                         rf_ok=0;
  387.                                         set=1;                   //學習成功
  388.                                         EA=1;
  389.                                        
  390.                                   }        
  391.                                 else
  392.                                         {
  393.                                                 rf_ok=0;        //操作超時
  394.                                                 BB(300,4);
  395.                                        
  396.                                         }
  397.                         d_num=0;
  398.                         study=0;                 
  399.                 }
  400. }

  401. void system_res()  //系統清零           
  402. {
  403.         
  404.           Sector_Erase(0x0000);        
  405.         write_add(0x0000,0x00);        
  406.         key_buffer();               

  407. }

  408. void set_scan()          //判斷學習鍵狀態
  409. {
  410.   uchar h=0;

  411.   while((!set)&&(!study)&&(!decode_ok))         
  412.         {        
  413.                 if(h>2)
  414.                         {
  415.                                 study=1;
  416.                                 h=0;                                
  417.                                 while(!set);
  418.                                 set=0;
  419.                         }
  420.                  delay_1ms(100);
  421.                   h++;
  422.          }                                                                                
  423.          
  424. }

  425. void system_start()   //上電初始化
  426. {        
  427.          uchar h;
  428.         P3M0=0x27;
  429.         P3M1=0x10;
  430.           P3=0xd8;


  431.         L_M_select=read_add(0x0200);
  432.         if((L_M_select>3)||(L_M_select==0))L_M_select=3;
  433.         if(!set)
  434.           {
  435.                   while(!set)
  436.                           {
  437.                           delay_1ms(50);
  438.                           h++;
  439.                           if(h>2)
  440.                                   {                                                        
  441.                                         while(!set)
  442.                                           {
  443.                                                     delay_1ms(100);
  444.                                                   h++;
  445.                                                   if(h>90)
  446.                                                           {        
  447.                                                                 system_int=1;
  448.                                                                 while(!set);
  449.                                                            }                                          
  450.                                           }
  451.                                                 if(system_int)
  452.                                                         {
  453.                                                                 h=0;
  454.                                                                 system_int=0;
  455.                                                                 system_res();
  456.                                                                 delay_1ms(1500);
  457.                                                                 BB(500,4);                                
  458.                                                         }
  459. ……………………

  460. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

Keil代碼下載:
學習型無線遙控解碼程序2023.7z (192.14 KB, 下載次數: 522)




評分

參與人數 2黑幣 +65 收起 理由
lkc8210 + 15 共享資料的黑幣獎勵!
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏49 分享淘帖 頂4 踩
回復

使用道具 舉報

沙發
ID:235691 發表于 2023-6-11 11:15 | 只看該作者
有沒有用STC8系列8腳單片機的程序
回復

使用道具 舉報

板凳
ID:401478 發表于 2023-6-11 11:15 | 只看該作者
謝謝大佬分享  我學習一下下
回復

使用道具 舉報

地板
ID:17647 發表于 2023-6-12 15:51 | 只看該作者
太感謝了,剛做了一個2272解碼程序,但是沒有這個好。
回復

使用道具 舉報

5#
ID:1006814 發表于 2023-6-13 08:50 | 只看該作者
感謝大佬,正在學習遙控器呢。
回復

使用道具 舉報

6#
ID:461382 發表于 2023-6-18 21:30 | 只看該作者
神來之作,我要啥你就來啥
回復

使用道具 舉報

7#
ID:68189 發表于 2023-6-19 09:18 | 只看該作者
買來的代碼,放到這里來了。
回復

使用道具 舉報

8#
ID:430492 發表于 2023-6-19 16:04 | 只看該作者
感謝樓主分享的學習型無線遙控解碼程序,值得學習借鑒!
回復

使用道具 舉報

9#
ID:200118 發表于 2023-7-2 22:28 | 只看該作者
謝謝分享,值得學習。。。
回復

使用道具 舉報

10#
ID:287898 發表于 2023-7-13 15:09 | 只看該作者
很完善的資料  非常感謝
回復

使用道具 舉報

11#
ID:12816 發表于 2023-8-28 18:04 | 只看該作者
wpppmlah 發表于 2023-6-19 09:18
買來的代碼,放到這里來了。

說不好是這下的代碼人家拿去賣
回復

使用道具 舉報

12#
ID:227484 發表于 2023-9-25 16:38 | 只看該作者
很實用的程序,下載看看
回復

使用道具 舉報

13#
ID:33319 發表于 2023-9-28 17:35 | 只看該作者
賣的好像還能單獨學習四路輸出的遙控碼。
回復

使用道具 舉報

14#
ID:36007 發表于 2023-10-6 21:25 | 只看該作者
4路輸出的學些遙控碼
回復

使用道具 舉報

15#
ID:1083996 發表于 2023-10-23 09:17 | 只看該作者
很棒的操作,學習了
回復

使用道具 舉報

16#
ID:31094 發表于 2023-10-29 17:11 | 只看該作者

很實用的程序
回復

使用道具 舉報

17#
ID:72088 發表于 2023-10-30 19:36 | 只看該作者
單片機解碼,距離近是硬傷,沒專業芯片靈敏度高,我實驗多次,修改,無解
回復

使用道具 舉報

18#
ID:195496 發表于 2023-11-1 07:51 | 只看該作者
學習一下,有價值的帖子
回復

使用道具 舉報

19#
ID:103411 發表于 2023-11-7 16:04 | 只看該作者
感謝分享,下載學習一下。
回復

使用道具 舉報

20#
ID:1058675 發表于 2023-11-9 09:48 | 只看該作者
兄弟們,有沒有實測過,能正常使用輸出信號嗎
回復

使用道具 舉報

21#
ID:110231 發表于 2023-11-22 16:31 | 只看該作者
好東西 已做成功
回復

使用道具 舉報

22#
ID:16023 發表于 2023-11-24 20:56 | 只看該作者
stc8a8k測試成功,只是點動自鎖互鎖切換很麻煩,如果檢測按鍵的次數去切換模式或學習功能就好了。<--正在研究中......
回復

使用道具 舉報

23#
ID:77785 發表于 2024-1-5 23:39 | 只看該作者
我怎么在代碼里,沒有找到互鎖的邏輯啊...
回復

使用道具 舉報

24#
ID:34298 發表于 2024-5-3 20:05 | 只看該作者
當A、B鍵同時按下時  無法實在互鎖,控制電機正反轉容易燒電機 ,不知道怎么改程序
回復

使用道具 舉報

25#
ID:81135 發表于 2024-5-4 18:12 | 只看該作者
謝謝資料,下載學習中,多多上傳啊
回復

使用道具 舉報

26#
ID:27456 發表于 2024-5-7 12:44 | 只看該作者
fancunwu 發表于 2024-5-3 20:05
當A、B鍵同時按下時  無法實在互鎖,控制電機正反轉容易燒電機 ,不知道怎么改程序

if(!study)
                {       
                         rf_ok=0;
                         for(x1=0;x1<20;x1++)
                           {
                                if((mma1==key_number[x1*3+1])&&(mma2==key_number[x1*3+2])&&(mma3==key_number[x1*3+3]))
                                {
                                        if((!((mma1==0)&&(mma2==0)))&&(!((mma1==0xff)&&(mma2==0xff)))&&key_data)
                                        {
                                                if(L_M_select==3)
                                                {
                                                        m1=(key_data & 0x08);              
                                                        m2=(key_data & 0x04);
                                                        m3=(key_data & 0x02);       
                                                        m4=(key_data & 0x01);                                                                       
                                                }
                                           else
                                             {
                                                  if((key_data & 0x04)&&!(key_data & 0x02)&&!(key_data & 0x01))keyb=1;  //上 ▲
                                                  if(!(key_data & 0x04)&&(key_data & 0x02)&&!(key_data & 0x01))keyc=1;  //停 ■
                                                  if(!(key_data & 0x04)&&!(key_data & 0x02)&&(key_data & 0x01))keyd=1;  //下 ▼
                                          }

                                          decode_ok=1;

                                          if((key_data & 0x02)&&(key_data & 0x01)&&decode_ok) sc=1;        // ■+▼
                                          if((key_data & 0x04)&&(key_data & 0x01)&&decode_ok) yk_xx=1;// ▲+▼

                                //          if((key_data & 0x04)&&(key_data & 0x02)&&(key_data & 0x01)&&decode_ok)xw_sc=1;

                                //          if((key_data & 0x02)&&(key_data & 0x01)&&decode_ok)
                                                       
回復

使用道具 舉報

27#
ID:766282 發表于 2024-5-10 04:14 來自手機 | 只看該作者
很實用
回復

使用道具 舉報

28#
ID:100749 發表于 2024-5-10 09:14 | 只看該作者
學習學習 下載了,有時間做一下
回復

使用道具 舉報

29#
ID:465279 發表于 2024-5-29 23:52 來自手機 | 只看該作者
好的,非常好的資料
回復

使用道具 舉報

30#
ID:1093842 發表于 2024-5-30 18:07 | 只看該作者

謝謝分享,值得學習。。
回復

使用道具 舉報

31#
ID:808676 發表于 2024-6-8 21:26 | 只看該作者
謝謝樓主分享,感謝
回復

使用道具 舉報

32#
ID:25103 發表于 2024-6-29 16:21 | 只看該作者
謝謝大佬分享  我學習一下
回復

使用道具 舉報

33#
ID:285301 發表于 2024-12-20 08:56 | 只看該作者
試著用FMD的也寫一個,那個2毛芯片用的不少
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲国产成人久久综合一区,久久久国产99 | 中文字幕在线观看 | 亚洲久草视频 | 精品国产乱码久久久久久影片 | 欧美美女爱爱 | 秋霞av国产精品一区 | 日韩精品成人 | 成人免费观看视频 | 久久精品一区 | 亚洲二区视频 | 91精品中文字幕一区二区三区 | 亚洲视频精品 | 亚洲 中文 欧美 日韩 在线观看 | 国产极品车模吞精高潮呻吟 | 欧美精品乱码99久久影院 | 欧美黄 片免费观看 | 精品国产成人 | 日韩一区二区免费视频 | 自拍偷拍亚洲一区 | 国产一区不卡 | 中文字幕日韩欧美一区二区三区 | 欧美一区二区三区在线 | 一区二区三区在线电影 | 国产在线对白 | 欧美99| 欧美精品一区二区三区蜜桃视频 | 伊人伊人 | 日韩成人一区二区 | 日韩最新网站 | 日韩2020狼一二三 | 日本一本在线 | 99reav| 91麻豆精品国产91久久久更新资源速度超快 | 无码一区二区三区视频 | 久久综合久色欧美综合狠狠 | 国产视频第一页 | 国产黑丝av | 日韩成人精品在线 | 国产精品天堂 | 国产精品v| 久久成人午夜 |