单片极的共阴极数码管按下按键1和按键2输出的内容

按下按键1,8位共阴极数码管输出2022-606。
按下按键2,8位共阴极数码管输出606-1132。
在1和2之间显示内容切换。
哪位路人知道的,请帮我解答一下,万能的CSDN区


#include<reg52.h>
#define DataPort  P0
sbit K1=P3^0;
sbit K2=P3^1;
sbit LATCH1=P2^2;
sbit LATCH2=P2^3;
unsigned char seg7code[9]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//位选
unsigned char str1[9]={0x7d,0x3f,0x7d,0x40,0x06,0x06,0x4f,0x5b};//606-1132
unsigned char str2[9]={0x5b,0x3f,0x5b,0x5b,0x40,0x7d,0x3f,0x7d};//2022-606
unsigned char  i=0;
unsigned char  j=0;
void Delay(int x)        //@12.000MHz
{  //延时函数x,参数代表延时的毫秒数
    while(x--){
        unsigned char i, j;
        i = 2;
        j = 239;
        do{
            while (--j);
        } while (--i);
    }
}
void key_scan()
{//按键扫描
    if(!K1){Delay(20);if(!K1){while(!K1);j=1;}}        
    if(!K2){Delay(20);if(!K2){while(!K2);j=2;}}  
}
void display()
{   
    if(j==1)
        {   
            DataPort=seg7code[i];//送位选
            LATCH2=1;//开位选
            LATCH2=0;//关位选,到这里完成了位选信号的输送
        
            DataPort=str2[i];//送段选(2022-606)
            LATCH1=1;//开段选
            LATCH1=0;//关段选,到这里,完成了段选信号的输送   
        
             Delay(1);//延时一下,让数码管稳定显示1毫秒
    
            i++;        //让位选码和段选码数组下标加1     
            if(8==i)    //因为数码管只有8位,数组长度也只有八位,i不能超过8
                i=0;    //超过8要让i=0;
        }
    if(j==2)        //同上
    {
            DataPort=seg7code[i];
            LATCH2=1;
            LATCH2=0;
        
            DataPort=str1[i];//606-1132
            LATCH1=1;
            LATCH1=0;
        
             Delay(1);
            i++;
            if(8==i)
            i=0;
    }
}
main()
{  
       while(1)
    {    
        key_scan();//按键扫描
        display();//显示
    }
}