新闻  |   论坛  |   博客  |   在线研讨会
单片机控制数码管显示累加到999,十百位数字显示较暗
502593045 | 2011-02-05 15:55:33    阅读:8905   发布文章

昨天晚上做这个实验,发现数码管显示的十百位数字不太亮,个位很亮,程序如下例1。而采用开发板提供的程序,三位都显示正常,程序如下例2。
例1:
 uint num;
 while(1)
 {
  for(num=0;num<1000;num++)
  {
   Data[0]=duanma[num/100];
   Data[1]=duanma[num%100/10];
   Data[2]=duanma[num%100%10];
   smg_display(2,3);
   Delay(5000);
  }
 }
例2:
 uint num;
 uint j;
 while(1)
 {
  j++;
  if(j==100)
  {
   j=0;
   num++;
   if(num==1000)
    num=0;
  }
  Data[0]=duanma[num/100];
  Data[1]=duanma[num%100/10];
  Data[2]=duanma[num%100%10];
  smg_display(2,3);
 }
今天下午又思考了近一个小时,终于想明白了。,看出了两个例子的区别。
我原来例1的意思,显示一个数据,然后保持一段时间,可实验结果是控制数字等待一个时间再加1.例2的意思是在一小段时间内,重复显示某个数据许多遍。然后再加1.从而实现三位数字都能清晰的显示。
所以,例1改动之后,如下例3:
 uint num,i;
 while(1)
 {
  for(num=0;num<1000;num++)
  {
   for(i=0;i<100;i++)                       //一段时间内,某数据重复显示
   {
   Data[0]=duanma[num/100];
   Data[1]=duanma[num%100/10];
   Data[2]=duanma[num%100%10];
   smg_display(2,3);                    //重复显示,此句不能放在 for(i=0;i<100;i++)循环之外    
   }
  }
 }

*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
虾虽在江湖,江湖却没有关于虾的传说!
推荐文章
最近访客