基于51单片机的矩阵键盘,利用数码管显示0~F,按下相应的按钮会在数码管上显示相应的按钮
代码如下
'''
#include<reg52.h>
char led_m[]={0x3f,0x06,0x5B,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5E,0x79,0x71};
char a=0;
void delay(int s)
{
int x,y;
for(x=s;x>0;x--)
for(y=110;y>0;y--);
}
void getkey()
{
P2=0xf0;
if((P2&0x0f)!=0x0f)//ÅжÏÓÐÎÞ°´¼ü°´ÏÂ
{
delay(100);
if((P2&0x0f)!=0x0f){
switch(P2)//ÐÐ
{
case 0xe0:a=0;break;
case 0xd0:a=1;break;
case 0xb0:a=2;break;
case 0x70:a=3;break;
}
P2=0x0f;
switch(P2)//ÁÐ
{
case 0x0e:a+=0;break;
case 0x0d:a+=4;break;
case 0x0b:a+=8;break;
case 0x07:a+=12;break;
}
while(P2!=0x0f);
}
}
}
void main()
{
while(1)
{
getkey();
P0=led_m[a];
}
}
'''