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

📄 反转矩阵键盘.c

📁 经典的矩阵键盘程序
💻 C
字号:
#include<reg51.h>

#define Key P1
#define Display P2

unsigned char key;

unsigned char code LEDCODE[]=
{0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};     //共阳


void delay(void);
unsigned char  keyscan();
unsigned char disp(unsigned char key);


void main(void)
{
 unsigned char keycode,num;
 while(1)
 {
 	num=keyscan();
	delay();
	keycode=disp(num);
	Display=LEDCODE[keycode];
 }
}

void delay(void)
{
 unsigned char i;
 for(i=0;i<200;i++){}
}


unsigned char  keyscan(void)
{
 unsigned char code_h;		//行扫描值
 unsigned char code_l;		//列扫描值
 Key=0xf0;
 if((Key&0xf0)!=0xf0)
 {
 	delay();
	if((Key&0xf0)!=0xf0)
	{
		code_h=0xFE;		 		//扫描第一列
		while((code_h&0x10)!=0xf0)
		{
			Key=code_h;
			if((Key&0xf0)!=0xf0)
			{
				code_l=(Key&0xf0|0x0f);
				return((~code_h)+(~code_l));	
			}
		else
			code_h=(code_h<<1)|0x01;
		}
	}
 }
}


unsigned char disp(unsigned char temp)
{
 switch(temp)   							 							
    {
	  case 0x11: temp=0;break;
	  case 0x12: temp=1;break;
	  case 0x14: temp=2;break;
	  case 0x18: temp=3;break;
	  case 0x21: temp=4;break;
	  case 0x22: temp=5;break;
	  case 0x24: temp=6;break;
	  case 0x28: temp=7;break;
  	  case 0x41: temp=8;break;
  	  case 0x42: temp=9;break;
	  case 0x44: temp=10;break;
	  case 0x48: temp=11;break;
	  case 0x81: temp=12;break;
	  case 0x82: temp=13;break;
	  case 0x84: temp=14;break;
	  case 0x88: temp=15;break;
    }
}

⌨️ 快捷键说明

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