一个循环函数的困惑

2019-07-15 23:25发布

  while(1)
  {
  if(t==10)     //定时器
          {
        t=0;
        temp++;
        if(temp==9999)
          temp=0;
    }
   display(temp)        ;  //显示任意4位数
  }
这个程序中display函数写在if循环外面,能够正常执行,
但是如果下载if里面,就会出错,它将显示个位从1-9,
然后高位一直闪烁。不能像写在外面那样定住,非常疑惑,
因为,其他程序根本没有变化,但是这一句变化却会有这样的改变,不知道为什么。
希望有人解惑,谢谢。

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
11条回答
alywin-小朱
1楼-- · 2019-07-16 21:38
eyexceed 发表于 2013-7-29 11:14
嗯好的 程序贴出来了,请帮我看看

首先你可以看你的主循环里面的if语句,按照你的程序应该是1s进入次对吧,然后你在看看你的显示程序display;你是通过放在主循环里面让display不停的内循环来扫描你的四位数码管(这种做法本来就有问题),其实你这种做法能显示出来都是靠你的delay函数延时你才能勉强显示出来的,如果我估计的没错的话,你所谓能够正常显示,估计高位会比较亮低三位会比较亮的多好回过头来,假如把display放到if语句里面去是不是就等于1s钟我再来扫描一次显示呢,那我们肉眼看到是不是就是会看到你的数码是1s钟闪烁一次

liwenbiao
2楼-- · 2019-07-17 02:38
动态显示利用的是人的视觉暂留现象及发光二极管的余辉效应,扫描速度要足够快,你如果放在if里面那就是0.5s才扫描一次,这样的速度远达不到要求,就变成了闪烁,放在if外面就是一直在扫描显示
eyexceed
3楼-- · 2019-07-17 08:32
liwenbiao 发表于 2013-7-29 12:22
动态显示利用的是人的视觉暂留现象及发光二极管的余辉效应,扫描速度要足够快,你如果放在if里面那就是0.5s ...

谢谢,楼上给我讲的很详细,我已经懂了
dsc198981
4楼-- · 2019-07-17 11:27
数码管输入信号加上锁存器就不会出现这个问题了。
小浩神倾城
5楼-- · 2019-07-17 17:22
数码管输入信号加上锁存器就不会出现这个问题了

一周热门 更多>