stm32驱动4位数码管,可递减但只执行一次,是什么原因?

2019-07-14 13:32发布

达到目的:9999---9998---9997---0
目前状态:9999---9998---9999---9998...只减一次又恢复
int timeCheck;
int main(void)
{           
       int a=9999;
            int aj;
           GPIO_Num_Init();
           delay_ms(200);
       GPIO_SetBits(GPIOA,GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7);//???λ?                  

    while(1)

           {
                 for( TImeCheck = 0; TImeCheck<60; TImeCheck++ )
                 {
                    aj=a;
                 delay_ms(50);
                 DisPlayNum(aj);
                 }
                 TImeCheck=0;
                 delay_ms(5000);
                 a--;
                 GPIO_SetBits(GPIOA,GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7);
           }
}



void  DisPlayNum(int n)
{
                if (n < 10000)  
        {
          int i;
                  int s;
                  s=n;
                  i=0;
                  for (i=0;i<5;i++)
                        {
                                   GPIO_SetBits(GPIOB,GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_10|GPIO_Pin_11);
                                 switch (i)  
               {  
                case 0:  
                GPIO_ResetBits(GPIOB,GPIO_Pin_11);    //GPIO_Write(GPIOE,table[n % 10]); n=n/10;
                                break;  

                case 1:  
                GPIO_ResetBits(GPIOB,GPIO_Pin_10);   //GPIO_Write(GPIOE,table[n % 10]); n=n/10;
                                 break;  

                case 2:  
                GPIO_ResetBits(GPIOB,GPIO_Pin_1);            
                                 break;  
                                
                                case 3:  
                GPIO_ResetBits(GPIOB,GPIO_Pin_0);      //GPIO_Write(GPIOE,table[n % 10]); n=n/10;
                                break;               
               }
                      switch (s%10)
                           {  
                case 0:  
                GPIO_Write(GPIOA,table[0]);   
                break;  
                case 1:                                                      
                GPIO_Write(GPIOA,table[1]);
                break;  
                case 2:  
                GPIO_Write(GPIOA,table[2]);  
                break;  
                case 3:  
                GPIO_Write(GPIOA,table[3]);  
                break;  
                case 4:  
                GPIO_Write(GPIOA,table[4]);
                break;  
                case 5:  
                GPIO_Write(GPIOA,table[5]);  
                break;  
                case 6:  
                GPIO_Write(GPIOA,table[6]);  
                break;  
                case 7:  
                GPIO_Write(GPIOA,table[7]);  
                break;  
                case 8:  
                GPIO_Write(GPIOA,table[8]);  
                break;  
                case 9:  
                GPIO_Write(GPIOA,table[9]);  
                break;
                        
                                 //default:
                //???????IO?????
                //break;
               }
                           delay_ms(2000);
                            s=s/10;
             if(s==0) break;
                        
                        }
                 }
        

}  
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
2条回答
121e
1楼-- · 2019-07-14 18:50
4位数码管静态显示没问题,动态也能切换。但是我要实现从9999递减到0,可程序仿真时能递减,但烧录到板子上只9999--9998---9999-9998.。。。。。这样循环?哪位帮忙分析一下,谢谢!
liqijian101
2楼-- · 2019-07-14 20:22
本帖最后由 liqijian101 于 2019-3-20 20:05 编辑

你显示函数里延时也太大了   

Drivers.zip 下载积分: 积分 -1 分

1.59 KB, 下载次数: 2, 下载积分: 积分 -1 分

一周热门 更多>