找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

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

16*16點(diǎn)陣彈彈球球小游戲制作,含單片機(jī)源代碼(有注釋)

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:335193 發(fā)表于 2018-6-1 15:19 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
這是在師傅那里拿到點(diǎn)陣板后為了練習(xí)16*16點(diǎn)陣板寫的一個(gè)彈球小游戲,算法是自己寫的一、使用的工具
1.點(diǎn)陣板:七星蟲德飛萊的LY-LED16*16BV2.1
2.單片機(jī):STC89C52 LY51-L2c的單片機(jī),晶振是12.000
3.編程軟件:Keil
4.調(diào)試工具:stc-isp-15xx-v6.86D
5.STC的89c52 USB轉(zhuǎn)串口線驅(qū)動(dòng)

二,主要功能有下1.顯示開始界面



2.消除,并數(shù)碼管顯示分?jǐn)?shù)


3.繼續(xù)消除


4.結(jié)束游戲


5.游戲中可以加速和減速小球
6.消除完全部小球后會(huì)顯示笑臉

三、規(guī)則
開始、結(jié)束、勝利中使用s4作為確認(rèn)鍵
開始游戲后按鍵功能如下
1.s1 左移
2.s2 右移
3.s3 減速
4.s4 加速

四、缺點(diǎn)
1.要消除完一整行之后才能消除下一行
2.擋板的和球的反彈有點(diǎn)問題
3.別的還有問題希望大家多多指教

五、單片機(jī)源程序如下:
  1. /*-----------------------------------------------
  2.   名稱:彈彈球游戲
  3.   編寫:田*
  4.   日期:2018年
  5.   內(nèi)容:屏+5V連接電源5V
  6.                   GND接GND
  7.         P3.0-P3.3分別連接A、B、C、D,用于控制16行
  8.         SCK時(shí)鐘連接P1.5
  9.         LATCH鎖存連接P1.6
  10.         R1紅色數(shù)據(jù)信號(hào)連接至P1.4
  11.         G1綠色數(shù)據(jù)信號(hào)連接至P3.4,如果單紅色屏此信號(hào)無需連接
  12.         OE使能端接P1.1
  13. ------------------------------------------------*/
  14. #include<reg52.h>
  15. #include "scanKey.h"
  16. #include "scanNum.h"

  17. sbit T_STR = P1^6;       // 鎖存引腳,屏上標(biāo)識(shí)位STR
  18. sbit R1    = P1^4;       // 數(shù)據(jù)引腳,屏上標(biāo)識(shí)R1
  19. sbit G1    = P3^4;       // 數(shù)據(jù)引腳,屏上標(biāo)識(shí)G1        ·沒有該燈光,可不用
  20. sbit T_CLK = P1^5;       // 時(shí)鐘引腳,屏上標(biāo)識(shí)位CLK
  21. sbit OE    = P1^1;       // 使能引腳,屏上標(biāo)識(shí)EN/OE

  22. unsigned char DIS[]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};        //行數(shù)據(jù)
  23. unsigned char ledShow[][32]={0x00};                                                                // 顯示擋板
  24. code dotDis[8] = {0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};                // 扭轉(zhuǎn)順序

  25. void input2Byte(unsigned char dataR1);                                                        // 寫入數(shù)據(jù)
  26. void init_Timer1(void);                                                                                        // 初始化定時(shí)器
  27. void position(int pos);                                                                                        // 移動(dòng)擋板位置
  28. void gameOver();                                                                                                // 游戲結(jié)束
  29. void gameWin();                                                                                                        // 游戲勝利
  30. bit isGameWin();                                                                                                // 判斷游戲是否勝利

  31. void gameMenu();                                                                                                 // 游戲菜單
  32. void playGame();                                                                                                // 開始游戲

  33. /*
  34.         以下是擋板移動(dòng)位置的十六進(jìn)制
  35.         1111 1000 0000 0000        ledShow[28] = 0xF8 ledShow[29] = 0x00
  36.         0111 1100 0000 0000        ledShow[28] = 0x7C ledShow[29] = 0x00
  37.         0011 1110 0000 0000        ledShow[28] = 0x3E ledShow[29] = 0x00
  38.         0001 1111 0000 0000        ledShow[28] = 0x1F ledShow[29] = 0x00

  39.         0000 1111 1000 0000        ledShow[28] = 0x0F ledShow[29] = 0x80
  40.         0000 0111 1100 0000        ledShow[28] = 0x07 ledShow[29] = 0xC0
  41.         0000 0011 1110 0000        ledShow[28] = 0x03 ledShow[29] = 0xE0
  42.         0000 0001 1111 0000        ledShow[28] = 0x01 ledShow[29] = 0xF0

  43.         0000 0000 1111 1000        ledShow[28] = 0x00 ledShow[29] = 0xF8
  44.         0000 0000 0111 1100        ledShow[28] = 0x00 ledShow[29] = 0x7C
  45.         0000 0000 0011 1110        ledShow[28] = 0x00 ledShow[29] = 0x3E
  46.         0000 0000 0001 1111 ledShow[28] = 0x00 ledShow[29] = 0x1F
  47. */
  48. bit move = 0;                                                                                                        // 是否移動(dòng)
  49. bit isUp = 1;                                                                                                         // 小球往上
  50. bit isDown = 0;                                                                                                        // 小球往下
  51. char rolIndex = 26;                                                                                                // 初始行位置
  52. char colIndex = 3;                                                                                                // 初始列位置
  53. char pos = 5;                                                                                                        // 擋板位置
  54. char sysFun = 0;                                                                                                // 系統(tǒng)功能                                       
  55. bit gameState = 0;                                                                                                // 游戲狀態(tài)
  56. char speed = 50;                                                                                                // 游戲速度
  57. unsigned short gameScore = 0;                                                                        // 游戲分?jǐn)?shù)
  58. bit f_num = 0;                                                                                                        // 數(shù)碼管顯示

  59. // 主程序
  60. int main()
  61. {
  62.         static unsigned char count = 0;                                                                // 數(shù)碼管顯示計(jì)時(shí)
  63.         init_Timer1();                                                                                                 // 初始化定時(shí)器
  64.         fillDisBuf(gameScore,1);                                                                        // 填充數(shù)碼管

  65.         while(1)
  66.         {
  67.                 scanKey();                                                                                                // 實(shí)時(shí)掃描按鍵        
  68.                 if (sysFun == 1 && f_num) {
  69.                         
  70.                         count++;
  71.                         if (count == 20) {                                                                         // 100ms比較好
  72.                            display();
  73.                            count = 0;
  74.                         }
  75.                         f_num = 0;
  76.                 }
  77.                
  78.                 /* 多任務(wù)控制核心 */
  79.                 switch(sysFun) {
  80.                         case 0:                                                                                                // 顯示游戲菜單
  81.                                 gameMenu();
  82.                                 break;
  83.                         case 1:                                                                                                // 開始游戲
  84.                                  playGame();
  85.                                  break;
  86.                         case 2:                                                                                                // 游戲勝利
  87.                                 gameWin();
  88.                                 break;
  89.                         case 3:                                                                                                // 游戲結(jié)束
  90.                                 gameOver();
  91.                                 break;
  92.                 }
  93.         }
  94. }

  95. /* 顯示游戲菜單 */
  96. void gameMenu() {
  97.         char i;
  98.         if (!gameState) {
  99.                
  100.                 // 全部先初始化為不亮
  101.                 for (i = 0; i < 32; i++){
  102.                         ledShow[0][i] = 0x00;
  103.                 }
  104.         
  105.                 // 初始化游戲LED燈,顯示初始界面
  106.                 ledShow[0][0]  = 0xEA; ledShow[0][1]  = 0x05;
  107.                 ledShow[0][2]  = 0x2E; ledShow[0][3]  = 0xEF;
  108.                 ledShow[0][4]  = 0xEA; ledShow[0][5]  = 0x44;
  109.                 ledShow[0][6]  = 0x8E; ledShow[0][7]  = 0x4E;
  110.                 ledShow[0][8]  = 0xEA; ledShow[0][9]  = 0xF5;
  111.                 ledShow[0][10] = 0x2E; ledShow[0][11] = 0x44;
  112.                 ledShow[0][12] = 0x24; ledShow[0][13] = 0x4C;
  113.                 ledShow[0][14] = 0xEE; ledShow[0][15] = 0xE4;
  114.                 ledShow[0][16] = 0x04;

  115.                 gameState = 1;                                                                                        // 開啟游戲狀態(tài)為

  116.                 /* 擋板歸位 */
  117.                 pos = 5;                                                                                                // 擋板初始位置
  118.                 rolIndex = 26;                                                                                        // 小球索引
  119.                 ledShow[0][rolIndex] = 0x01;                                                        // 球初始位置
  120.                 position(pos);                                                                                        // 顯示擋板
  121.                 gameScore = 0;                                                                                        // 游戲歸0
  122.         }

  123.         /* s4作為游戲開始 */
  124.         if (s4d) {
  125.                 s4d = 0;
  126.                 sysFun = 1;
  127.                 gameState = 1;
  128.         }
  129. }

  130. /* 玩游戲 */
  131. void playGame() {
  132.         char i;
  133.         if (gameState) {                                                                                         // 是否經(jīng)過了初始化

  134.                 /* 初始化游戲區(qū)域 */
  135.                 gameState = 0;
  136.                 for (i = 0; i < 32; i++){
  137.                         if (i <= 15) {
  138.                                 ledShow[0][i] = 0xFF;
  139.                         }
  140.                         else{
  141.                                 ledShow[0][i] = 0x00;
  142.                         }
  143.                 }

  144.                 /* 擋板歸位 */
  145.                 pos = 5;                                                                        // 擋板位置
  146.                 rolIndex = 26;                                                                // 小球索引
  147.                 ledShow[0][rolIndex] = 0x01;                                // 球初始位置
  148.                 position(pos);                                                                // 顯示擋板
  149.                 gameScore = 0;                                                                // 游戲歸0               
  150.         }
  151.          /* 根據(jù)按鍵移動(dòng)擋板        */
  152.          if (s1d){
  153.                 s1d = 0;
  154.                 pos--;
  155.                 if (pos < 0) {                                                                 // 判斷是否在邊界,是則不能移動(dòng)
  156.                         pos = 0;
  157.                 }
  158.                 else{
  159.                          position(pos);
  160.                 }

  161.                 /* 判斷是否在另外一個(gè)區(qū)域的邊界        */
  162.                 if (ledShow[0][rolIndex] == 0x80 && rolIndex == 27) {
  163.                      ledShow[0][rolIndex] = 0x00;                        // 關(guān)閉當(dāng)前行
  164.                          rolIndex--;                                                         // 跳轉(zhuǎn)下一行
  165.                          ledShow[0][rolIndex] = 0x01;                        // 新位置
  166.                 }
  167.                 else if (rolIndex >= 25 && rolIndex <= rolIndex + 2) {
  168.                         /* 判斷是否在可移動(dòng)邊界 */
  169.                         if (ledShow[0][rolIndex] != 0x80) {                // 是否還能移動(dòng)
  170.                                  ledShow[0][rolIndex] <<= 1;                        // 小球左移
  171.                         }
  172.                 }
  173.         }
  174.         if (s2d){
  175.                 s2d = 0;
  176.                 pos++;
  177.                 if (pos >= 12) {                                                         // 12是到右邊界移動(dòng)的距離
  178.                         pos = 11;
  179.                 }
  180.                 else{
  181.                          position(pos);                                                         // 往右移動(dòng)擋板
  182.                 }

  183.                 /* 判斷是否在另外一個(gè)區(qū)域的邊界 */
  184.                 if (ledShow[0][rolIndex] == 0x01 && rolIndex == 26) {
  185.                      ledShow[0][rolIndex] = 0x00;
  186.                          rolIndex++;
  187.                          ledShow[0][rolIndex] = 0x80;
  188.                 }
  189.                 else if (rolIndex >= 25 && rolIndex <= rolIndex + 2) {

  190.                         /* 判斷是否在可移動(dòng)邊界 */
  191.                         if (ledShow[0][rolIndex] != 0x01) {                // 判斷是否已到達(dá)邊界
  192.                                 ledShow[0][rolIndex] >>= 1;
  193.                         }
  194.                 }
  195.         }

  196.         // 游戲減速
  197.         if(s3d) {
  198.                 s3d = 0;

  199.                 // 加大延遲
  200.                 speed += 10;
  201.                 speed = (speed <= 50) ? speed : 50;
  202.         }
  203.         
  204.         // 游戲加速
  205.         if(s4d) {
  206.                 s4d = 0;

  207.                 // 減小延遲
  208.                 speed -= 10;
  209.                 speed = (speed >= 20) ? speed : 20;
  210.         }  
  211.         
  212.         // 點(diǎn)移動(dòng)
  213.         if (move) {
  214.                 move = 0;
  215.                
  216.                 /* 當(dāng)球往上移動(dòng)的時(shí)候 */
  217.                 if (isUp) {
  218.                         rolIndex -= 2;                                                        // 點(diǎn)陣版是順序加,-2才上球的正上方

  219.                         /* 如果是在空白區(qū)域則直接往上移動(dòng) */
  220.                         if (ledShow[0][rolIndex] == 0x00 && rolIndex > 0) {
  221.                                 ledShow[0][rolIndex] = ledShow[0][rolIndex+2];
  222.                                 ledShow[0][rolIndex+2] = 0x00;                // 移動(dòng)之后需要將前一行燈關(guān)閉               
  223.                         }
  224.                         else if (rolIndex < 0) {                                // 判斷是否到達(dá)邊界
  225.                                 if(isGameWin()){                                        // 判斷是否全部打完
  226.                                    sysFun = 2;                                                // 切換系統(tǒng)狀態(tài)
  227.                                 }
  228.                                 else{
  229.                                         isUp = 0;
  230.                                            isDown = 1;
  231.                                            rolIndex += 2;                                         // +2回到頂部
  232.                                 }
  233.                         }
  234.                         else if (ledShow[0][rolIndex] != 0x00 &&
  235.                                 (ledShow[0][rolIndex] & ledShow[0][rolIndex+2]) == 0x00){
  236.                                 // 上一行沒有消除完整但是正上一個(gè)為空,直接返回
  237.                                 
  238.                                 isUp = 0;
  239.                                    isDown = 1;
  240.                                    rolIndex += 2;                                       
  241.                         }        
  242.                         else if (ledShow[0][rolIndex] == 0xFF ||
  243.                                 (ledShow[0][rolIndex] & ledShow[0][rolIndex+2]) != 0x00) {
  244.                            
  245.                            // 判斷上面一行是不是整行未消除或者正上方有
  246.                            ledShow[0][rolIndex] &= (~ledShow[0][rolIndex+2]);
  247.                            isUp = 0;
  248.                            isDown = 1;
  249.                            rolIndex += 2;

  250.                            // 根據(jù)小球速度進(jìn)行加分
  251.                            switch(speed) {
  252.                                             case 50: gameScore += 1; break;                        // 四等級(jí)+1分
  253.                                         case 40: gameScore += 2; break;                           // 三等級(jí)+2分
  254.                                         case 30: gameScore += 3; break;                        // 二等級(jí)+3分
  255.                                         case 20: gameScore += 4; break;                        // 一等級(jí)+4分
  256.                            }
  257.                            fillDisBuf(gameScore,1);                                                // 分?jǐn)?shù)+完填充數(shù)碼管
  258.                         }
  259.                 }
  260.                    if (isDown) {
  261.                         rolIndex += 2;

  262.                         if (rolIndex > 31) {                                                        // 超出邊界
  263.                                 rolIndex = 30;
  264.                                 sysFun = 3;                                                                        // 切換系統(tǒng)狀態(tài)到結(jié)束
  265.                                 
  266.                         }
  267.                         else if (ledShow[0][rolIndex] == 0x00) {                // 空白區(qū)域直接下移
  268.                                 ledShow[0][rolIndex] = ledShow[0][rolIndex-2];
  269.                                 ledShow[0][rolIndex-2] = 0x00;        
  270.                         }
  271.                         else if ((ledShow[0][rolIndex]) != 0x00) {                // 碰到板
  272.                                 isUp = 1;
  273.                                    isDown = 0;
  274.                                 rolIndex -= 2;
  275.                         }
  276.                 }
  277.         }
  278. }

  279. /* 判斷游戲勝利 */
  280. bit isGameWin() {
  281.         bit flag = 1;
  282.         char i;
  283.         for(i = 0; i < 16; i++) {                                                                // 上方磚塊區(qū)域
  284.                 /*判斷是否除了小球外游戲區(qū)域的磚塊全部消除*/
  285.            if (ledShow[0][i] != 0x00 && ledShow[0][i] != ledShow[0][rolIndex+2]) {                                                        // 判斷點(diǎn)陣是否全滅
  286.                            flag = 0;
  287.                         break;
  288.            }
  289.         }
  290.         return flag;
  291. }

  292. /* 游戲勝利 */
  293. void gameWin() {

  294.         // 游戲勝利標(biāo)志
  295.         ledShow[0][0]  = 0x00; ledShow[0][1]  = 0x00;
  296.         ledShow[0][2]  = 0x00; ledShow[0][3]  = 0x00;
  297.         ledShow[0][4]  = 0x07; ledShow[0][5]  = 0xE0;
  298.         ledShow[0][6]  = 0x08; ledShow[0][7]  = 0x10;
  299.         ledShow[0][8]  = 0x10; ledShow[0][9]  = 0x08;
  300.         ledShow[0][10] = 0x26; ledShow[0][11] = 0x64;
  301.         ledShow[0][12] = 0x20; ledShow[0][13] = 0x04;
  302.         ledShow[0][14] = 0x20; ledShow[0][15] = 0x04;
  303.         
  304.         ledShow[0][16] = 0x20; ledShow[0][17] = 0x04;
  305.         ledShow[0][18] = 0x22; ledShow[0][19] = 0x44;
  306.         ledShow[0][20] = 0x21; ledShow[0][21] = 0x84;
  307.         ledShow[0][22] = 0x10; ledShow[0][23] = 0x08;
  308.         ledShow[0][24] = 0x08; ledShow[0][25] = 0x10;
  309.         ledShow[0][26] = 0x07; ledShow[0][27] = 0xE0;
  310.         ledShow[0][28] = 0x00; ledShow[0][29] = 0x00;
  311.         ledShow[0][30] = 0x00; ledShow[0][31] = 0x00;

  312.         if (s4d) {
  313.                 s4d = 0;
  314.                 sysFun = 0;
  315.         }
  316. }

  317. /* 游戲結(jié)束 */
  318. void gameOver() {

  319.         // 游戲結(jié)束標(biāo)志
  320.         ledShow[0][0]  = 0x00; ledShow[0][1]  = 0x00;
  321.         ledShow[0][2]  = 0x00; ledShow[0][3]  = 0x00;
  322.         ledShow[0][4]  = 0x07; ledShow[0][5]  = 0xE0;
  323.         ledShow[0][6]  = 0x08; ledShow[0][7]  = 0x10;
  324.         ledShow[0][8]  = 0x10; ledShow[0][9]  = 0x08;
  325.         ledShow[0][10] = 0x26; ledShow[0][11] = 0x64;
  326.         ledShow[0][12] = 0x20; ledShow[0][13] = 0x04;
  327.         ledShow[0][14] = 0x20; ledShow[0][15] = 0x04;
  328.         
  329.         ledShow[0][16] = 0x20; ledShow[0][17] = 0x04;
  330.         ledShow[0][18] = 0x21; ledShow[0][19] = 0x84;
  331.         ledShow[0][20] = 0x22; ledShow[0][21] = 0x44;
  332.         ledShow[0][22] = 0x10; ledShow[0][23] = 0x08;
  333.         ledShow[0][24] = 0x08; ledShow[0][25] = 0x10;
  334.         ledShow[0][26] = 0x07; ledShow[0][27] = 0xE0;
  335.         ledShow[0][28] = 0x00; ledShow[0][29] = 0x00;
  336.         ledShow[0][30] = 0x00; ledShow[0][31] = 0x00;

  337.         if (s4d) {
  338.                 s4d = 0;
  339.                 sysFun = 0;
  340.         }
  341. }

  342. /* 初始化定時(shí)器,做為動(dòng)態(tài)掃描 */
  343. void init_Timer1(void)
  344. {
  345.         TMOD |= 0x11;                             
  346.         EA=1;                                                      //總中斷使能
  347.         ET1=1;                                                     //定時(shí)中斷使能
  348.         TR1=1;                                                     //打開定時(shí)器開關(guān)

  349.         TR0=1;                                                                           // start
  350.         TH0=0xEC;
  351.         TL0=0x78;
  352.         ET0=1;        
  353. }

  354. // 一次寫入兩個(gè)字節(jié)
  355. void input2Byte(unsigned char dataR1)                 //寫兩個(gè)字節(jié)
  356. {
  357.         unsigned char i;

  358.         bit temp = 0;
  359.         for(i=0; i<8; i++)
  360.         {
  361.                  R1 = !(dataR1 & dotDis[i]);                // 調(diào)整成較為方便的看的順序
  362.                                  
  363.                  T_CLK = 0;
  364.                  T_CLK = 1;
  365.          }
  366. }

  367. // 定時(shí)器執(zhí)行動(dòng)態(tài)掃描整個(gè)點(diǎn)陣
  368. void timer1_isr(void) interrupt 3
  369. {
  370.          static unsigned char count;
  371.         unsigned char i;
  372.          
  373.         TH1=0xFF;                                                                //重裝初值
  374.         TL1=0;

  375.         T_STR=0;                                                               // 鎖存釋放

  376.         input2Byte(ledShow[0][i]);
  377.         input2Byte(ledShow[0][i+1]);
  378.         OE=1;                                                                          // 暫時(shí)關(guān)閉屏幕,防止出現(xiàn)鬼影,如果沒有使用該引腳控制則會(huì)出現(xiàn)拖影現(xiàn)象。
  379.         T_STR=1;                                                              // 鎖存有效,此時(shí)一行的數(shù)據(jù)顯示到屏上
  380.         P3=DIS[15-count]|0xF0;                                        // 用P0口的前4位控制16行,屏內(nèi)部通過4-16譯碼器工作,循環(huán)掃描其他15行
  381.         OE=0;                                                                        // 使能

  382.         count++;
  383.         i+=2;                                                              // 累加調(diào)用下一行數(shù)據(jù)
  384.         if(count==16) count=0;
  385.         if(i==32)            i=0;                                                // 又從第一個(gè)位置掃描
  386. }

  387. // 中斷0 ,產(chǎn)生移動(dòng)信號(hào)
  388. void init_timer0()interrupt 1 using 1{
  389.         static unsigned char count = 0;
  390.         TR0=0;
  391.         TH0=0xEC;
  392.         TL0=0x78;
  393.         TR0=1;

  394.         f_num = 1;                                                                // 5ms顯示一次數(shù)碼管

  395.         count++;
  396.         if (count >= speed) {
  397.                 count = 0;
  398.                 move = 1;
  399.         }
  400. }
  401. ……………………

  402. …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼

所有代碼51hei提供下載:
彈球小游戲-源代碼.zip (53.77 KB, 下載次數(shù): 60)

評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

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

使用道具 舉報(bào)

沙發(fā)
ID:355644 發(fā)表于 2018-6-21 00:21 | 只看該作者
樓主我想問你接線圖怎么接的
回復(fù)

使用道具 舉報(bào)

板凳
ID:352709 發(fā)表于 2018-6-21 09:37 | 只看該作者
怎么仿真
回復(fù)

使用道具 舉報(bào)

地板
ID:380389 發(fā)表于 2018-8-28 18:40 來自手機(jī) | 只看該作者
感謝樓主分享,學(xué)習(xí)一下
回復(fù)

使用道具 舉報(bào)

5#
ID:1131956 發(fā)表于 2024-9-13 20:33 | 只看該作者
感謝感謝
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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