<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 課程設(shè)計(jì),鍵盤掃描顯示程序(c51)

          課程設(shè)計(jì),鍵盤掃描顯示程序(c51)

          作者: 時(shí)間:2016-11-18 來(lái)源:網(wǎng)絡(luò) 收藏
          //課程設(shè)計(jì),鍵盤掃描顯示程序

          //由于開(kāi)發(fā)板中使用了鎖存器,在proteus中仿真的話,加上鎖存器的話,會(huì)出現(xiàn)亂碼,并且//不成功,所以,就不貼圖了,不過(guò)以下代碼,在事物板上測(cè)試成功

          本文引用地址:http://www.ex-cimer.com/article/201611/315824.htm

          //實(shí)驗(yàn)代碼為實(shí)現(xiàn)按鍵掃描,并顯示在數(shù)碼管上

          //實(shí)驗(yàn)班上共有4個(gè)按鍵,分別接在p3.4,p3,5,p3.6.p3.7上,因此并沒(méi)有用到矩陣鍵盤掃描,//控制起來(lái)比較簡(jiǎn)單,6數(shù)碼管觀通過(guò)鎖存器接在P0口上。

          #include

          #define uchar unsigned char

          #define uint unsigned int

          sbit dula=P2^6; //數(shù)碼管段選控制位

          sbit wela=P2^7; //數(shù)碼管位選控制位

          uchar key=8;

          //共陰數(shù)碼管段碼(不叫特殊的編碼)

          uchar code table[]=

          {

          0xed, 0x48, 0xf4, 0xb5, 0x99,

          0x3d, 0x7d, 0x85, 0xfd, 0xbd,

          0xdd, 0x79, 0x6c, 0xf1, 0x7c,

          0x5c, 0x10, 0x00,

          };

          //位選編碼

          uchar code table1[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};

          //函數(shù)聲明

          void display(uchar Duan_value,uchar Wei_value); //數(shù)碼管掃描函數(shù)

          void delay(uchar t); //延時(shí)函數(shù)

          void key_scan(); //按鍵掃描函數(shù)

          void delay(uchar t)

          {

          uchar x,y;

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

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

          }

          //顯示對(duì)應(yīng)位選的數(shù)碼管按鍵值

          void display(uchar Duan_value,uchar Wei_value)

          {

          dula=1;

          P0=table[Duan_value];

          dula=0;

          wela=1;

          P0=table1[Wei_value];

          wela=0;

          delay(3);

          }

          void key_scan()

          {

          uchar temp;

          P3=0xff; //P3口寫1,用于讀取數(shù)據(jù)

          temp=P3&0xf0; //只取高四位

          if(temp!=0xf0)

          {

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

          temp=P3&0xf0;

          if(temp!=0xf0)

          {

          switch(temp)

          {

          case 0xe0:key=0;break;

          case 0xd0:key=1;break;

          case 0xb0:key=2;break;

          case 0x70:key=3;break;

          default:

          key=8;break;

          }

          do{ //消除按起抖動(dòng)

          temp=P3;

          temp&=0Xf0;

          }while(temp!=0xf0);

          }

          }

          }

          void main()

          {

          while(1)

          {

          display(key,5); //用開(kāi)發(fā)板上最后一位顯示按鍵值

          key_scan();

          }

          }



          評(píng)論


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

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();