📄 4x4key.c
字号:
/*****************************************************************
;* 主 页 : HTTP:WWW.QLMCU.COM
;*
;* 程序功能 : 4×4矩阵式键盘识别技术
;*
;* 应用软件 : KEIL C
;*
;* 版 本 : KEIL 7.06
;*
;* 硬 件 : WS804
;*
;* 创建时间 : 2005.07.04
;*
;* Designer : benladn911
;******************************************************************
;* 注:为了有更多实用的实验程序供大家学习,部分程序参考网上的资源,
;* 在此谢谢这些无私奉献的朋友!!!
;******************************************************************
; 0 1 2 3 ---P20
; 4 5 6 7 ---P21
; 8 9 10 11 ---P22
; 12 13 14 15 ---P23
; | | | |
; P24 P25 P26 P27
;******************************************************************/
#include <AT89X51.H>
unsigned char code table[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E};
unsigned char temp;
unsigned char key;
unsigned char i,j;
void main(void)
{
P1_3=0;//选通第四位数码管做显示键值
while(1)
{
P2=0xff;
P2_4=0;
temp=P2;
temp=temp & 0x0f;
if (temp!=0x0f)
{
for(i=50;i>0;i--)
for(j=200;j>0;j--);
temp=P2;
temp=temp & 0x0f;
if (temp!=0x0f)
{
temp=P2;
temp=temp & 0x0f;
switch(temp)
{
case 0x0e:
key=0;
break;
case 0x0d:
key=4;
break;
case 0x0b:
key=8;
break;
case 0x07:
key=12;
break;
}
temp=P2;
P0=table[key];
temp=temp & 0x0f;
while(temp!=0x0f)
{
temp=P2;
temp=temp & 0x0f;
}
}
}
P2=0xff;
P2_5=0;
temp=P2;
temp=temp & 0x0f;
if (temp!=0x0f)
{
for(i=50;i>0;i--)
for(j=200;j>0;j--);
temp=P2;
temp=temp & 0x0f;
if (temp!=0x0f)
{
temp=P2;
temp=temp & 0x0f;
switch(temp)
{
case 0x0e:
key=1;
break;
case 0x0d:
key=5;
break;
case 0x0b:
key=9;
break;
case 0x07:
key=13;
break;
}
temp=P2;
P0=table[key];
temp=temp & 0x0f;
while(temp!=0x0f)
{
temp=P2;
temp=temp & 0x0f;
}
}
}
P2=0xff;
P2_6=0;
temp=P2;
temp=temp & 0x0f;
if (temp!=0x0f)
{
for(i=50;i>0;i--)
for(j=200;j>0;j--);
temp=P2;
temp=temp & 0x0f;
if (temp!=0x0f)
{
temp=P2;
temp=temp & 0x0f;
switch(temp)
{
case 0x0e:
key=2;
break;
case 0x0d:
key=6;
break;
case 0x0b:
key=10;
break;
case 0x07:
key=14;
break;
}
temp=P2;
P0=table[key];
temp=temp & 0x0f;
while(temp!=0x0f)
{
temp=P2;
temp=temp & 0x0f;
}
}
}
P2=0xff;
P2_7=0;
temp=P2;
temp=temp & 0x0f;
if (temp!=0x0f)
{
for(i=50;i>0;i--)
for(j=200;j>0;j--);
temp=P2;
temp=temp & 0x0f;
if (temp!=0x0f)
{
temp=P2;
temp=temp & 0x0f;
switch(temp)
{
case 0x0e:
key=3;
break;
case 0x0d:
key=7;
break;
case 0x0b:
key=11;
break;
case 0x07:
key=15;
break;
}
temp=P2;
P0=table[key];
temp=temp & 0x0f;
while(temp!=0x0f)
{
temp=P2;
temp=temp & 0x0f;
}
}
}
}//while
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -