在编程四位七段数码管的程序时,常常遇到不同数码管不可以显示不同数字的情况。比如要输出-9,要么-和9先后出现,要么两个管子都显示-或者9。
为了解决这样的问题,常利用余晖效应,在输出数字后加一个极短的delay时间,利用视觉暂留效应使之看起来像是同步显示的。
但是如果想让数码管动态显示起来,例如从-9倒数到-1,这个极短的delay时长会让数字闪动过快,达不到理想的结果。
此时,可以在delay外面套多个for循环,通过for循环的数量来调控每个数字的显示时长。
例子
从-9倒数到-1。(节选与问题有关的片段作展示)
void countNumber1()
{
for(int i = 0;i < 50;i ++)
{
for(int m = 9;m >0;m--)
{
outPut(1,m);
delay(5);
outPut(2,'-'); //在位置2处显示-号
delay(5);
clearNumber();
}
}
}
其中,outPut函数为自己定义的,outPut(int a,char b)的作用是在a位置处显示数字b
clearNumber函数为自定义,作用是清除显示数字。
在内层循环内,delay总时长为10毫秒,外层循环为50层,及每个数字在显示屏上停留50*10=500毫秒。