问答

汇集网友智慧,解决技术难题

21ic问答首页 - 普中单片机学习动态数码管

单片机

普中单片机学习动态数码管

忽而热2022-06-17
大佬,我想动态数码管对应位由0到7,再由7到0,一直循环,可是只能循环一次,这是那里的问题呢?void smg_display(void)
{
        u8 i=0;
       
        for(i=0;i<8;i++)
        {
                switch(i)
                {
                        case 0: LSC=1;LSB=1;LSA=1;break;
                        case 1: LSC=1;LSB=1;LSA=0;break;
                        case 2: LSC=1;LSB=0;LSA=1;break;
                        case 3: LSC=1;LSB=0;LSA=0;break;
                        case 4: LSC=0;LSB=1;LSA=1;break;
                        case 5: LSC=0;LSB=1;LSA=0;break;
                        case 6: LSC=0;LSB=0;LSA=1;break;
                        case 7: LSC=0;LSB=0;LSA=0;break;
}

SMG_A_DP_PORT=gsmg_code[i];
delay_10us(100000);
SMG_A_DP_PORT=0X00;
}
for(i=7;i>=0;i--)//·´ÏòÊä³öfor(i=7;i>=0;i--)
        {
                switch(i)//λѡ
                {
                        case 0: LSC=1;LSB=1;LSA=1;break;
                        case 1: LSC=1;LSB=1;LSA=0;break;
                        case 2: LSC=1;LSB=0;LSA=1;break;
                        case 3: LSC=1;LSB=0;LSA=0;break;
                        case 4: LSC=0;LSB=1;LSA=1;break;
                        case 5: LSC=0;LSB=1;LSA=0;break;
                        case 6: LSC=0;LSB=0;LSA=1;break;
                        case 7: LSC=0;LSB=0;LSA=0;break;
}

SMG_A_DP_PORT=gsmg_code[i];
delay_10us(100000);
SMG_A_DP_PORT=0X00;
}
}
void main()
{
        SMG_A_DP_PORT=gsmg_code[0];
    while(1)
        {
                smg_display();
        }
}



回答 +关注 15
1299人浏览 3人回答问题 分享 举报
3 个回答
  • 这个名字好熟悉,我记得大学时买的第一款51单片机开发板就是普中科技的,因为看上了它的盒子,哈哈哈。
  • 我猜测是 for(i=7;i>=0;i--)这里出现了问题。因为这个变量i类型是u8,也就是unsigned char类型的,它的取值范围是0~255。在for(i=7;i>=0;i--)这个循环里,当i==0时,条件满足,继续执行下面的程序,执行i--;此时i的值变成255了,也满足i>=0这个条件,继续循环。。。。
  • {
        u8 i=0;

        for(i=0;i<8;i++)
        {
            switch(i)
            {
                case 0: LSC=1;LSB=1;LSA=1;break;
                case 1: LSC=1;LSB=1;LSA=0;break;
                case 2: LSC=1;LSB=0;LSA=1;break;
                case 3: LSC=1;LSB=0;LSA=0;break;
                case 4: LSC=0;LSB=1;LSA=1;break;
                case 5: LSC=0;LSB=1;LSA=0;break;
                case 6: LSC=0;LSB=0;LSA=1;break;
                case 7: LSC=0;LSB=0;LSA=0;break;
            }

            SMG_A_DP_PORT=gsmg_code[i];
            delay_10us(100000);
            SMG_A_DP_PORT=0X00;
        }

        for(i=0;i<8;i++)
        {
            switch(7-i)//λѡ
            {
                case 0: LSC=1;LSB=1;LSA=1;break;
                case 1: LSC=1;LSB=1;LSA=0;break;
                case 2: LSC=1;LSB=0;LSA=1;break;
                case 3: LSC=1;LSB=0;LSA=0;break;
                case 4: LSC=0;LSB=1;LSA=1;break;
                case 5: LSC=0;LSB=1;LSA=0;break;
                case 6: LSC=0;LSB=0;LSA=1;break;
                case 7: LSC=0;LSB=0;LSA=0;break;
            }

            SMG_A_DP_PORT=gsmg_code[7-i];
            delay_10us(100000);
            SMG_A_DP_PORT=0X00;
        }
    }

    void main()
    {
        SMG_A_DP_PORT=gsmg_code[0];
        while(1)
        {
            smg_display();
        }
    }

您需要登录后才可以回复 登录 | 注册