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

📄 key.c

📁 3*4键盘扫描程序 已加消抖功能 可以扩展为4*4~~~ 只用8个I/O口就能实现
💻 C
字号:
#include <reg52.h>
#include <intrins.h>

#define uchar unsigned char
#define uint unsigned int
#define  FLASE  0
#define  TRUE   1

sbit Pa=P1^0;
sbit Pb=P1^1;
sbit Pc=P1^2;
sbit Pd=P1^3;

unsigned char code table[]={0xC0,0xF9,0xA4,0xB0,0x99, //0~4
                            0x92,0x82,0xF8,0x80,0x90, //5~9
                            0x7f,0x00}; //10.11

void KeyScan();
void Delay(uint MS);
void Dispaly(uchar k);

uchar key,temp;

void main() //主程序
{
 while(1)
 {
  KeyScan();
 }
}

void KeyScan() //按键扫描子程序
{
 P1=0xff;
 Pd=0;
 temp=P1;
 temp&=0xf0;
 if(temp!=0xf0)
 {
  Delay(10);
  temp=P1;
  temp&=0xf0;
  if(temp !=0xf0)
  {
   temp=P1;
   temp&=0xf0;

   switch(temp)
   {
   case 0x70:
    key=11;break;
   case 0xB0:
    key=10;break;
   case 0xD0:
    key=9;break;
   }
   Dispaly(key);
  }
 }

 P1=0xff;
 Pc=0;
 temp=P1;
 temp&=0xf0;
 if(temp !=0xf0)
 {
  Delay(10);
  temp=P1;
  temp&=0xf0;
  if(temp !=0xf0)
  {
   temp=P1;
   temp&=0xf0;

   switch(temp)
   {
   case 0x70:
    key=8;break;
   case 0xB0:
    key=7;break;
   case 0xD0:
    key=6;break;
   }
   Dispaly(key);
  }
 }

 P1=0xff;
 Pb=0;
 temp=P1;
 temp&=0xf0;
 if(temp !=0xf0)
 {
  Delay(10);
  temp=P1;
  temp&=0xf0;
  if(temp !=0xf0)
  {
   temp=P1;
   temp&=0xf0;

   switch(temp)
   {
   case 0x70:
    key=5;break;
   case 0xB0:
    key=4;break;
   case 0xD0:
    key=3;break;
   }
   Dispaly(key);
  }
 }

 P1=0xff;
 Pa=0;
 temp=P1;
 temp&=0xf0;
 if(temp !=0xf0)
 {
  Delay(10);
  temp=P1;
  temp&=0xf0;
  if(temp !=0xf0)
  {
   temp=P1;
   temp&=0xF0;

   switch(temp)
   {
   case 0x70:
    key=2;break;
   case 0xB0:
    key=1;break;
   case 0xD0:
    key=0;break;
   }
   Dispaly(key);
  }
 }
}

//延时程序
void Delay(uint MS)
{
	unsigned char us,usn;
	while(MS!=0)
	{
		usn = 2;	//for 12M
		while(usn!=0)
		{
			us=0xf6;
			while (us!=0){us--;};
			usn--;
		}
		MS--;
	}
}

void Dispaly(uchar k) //显示程序
{
 P2=table[k];
}

⌨️ 快捷键说明

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