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

📄 key16.c

📁 AT89S51单片机最小系统4*4行列式键盘扫描与对应显示源程序
💻 C
字号:
#include<reg51.h>
#include<stdio.h>
Uart_Init();
sbit P10=0x90;				  //此方法用位+位替代比直用P1口少占40个字节空间
sbit P11=0x91;	 
sbit P12=0x92;
sbit P13=0x93;
sbit P14=0x94;
sbit P15=0x95;
sbit P16=0x96;
sbit P17=0x97;
int nKeyNumber;
void GetKeyNumber();
main()
{  Uart_Init();
   while(1)
   {   nKeyNumber=0xFF;
       GetKeyNumber(); 
	   switch(nKeyNumber)
	   {  case(0xFF):printf("No key pressed\n"); break;
	      case(0x00):printf("key NO. 0 down\n"); break;
		  case(0x01):printf("key NO. 1 down\n"); break;
		  case(0x02):printf("key NO. 2 down\n"); break;
		  case(0x03):printf("key NO. 3 down\n"); break;
		  case(0x04):printf("key NO. 4 down\n"); break;
		  case(0x05):printf("key NO. 5 down\n"); break;
		  case(0x06):printf("key NO. 6 down\n"); break;
		  case(0x07):printf("key NO. 7 down\n"); break;
		  case(0x08):printf("key NO. 8 down\n"); break;
		  case(0x09):printf("key NO. 9 down\n"); break;
		  case(0x0A):printf("key NO. A down\n"); break;
		  case(0x0B):printf("key NO. B down\n"); break;
		  case(0x0C):printf("key NO. C down\n"); break;
		  case(0x0D):printf("key NO. D down\n"); break;
		  case(0x0E):printf("key NO. E down\n"); break;
		  case(0x0F):printf("key NO. F down\n"); break;
		}
	}
}
Uart_Init()
{  SCON=0X51;   //设置串行口控制寄存器SCON    
   TMOD=0X20;	//12M时钟波特率为2400
   TCON=0X69;
   TH1=0XF3;
}
void GetKeyNumber()
{  P14=0;
   {  if(P13==0) nKeyNumber=0x00;
      if(P12==0) nKeyNumber=0x01;
	  if(P11==0) nKeyNumber=0x02;
	  if(P10==0) nKeyNumber=0x03;
	  if(nKeyNumber!=0xff) return;
	}
	P14=1;
	P15=0;
	{  if(P13==0) nKeyNumber=0x04;
       if(P12==0) nKeyNumber=0x05;
	   if(P11==0) nKeyNumber=0x06;
	   if(P10==0) nKeyNumber=0x07;
	   if(nKeyNumber!=0xff) return;
	}
	P15=1;
	P16=0;
	{  if(P13==0) nKeyNumber=0x08;
       if(P12==0) nKeyNumber=0x09;
	   if(P11==0) nKeyNumber=0x0A;
	   if(P10==0) nKeyNumber=0x0B;
	   if(nKeyNumber!=0xff) return;
	}
	P16=1;
	P17=0;
	{  if(P13==0) nKeyNumber=0x0C;
       if(P12==0) nKeyNumber=0x0D;
	   if(P11==0) nKeyNumber=0x0E;
	   if(P10==0) nKeyNumber=0x0F;
	   if(nKeyNumber!=0xff) return;
	}
	P17=1;
}

⌨️ 快捷键说明

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