色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 課程設(shè)計(jì):矩陣鍵盤掃描顯示(c51反轉(zhuǎn)法)

          課程設(shè)計(jì):矩陣鍵盤掃描顯示(c51反轉(zhuǎn)法)

          作者: 時(shí)間:2016-11-18 來(lái)源:網(wǎng)絡(luò) 收藏

          本文引用地址:http://cafeforensic.com/article/201611/315825.htm

          //矩陣鍵盤掃描程序

          //采用翻轉(zhuǎn)識(shí)別法(相對(duì)代碼少一些)

          #include

          #define uchar unsigned char

          #define uint unsigned int

          uchar key=0;

          //共陽(yáng)數(shù)碼管編碼如下(0-15)

          uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,

          0xc6,0xa1,0x86,0x8e};

          //函數(shù)聲明

          void display(uchar Duan_value);

          void delay(uchar t);

          void key_scan();

          void main()

          {

          while(1)

          {

          display(key);//顯示按鍵值

          key_scan();//按鍵掃描

          }

          }

          //延時(shí)函數(shù)

          void delay(uchar t)

          {

          uchar x,y;

          for(x=t;t>0;t--)

          for(y=111;y>0;y--);

          }

          //數(shù)碼管掃描函數(shù)

          void display(uchar value)

          {

          P2=table[value];

          }

          //按鍵掃描函數(shù)

          void key_scan()

          {

          uchar m0,m1;

          uchar temp;

          P1=0xf0;//這樣設(shè)置是為了能使低四位將高四位拉低,釋放時(shí)自動(dòng)拉高高四位

          temp=P1;

          if(temp!=0xf0)

          {

          delay(10);//延時(shí),去除抖動(dòng)

          if(temp!=0xf0)

          {

          m0=temp;//獲得按鍵的列號(hào)

          P1=0x0f;

          temp=P1;

          if(temp!=0x0f)

          {

          m1=temp;//獲得按鍵的行號(hào)號(hào)

          temp=m0|m1;//獲得最終的號(hào)

          }

          switch(temp)

          {

          case 0xee:key=0;break;

          case 0xde:key=1;break;

          case 0xbe:key=2;break;

          case 0x7e:key=3;break;

          case 0xed:key=4;break;

          case 0xdd:key=5;break;

          case 0xbd:key=6;break;

          case 0x7d:key=7;break;

          case 0xeb:key=8;break;

          case 0xdb:key=9;break;

          case 0xbb:key=10;break;

          case 0x7b:key=11;break;

          case 0xe7:key=12;break;

          case 0xd7:key=13;break;

          case 0xb7:key=14;break;

          case 0x77:key=15;break;

          }

          do{

          temp=P1;//消除按起抖動(dòng)

          temp&=0X0f;

          }while(temp!=0x0f);

          }

          }

          }



          評(píng)論


          技術(shù)專區(qū)

          關(guān)閉