昨天晚上做这个实验,发现数码管显示的十百位数字不太亮,个位很亮,程序如下例1。而采用开发板提供的程序,三位都显示正常,程序如下例2。
例1:
uint num;
while(1)
{
for(num=0;num<1000;num++)
{
Data[0]=duanma[num/100];
Data[1]=duanma[num%100/10];
Data[2]=duanma[num%100%10];
smg_display(2,3);
Delay(5000);
}
}
例2:
uint num;
uint j;
while(1)
{
j++;
if(j==100)
{
j=0;
num++;
if(num==1000)
num=0;
}
Data[0]=duanma[num/100];
Data[1]=duanma[num%100/10];
Data[2]=duanma[num%100%10];
smg_display(2,3);
}
今天下午又思考了近一个小时,终于想明白了。,看出了两个例子的区别。
我原来例1的意思,显示一个数据,然后保持一段时间,可实验结果是控制数字等待一个时间再加1.例2的意思是在一小段时间内,重复显示某个数据许多遍。然后再加1.从而实现三位数字都能清晰的显示。
所以,例1改动之后,如下例3:
uint num,i;
while(1)
{
for(num=0;num<1000;num++)
{
for(i=0;i<100;i++) //一段时间内,某数据重复显示
{
Data[0]=duanma[num/100];
Data[1]=duanma[num%100/10];
Data[2]=duanma[num%100%10];
smg_display(2,3); //重复显示,此句不能放在
for(i=0;i<100;i++)循环之外
}
}
}
*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。