📄 4x4键盘程序.c
字号:
#include <reg51.h>
unsigned char code table[]={0xfe,0x48,0xbd,0xed,0xcb,0xe7,0xf7,0x4c,0xff,0xef};
unsigned char temp;
unsigned char key1,key2;
unsigned char i,j;
sbit P0_4 = P0^4;
sbit P0_5 = P0^5;
sbit P0_6 = P0^6;
sbit P0_7 = P0^7;
void delay1(void)
{
unsigned char i,j;
for(i=0;i<50;i++)
{ for(j=0;j<255;j++);
}
}
void main(void)
{
while(1)
{
P0=0xff;
P0_4=0; //……………………
temp=P0;
temp=temp & 0x0f;
if (temp!=0x0f) //!=时p01~p03有按键
{
for(i=50;i>0;i--)
for(j=200;j>0;j--);
temp=P0; //再次检查p01~p03是否有按键
temp=temp & 0x0f;
if (temp!=0x0f)
{
temp=P0;
temp=temp & 0x0f;
switch(temp)
{
case 0x0e: //p40有按键
key1=0;
key2=0;
break;
case 0x0d: // p41有按键
key1=0;
key2=1;
break;
case 0x0b: //p42有按键
key1=0;
key2=2;
break;
case 0x07: // p43有按键
key1=0;
key2=3;
break;
}
}
} //…………………………………
P0=0xff; //…………………………….
P0_5=0;
temp=P0;
temp=temp & 0x0f;
if (temp!=0x0f)
{
for(i=50;i>0;i--)
for(j=200;j>0;j--);
temp=P0;
temp=temp & 0x0f;
if (temp!=0x0f)
{
temp=P0;
temp=temp & 0x0f;
switch(temp)
{
case 0x0e:
key1=0;
key2=4;
break;
case 0x0d:
key1=0;
key2=5;
break;
case 0x0b:
key1=0;
key2=6;
break;
case 0x07:
key1=0;
key2=7;
break;
}
}
} //………………..
P0=0xff; //……………….
P0_6=0;
temp=P0;
temp=temp & 0x0f;
if (temp!=0x0f)
{
for(i=50;i>0;i--)
for(j=200;j>0;j--);
temp=P0;
temp=temp & 0x0f;
if (temp!=0x0f)
{
temp=P0;
temp=temp & 0x0f;
switch(temp)
{
case 0x0e:
key1=0;
key2=8;
break;
case 0x0d:
key1=0;
key2=9;
break;
case 0x0b:
key1=1;
key2=0;
break;
case 0x07:
key1=1;
key2=1;
break;
}
}
} //…………………..
P0=0xff; //………………………….
P0_7=0;
temp=P0;
temp=temp & 0x0f;
if (temp!=0x0f)
{
for(i=50;i>0;i--)
for(j=200;j>0;j--);
temp=P0;
temp=temp & 0x0f;
if (temp!=0x0f)
{
temp=P0;
temp=temp & 0x0f;
switch(temp)
{
case 0x0e:
key1=1;
key2=2;
break;
case 0x0d:
key1=1;
key2=3;
break;
case 0x0b:
key1=1;
key2=4;
break;
case 0x07:
key1=1;
key2=5;
break;
}
}
} //动态显示部分
P2=0xfd;
P1=table[key1];
delay1();
P2=0xfe;
P1=table[key2];
delay1();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -