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

專注電子技術學習與研究
當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

4*4矩陣鍵盤的掃描原理

作者:佚名   來源:互聯網   點擊數:  更新時間:2014年06月26日   【字體:

    初學者肯定要經歷的一個實驗就是4*4矩陣鍵盤的代碼編寫,大部分都是在學校里面,有現成的實驗箱,基本不需要自己動腦子。上次遇到一個哥們,他說他用的是8031的實驗箱,我當時就暈了。8031是8051的前身,那個芯片連ROM都沒有,可以想象我們的學校都在拿什么教育祖國的花朵。廢話少說,先上圖:

 

    對初學者來說這篇文章會有點難,可以先研究一下如何用51單片機點亮一個發光二極管和基于CPLD-EPF10K10LC84-4(84)的交通燈設計。首先要說明的一點,矩陣鍵盤的動態掃描確實略顯復雜,不可能就是讀一個端口數據,然后馬上就出來結果。這需要對依次每一行的按鍵進行掃描、判斷,然后得出結果。如上圖所示,先掃描第一行,也就是S1,S2,S3,S4四個按鍵的狀態。在PA口輸入0XFE。

    0XFE變成二進制是1111 1110,為了方便使用,記得每四個數之間加一個空格。1111 1110這個數據放到PA口上,假設這個時候S1被按下了,會出現什么情況?因為PA0是低電平,S1被按下之后S1導通,導致PA4的電平從1降到0,于是PA端口的數據就變成了1110 1110,換算成16進制就是0XEE。于是我們知道S1被按下了。

    假設是S3被按下,會出現什么情況?沒錯,PA6的電平被拉低,PA的端口數據變成了1011 1110,也就是0XBE。這樣,我們就知道了,每一行的每一個按鍵被按下的時候,都會有一個對應的獨一無二的值。這就是矩陣鍵盤的掃描原理!送上一段源碼,大家看著玩吧:

void matrixkeyscan()

{

uchar temp,key;

    P3=0xfe;

    temp=P3;

    temp=temp&0xf0;

    if(temp!=0xf0)

    {

      delayms(10);

 temp=P3;

 temp=temp&0xf0;

      if(temp!=0xf0)

      {

        temp=P3;

        switch(temp)

        {

          case 0xee:

               key=0;

               break;

          case 0xde:

               key=1;

               break;

          case 0xbe:

               key=2;

               break;

          case 0x7e:

               key=3;

               break;

         }

         while(temp!=0xf0)

         {

           temp=P3;

           temp=temp&0xf0;

         }

        display(key);

      }

    }

    P3=0xfd;

    temp=P3;

    temp=temp&0xf0;

    if(temp!=0xf0)

    {

      delayms(10);

      temp=P3;

      temp=temp&0xf0;

      if(temp!=0xf0)

      {

        temp=P3;

        switch(temp)

        {

          case 0xed:

               key=4;

               break;

          case 0xdd:

               key=5;

               break;

          case 0xbd:

               key=6;

               break;

          case 0x7d:

               key=7;

               break;

         }

         while(temp!=0xf0)

         {

           temp=P3;

           temp=temp&0xf0;

         }

         display(key);

      }

      }

    P3=0xfb;

    temp=P3;

    temp=temp&0xf0;

    if(temp!=0xf0)

    {

      delayms(10);

     temp=P3;

      temp=temp&0xf0;

      if(temp!=0xf0)

      {

        temp=P3;

        switch(temp)

        {

          case 0xeb:

               key=8;

               break;

          case 0xdb:

               key=9;

               break;

          case 0xbb:

               key=10;

               break;

          case 0x7b:

               key=11;

               break;

         }

         while(temp!=0xf0)

         {

           temp=P3;

           temp=temp&0xf0;

         }

        display(key);

      }

      }

    P3=0xf7;

    temp=P3;

    temp=temp&0xf0;

    if(temp!=0xf0)

    {

      delayms(10);

      temp=P3;

      temp=temp&0xf0;

      if(temp!=0xf0)

      {

        temp=P3;

        switch(temp)

        {

          case 0xe7:

               key=12;

               break;

          case 0xd7:

               key=13;

               break;

          case 0xb7:

               key=14;

               break;

          case 0x77:

               key=15;

               break;

         }

         while(temp!=0xf0)

         {

           temp=P3;

           temp=temp&0xf0;

         }

        display(key);

      }

    }

}

關閉窗口

相關文章

主站蜘蛛池模板: 青青久久av北条麻妃海外网 | 国产精品视频www | av在线播放网 | 亚洲第一黄色网 | 一区二区三区在线 | 欧 | 户外露出一区二区三区 | 日本一区二区不卡 | 日韩精品一区二区三区在线观看 | 综合色播 | 91文字幕巨乱亚洲香蕉 | 国产偷自视频区视频 | 日本aa毛片a级毛片免费观看 | 一区二区三区在线电影 | 97伦理最新伦理 | 一区二区三区精品视频 | 欧美一级黄色免费 | 超碰日韩 | www.夜夜草| 特级毛片 | 午夜羞羞 | 免费观看羞羞视频网站 | 99国产精品久久久久老师 | 国产999精品久久久 午夜天堂精品久久久久 | 欧美日韩久久久 | 亚洲精品国产精品国自产在线 | 久久精品国产亚洲a | 伦理片97| 午夜在线观看视频 | 日韩视频1 | 91人人在线 | 久久久这里只有17精品 | 欧美a级成人淫片免费看 | 欧美精品一区二区三区四区五区 | 91啪影院| 精品在线99 | 青青久久| 亚洲视频在线免费观看 | 国产在线看片 | 亚洲iv一区二区三区 | 国产精品自产拍在线观看蜜 | 午夜成人在线视频 |