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

📄 key.c

📁 本人收集的一些C语言程序
💻 C
字号:
/************************************************************************************/
/*     程序名:44键盘代码                                                           */
/*                                                                                  */
/*     晶振:12.0 M                                        CPU型号:AT89S52         */
/*                                                                                  */
/*                                                                                  */
/*     功能描述: 44键盘代码,需将J13,J14连接P1口                                   */
/*                    将J2跳线帽插上便于观察实验现象      			                */
/*        K2(0)  K4(1)  K6(2)  K8(3)  K10(8)  K12(9)  K14(A)  K16(B)                */ 
/*        K3(4)  K5(5)  K7(6)  K9(7)  K11(C)  K13(D)  K15(E)  K17(F)                */		     
/*                                                                                  */
/*     http://www.mculover.net                                                      */
/*     http://www.mculover.net/bbs                                                  */
/*   													 					    	*/
/*                                                湘灵电子工作室 版权所有           */     
/*                                                         2006-03-20               */
/************************************************************************************/ 
#include<reg51.h>
 
unsigned char code tab[ ]={0xc0, 0xf9, 0xa4, 0xb0, 
							0x99, 0x92, 0x82, 0xf8, 
							0x80, 0x90, 0x88, 0x83,
							0xc6, 0xa1, 0x86, 0x8e};//0到F的16个键植

/******************************************************************************/
void delayt(unsigned char t)//延时函数
{
	unsigned char a;
	while( --t != 0)
	{
  		for(a=0;a<125;a++);
    }
}

/******************************************************************************/
bit pkey(void)//判断键的否被按下,通过返回值确定
{
	P1=0xf0;
 	if(P1!=0xf0)
   	{
    	delayt(20);
     	if(P1 != 0xf0)
     		return 1;
     	else 
     		return 0;
    }
 	else
     	return 0;
}

/******************************************************************************/
void main(void)//主函数
{
 	unsigned char key, j ,k, s;

 	while(1)
  	{
   			if(pkey()== 1)//确定键被按下
   			{   
    			P1=0xfe;
				k=0xfe;
    			for(j=0;j<4;j++)
    		    {	
                 	s=P1&0xf0;
			     	switch(s)
				 	{
						case 0xe0: key=4*j+0; break;	
   	 					case 0xd0: key=4*j+1; break;
	 					case 0xb0: key=4*j+2; break;
	 					case 0x70: key=4*j+3; break;
	 					default:	break;
					}
					k=(k<<1)|0x01;
					P1=k;
               }//for
   			}//if
		//if((P1&0xf0)==0xf0)
		
   	   	P0=tab[key];
		P2=0xfe;
		delayt(10);
  	}//while
}

 

⌨️ 快捷键说明

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