用单片机做一个交通灯,但是数码管显示那部分有问题,求解!!

2025-03-28 17:27:19
推荐回答(2个)
回答1:

void ss(void)
{
    P0=0x00;
    while(1)
    {
        while(sum1<40)
        {
            while(!flag)
                time(sum1,sum2);
            sum1++;
            sum2++;
            flag=0;
            time(sum1,sum2);
        }
    
        sum1=0;
        time(sum1,sum2);
    
        while(sum1<4)
        {
            while(!flag)
                time(sum1,sum2);
            sum1++;
            sum2++;
            flag=0;
            time(sum1,sum2);
        }
    
        sum1=0;
        sum2=0;
        time(sum1,sum2);
    
        while(sum2<20)
        {
            while(!flag)
                time(sum1,sum2);
            sum1++;
            sum2++;
            flag=0;
            time(sum1,sum2);
        }
        
        sum2=0;
        time(sum1,sum2);
        
        while(sum2<4)
        {
            while(!flag)
                time(sum1,sum2);
            sum1++;
            sum2++;
            flag=0;
            time(sum1,sum2);
        }
        
        sum1=0;
        sum2=0;
        time(sum1,sum2);
    }
}

问题在于 while(!flag);时,整个1s的时间内,程序一直在空跑,没有扫描数码管

之后只扫描了一次,所以1s内只扫描了一场,当然不会显示了

改后在等待 flag 变高的过程中,一直在扫描数码管,这样应该就可以了

回答2:

可以参考一下 这个仿真实例,可以仿真试试。