找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索

STC12C5A60S2單片機萬能學(xué)習(xí)紅外遙控只差一步

查看數(shù): 3926 | 評論數(shù): 10 | 收藏 6
關(guān)燈 | 提示:支持鍵盤翻頁<-左 右->
    組圖打開中,請稍候......
發(fā)布時間: 2021-8-22 16:57

正文摘要:

本帖最后由 liyago 于 2021-8-25 10:25 編輯 在論壇翻了好多天資料,終于把這個完全克隆信號的萬能紅外遙控器搞清楚了,論壇有位老兄很早就發(fā)了那篇紅外收發(fā)的帖子,后面又有位兄弟改寫了那程序,我都下在板上試 ...

回復(fù)

ID:965189 發(fā)表于 2022-11-7 11:00
三極管有放大并倒相的作用。
ID:195496 發(fā)表于 2022-11-7 07:21
你的圖上有三個二極管,哪一個是紅外發(fā)射用的,
ID:695401 發(fā)表于 2022-11-7 00:44
三極管倒向應(yīng)該可以吧
ID:1045007 發(fā)表于 2022-9-17 05:47
不錯,新手多多指教
ID:742998 發(fā)表于 2022-9-16 22:27
liyago 發(fā)表于 2021-8-25 22:55
已經(jīng)有結(jié)果了,想追求完美最后還是初完美打敗。已經(jīng)做出了跟原始波形一樣的了,但就是不起做用,不明原因, ...

你好,問題弄清楚了嗎?
ID:95375 發(fā)表于 2021-8-25 22:55
已經(jīng)有結(jié)果了,想追求完美最后還是初完美打敗。已經(jīng)做出了跟原始波形一樣的了,但就是不起做用,不明原因,反而是那填充了載波的長條圖波形能正常遙控。

把程序里         remoteout=0; //關(guān)紅外發(fā)射  變成         remoteout=1; //開紅外發(fā)射  波形就從正波變成負(fù)波了。

  1.      i=remotedata[n];
  2.       ET1=1;
  3.       TR1=0;  //開定時
  4. 。。。。。。。。。。。
  5.       ET1=0;
  6.       TR1=1;//不發(fā)送調(diào)制脈沖
復(fù)制代碼



然后把ET1和TR1改成上面的就可以出線條圖而不是填充載波的長條圖


整個代碼如下,基本全注釋了,能搞清楚這代碼為什么不實用的大神請M我
  1. /********學(xué)習(xí)型遙控器程序*********/
  2. /*
  3.       該程序只對紅外脈沖波形復(fù)制并不解碼是真正的萬能學(xué)習(xí)型,程序是根據(jù)論壇公開程序資料修改完成的,
  4. 對多種遙控都能學(xué)習(xí)包括:電視遙控,機頂盒遙控,空調(diào)遙控等....學(xué)習(xí)到的波形脈沖總寬度幾乎一致.
  5.          
  6.                                                                                                                                                                                  源碼調(diào)試:風(fēng)中有你        2015.11.29
  7.                                                                                                                                                                                  
  8.                                                                                                                                                                                  
  9. 2021年8月25日  
  10. 改為低電平亮燈,芯片用STC8F1K08S2,波形跟原始波一樣都是線條形,波形也是負(fù)波,但就是無效果

  11. */

  12. #include"stc8.h"

  13. #include<intrins.h>   //延時函數(shù)
  14. #define uchar unsigned char
  15. #define uint unsigned int
  16. sbit studylamp=P5^4; //學(xué)習(xí)指示燈
  17. sbit lamp=P1^1; //發(fā)射指示燈
  18. sbit studykey=P3^4; //學(xué)習(xí)鍵
  19. sbit txkey=P3^5; //發(fā)射鍵
  20. sbit remotein=P3^2; //遙控信號輸入口 高阻
  21. sbit remoteout=P5^5; //遙控信號輸出口 強推
  22. uint i,j,m=5000,n,k,s;
  23. uint  remotedata[207]; //存脈沖寬度數(shù)據(jù)用
  24. uint remdata; //脈沖計數(shù)
  25. bit tag;//學(xué)習(xí)狀態(tài)標(biāo)志

  26. /****1ms*t延時程序****/
  27. void delay1ms(uint t)
  28. {
  29.                 for(i=0;i<t;i++)
  30.                 for(j=0;j<120;j++)
  31.                 ;
  32. }
  33. /****2us*t秒延時程序****/
  34. void Delay2us(uchar y)                //@12.000MHz
  35. {
  36.                 unsigned char i;
  37.                 i = y;//數(shù)越大長度越短
  38.                 while (--i);
  39. }


  40. void Timer1Init(void)                //38Khz@12.000MHz
  41. {
  42.                 AUXR &= 0xBF;                //定時器時鐘12T模式        1011 1111
  43.                 TMOD |= 0x20;                //設(shè)置定時器模式 10 0000
  44.                 TH1=0xf3;//38KHz初值
  45.                 TL1=0xf3;
  46. }


  47. void clr_ram()
  48. {
  49.                 for(i=0;i<207;i++)
  50.                 {
  51.                                 remotedata[i]=0x00;
  52.                 }  //清內(nèi)存
  53. }

  54. /////////////////////
  55. /****初始化程序****/

  56. void clearmen(void)
  57. {
  58. // I/O 口特殊功能寄存器,這里不定義還好,定義后就不可用了,不明白
  59. //P3M0=0x04;        P3M1=0x00;//P3.2        紅外輸入 高阻
  60. //P5M0=0x00;        P5M1=0x20;//P5.5 紅外輸出 推挽輸出
  61.         
  62. /*
  63. P0M0[1:0]        P0M1[1:0]
  64.         0                                        0                準(zhǔn)雙向口(傳統(tǒng)8051 I/O口模式)灌電流可達(dá)20mA
  65.         0                                        1                推挽輸出(強上拉輸出,可達(dá)20mA,要加限流電阻)
  66.         1                                        0                僅為輸入(高阻)
  67.         1                                        1                開漏(Open Drain),內(nèi)部上拉電阻斷開,要外加
  68. */        
  69.         
  70.         
  71.         
  72.                 studylamp=1;//關(guān)學(xué)習(xí)指示燈
  73.                 lamp=1;  //關(guān)發(fā)射指示燈
  74.                 remoteout=0; //關(guān)遙控輸出
  75.                 remotein=1;  // 遙控輸入置高電平

  76.                 IE=0x00;//IE是中端允許寄存器,這里面包括了定時器和外部中斷還有EA等
  77.                 IP=0x01;//IP是中斷優(yōu)先級控制寄存器
  78.                 Timer1Init();
  79.                 EA=1; //開總中斷
  80.                 clr_ram();
  81. }

  82. /*
  83. (IP.7:保留)
  84. (IP.6:保留)
  85. PT2(IP.5):若=1,定時器2中斷設(shè)為高優(yōu)先級(只適用于8052及其增強型)
  86. PS(IP.4):若=1,串行中斷設(shè)為高優(yōu)先級
  87. PT1(IP.3):若=1,定時器1中斷設(shè)為高優(yōu)先級
  88. PX1(IP.2):若=1,外部中斷1設(shè)為高優(yōu)先級
  89. PT0(IP.1):若=1,定時器0中斷設(shè)為高優(yōu)先級
  90. PX0(IP.0):若=1,外部中斷0設(shè)為高優(yōu)先級
  91. */

  92. /*****發(fā)送鍵功能函數(shù)****/        
  93. void keywork(void)
  94. {
  95.         if (txkey==0)         //如發(fā)射按鍵按下
  96.                 {
  97.                                 delay1ms(10);//延時10毫秒防抖
  98.                                 while(txkey==0);//等待發(fā)射鍵釋放,釋放后txkey==1,釋放后才繼續(xù)執(zhí)行下去就是為了防止按鍵一按下就無數(shù)次循環(huán)了
  99.                                 n=0;//計數(shù)用
  100.                                 lamp=0;//學(xué)習(xí)燈亮
  101.                                 while(1)   //開始發(fā)射調(diào)制波形
  102.                                 {
  103.                                                 i=remotedata[n]; //把讀到的數(shù)組數(shù)據(jù)第0個賦給i
  104.                                                 ET1=1;//開啟T1中斷 關(guān)閉也無波
  105.                                                 TR1=0;  //關(guān)閉定時器T1不發(fā)送調(diào)制脈沖
  106.                                                 while(i--)
  107.                                                 {
  108.                                                                 Delay2us(2);//延時2個2毫秒
  109.                                                                 _nop_();//單片機空跑一周期
  110.                                                                 _nop_();//單片機空跑一周期
  111.                                                 }
  112. /*
  113.                                                 方式1:上面的ET1=1 TR1=1 下面的ET1=0 TR1=0 出有色波,能遙控
  114.                                                 
  115.                                                 0001不出波
  116.                                                 0010不出波
  117.                                                 0011全黃,全輸出載波,沒得停了
  118.                                                 0100不出波
  119.                                                 0101不出波
  120.                                                 0110一直高電平
  121.                                                 0111全黃,全輸出載波,沒得停了
  122.                                                 1000不出波
  123.                                                 1001出跟原始波一樣的線條波形,方向反,不能遙控
  124.                                                 1010不出波
  125.                                                 1011全黃
  126.                                                 1100出有色波,能遙控
  127.                                                 1101出有色波,能遙控
  128.                                                 1110也有色波但跟方式1有點不一樣,在遙控碼中部有一上電平線,能遙控
  129.                                                 1111全黃
  130. */                                                
  131.                                                 
  132.                                                 ET1=0;//關(guān)閉T1中斷
  133.                                                 TR1=1;//開啟定時器T1發(fā)送調(diào)制脈沖  TR1=0且上面那個TR1=1時波形有填充色且能遙控,燈充滿電遙控較遠(yuǎn),
  134.                                                                         //TR1=1且上面的TR1=0時波形跟原始波一樣無填充色,但不能遙控
  135.                                                 remoteout=1; //關(guān)紅外發(fā)射
  136.                                                 n++;//下一組脈沖寬度地址
  137.                                                 i=remotedata[n]; //把讀到的數(shù)組數(shù)據(jù)第n個賦給i
  138.                                                 while(i--)  //根據(jù)i值發(fā)送計時
  139.                                                 {
  140.                                                                 Delay2us(2);//延時2個2毫秒
  141.                                                                 _nop_();//單片機空跑一周期
  142.                                                                 _nop_();//單片機空跑一周期
  143.                                                 }
  144.                                                 //等待該位時間結(jié)束
  145.                                                 n++; //下一組脈沖寬度地址
  146.                                                 if((remotedata[n]==0)||(n>206))//如果數(shù)值為0了或超過了206個//該位地址數(shù)據(jù)為0或地址計數(shù)大于設(shè)定值就結(jié)束
  147.                                                 {
  148.                                                                 delay1ms(10);//延時10毫秒
  149.                                                                 break;//結(jié)束退出
  150.                                                 }
  151.                         
  152.                                 }  
  153.                 }
  154.                 lamp=1; //滅燈
  155. }



  156. /****40KHz載波發(fā)生函數(shù)*****/

  157. void time_intt(void)interrupt 3        //定時器1
  158. {
  159.                 remoteout=~remoteout;
  160. }

  161. /*
  162. 外部中斷0 interrupt 0
  163. 定時器0     interrupt 1
  164. 外部中斷1 interrupt 2
  165. 定時器1     interrupt 3
  166. 串口中斷   interrupt 4
  167. 定時器2     interrupt 5
  168. */




  169. //*********學(xué)習(xí)紅外函數(shù)*************
  170. void studywork()
  171. {
  172.                 while(studykey==0)//按鍵按下放
  173.                 {
  174.                                 while(studykey==1);//等待鍵釋放
  175.                                 studylamp=0;         //學(xué)習(xí)燈亮
  176.                                 lamp=1;//發(fā)射燈滅
  177.                                 tag=1;        //學(xué)習(xí)標(biāo)致置1
  178.                                 n=0;
  179.                                 remdata=0x00;//脈寬計數(shù)器清零
  180.                                 while(remotein==1);//等待遙控碼輸入
  181.                                 while(tag)//當(dāng)tag是1在學(xué)習(xí)狀態(tài)就一直循環(huán)
  182.                                 {
  183.                                                 while(remotein==0)//當(dāng)?shù)碗娖綍r有遙控碼輸入
  184.                                                 {
  185.                                                                 Delay2us(4);//延時4個2微秒
  186.                                                                 remdata++;        //記錄低電平脈寬時間
  187.                                                                 if(remdata>m) //計數(shù)大于設(shè)定值退出  m設(shè)為5000,這個值不懂怎么來的,設(shè)為255只有一條豎線
  188.                                                                 {
  189.                                                                                 remotedata[n]=0x00; //肪沖寬度置0
  190.                                                                                 tag=0;//學(xué)習(xí)標(biāo)志置0,結(jié)束學(xué)習(xí)
  191.                                                                                 goto end;//跳到結(jié)束
  192.                                                                 }
  193.                                                 }
  194.                                                 remotedata[n]=remdata;//如果低電平肪寬時間remdata不大于5000就把值賦給脈沖寬度數(shù)組remotedata[n],就是說這個值有效吧記錄下來
  195.                                                 remdata=0x00;//脈寬計數(shù)器清零
  196.                                                 n++;//電平脈寬數(shù)據(jù)個數(shù)加1
  197.                                                 if(n>206) //緩存滿退出,remotedata[n]設(shè)為最大207
  198.                                                 {
  199.                                                                 remotedata[n]=0x00;//一組數(shù)是206,大于就清0
  200.                                                                 tag=0;//學(xué)習(xí)標(biāo)志置0,結(jié)束學(xué)習(xí)
  201.                                                                 goto end;//跳到結(jié)束,兩燈都滅了
  202.                                                 }
  203.                                                 while(remotein==1)//當(dāng)高電平時無遙控碼輸入
  204.                                                 {
  205.                                                                 Delay2us(4);//延時4個2微秒
  206.                                                                 remdata++; //高電平計數(shù)
  207.                                                                 if(remdata>m) //計數(shù)大于設(shè)定值退出  m設(shè)為5000,這個值不懂怎么來的,設(shè)為255只有一條豎線
  208.                                                                 {               
  209.                                                                                 remotedata[n]=0x00; //肪沖寬度置0
  210.                                                                                 tag=0;//學(xué)習(xí)標(biāo)志置0,結(jié)束學(xué)習(xí)
  211.                                                                                 goto end;//跳到結(jié)束,兩燈都滅了
  212.                                                                 }
  213.                                                 }
  214.                                                 remotedata[n]=remdata; //存高電平脈寬數(shù)據(jù)
  215.                                                 remdata=0x00;//脈寬計數(shù)器清零
  216.                                                 n++;//電平脈寬數(shù)據(jù)個數(shù)加1
  217.                                 }
  218.                 }
  219.                 end:
  220.                 {//學(xué)習(xí)結(jié)束
  221.                                 lamp=1;//發(fā)射燈滅
  222.                                 studylamp=1;         //學(xué)習(xí)燈滅
  223.                 }
  224. }
  225. /******主函數(shù)****/                                                                                                                                                                        
  226. void main()
  227. {  
  228.                 clearmen();
  229.                 remoteout=0; //關(guān)紅外發(fā)射
  230.                 studylamp=0;         //學(xué)習(xí)燈滅
  231.                 tag=0;
  232.                 studykey=1;
  233.                 while(1)
  234.                 {
  235.                                 keywork();        // 發(fā)射
  236.                                 studywork();        //學(xué)習(xí)
  237.                 }
  238. }
復(fù)制代碼

ID:95375 發(fā)表于 2021-8-25 10:25
hhdsdy 發(fā)表于 2021-8-24 10:18
你改了電路啊,原來是怎么控制的?用NPN的三極管?現(xiàn)在不用三極管又是怎么接的,可能就是出在更改上



原來有兩個提示用的LED是用三級管驅(qū)動的,我把它們?nèi)サ袅,直接用IO口加限流電阻代替了,這跟波形沒關(guān)系吧,大部份單片機都是這樣接LED燈,除口IO口不夠用了才加個控制片。

經(jīng)過這兩天研究,原來的波算是負(fù)波,而這個單片機發(fā)射的是正波,測試結(jié)果這也可以控制燈,但要貼很近了,不明原理,昨晚搞出了跟原始波形一樣的純線條波形,但好你去控制不了燈,奇怪,等把正波變負(fù)波先,論壇有負(fù)波的程序,研究看看再說。
ID:88256 發(fā)表于 2021-8-24 10:18
你改了電路啊,原來是怎么控制的?用NPN的三極管?現(xiàn)在不用三極管又是怎么接的,可能就是出在更改上
ID:95375 發(fā)表于 2021-8-23 11:13
hhdsdy 發(fā)表于 2021-8-23 08:29
也不是新注冊的,程序也不發(fā)一個出來。
那些波形是接在哪里測試的?紅外接收的波形是倒的,沒信號是高電平 ...
  1. /********學(xué)習(xí)型遙控器程序*********/
  2. /*
  3.       該程序只對紅外脈沖波形復(fù)制并不解碼是真正的萬能學(xué)習(xí)型,程序是根據(jù)論壇公開程序資料修改完成的,
  4. 對多種遙控都能學(xué)習(xí)包括:電視遙控,機頂盒遙控,空調(diào)遙控等....學(xué)習(xí)到的波形脈沖總寬度幾乎一致.
  5.          
  6. 源碼調(diào)試:風(fēng)中有你  
  7. */

  8. #include"stc12c5a60s2.h"

  9. #include<intrins.h>   //延時函數(shù)
  10. #define uchar unsigned char
  11. #define uint unsigned int
  12. sbit studylamp=P1^6; //學(xué)習(xí)指示燈 7p
  13. sbit lamp=P1^7; //發(fā)射指示燈         8p
  14. sbit studykey=P3^3; //學(xué)習(xí)鍵  13p  ---
  15. sbit remotein=P3^6; //遙控信號輸入口16p
  16. sbit remoteout=P3^5; //遙控信號輸出口15p
  17. sbit txkey=P3^4; //發(fā)射鍵 14p               
  18. uint i,j,m=5000,n,k,s;
  19. uint  remotedata[207]; //存脈沖寬度數(shù)據(jù)用
  20. uint remdata; //脈沖計數(shù)
  21. bit tag;//學(xué)習(xí)標(biāo)致

  22. /****1ms*t延時程序****/
  23. void delay1ms(uint t)
  24. {
  25.   for(i=0;i<t;i++)
  26.    for(j=0;j<120;j++)
  27.   ;
  28. }
  29. /****2us*t秒延時程序****/
  30. void Delay2us(uchar y)                //@12.000MHz
  31. {
  32.         unsigned char i;

  33.         i = 3*y;
  34.         while (--i);
  35. }


  36. void Timer1Init(void)                //38Khz@12.000MHz
  37. {


  38.   AUXR &= 0xBF;                //定時器時鐘12T模式        1011 1111
  39.         TMOD |= 0x20;                //設(shè)置定時器模式 10 0000
  40.   TH1=0xf3;//38KHz初值
  41.   TL1=0xf3;


  42. }


  43. void clr_ram()
  44. {
  45.   for(i=0;i<207;i++)
  46.   {
  47.    remotedata[i]=0x00;
  48.   }  //清內(nèi)存
  49. }

  50. /////////////////////
  51. /****初始化程序****/

  52. void clearmen(void)
  53. {
  54.   P3M1=0x40;        //P3.5強推P3.6高阻
  55.                                 //P3M0=00100000
  56.   P3M0=0x20;        //P3M1=01000000,
  57.   P1M1=        0x00;                //P1M0=00000001
  58.   P1M0=0x01;                    //P1M1=00000000
  59.   studylamp=1;//關(guān)學(xué)習(xí)指示燈
  60.   lamp=1;  //關(guān)發(fā)射指示燈
  61.   remoteout=0; //關(guān)遙控輸出
  62.   remotein=1;  // 遙控輸入置高電平
  63.   

  64.   IE=0x00;
  65.   IP=0x01;


  66.   Timer1Init();

  67.   EA=1; //開總中斷
  68. clr_ram();


  69. }

  70. /*****發(fā)送鍵功能函數(shù)****/        
  71. void keywork(void)
  72. {


  73.   if (txkey==0)         //有按鍵按下
  74.     {
  75.            delay1ms(10);
  76.           while(txkey==0);//等待鍵釋放
  77.          
  78.            n=0;
  79.            lamp=0;
  80.     while(1)   //開始發(fā)射調(diào)制波形
  81.     {



  82.      i=remotedata[n];
  83.           ET1=1;
  84.       TR1=1;  //開定時
  85.      while(i--)
  86.          {
  87.           Delay2us(2);
  88.         // _nop_();
  89.          }


  90.       ET1=0;
  91.       TR1=0;//不發(fā)送調(diào)制脈沖
  92.           remoteout=0; //關(guān)紅外發(fā)射
  93.           n++;//下一組脈沖寬度地址
  94.           i=remotedata[n];
  95.          
  96.      while(i--)  //根據(jù)i值發(fā)送計時
  97.          {
  98.           Delay2us(2);
  99.          // _nop_();
  100.           }
  101.   
  102.                //等待該位時間結(jié)束
  103.       n++; //下一組脈沖寬度地址
  104.           if((remotedata[n]==0)||(n>206)){delay1ms(10);break;} //該位地址數(shù)據(jù)為0或地址計數(shù)大于設(shè)定值就結(jié)束
  105.     }  
  106.   }
  107.   lamp=1; //滅燈

  108. }

  109. /****40KHz載波發(fā)生函數(shù)*****/

  110. void time_intt(void)interrupt 3
  111. {
  112. remoteout=~remoteout;

  113. }


  114. //*********學(xué)習(xí)紅外函數(shù)*************
  115. void studywork()
  116. {
  117.    while(studykey==0)//按鍵按下放
  118.    {

  119.     while(studykey==1);//等待鍵釋放

  120.            studylamp=0;         //學(xué)習(xí)燈亮
  121.            lamp=1;
  122.            tag=1;        //學(xué)習(xí)標(biāo)致置1
  123.        n=0;
  124.            remdata=0x00;//脈寬計數(shù)器清零

  125.    while(remotein==1);//等待遙控碼輸入

  126.    while(tag)
  127.     {
  128.   
  129.     while(remotein==0)//有遙控碼輸入

  130.       {

  131.            Delay2us(4);
  132.            


  133.      remdata++;        //記錄低電平脈寬時間
  134.             if(remdata>m) //計數(shù)大于設(shè)定值退出
  135.           {remotedata[n]=0x00;
  136.             tag=0;
  137.                goto end;
  138.               }
  139.        }

  140.          
  141.     remotedata[n]=remdata;
  142.         remdata=0x00;//脈寬計數(shù)器清零
  143.    n++;//存低電平脈寬數(shù)據(jù)
  144.            if(n>206) //緩存滿退出
  145.       {
  146.             remotedata[n]=0x00;
  147.         tag=0;
  148.             goto end;
  149.           }

  150.   while(remotein==1)
  151.   {
  152. Delay2us(4);


  153.   remdata++; //高電平計數(shù)
  154.    if(remdata>m) //計數(shù)大于設(shè)定值退出
  155.      {remotedata[n]=0x00;
  156.       tag=0;
  157.           goto end;
  158.         }
  159.   }


  160.   remotedata[n]=remdata; //存高電平脈寬數(shù)據(jù)
  161.   n++;
  162.        remdata=0x00;//脈寬計數(shù)器清零
  163. }
  164.   
  165.   }
  166.   end:
  167.   {
  168.       lamp=1;
  169.     studylamp=1;         //學(xué)習(xí)燈滅

  170.         }

  171. }
  172. /******主函數(shù)****/                                                                                                                                                                        
  173. void main()
  174. {  
  175.   
  176.   clearmen();

  177.             remoteout=0; //關(guān)紅外發(fā)射
  178.             studylamp=0;         //學(xué)習(xí)燈滅

  179.             tag=0;
  180.                 studykey=1;


  181.   while(1)
  182.   {
  183.    keywork();        // 發(fā)射
  184.       studywork();        //學(xué)習(xí)

  185. }

  186. }
復(fù)制代碼



這個程序是論壇里下的,只是把二級管改成了陰級導(dǎo)通,想不明白為什么原帖會用三級管控制LED,IO口加限流電阻控制LED應(yīng)沒問題吧,又不多。

所有波形都是在IO口測的
ID:88256 發(fā)表于 2021-8-23 08:29
也不是新注冊的,程序也不發(fā)一個出來。
那些波形是接在哪里測試的?紅外接收的波形是倒的,沒信號是高電平,接收到信號輸出低電平,遵循這一點再結(jié)合程序就知道是接收還是發(fā)射部分出錯了。至于怎么倒,沒有程序就沒辦法建議了。

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

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

快速回復(fù) 返回頂部 返回列表