两个数码管动态显示的程序,有点想不通

2019-07-16 04:52发布

void display()
{
static int i=0;
  P2=i;
  P0=TempData[i];
  i++;
  if(i==8 ) i=0;
}
/////////////////////////////////////////////
void display()
{ int i;
  for(i=0;i<8;i++)
  {
   P2=i;
  P0=TempData[i];
  delay(1);   //延时一毫秒
  }

}

最近在用ds1302做电子钟,数码管显示。以上是我写的显示程序,放在定时器中断里调用。P2是位码,P0是段码。
只有第一个可以正常显示,动态显示不是要用到延时么?第二个反而会让数码管出现余晖。


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
9条回答
lovedollar
2019-07-16 18:41
草根白骨精 发表于 2012-8-20 13:09
这个程序是错的,i 不是全局变量,每次都只显示第一位,i 是不会保持有效数据的。看你这个程序应该不是P2直 ...

是的,第二个显示程序放在中断里跑时间不够。第一个显示程序是可以的,p2直接选通位,定时中断2ms,每次就显示一位,i是用static声明过可以保持。刚想明白了,谢谢。

一周热门 更多>