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

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

mcs-51單片機 掃描矩陣鍵盤程序

作者:佚名   來源:本站原創   點擊數:  更新時間:2011年06月01日   【字體:
#include<reg52.h>
#define uint  unsigned int
#define uchar unsigned char

 

sbit DSCQ=P2^6;//位定義段鎖存器控制端
sbit WSCQ=P2^7;//位定義位鎖存器控制端


uchar code table[]={0x3f,0x06,0x5b,0x4f, //0,1,2,3
     0x66,0x6d,0x7d,0x07, //4,5,6,7
     0x7f,0x6f,0x77,0x7c, //8,9,a,b
     0x39,0x5e,0x79,0x71};//c,d,e,f

void delay(uint t);//聲明延時函數
void keyscan();    //聲明掃描函數


void main()
{
  
 DSCQ=0;//段鎖存器鎖存
 WSCQ=0;//位鎖存器鎖存

 P0=0x00;//P0口輸出0000 0000
 WSCQ=1; //位鎖存器允許通過
 WSCQ=0; //位鎖存器鎖存(數碼管接地端全為低電平0)

 
 P0=table[8];//P0口輸出8
 DSCQ=1;     //段鎖存器允許通過

 while(1)
 {

   keyscan();//恒掃描
 
 }
 
}

 

void delay(uint t)
{
 uint x,y;
 for(x=t;x>0;x--)
 {
  for(y=120;y>0;y--)
  {
  

  }
  
 }

}


void keyscan()
{
 uchar key1,key2;
 P3=0xfe;  //1111 1110(將P3.0置為低電平0。高4位寫1,以便讀取4高位I/O口狀態)
 key1=P3;  //第一次讀取P3口
 delay(15);//延時15ms
 key2=P3;  //第二次讀取P3口
 key1=key1&0xf0;//1111 0000(將第一次的值保留高4位,屏蔽低4位)
 key2=key2&0xf0;//1111 0000(將第二次的值保留高4位,屏蔽低4位)
 if((key1==key2)&&key1!=0xf0)//如果key1的值等于key2的值,并且key1的值不等于1111 0000 表明確實有鍵被按下
 {
  switch(key1)
  {
 
  case 0xe0:P0=table[0];break;//1110 0000
  case 0xd0:P0=table[1];break;//1101 0000
  case 0xb0:P0=table[2];break;//1011 0000
  case 0x70:P0=table[3];break;//0111 0000
  
  }
 
 }


 
 P3=0xfd;  //1111 1101(將P3.1置為低電平0。高4位寫1,以便讀取4高位I/O口狀態)
 key1=P3;  //第一次讀取P3口
 delay(15);//延時15ms
 key2=P3;  //第二次讀取P3口
 key1=key1&0xf0;//1111 0000 保留高4位(將第一次的值保留高4位,屏蔽低4位)
 key2=key2&0xf0;//1111 0000 保留高4位(將第二次的值保留高4位,屏蔽低4位)
 if((key1==key2)&&key1!=0xf0)//如果key11的值等于key2的值,并且key1的值不等于1111 0000 表明確實有鍵被按下
 {
  switch(key1)
  {
 
  case 0xe0:P0=table[4];break;//1110 0000
  case 0xd0:P0=table[5];break;//1101 0000
  case 0xb0:P0=table[6];break;//1011 0000
  case 0x70:P0=table[7];break;//0111 0000
  
  }
 
 }

 P3=0xfb;  //1111 1011(將P3.2置為低電平0。高4位寫1,以便讀取4高位I/O口狀態)
 key1=P3;  //第一次讀取P3口
 delay(15);//延時15ms
 key2=P3;  //第二次讀取P3口
 key1=key1&0xf0;//1111 0000(將第一次的值保留高4位,屏蔽低4位)
 key2=key2&0xf0;//1111 0000(將第二次的值保留高4位,屏蔽低4位)
 if((key1==key2)&&key1!=0xf0)//如果key11的值等于key2的值,并且K1的值不等于1111 0000 表明確實有鍵被按下
 {
  switch(key1)
  {
 
  case 0xe0:P0=table[8];break; //1110 0000
  case 0xd0:P0=table[9];break; //1101 0000
  case 0xb0:P0=table[10];break;//1011 0000
  case 0x70:P0=table[11];break;//0111 0000
  
  }
 
 }

 

 P3=0xf7;  //1111 0111(將P3.3置為低電平0。高4位寫1,以便讀取4高位I/O口狀態)
 key1=P3;  //第一次讀取P3口
 delay(15);//延時15ms
 key2=P3;  //第二次讀取P3口
 key1=key1&0xf0;//1111 0000(將第一次的值保留高4位,屏蔽低4位)
 key2=key2&0xf0;//1111 0000(將第二次的值保留高4位,屏蔽低4位)
 if((key1==key2)&&key1!=0xf0)//如果key1的值等于key2的值,并且key1的值不等于1111 0000 表明確實有鍵被按下
 {
  switch(key1)
  {
 
  case 0xe0:P0=table[12];break;//1110 0000
  case 0xd0:P0=table[13];break;//1101 0000
  case 0xb0:P0=table[14];break;//1011 0000
  case 0x70:P0=table[15];break;//0111 0000
  
  }
 
 }

}
關閉窗口

相關文章

主站蜘蛛池模板: 91视频免费在观看 | 欧美一区二区三区在线观看视频 | 丁香五月网久久综合 | 午夜一区二区三区在线观看 | 日韩欧美在线精品 | 久久综合成人精品亚洲另类欧美 | 久久久久久久久99 | 一区二区三区免费看 | 在线免费观看成人 | 91精品国产综合久久精品 | 国产日韩精品一区 | 欧美激情一区二区三级高清视频 | 亚洲一区在线播放 | 日本精品久久久久久久 | 最新高清无码专区 | 羞羞网站在线免费观看 | 玖草资源 | 一级片片 | 99riav3国产精品视频 | 精品国产欧美一区二区 | 国产精品毛片一区二区在线看 | 欧美一区免费 | 成人在线免费观看 | 在线看亚洲| 国产精品免费看 | 羞羞网站在线免费观看 | 久久99国产精品 | 国产农村一级国产农村 | a级黄色毛片免费播放视频 国产精品视频在线观看 | 久久美女视频 | 99精品一区二区三区 | 岛国毛片 | 欧美a级成人淫片免费看 | 成人精品免费 | 亚洲精品乱码久久久久久按摩观 | 亚洲精品乱码久久久久久蜜桃91 | 欧美一级大黄 | 欧美亚洲视频在线观看 | 日本黄色影片在线观看 | 久久成人免费 | 免费观看日韩精品 |