用DS18B20取出温度后在7段数码管上显示时,会发生闪烁如何解决?
在Arduino上用DS18B20取出温度的数值后在7段数码管上显示时,当两个数据切换的时候四位数码管会有一次闪烁,求大神讲解下怎么把这个闪烁消除掉,用的是 <OneWire.h>和 <DallasTemperature.h>这两个函数库,float t=tempSens.getTempCByIndex(0);用这个命令来把温度取出来然后现在在4位数码管上,但是每次数据更新的时候会有一个闪烁的过程,现在想把这个过程消除掉,该如何解决呢?谢谢! 贴出完整源代码。。。 本帖最后由 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 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);
}
}
两个方向:
1 在切换的时候先将所有的LED管都写LOW。先熄灭。
2 显示丢在一个IF循环中,只有变的时候才会点或者变化。而不是循环一次就点一次。 能不能发一下测温加数码管显示的全部程序,谢谢 我也是闪啊闪,而且同样的代码用在时间显示就没有问题...
页:
[1]