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

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 單片機(jī)+8255鍵盤(pán)掃描c51程序

          單片機(jī)+8255鍵盤(pán)掃描c51程序

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

          51+8255芯片的函數(shù),只做了簡(jiǎn)單的輸入輸出,利用P1口控制發(fā)光二極管亮,鍵值為7的話(huà)鍵碼是0x07;

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

          4.jpg

          #includereg51.h>
          #includeabsacc.h>
          #define uchar unsigned char
          #define uint unsigned int
          #define LScan XBYTE[0x7f00] //列地址
          #define HScan XBYTE[0x7f02] //行地址

          //延時(shí)函數(shù)
          void delay(uint i)
          {uint j;
          for(j=i;j>0;j--)
          { ; }
          }

          //檢測(cè)有無(wú)按鍵按下的函數(shù)
          uchar CheckKey() //有按鍵按下返回0xff,無(wú)則返回0
          { uchar i;
          LScan =0x00;
          i=(HScan 0x0f);
          if(i==0x0f) return(0);
          else return(0xff);
          }
          //********掃描子函數(shù)***********
          uchar KeyScan()
          { //無(wú)按鍵返回oxff,有則返回鍵碼
          uchar ScanCode;
          uchar CodeValue;
          uchar k;
          uchar i,j;
          if(CheckKey()==0) return(0xff); //無(wú)按鍵,返回0xff
          else
          {
          delay(200); //延時(shí)
          if(CheckKey()==0)
          return(0xff); //無(wú)按鍵,返回0xff
          else
          {
          ScanCode=0x01; //設(shè)置列掃描碼,初始值最低位為0
          for(i=0;i8;i++) //逐列掃描8次
          {
          k=0x01; //行掃描碼賦初值
          LScan=~ScanCode; //送列掃描碼
          CodeValue=i; //鍵碼就是i的值,第零行的每列鍵碼為0,1,2,……7,和i值一致
          for(j=0;j4;j++)
          {
          if((HScan k) ==0) //是否在當(dāng)前列,
          {
          while(CheckKey()!=0); //若是,則等待按鍵釋放
          return(CodeValue); //返回鍵碼
          }
          else //否則,鍵碼加8,同一列的每一行上的鍵碼恰好相差8
          { //列掃描碼k右移一位,掃描下一行
          CodeValue+=8;
          k=1;
          }

          }
          ScanCode=1; //每一行都掃描完,列掃描碼右移一位,掃描下一列
          }
          }
          }
          }


          main()
          { uchar Key;
          P1=0x00;
          //初始,先關(guān)閉數(shù)碼管
          XBYTE[0x7f03]=0x81; //8255初始化,設(shè)置A口輸出,C口低4位輸入
          while(1)
          { Key=KeyScan();
          if(Key!=0xff)
          P1=Key;
          }
          }

          DIY機(jī)械鍵盤(pán)相關(guān)社區(qū):機(jī)械鍵盤(pán)DIY




          評(píng)論


          相關(guān)推薦

          技術(shù)專(zhuān)區(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); })();