51单片机 矩阵

时间:2025-03-10 12:17:38
unsigned char key()
{
    unsigned char keyNum;
    P1=0xFF;
    P1_7=0;
    if(P1_3==0){Delay(20);while(P1_3==0);Delay(20);keyNum=1;}
    if(P1_2==0){Delay(20);while(P1_2==0);Delay(20);keyNum=2;}
    if(P1_1==0){Delay(20);while(P1_1==0);Delay(20);keyNum=3;}
    if(P1_0==0){Delay(20);while(P1_0==0);Delay(20);keyNum=4;}
    
    P1_6=0;
    if(P1_3==0){Delay(20);while(P1_3==0);Delay(20);keyNum=5;}
    if(P1_2==0){Delay(20);while(P1_2==0);Delay(20);keyNum=6;}
    if(P1_1==0){Delay(20);while(P1_1==0);Delay(20);keyNum=7;}
    if(P1_0==0){Delay(20);while(P1_0==0);Delay(20);keyNum=8;}
        
    P1_5=0;
    if(P1_3==0){Delay(20);while(P1_3==0);Delay(20);keyNum=9;}
    if(P1_2==0){Delay(20);while(P1_2==0);Delay(20);keyNum=10;}
    if(P1_1==0){Delay(20);while(P1_1==0);Delay(20);keyNum=11;}
    if(P1_0==0){Delay(20);while(P1_0==0);Delay(20);keyNum=12;}
        
    P1_4=0;
    if(P1_3==0){Delay(20);while(P1_3==0);Delay(20);keyNum=13;}
    if(P1_2==0){Delay(20);while(P1_2==0);Delay(20);keyNum=14;}
    if(P1_1==0){Delay(20);while(P1_1==0);Delay(20);keyNum=15;}
    if(P1_0==0){Delay(20);while(P1_0==0);Delay(20);keyNum=16;}
        
    return keyNum;
}