kai191 发表于 2012-3-16 19:08:06

用DS18B20取出温度后在7段数码管上显示时,会发生闪烁如何解决?

在Arduino上用DS18B20取出温度的数值后在7段数码管上显示时,当两个数据切换的时候四位数码管会有一次闪烁,求大神讲解下怎么把这个闪烁消除掉,用的是 <OneWire.h>和 <DallasTemperature.h>这两个函数库,float t=tempSens.getTempCByIndex(0);用这个命令来把温度取出来然后现在在4位数码管上,但是每次数据更新的时候会有一个闪烁的过程,现在想把这个过程消除掉,该如何解决呢?谢谢!

534659123 发表于 2012-3-16 20:59:09

贴出完整源代码。。。

kai191 发表于 2012-3-17 05:40:11

本帖最后由 kai191 于 2012-3-17 17:50 编辑

534659123 发表于 2012-3-16 20:59 static/image/common/back.gif
贴出完整源代码。。。

void loop()
{
tempSens.requestTemperatures();
float t=tempSens.getTempCByIndex(0);
Serial.println(t);
rT= (int)(t*100);   
for (i=0; i<50; i++)
       {
      num=rT;         
      }
      for (j=0; j<50; j++)
         {

            tho=num/1000;
            hun=num%1000/100;
            ten=num%1000%100/10;
            digitdisplay(tho,0);
            delay(del);
            digitpoint(hun,1);
            delay(del);      
            digitdisplay(ten,2);
            delay(del);
            digitdisplay(10,3);//显示C
            delay(del);         
         }
   
}


每次显示完一个数字后,就会停在最后一位上,就是只显示C,然后等新的数据来了之后才会开始更新,该如何解决呢?

thomas 发表于 2012-3-17 08:32:17

贴下代码看看?

kai191 发表于 2012-3-17 23:38:31

thomas 发表于 2012-3-17 08:32 static/image/common/back.gif
贴下代码看看?

void loop()
{
tempSens.requestTemperatures();
float t=tempSens.getTempCByIndex(0);
Serial.println(t);
rT= (int)(t*100);   
            tho= rT/1000;
            hun= rT%1000/100;
            ten= rT%1000%100/10;
            digitdisplay(tho,0);
            delay(del);
            digitpoint(hun,1);
            delay(del);      
            digitdisplay(ten,2);
            delay(del);
            digitdisplay(10,3);//显示C
            delay(del);         
         }
   
}

风的孩子 发表于 2012-3-19 17:28:23

两个方向:
1 在切换的时候先将所有的LED管都写LOW。先熄灭。
2 显示丢在一个IF循环中,只有变的时候才会点或者变化。而不是循环一次就点一次。

ardiunoaihaozhe 发表于 2014-5-14 17:33:41

能不能发一下测温加数码管显示的全部程序,谢谢

Grooove 发表于 2016-12-2 22:13:47

我也是闪啊闪,而且同样的代码用在时间显示就没有问题...
页: [1]
查看完整版本: 用DS18B20取出温度后在7段数码管上显示时,会发生闪烁如何解决?