矩阵键盘扫描参考C程序

  • 格式:docx
  • 大小:12.52 KB
  • 文档页数:2

#include //STC12C5A16S2单片机头文件
sbit L0 = P2^0;
sbit L1 = P2^1;
sbit L2 = P2^2;
sbit L3 = P2^3;
sbit L4 = P2^4;
sbit L5 = P2^5;
sbit L6 = P2^6;
sbit L7 = P2^7;

char checkkey()
{
char adx = 20;
char ady = 20;
char key = 16;
unsigned int i=0;
char ad[4][4] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
P4SW = 0xff; // STC12C5A16S2单片机P4口
L0 = 1;
L1 = 1;
L2 = 1;
L3 = 1;
L4 = 0;
L5 = 0;
L6 = 0;
L7 = 0;
if (!(L0 && L1 && L2 && L3)) //横向检测
{
if(!L0)
adx = 0;
else if(!L1)
adx = 1;
else if(!L2)
adx = 2;
else if(!L3)
adx = 3;

L0 = 0; //纵向检测
L1 = 0;
L2 = 0;
L3 = 0;
L4 = 1;
L5 = 1;
L6 = 1;
L7 = 1;
for (i=0;i<500;i++);
if(!L4)
ady = 0;
else if(!L5)
ady = 1;
else if(!L6)
ady = 2;
else if(!L7)
ady = 3;
while (!(L4&&L5&&L6&&L7)); //检测松开按键
key = ad[adx][ady] ;
}
return key; //返回键值,4*4按键
}