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

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 17626|回復(fù): 34
收起左側(cè)

小玩意,3個(gè)普通IO識(shí)別22個(gè)按鍵試驗(yàn)。有實(shí)物和程序

  [復(fù)制鏈接]
ID:51654 發(fā)表于 2013-7-9 23:08 | 顯示全部樓層 |閱讀模式
在51hei論壇吸取各位前輩的經(jīng)驗(yàn),將之前二極管用量多的問(wèn)題優(yōu)化一下,目前不用二極管能接6鍵,2只二極管能接12鍵,6只二極管能接18鍵,9只二極管能接21鍵,第22鍵要單獨(dú)占用3只二極管最不化算。

實(shí)驗(yàn)用89S51作試驗(yàn),電路接線就是P1.2,P1.3,P1.4接鍵盤(pán),P1.0接顯示器。

ourdev_611027.gif

ourdev_611028.JPG


ourdev_611029.jpg
ourdev_479533.PNG
  1. /*==================================================================*

  2. * 3個(gè)IO接識(shí)別22鍵測(cè)試程序 *

  3. * ------------------------------------------------ *

  4. * MCU: AT89C2051 *

  5. * OSC: 12M cysytel *

  6. * 程序設(shè)計(jì):Cowboy *

  7. * 程序版本:V1.0 *

  8. *==================================================================*/



  9. #include<reg52.h>



  10. //================== IO口線連接 ==================

  11. sbit Bus = P1^0;

  12. sbit IO_a = P1^4;

  13. sbit IO_b = P1^3;

  14. sbit IO_c = P1^2;



  15. //================== 變量聲明 ====================

  16. unsigned char Disp_buf[3];

  17. unsigned char Dig;

  18. unsigned char Key_count;

  19. unsigned char bdata Key_state;

  20. sbit KB0 = Key_state^0;

  21. sbit KB1 = Key_state^1;

  22. sbit KB2 = Key_state^2;

  23. sbit KB3 = Key_state^3;

  24. sbit KB4 = Key_state^4;

  25. sbit KB5 = Key_state^5;



  26. //================== 表格數(shù)據(jù) ====================

  27. code unsigned char LED_font[24]=

  28. {

  29. 0x84,0x9f,0xa2,0x8a,0x99,0xc8,0xc0,0x9e,0x80, //012345678

  30. 0x88,0x90,0xc1,0xe4,0x83,0xe0,0xf0,0xff,0xfb, //9abcdef -

  31. };



  32. code unsigned char Key_tab[64]= //鍵碼映射表

  33. {// 0 1 2 3 4 5 6 7 8 9

  34. 22, 0, 2, 0, 0, 0, 0, 0, 4, 0, //0

  35. 0, 0, 0, 0, 0,18, 0, 0, 0, 0, //1X

  36. 0, 0, 0, 0, 0, 0, 3,14, 0, 0, //2X

  37. 20,10, 6, 0, 0, 0, 0, 0, 1,19, //3X

  38. 0, 5, 0, 0, 0,15, 0,11, 0, 0, //4X

  39. 0,17, 0, 0,13, 8, 0,21, 0, 9, //5X

  40. 16,12, 7, 0 //6X

  41. };



  42. //=============== 檢測(cè)按鍵 =================

  43. void Key_scan()

  44. {

  45. unsigned char i;

  46. Key_count --; //掃描次序

  47. Key_count &= 3;

  48. switch (Key_count) //按次序處理

  49. {

  50. case 2: //第一輪掃描

  51. KB0 = IO_b;

  52. KB1 = IO_c;

  53. IO_a = 1;

  54. IO_b = 0;

  55. break;



  56. case 1: //每二輪掃描

  57. KB2 = IO_c;

  58. KB3 = IO_a;

  59. IO_b = 1;

  60. IO_c = 0;

  61. break;



  62. case 0: //每三輪掃描

  63. KB4 = IO_a;

  64. KB5 = IO_b;

  65. IO_c = 1;

  66. break;



  67. default: //每四輪掃描

  68. if (!IO_a) KB0 = 0;

  69. if (!IO_b) KB2 = 0;

  70. if (!IO_c) KB4 = 0;

  71. IO_a = 0;



  72. //======更新顯示緩沖區(qū)=======

  73. i = Key_tab[Key_state];

  74. if (i == 0)

  75. {

  76. Disp_buf[2] = 0x11; //顯示三橫

  77. Disp_buf[1] = 0x11;

  78. Disp_buf[0] = 0x11;

  79. }

  80. else

  81. {

  82. Disp_buf[2] = 0x0c; //字符"C"

  83. Disp_buf[1] = i / 10; //鍵碼十位

  84. Disp_buf[0] = B;于 //鍵碼個(gè)位

  85. }

  86. Key_state = 0;

  87. }

  88. }





  89. /*===================================================================

  90. ONE WIRE 顯示總線驅(qū)動(dòng)程序

  91. ===================================================================*/



  92. //=============== 發(fā)送一位 =================

  93. void Send_bit(bit Dat)

  94. {

  95. unsigned char i = 3;

  96. if (!Dat) Bus = 0;

  97. else

  98. {

  99. Bus = 0;

  100. Bus = 1;

  101. }

  102. while(--i); //延時(shí)8us

  103. Bus = 1;

  104. }



  105. //=============== 總線驅(qū)動(dòng) =================

  106. void Bus_drive()

  107. {

  108. unsigned char i = 0;

  109. unsigned char Sdat;

  110. Send_bit(1); //Bit6消隱

  111. do Bus = 1; while(--i); //延時(shí)768us

  112. do Bus = 0; while(--i); //延時(shí)768us

  113. Bus = 1;

  114. Sdat = LED_font[Disp_buf[Dig++]]; //獲取顯示數(shù)據(jù)

  115. Send_bit(Sdat & 0x01); //發(fā)送位0

  116. Send_bit(Sdat & 0x02); //發(fā)送位1

  117. Send_bit(Sdat & 0x04); //發(fā)送位2

  118. Send_bit(Sdat & 0x08); //發(fā)送位3

  119. Send_bit(Sdat & 0x10); //發(fā)送位4

  120. Send_bit(Sdat & 0x20); //發(fā)送位5

  121. Send_bit(Dig & 0x01); //發(fā)送位選1

  122. Send_bit(Dig & 0x02); //發(fā)送位選2

  123. while(--i); //延時(shí)512us

  124. Send_bit(Sdat & 0x40); //發(fā)送位6

  125. for (i = 7;i> 0;i--) Send_bit(1); //位6移至Dout

  126. if (Dig == 3) Dig = 0;

  127. }



  128. /*===================================================================

  129. 延時(shí) 5ms 程序

  130. ===================================================================*/

  131. void Delay_5ms()

  132. {

  133. while(!TF1);

  134. TF1 = 0;

  135. TH1 = (- 5000) / 256;

  136. TL1 = (- 5000) % 256;

  137. }



  138. /*===================================================================

  139. 主程序

  140. ===================================================================*/

  141. void main()

  142. {

  143. TMOD = 0x10; //定時(shí)器1,16位模式

  144. TCON = 0xc0; //TR1=1;TF1=1;

  145. while(1) //主循環(huán)

  146. {

  147. Bus_drive(); //顯示總線驅(qū)動(dòng)

  148. Key_scan(); //檢測(cè)按鍵

  149. Delay_5ms(); //延時(shí)5MS

  150. }

  151. }
復(fù)制代碼
回復(fù)

使用道具 舉報(bào)

ID:51654 發(fā)表于 2013-7-9 23:15 | 顯示全部樓層
下次焊?jìng)€(gè)四面體的4IO玩玩看

-----------------------------------------------------

二極管數(shù)量

6條楞,每楞兩個(gè),12個(gè)

中間星型,4個(gè)

共16個(gè)
回復(fù)

使用道具 舉報(bào)

ID:51654 發(fā)表于 2013-7-9 23:15 | 顯示全部樓層

作為試驗(yàn)?zāi)康�,沒(méi)有接按鍵,只焊了個(gè)鍵盤(pán)框架,用鑷子短路相應(yīng)的節(jié)點(diǎn)來(lái)當(dāng)按鍵。圖中接二極管陣列的三根線是3個(gè)IO,單獨(dú)的一根是地線。MCU發(fā)送串行數(shù)據(jù)給HC595驅(qū)動(dòng)數(shù)碼管作鍵碼顯示。
回復(fù)

使用道具 舉報(bào)

ID:51654 發(fā)表于 2013-7-9 23:21 | 顯示全部樓層
對(duì)于這種方式的按鍵識(shí)別方法,很多朋友擔(dān)心編程會(huì)很復(fù)雜,其實(shí)仔細(xì)分析后也很簡(jiǎn)單.比如上面例子,其本的思路是依次把三個(gè)IO拉低,然后記錄另外兩個(gè)IO的狀態(tài),最后三個(gè)IO都不下拉,再記錄一次,就可得出的結(jié)果.對(duì)于按下不同的按鍵,就有不同的結(jié)果.如果只掃18鍵,那么最后一次掃描可以省掉,即掃描三次即可.實(shí)際應(yīng)用時(shí)5MS的掃描間隔可以用定時(shí)中斷來(lái)實(shí)現(xiàn),這樣就只占用很少的MCU時(shí)間.
回復(fù)

使用道具 舉報(bào)

ID:50574 發(fā)表于 2013-7-10 00:21 | 顯示全部樓層

樓主,兩點(diǎn)請(qǐng)求:
1、能否給我單總線數(shù)碼管顯示那塊的電路圖
2、我移植到AVR下,按鍵值不變,錯(cuò)在哪里呢?
   //=============== 檢測(cè)按鍵 =================
void Key_scan()
{   
    unsigned char i;
    Key_count --;                        //掃描次序
    Key_count &= 3;
    switch (Key_count)                //按次序處理
    {
        case 2:                                //第一輪掃描
        KB0 = PINA&0X02;  
        KB1 = PINA&0X04;  
        PORTA |= (1<<0);
        PORTA &= ~(1<<1);
        break;
     
        case 1:                                //每二輪掃描
        KB2 = PINA&0X04;
        KB3 = PINA&0X01;
        PORTA |= (1<<1);  
        PORTA &= ~(1<<2);
        break;
     
        case 0:                                //每三輪掃描
        KB4 = PINA&0X01;
        KB5 = PINA&0X02;
        PINA &= ~(1<<0);
        PORTA |= (1<<0);  
        break;
     
        default:                        //每四輪掃描
        if (!(PINA&0X01)) KB0 = 0;
        if (!(PINA&0X02)) KB2 = 0;
        if (!(PINA&0X04)) KB4 = 0;
         

        //======更新顯示緩沖區(qū)=======
        Key_state = KB0<<5 + KB1<<4 + KB2<<3 + KB3<<2 + KB4<<1 + KB5;
        i = Key_tab[Key_state];
        if (i == 0)
        {
            Disp_buf[2] = 0x11;                //顯示三橫
            Disp_buf[1] = 0x11;
            Disp_buf[0] = 0x11;
        }
        else
        {
            Disp_buf[2] = 0x0c;     //字符"C"
            Disp_buf[1] = i / 10;   //鍵碼十位
            Disp_buf[0] = i % 10;      //鍵碼個(gè)位
        }
        Key_state = 0;
    }
}

還有,你那個(gè)筆段代碼是BCD碼嗎?
回復(fù)

使用道具 舉報(bào)

ID:51654 發(fā)表于 2013-7-10 00:24 | 顯示全部樓層
h333 發(fā)表于 2013-7-10 00:21
樓主,兩點(diǎn)請(qǐng)求:
1、能否給我單總線數(shù)碼管顯示那塊的電路圖
2、我移植到AVR下,按鍵值不變,錯(cuò)在哪里 ...

首先,AVR的IO不是準(zhǔn)雙向口,在作為輸入時(shí),需要開(kāi)上拉電阻,當(dāng)切換到輸出0時(shí),需要改變PORTA和DDRA,你程序里沒(méi)有更改DDRA,因而不能動(dòng)作。
其次,沒(méi)看到你對(duì)KB0~KB5的變量類(lèi)型聲明,51中聲明為bit,AVR中的位操作比較麻煩,建議讀入時(shí)直接更新Key_state,取消KB0~KB5。
至于顯示的問(wèn)題,我打算遲些開(kāi)個(gè)新帖,因?yàn)楹瓦@主題關(guān)系不大。鍵碼已從 i= Key_tab[Key_state] 獲得,需要送顯示可自行處理。
回復(fù)

使用道具 舉報(bào)

ID:50574 發(fā)表于 2013-7-10 00:42 | 顯示全部樓層

unsigned char KB0,KB1,KB2,KB3,KB4,KB5;


//=============== 檢測(cè)按鍵 =================
void Key_scan()
{   
    unsigned char i;
    Key_count --;                        //掃描次序
    Key_count &= 3;
    switch (Key_count)                //按次序處理
    {
        case 2:                                //第一輪掃描
        KB0 = PINA&0X02;  
        KB1 = PINA&0X04;  
        PORTA |= (1<<0);
                DDRA |= (1<<0);
        PORTA &= ~(1<<1);
                DDRA &= ~(1<<1);
        break;
     
        case 1:                                //每二輪掃描
        KB2 = PINA&0X04;
        KB3 = PINA&0X01;
        PORTA |= (1<<1);
                DDRA |= (1<<1);
        PORTA &= ~(1<<2);
                DDRA &= ~(1<<2);
        break;
     
        case 0:                                //每三輪掃描
        KB4 = PINA&0X01;
        KB5 = PINA&0X02;
        PORTA &= ~(1<<0);
                DDRA &= ~(1<<0);
        PORTA |= (1<<2);
                DDRA |= (1<<2);
        break;
     
        default:                        //每四輪掃描
        if (!(PINA&0X01)) KB0 = 0;
        if (!(PINA&0X02)) KB2 = 0;
        if (!(PINA&0X04)) KB4 = 0;
         

        //======更新顯示緩沖區(qū)=======
        Key_state = (KB0<<5 + KB1<<4 + KB2<<3 + KB3<<2 + KB4<<1 + KB5);
        i = Key_tab[Key_state];
        if (i == 0)
        {
            Disp_buf[2] = 0x11;                //顯示三橫
            Disp_buf[1] = 0x11;
            Disp_buf[0] = 0x11;
        }
        else
        {
            Disp_buf[2] = 0x0c;     //字符"C"
            Disp_buf[1] = i / 10;   //鍵碼十位
            Disp_buf[0] = i % 10;      //鍵碼個(gè)位
        }
        Key_state = 0;
    }
}     

void main()
{
   // TMOD = 0x10;            //定時(shí)器1,16位模式
    //TCON = 0xc0;            //TR1=1;TF1=1;
        init_devices();
    while(1)                //主循環(huán)
    {
        //Bus_drive();        //顯示總線驅(qū)動(dòng)
        PORTB = LED_font[Disp_buf[2]];
        PORTC = LED_font[Disp_buf[1]];
        PORTD = LED_font[Disp_buf[0]];
        Key_scan();         //檢測(cè)按鍵
        delay_ms(5);        //延時(shí)5MS     
    }
}

怎么按,都是顯示C22
回復(fù)

使用道具 舉報(bào)

ID:51654 發(fā)表于 2013-7-10 00:43 | 顯示全部樓層
樓上還是沒(méi)搞明白,舉例說(shuō)明一下

        case 2:                                //第一輪掃描
        if (PINA & 0x02) Key_state |= 0x01;    //讀入PINA.1,記錄于Key_state.0
        if (PINA & 0x04) Key_state |= 0x02;    //讀入PINA.2,記錄于Key_state.1
        DDRA  &= ~(1<<0);  //A口位0先改為輸入
        PORTA |=  (1<<0);  //A口位0上拉有效
        PORTA &=  (1<<1);  //A口位1設(shè)定為0
        DDRA  |=  (1<<1);  //A口位1改為輸出0
        break;             //以上端口變化順序不要更改,否則可以出現(xiàn)短路
回復(fù)

使用道具 舉報(bào)

ID:50574 發(fā)表于 2013-7-10 00:43 | 顯示全部樓層
為什么 不是:
        case 2:                //第一輪掃描  
        DDRA  &= ~(1<<0);  //A口位0先改為輸入
        PORTA |=  (1<<0);  //A口位0上拉有效
        PORTA &=  ~(1<<1);  //A口位1設(shè)定為0
        DDRA  |=  (1<<1);  //A口位1改為輸出0                               //第一輪掃描  
        if (PINA & 0x02) Key_state |= 0x01;    //讀入PINA.1,記錄于Key_state.0
        if (PINA & 0x04) Key_state |= 0x02;    //讀入PINA.2,記錄于Key_state.1        
        break;  
       先改變IO口狀態(tài),再做鍵值判斷?
       我那個(gè) Key_state = (KB5<<5 + KB4<<4 + KB3<<3 + KB2<<2 + KB1<<1 + KB0);效果也應(yīng)該是一樣呀,只不過(guò)繁瑣了一些
回復(fù)

使用道具 舉報(bào)

ID:50574 發(fā)表于 2013-7-10 00:43 | 顯示全部樓層

4個(gè)IO口,能掃多少鍵呢? ^_^
回復(fù)

使用道具 舉報(bào)

ID:51654 發(fā)表于 2013-7-10 01:06 | 顯示全部樓層
先改變IO狀態(tài),立刻回讀IO,有時(shí)會(huì)出錯(cuò),IO外部受分布參數(shù)影響會(huì)有延時(shí),特別是AVR上拉電阻較大,如果立該回讀可能出錯(cuò)。
這里看似先讀再改變IO輸出,其實(shí)讀的時(shí)候,上一輪掃描中已經(jīng)把IO改變,到現(xiàn)在已過(guò)了5ms,IO狀態(tài)足夠穩(wěn)定了,這時(shí)讀入就可靠。
讀完了,再改變IO狀態(tài),其實(shí)是為下一次做好準(zhǔn)備。

Key_state用組合生成,效果是一樣,只是處理繁瑣且占內(nèi)存也多。你先前的程序IO切換過(guò)程不正確才可能導(dǎo)致沒(méi)效果。
回復(fù)

使用道具 舉報(bào)

ID:51654 發(fā)表于 2013-7-10 01:07 | 顯示全部樓層
h333 發(fā)表于 2013-7-10 00:43
4個(gè)IO口,能掃多少鍵呢? ^_^

51的四個(gè)IO能掃65個(gè)鍵(或可以再多6個(gè),但這6個(gè)可靠性不太好).
AVR的,2個(gè)IO就可以掃15鍵,4個(gè)IO可能超100了,你可以搜索一下h2feo4的貼子。
回復(fù)

使用道具 舉報(bào)

ID:50574 發(fā)表于 2013-7-10 01:11 | 顯示全部樓層
四個(gè)IO掃3次,那Key_state就不止8位了,咋辦呢?
另外,default語(yǔ)句是不是漏了break?
樓主,能否把QQ號(hào)給我?我直接把仿真文件給你,就能直觀地看到錯(cuò)誤了
回復(fù)

使用道具 舉報(bào)

ID:51654 發(fā)表于 2013-7-10 01:14 | 顯示全部樓層
你沒(méi)細(xì)看程序,Key_state只用了6位,defalt那次的位用壓縮方或與前面6位中的3位相與。如果真的用到9位,鍵碼表占512字節(jié)就不好了。
至于dafalt后的break,在這里可用可不用,因?yàn)閐efalt后已經(jīng)是switch的未端。
你可以把文件傳到這里,或發(fā)至cowboy3@163.com
回復(fù)

使用道具 舉報(bào)

ID:50574 發(fā)表于 2013-7-10 01:28 | 顯示全部樓層

const unsigned char Key_tab[]=     //鍵碼映射表
{//  0  1  2  3  4  5  6  7  8  9   
        22, 0, 2, 0, 0, 0, 0, 0, 4, 0, //0
         0, 0, 0, 0, 0,18, 0, 0, 0, 0, //1X
         0, 0, 0, 0, 0, 0, 3,14, 0, 0, //2X
        20,10, 6, 0, 0, 0, 0, 0, 1,19, //3X
         0, 5, 0, 0, 0,15, 0,11, 0, 0, //4X
         0,17, 0, 0,13, 8, 0,21, 0, 9, //5X
        16,12, 7, 0                    //6X
};

//=============== 檢測(cè)按鍵 =================
void Key_scan()
{   
    unsigned char i;
    Key_count --;                        //掃描次序
    Key_count &= 3;
    switch (Key_count)                //按次序處理
    {
        case 2:                //第一輪掃描                                   
        if (PINA & 0x02) Key_state |= 0x01;    //讀入PINA.1,記錄于Key_state.0  
        if (PINA & 0x04) Key_state |= 0x02;    //讀入PINA.2,記錄于Key_state.1
                DDRA  &= ~(1<<0);  //A口位0先改為輸入  
        PORTA |=  (1<<0);  //A口位0上拉有效
                DDRA  &= ~(1<<2);  //A口位2先改為輸入  
        PORTA |=  (1<<2);  //A口位2上拉有效  
        PORTA &=  ~(1<<1);  //A口位1設(shè)定為0  
        DDRA  |=  (1<<1);  //A口位1改為輸出0         
        break;
     
        case 1:                                //每二輪掃描
        if (PINA & 0x01) Key_state |= 0x04;    //讀入PINA.0,記錄于Key_state.2  
        if (PINA & 0x04) Key_state |= 0x08;    //讀入PINA.2,記錄于Key_state.3
        PORTA |= (1<<1);
                DDRA &= ~(1<<1);
        PORTA &= ~(1<<2);
                DDRA  |= (1<<2);
                DDRA  &= ~(1<<0);   
        PORTA |=  (1<<0);  
        break;
     
        case 0:                                //每三輪掃描
        if (PINA & 0x02) Key_state |= 0x10;    //讀入PINA.1,記錄于Key_state.4  
        if (PINA & 0x01) Key_state |= 0x20;    //讀入PINA.0,記錄于Key_state.5
        PORTA |= (1<<2);
                DDRA &= ~(1<<2);
        PORTA &= ~(1<<0);
                DDRA  |= (1<<0);
                DDRA  &= ~(1<<1);   
        PORTA |=  (1<<1);  
        break;
     
        default:                        //每四輪掃描
        if (!(PINA&0X01)) Key_state &= ~(1<<0);
        if (!(PINA&0X02)) Key_state &= ~(1<<1);
        if (!(PINA&0X04)) Key_state &= ~(1<<2);
               
        break;
     }

        //======更新顯示緩沖區(qū)=======
        i = Key_tab[Key_state];                 
        if (i == 0)
        {
            Disp_buf[2] = 0x11;                //顯示三橫
            Disp_buf[1] = 0x11;
            Disp_buf[0] = 0x11;
        }
        else
        {
            Disp_buf[2] = 0x0c;     //字符"C"
            Disp_buf[1] = i / 10;   //鍵碼十位
            Disp_buf[0] = i % 10;      //鍵碼個(gè)位                        
        }
                //Key_state = 0;                        
}
Key_state什么時(shí)候清零才合適?要是4IO口的話,鍵碼又如何擴(kuò)展呢?
回復(fù)

使用道具 舉報(bào)

ID:51654 發(fā)表于 2013-7-10 01:31 | 顯示全部樓層
今天太晚了,下次再弄吧
回復(fù)

使用道具 舉報(bào)

ID:51777 發(fā)表于 2013-7-13 20:32 | 顯示全部樓層
由于還是新人 只有跟在高手后面慢慢做了!
回復(fù)

使用道具 舉報(bào)

ID:52177 發(fā)表于 2013-7-23 22:24 | 顯示全部樓層
有套件賣(mài)嗎?我要
回復(fù)

使用道具 舉報(bào)

ID:53315 發(fā)表于 2013-8-21 02:07 | 顯示全部樓層
樓主,我沒(méi)看見(jiàn)按鍵�。�
回復(fù)

使用道具 舉報(bào)

ID:55734 發(fā)表于 2013-10-9 02:12 | 顯示全部樓層
看看學(xué)習(xí)學(xué)習(xí)。。
回復(fù)

使用道具 舉報(bào)

ID:52286 發(fā)表于 2013-10-13 23:52 | 顯示全部樓層
支持支持!!
回復(fù)

使用道具 舉報(bào)

ID:58267 發(fā)表于 2013-12-29 20:49 | 顯示全部樓層
支持一下
回復(fù)

使用道具 舉報(bào)

ID:58796 發(fā)表于 2014-2-14 00:00 | 顯示全部樓層
學(xué)習(xí)。。。。。。。。。。。。。
回復(fù)

使用道具 舉報(bào)

ID:59151 發(fā)表于 2014-2-18 01:59 | 顯示全部樓層
好東西,攬下試試,謝謝!
回復(fù)

使用道具 舉報(bào)

ID:59341 發(fā)表于 2014-3-1 15:55 | 顯示全部樓層
高手呀,收藏一下
回復(fù)

使用道具 舉報(bào)

ID:60246 發(fā)表于 2014-4-2 09:50 | 顯示全部樓層
謝謝分享
回復(fù)

使用道具 舉報(bào)

ID:91611 發(fā)表于 2015-10-5 11:18 | 顯示全部樓層
這真是大神啊
回復(fù)

使用道具 舉報(bào)

ID:92052 發(fā)表于 2015-10-14 07:20 | 顯示全部樓層
高手啊,掌握了精髓,所以可以隨心所欲了。
回復(fù)

使用道具 舉報(bào)

ID:89386 發(fā)表于 2015-10-14 19:48 | 顯示全部樓層
超級(jí)贊! 新手 目前寫(xiě)個(gè) 點(diǎn)亮一個(gè)LED都帶寫(xiě)錯(cuò)的。。。。直接膜拜!
回復(fù)

使用道具 舉報(bào)

ID:297381 發(fā)表于 2018-3-26 17:17 來(lái)自觸屏版 | 顯示全部樓層
6膜拜大佬
回復(fù)

使用道具 舉報(bào)

ID:368541 發(fā)表于 2018-7-10 11:21 | 顯示全部樓層
樓主辛苦  回復(fù)的很仔細(xì)
回復(fù)

使用道具 舉報(bào)

ID:74252 發(fā)表于 2019-6-9 03:28 | 顯示全部樓層
這是深夜逛論壇翻到寶了!��!
回復(fù)

使用道具 舉報(bào)

ID:163139 發(fā)表于 2024-10-14 20:29 | 顯示全部樓層
由于還是新人 只有跟在高手后面慢慢做了!
回復(fù)

使用道具 舉報(bào)

ID:237471 發(fā)表于 2024-10-15 09:06 | 顯示全部樓層
厲害呀,受教了
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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