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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 16923|回復(fù): 32
打印 上一主題 下一主題
收起左側(cè)

單片機(jī)315M解碼程序_學(xué)習(xí)型六路無線遙控開關(guān)_成品 含原理圖PCB

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:134239 發(fā)表于 2017-9-7 17:37 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式








全部資料51hei下載地址:
遙控解碼6#-15w204.rar (132.27 KB, 下載次數(shù): 516)
http://www.zg4o1577.cn/bbs/dpj-54638-1.html 單路
http://www.zg4o1577.cn/bbs/dpj-54161-1.html 四路
STC15W204S模擬315M 2272解碼程序
工作頻率:12M
說明:6路繼電器輸出,6LED指示,1LED電源指示,1微動開關(guān)K1。
          按K1進(jìn)入編輯模式,LED指示燈全亮。
          在編輯模式下 ,按下遙控器鈕,LED1亮>>LED2亮>>LED3亮>>LED4亮>> LED5亮>>LED6亮>>全亮(此模式存儲的遙控碼是關(guān)閉所有的LED)>>退出編輯模式。
          在編輯模式下 ,按K1退出編輯模式或存儲有效的遙控碼。
          在編輯模式下 ,長按K1 (10S) 刪除所有存儲的遙控碼。      
          在正常模式下 , 按下遙控器鈕,及相應(yīng)的LED.繼電器亮滅。
注意: 同一條遙控碼 在同一個LED上存兩條,相當(dāng)于亮了又滅,無動作。
優(yōu)點(diǎn): 能接收2262的1.2M-4.7M電阻編碼,幾乎所有的315M遙控器都兼容。
         由于定時讀引腳,抗干擾能力強(qiáng) ,和硬件解碼距離無區(qū)別。
缺點(diǎn):占用單片機(jī)資源比較多。


單片機(jī)源程序如下:
  1. //#include <reg52.h>
  2. #include "stc15w204s.h"
  3. #include "flash.h"                 
  4. typedef unsigned int u16;  //16位無符號整型數(shù)
  5. typedef unsigned char u8;  //8位無符號整型數(shù)

  6. sbit IR_INPUT = P1^1;
  7. sbit KEY1 = P1^0;
  8. sbit JD1 = P3^0;
  9. sbit JD2 = P3^1;
  10. sbit JD3 = P3^2;
  11. sbit JD4 = P3^3;
  12. sbit JD5 = P3^6;
  13. sbit JD6 = P3^7;

  14. sbit led1 = P5^5;
  15. sbit led2 = P5^4;
  16. sbit led3 = P1^5;
  17. sbit led4 = P1^4;
  18. sbit led5 = P1^3;
  19. sbit led6 = P1^2;


  20. u8 T0RL = 0;  //T0重載值的低字節(jié)
  21. u8 ms =1;
  22. u8 ircode_x[3];  //編輯模式解碼中間值
  23. u8 ircodex[3];
  24. u8 ircode[6];
  25. u16 code Tm_bz[]={ 31 ,156 ,114 ,134 ,2 ,16 ,8 };         
  26. u8 code YaoKongSu_4 = 4;       //遙控碼個數(shù)
  27. u8 code DaiMaTiaoSu_20 = 20;  //遙控條數(shù)
  28. u8 code LuShu = 6;       //幾路遙控
  29. bit WanCengBiaoJi = 0;         //        讀完一組數(shù)據(jù)的標(biāo)記
  30. bit Bianji = 0;         //進(jìn)入編輯標(biāo)記
  31. u8 JIBU=0;    //按鍵第幾步標(biāo)記
  32. u8 E2BiaoJi;
  33. u8 Tm1[50];

  34. void ConfigTimer0(u8 ms);
  35. void ConfigTimer2(u8 ms);
  36. void xunhuanculi(u8 add);
  37. void Bian_ji();
  38. void Led_jia();
  39. void Flash_del();
  40. void LED_jh(u8 add,bit add1);
  41. void Caozuo_csh();

  42. void main()
  43. {        
  44.     EA = 1;      //開總中斷
  45.         IR_INPUT = 1;  //接收引腳
  46.     ConfigTimer2(5);     //配置T2定時 ms
  47.     ConfigTimer0(124);   //配置T0定時 0-255us   
  48.     Caozuo_csh();        
  49.         P1M1= 0x02;                 //0000 0010
  50.         P1M0= 0x00;                 //0000 0000

  51.     while (1)
  52.     {
  53.                  
  54.                           if(WanCengBiaoJi == 1)
  55.                           {        WanCengBiaoJi = 0;
  56.                                            xunhuanculi(0);
  57.                                            xunhuanculi(1);
  58.                                            if((ircode[0]==ircode[3]) && (ircode[1]==ircode[4]) && (ircode[2]==ircode[5]) && ms!=0)
  59.                                            {
  60.                                                            if((ircodex[0]==ircode[0]) && (ircodex[1]==ircode[1]) && (ircodex[2]==ircode[2]) )
  61.                                                                 {    ms=1;        }
  62.                                                                 else
  63.                                                                 {
  64.                                                                          ircodex[0]=ircode[0];
  65.                                                                          ircodex[1]=ircode[1];
  66.                                                                          ircodex[2]=ircode[2];                                                                  
  67.                                                                          if(Bianji==1)
  68.                                                                  { ms = 1; Led_jia();}
  69.                                                                          else
  70.                                                                          { ms=0;}
  71.                                                                 }
  72.                                                 }
  73.                                           
  74.                         ET0 = 1;
  75.                                 
  76.                           }
  77.                         
  78.     }
  79. }
  80. //脈沖解碼
  81. void xunhuanculi(u8 add)
  82. {                 
  83.         u8 i, j, x, dat;
  84.         u8 byt;
  85.                
  86.                 x = add*25+1;
  87.         for(i=0; i<3; i++)
  88.         {    dat=i*8;
  89.                      for(j=0; j<8; j++)
  90.                          {      if(Tm1[dat+j+x]<=Tm_bz[6])
  91.                                         {  byt <<= 1; byt |= 0x01; }
  92.                                         else
  93.                                         {  byt <<= 1; }

  94.                          }        
  95.                      ircode[i+ add*3 ] = byt;                                                                        
  96.              }

  97. }
  98. void LED_jh(u8 add,bit add1)
  99. {   bit dat;

  100.     switch(add)
  101.     {
  102.                 case 0: led1 = add1;led2 = add1;led3 = add1;led4 = add1;led5 = add1;led6 = add1;
  103.                         if(Bianji==0)
  104.                                 {dat=!add1;  JD1 = dat;JD2 = dat; JD3 = dat;JD4 = dat;JD5 = dat;JD6 = dat;}
  105.                                 break;
  106.                 case 1: dat= led1;
  107.                                 _nop_();
  108.                                 led1=!dat;
  109.                         if(Bianji==0)
  110.                                 {JD1 = dat; }
  111.                 break;
  112.                 case 2:        dat= led2;
  113.                                 _nop_();
  114.                                 led2=!dat;
  115.                         if(Bianji==0)
  116.                                 {JD2 = dat; }
  117.                 break;
  118.                 case 3: dat= led3;
  119.                                 _nop_();
  120.                                 led3=!dat;
  121.                         if(Bianji==0)
  122.                                 {JD3 = dat; }
  123.                 break;
  124.                 case 4: dat= led4;
  125.                                 _nop_();
  126.                                 led4=!dat;
  127.                         if(Bianji==0)
  128.                                 {JD4 = dat; }
  129.                                 break;
  130.                 case 5: dat= led5;
  131.                                 _nop_();
  132.                                 led5=!dat;
  133.                         if(Bianji==0)
  134.                                 {JD5 = dat; }
  135.                 break;
  136.                 case 6: dat= led6;
  137.                                 _nop_();
  138.                                 led6=!dat;
  139.                         if(Bianji==0)
  140.                                 {JD6 = dat; }
  141.                 break;
  142.                 case 7: led1 = add1;led2 = add1;led3 = add1;led4 = add1;led5 = add1;led6 = add1;
  143.                                 if(Bianji==0)
  144.                                 {dat=!add1;  JD1 = dat;JD2 = dat; JD3 = dat;JD4 = dat;JD5 = dat;JD6 = dat; }
  145.                 break;
  146.             default:break;
  147.     }
  148. }
  149. void Caozuo_csh()
  150. {         
  151.         Bianji=0;
  152.         LED_jh(0,1);   
  153.         JIBU=0;         
  154.    
  155.         P3M1= 0x00;          //0000 0000                                                                  
  156.         P3M0= 0xcf;          //1100 1111


  157. }

  158. //遙控碼修改
  159. void Flash_del()
  160. {  if(Bianji==1)
  161.    {  eeprom_erase(0);        Caozuo_csh(); }
  162. }

  163. void Bian_ji()
  164. {   u8 i,dat;

  165.         if(Bianji==0)
  166.         { Bianji=1;
  167.          
  168.           P3M1= 0xcf;          //1100 1111
  169.       P3M0= 0xcf;          //1100 1111
  170.           LED_jh(0,0);
  171.           E2BiaoJi=0xff;
  172.       for(i=0; i<DaiMaTiaoSu_20; i++)
  173.       {           if(eeprom_read(i*YaoKongSu_4)==0xff)
  174.                        {E2BiaoJi=i; break;}
  175.       }
  176.         }
  177.           else
  178.     {        if (E2BiaoJi!= 0xff && JIBU!=0)
  179.         {      dat=         E2BiaoJi*YaoKongSu_4;         
  180.                        eeprom_write(dat,JIBU);        //標(biāo)記以寫入
  181.                            eeprom_write(dat+1,ircode_x[0]);
  182.                            eeprom_write(dat+2,ircode_x[1]);
  183.                            eeprom_write(dat+3,ircode_x[2]);
  184.         
  185.                 }
  186.                 Caozuo_csh();
  187.          }
  188.          
  189. }
  190. void Led_jia()
  191. {     
  192.           JIBU++;
  193.     if(JIBU>(LuShu+1))
  194.         {   Caozuo_csh(); }
  195.         else  
  196.         {   ircode_x[0]=ircodex[0];
  197.                 ircode_x[1]=ircodex[1];
  198.                 ircode_x[2]=ircodex[2];
  199.                 LED_jh(0,1);
  200.                 if(JIBU>LuShu)
  201.                 {  LED_jh(0,0); }
  202.                 else
  203.                 { LED_jh(JIBU,0); }
  204.     }
  205. }                                          


  206. /* 配置并啟動T2,ms-T2定時時間 */
  207. void ConfigTimer2(u8 ms)
  208. {
  209.     unsigned long tmp;  //臨時變量
  210.    
  211.     tmp = 12000000 / 12;      //定時器計數(shù)頻率
  212.     tmp = (tmp * ms) / 1000;  //計算所需的計數(shù)值
  213.     tmp = 65536 - tmp;        //計算定時器重載值
  214.     tmp = tmp + 18;           //補(bǔ)償中斷響應(yīng)延時造成的誤差
  215.     T2H = (u8)(tmp>>8);  //定時器重載值拆分為高低字節(jié)
  216.     T2L = (u8)tmp;
  217.            
  218.         AUXR &= 0xEF;  // 啟動T2定時器  方式 :16位重裝模式計數(shù)器
  219.         AUXR |= 0x10;  // 啟動T2定時器
  220.            IE2 &= 0xFB;  // 使能T2中斷
  221.         IE2 |= 0x04;  // 使能T2中斷
  222.            
  223.     //ET2 = 1;        //使能T2中斷
  224.     //T2R = 1;        //啟動T2定時器
  225. }
  226. /* 配置并啟動T0,us-T0定時時間 */
  227. void ConfigTimer0(u8 ms)
  228. {        
  229.     u8 tmp;  //臨時變量

  230.     tmp = 256 -ms ;        //計算定時器重載值
  231.         TMOD &= 0xF0;  // 定時器工作方式  方式 :8位重裝模式計數(shù)器
  232.         TMOD |= 0x02;  //配置T0為模式2
  233.         T0RL = tmp;
  234.         TH0 = tmp;     //加載T0重載值
  235.     ET0 = 1;        //使能T0中斷
  236.     TR0 = 1;        //啟動T0
  237.         PT0 = 1;        //配置T0中斷為高優(yōu)先級
  238. }

  239. void EXINT1_ISR() interrupt 1
  240. {          static bit a1,a2,a3;
  241.           static u8 Tm_zz=0;
  242.           static u8 Tm_js=0;
  243.       static u8 Tm=0;


  244.       a3=a2;
  245.       a2=a1;
  246.           a1=IR_INPUT;
  247.           if(a1==a3)
  248.           {a2=a1;}

  249.          if(a3)
  250.           {                              
  251.                         switch(Tm_zz)
  252.                     {                        
  253.                                 case 0:      if(Tm==0)
  254.                                              {         
  255.                                                              if((Tm_js<Tm_bz[0] )|| Tm_js>Tm_bz[1])
  256.                                                                  { Tm_zz=0; Tm=0; Tm_js=0; TH0 = T0RL; }
  257.                                                                  else        
  258.                                                                     {  Tm++; Tm_zz=2; TH0 = 256- Tm_js; TL0=TH0;}
  259.                                                          }
  260.                                                          else
  261.                                                          {         if((Tm_js<Tm_bz[2] )|| Tm_js>Tm_bz[3] )
  262.                                                                  {  Tm_zz=0; Tm=0; Tm_js=0; TH0 = T0RL; }
  263.                                                                    else        
  264.                                                                     { Tm1[Tm]=256-TH0; Tm++; Tm_zz=2;}
  265.                                                          }
  266.                                 
  267.                                 break;
  268.                                 case 1:           if((Tm_js<Tm_bz[4] )|| Tm_js>Tm_bz[5])
  269.                                                          { Tm_zz=0; Tm=0; Tm_js=0; TH0 = T0RL; }         
  270.                                                          else
  271.                                                          { Tm1[Tm]=Tm_js; Tm++; Tm_zz=2;}
  272.                                 break;
  273.                                 case 2:             if( Tm==25)
  274.                                                          {Tm_zz=3;}
  275.                                              if( Tm>=50)
  276.                                                          { ET0 = 0;  WanCengBiaoJi =1; Tm_zz=0; Tm=0; Tm_js=0; TH0 = T0RL; }
  277.                                 break;
  278.                                 default:break;
  279.                     }

  280.           }
  281.          else
  282.          {            
  283.                 switch(Tm_zz)
  284.                     {
  285.                                 case 0:  Tm_js++; break;
  286.                                 case 1:  Tm_js++; break;
  287.                                 case 2:  Tm_js=1; Tm_zz=1; break;
  288.                                 case 3:  Tm_js=1; Tm_zz=0; break;
  289.                             default:break;
  290.                     }
  291.          

  292.          }
  293.          
  294. }



  295. void chamiao()
  296. {        u8 i,x,dat;
  297.         ms++;
  298.         if(ms == 1)
  299.         {
  300.           EA=0 ;
  301.          
  302.           for(i=0; i<DaiMaTiaoSu_20; i++)
  303.           {            dat= i*YaoKongSu_4;
  304.                         x = eeprom_read(dat);
  305.                 if(x != 0xff)
  306.                         {         if(eeprom_read(dat+1)==ircodex[0])
  307.                              {          if(eeprom_read(dat+2)==ircodex[1])
  308.                                           {           if(eeprom_read(dat+3)==ircodex[2])
  309.                                                {   LED_jh(x,1); }
  310.                                           }
  311.                                  }
  312.                         }
  313.                         else
  314.                         {break;}
  315.                
  316.           }
  317.           EA=1 ;

  318.         }
  319.         if(ms > 150 )
  320.         {ircodex[0]=0x00;
  321.          ircodex[1]=0x00;
  322.          ircodex[2]=0x00;
  323.          ms = 1;
  324.         }

  325.   
  326. ……………………

  327. …………限于本文篇幅 余下代碼請從51黑帖子頂部下載附件…………
復(fù)制代碼



評分

參與人數(shù) 2黑幣 +130 收起 理由
dww465757120 + 30 共享資料的黑幣獎勵!
admin + 100 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏65 分享淘帖 頂5 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:1 發(fā)表于 2017-9-7 17:59 | 只看該作者
好資料,51黑有你更精彩!!!
回復(fù)

使用道具 舉報

板凳
ID:164988 發(fā)表于 2017-9-7 20:11 | 只看該作者
好文章,先標(biāo)記,等黑幣足夠時,一定下載分享。
回復(fù)

使用道具 舉報

地板
ID:229306 發(fā)表于 2017-10-12 10:05 | 只看該作者
謝謝了,在我做的控制板上試一下,
回復(fù)

使用道具 舉報

5#
ID:229306 發(fā)表于 2017-10-12 16:04 | 只看該作者
很好,謝謝了!
回復(fù)

使用道具 舉報

6#
ID:343102 發(fā)表于 2018-8-9 07:39 | 只看該作者
謝謝分享!
回復(fù)

使用道具 舉報

7#
ID:36105 發(fā)表于 2018-9-8 22:03 | 只看該作者
多謝分享,努力學(xué)習(xí)中,相信有大咖們的杰作一定能助我一臂之力
回復(fù)

使用道具 舉報

8#
ID:63317 發(fā)表于 2018-12-3 06:27 | 只看該作者
很實(shí)用。手藝精湛
回復(fù)

使用道具 舉報

9#
ID:240034 發(fā)表于 2018-12-4 18:27 | 只看該作者
思路很不錯,向樓主學(xué)習(xí)
回復(fù)

使用道具 舉報

10#
ID:60263 發(fā)表于 2019-4-4 09:14 | 只看該作者
謝謝!不錯 有空也做一個
回復(fù)

使用道具 舉報

11#
ID:473471 發(fā)表于 2019-7-6 23:24 來自手機(jī) | 只看該作者
樓主辛苦了,好資料
回復(fù)

使用道具 舉報

12#
ID:524834 發(fā)表于 2019-7-7 07:16 | 只看該作者
好資料,標(biāo)記一下
回復(fù)

使用道具 舉報

13#
ID:282095 發(fā)表于 2019-7-7 10:31 | 只看該作者
畫板軟件是PADS嗎
回復(fù)

使用道具 舉報

14#
ID:572103 發(fā)表于 2019-9-14 23:18 | 只看該作者
這個可以做成16通的無線開關(guān)嗎?
回復(fù)

使用道具 舉報

15#
ID:381390 發(fā)表于 2019-9-17 11:41 | 只看該作者
謝謝分享!好資料
回復(fù)

使用道具 舉報

16#
ID:627633 發(fā)表于 2019-10-22 08:51 | 只看該作者
請問能改成點(diǎn)動模式嗎?
回復(fù)

使用道具 舉報

17#
ID:196311 發(fā)表于 2020-2-22 22:46 | 只看該作者
謝謝樓主,正好在學(xué)習(xí)解碼,下載參考一下
回復(fù)

使用道具 舉報

18#
ID:36359 發(fā)表于 2020-2-23 21:06 | 只看該作者
謝謝分享 學(xué)習(xí)學(xué)習(xí),下載保存 慢慢研究
回復(fù)

使用道具 舉報

19#
ID:23303 發(fā)表于 2020-2-26 14:55 | 只看該作者
謝謝了,在我做的控制板上試一下
回復(fù)

使用道具 舉報

20#
ID:46241 發(fā)表于 2020-3-15 23:56 來自手機(jī) | 只看該作者
好文章,先標(biāo)記,等黑幣足夠時,一定下載分享
回復(fù)

使用道具 舉報

21#
ID:65237 發(fā)表于 2020-4-8 21:00 | 只看該作者
謝謝 要學(xué)習(xí)要動手做一個 決對的贊 樓主能從中加上解EV1527的
回復(fù)

使用道具 舉報

22#
ID:716103 發(fā)表于 2020-4-9 11:39 | 只看該作者
正在學(xué)習(xí)433MHz的無線遙控,下載學(xué)習(xí)了。
回復(fù)

使用道具 舉報

23#
ID:65237 發(fā)表于 2020-4-11 20:25 | 只看該作者
樓主我用你的程序下載在STC11F16XE上怎么開關(guān)按下,怎么沒反應(yīng) 是我這IC不行嗎 我下載了另外程序試了一下硬件沒有問題 我看了一下程序這IC應(yīng)可以運(yùn)行的才對 求解?
回復(fù)

使用道具 舉報

24#
ID:517794 發(fā)表于 2020-8-1 09:03 | 只看該作者
315M解碼 6控制6 mark
回復(fù)

使用道具 舉報

25#
ID:53421 發(fā)表于 2020-8-22 09:01 | 只看該作者
非常感謝,研究研究。
回復(fù)

使用道具 舉報

26#
ID:92556 發(fā)表于 2020-10-3 00:56 | 只看該作者
不是用了204s頭文件嗎,還用rge52???
回復(fù)

使用道具 舉報

27#
ID:261025 發(fā)表于 2021-2-3 14:48 | 只看該作者
為什么四路六路我只能使用最后學(xué)習(xí)的那個按鍵  之前幾個都無法使用  
回復(fù)

使用道具 舉報

28#
ID:848824 發(fā)表于 2021-2-19 09:40 | 只看該作者
433接收頭可以嗎?
回復(fù)

使用道具 舉報

29#
ID:48994 發(fā)表于 2021-7-5 16:24 | 只看該作者
感謝樓主的分享,正在學(xué)習(xí)相關(guān)資料!
回復(fù)

使用道具 舉報

30#
ID:826754 發(fā)表于 2021-7-18 11:32 | 只看該作者
好文章,先標(biāo)記,等黑幣足夠時,一定下載分享
回復(fù)

使用道具 舉報

31#
ID:343102 發(fā)表于 2023-5-14 12:05 | 只看該作者
多謝分享,努力學(xué)習(xí)!
回復(fù)

使用道具 舉報

32#
ID:403447 發(fā)表于 2023-6-9 09:56 | 只看該作者
先留下尿點(diǎn),方便回頭辨識回來
回復(fù)

使用道具 舉報

33#
ID:103411 發(fā)表于 2023-11-9 13:28 | 只看該作者
正在學(xué)習(xí)如何解碼,感謝樓主分享!!
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 久久极品| 日本韩国电影免费观看 | av一区二区在线观看 | 国产成人免费视频 | 色综网 | 国产精品1区2区3区 中文字幕一区二区三区四区 | 国产精品久久a | 国产精品亚洲精品久久 | 日韩a v在线免费观看 | 欧美黑人巨大videos精品 | 能看的av | 成人在线视频一区 | 盗摄精品av一区二区三区 | 无人区国产成人久久三区 | 狠狠av| 成人欧美一区二区三区白人 | 久久不卡区 | 国产精品久久久亚洲 | 亚洲久视频 | 国产a爽一区二区久久久 | 欧美三级久久久 | 国产一级在线 | 97色免费视频 | 亚洲一区二区av | 国产欧美日韩二区 | 欧美成人精品激情在线观看 | 天天综合永久入口 | 久久国产高清视频 | 2021天天躁夜夜看 | 欧美1区2区 | 成人在线视频网 | 天堂综合| 男人阁久久 | 天天爽夜夜爽精品视频婷婷 | 亚洲欧美日本在线 | 国产精品a久久久久 | 日本在线播放 | 成人特级毛片 | wwww.xxxx免费| 青久草视频 | 日韩av看片 |