#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar code table[]={};
sbit dula=P2^6;
sbit wela=P2^7;
void delayms(uint xms){
uint i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}
void display(uchar num){
dula=1;
P0=table[num];
dula=0;
}
void matrixkeyscan(){
uchar temp,key;
P3=0xfe;
temp=P3;
temp=temp&0xf0;
if(temp!=0xf0){
delayms(10);
temp=P3;
temp=temp&0xf0;
if(temp!=0xf0){
temp=P3;
switch(temp){
case 0xee:
key=0;
break;
case 0xde:
key=1;
break;
case 0xbe:
key=2;
break;
case 0x7e:
key=3;
break;
}
while(temp!=0xf0){
temp=P3;
temp=temp&0xf0;
}
display(key);
}
}
P3=0xfd;
temp=P3;
temp=temp&0xf0;
if(temp!=0xf0){
delayms(10);
temp=P3;
temp=temp&0xf0;
if(temp!=0xf0){
temp=P3;
switch(temp){
case 0xed:
key=4;
break;
case 0xdd:
key=5;
break;
case 0xbd:
key=6;
break;
case 7d:
key=7;
break;
}
while(temp!=0xf0){
temp=P3;
temp=temp&0xf0;
}
display(key);
}
}
P3=0xfd;
temp=P3;
temp=temp&0xf0;
if(temp!=0xf0){
delayms(10);
temp=P3;
temp=temp&0xf0;
if(temp!=0xf0){
temp=P3;
switch(temp){
case 0xeb:
key=8;
break;
case 0xdb:
key=9;
break;
case 0xbb:
key=10;
break;
case 0x7d:
key=11;
break;
}
while(temp!=0xf0){
temp=P3;
temp=temp&0xf0;
}
display(key);
}
}
P3=0xf7;
temp=P3;
temp=temp&0xf0;
while(temp!=0xf0){
delayms(10);
temp=P3;
temp=temp&0xf0;
if(temp!=0xf0){
temp=P3;
switch(temp){
case 0xe7:
key=12;
break;
case 0xd7:
key=13;
break;
case 0xb7:
key=14;
break;
case 0x77:
key=15;
break;
}
while(temp!=0xf0){
temp=P3;
temp=temp&0xf0;
}
display(key);
}
}
}
void main(){
P0=0;
dula=1;
dula=0;
P0=0xc0;
wela=1;
wela=0;
while(1){
matrixkeyscan();
}
}
来源:CSDN
作者:qq_39952105
链接:https://blog.csdn.net/qq_39952105/article/details/104049561