欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

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

單片機之矩陣鍵盤

作者:佚名   來源:本站原創   點擊數:  更新時間:2010年10月21日   【字體:
下面是一個stc89c52單片機下的矩陣鍵盤程序,P0口接鍵盤,顯示在P2口.
 #include<reg52.h>
 #define uchar unsigned char
 #define uint unsigned int
 sbit key1=P3^2;
 sbit key2=P3^3;
uchar code tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00};  //定義八個燈的工作狀態。
uchar code wep[]={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07};
 void yanshi(uint t)
  {
  while(--t);
 }

 
 void main()
 {
  
    uchar han,lei,key;
 while(1)
 {
  P0=0xf0;    //初始化為開關狀態。11110000
  han=P0;    //han變量讀取P0口的值。第一次掃描鍵盤。
  han=han&0xf0; //對han變量與0xf0與.
                //如果結果等于P0口初值(0xf0)說明沒有鍵被按下.
                //如果結果不等于P0(0xf0)口初值,說明有鍵按下.
  if(han!=0xf0)
    yanshi(125*5); //延時消抖.
    if(han!=0xf0)  //語句執行到這里說明真的有鍵按下.
     {        //例如按下S1鍵.則P0=1110 0000
  lei=P0&0xf0;  //lei讀取P0口的值.
  lei=lei|0x0f; //lei=11101111
  P0=lei;    //P0=11101111
  han=P0;    //han=11101110 第二次掃描鍵盤,
           //因為這里按鍵S1還是閉合的狀態。
  han=han&0x0f; //han=00001110
  lei=lei&0xf0; //lei=11100000
  key=han+lei;  
  }
  switch(key)  
  {
  case 0xee: P2=tab[0]; break;
  case 0xde: P2=tab[1]; break;
  case 0xbe: P2=tab[2]; break;
  case 0x7e: P2=tab[3]; break;
  case 0xed: P2=tab[4]; break;
  case 0xdd: P2=tab[5]; break;
  case 0xbd: P2=tab[6]; break;
  case 0x7d: P2=tab[7]; break;
  case 0xeb: P2=tab[8]; break;
  case 0xdb: P2=tab[9]; break;
  case 0xbb: P2=tab[10]; break;
  case 0x7b: P2=tab[11]; break;
  case 0xe7: P2=tab[12]; break;
  case 0xd7: P2=tab[13]; break;
  case 0xb7: P2=tab[14]; break;
  case 0x77: P2=tab[15]; break;
  }
  }
   
  }
關閉窗口

相關文章