⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mcu_keyscan.c

📁 动态扫描键盘,键盘采用矩阵式结构,用KEILC51编译并运行过,可靠性好
💻 C
字号:
#include<reg51.h>
#define  uchar unsigned char
#define unit unsigned int
void delay(void);
uchar keyscan();
unit j,h;
void main()
{
  uchar *p,*c, key;
    *p=0x40;*c=0x40;
    
	*(p+1)=0xff;
	*(p+2)=0xff;
    *(p+3)=0xff;
while (1)
  
    { key=keyscan();
	 delay();
	 switch(key)
	       {
                    case 0xee:*p=0xc0; break;
                    case 0xde:*p=0xf9; break;
                    case 0xbe:*p=0xa4; break;
                    case 0x7e:*p=0xb0; break;
                    case 0xed:*p=0x99; break;
                    case 0xdd:*p=0x92; break;
                    case 0xbd:*p=0x82; break;
                    case 0x7d:*p=0xf8; break;
                    case 0xeb:*p=0x80; break;
                    case 0xdb:*p=0x90; break;
                    case 0xbb:*p=0x88; break;
                    case 0x7b:*p=0x83; break;
                    case 0xe7:*p=0xc6; break;
                    case 0xd7:*p=0xa1; break;
                    case 0xb7:*p=0x86; break;
                    case 0x77:*p=0x8e; break;
		            case 0x00:*p=0xc1; break;
          }

 P0=*p;
    }
}

  //^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 void delay()
   {
       unit i;
   	   for(i=0;i<20000;i++){}
   }
  //^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 
  uchar keyscan()
   {
     
	P2=0xff;

    while(1)
		   {   P2=0xfe;
                 if ((P2&0xff)!=0xfe)
	                  {
                         delay();
  		                if((P2&0xff)!=0xfe)
                             return P2;
			            else P2=0xfd;
					}
	              else P2=0xfd;
	             if ((P2&0xff)!=0xfd)
	                { 
  		             delay();
					  if ((P2&0xff)!=0xfd)
					     return P2;
					 else P2=0xfb;
					}  
	                else P2=0xfb;
	            if ((P2&0xff)!=0xfb)
	                {
                       delay();
  		           if ((P2&0xff)!=0xfb)
  				         return P2;
				    else P2=0xf7;
				   } 
                else P2=0xf7;
		       if ((P2&0xff)!=0xf7)
	                {
                       delay();
  		            if ((P2&0xff)!=0xf7)
 				      return P2;
  				     else return   P2=0xfe; 
                   }
             	
		}		  	
	
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -