单片机控制数码管同时闪烁结果闪烁频率不一致

2020-03-11 19:35发布

用定时器实现两个数码管同时点亮的程序:


if(smgtime==10)  
      {
          smg_show(10);
        WE_1=1;
        WE_2=0;
        smg_show(data/10);
      }
      if(smgtime==20)
      {   smg_show(10);
        WE_1=0;
        WE_2=1;
        smg_show(data);
        smgtime=0;

      }


现在想让数码管实现闪烁的功能,两个数码管按照一定的频率闪烁,在同时点亮的基础上加了一个关闭数码管的功能,我是这样编写的,
if(smgtime==10)  
      {
          smg_show(10);
        WE_1=1;
        WE_2=0;
        smg_show(data/10);
      }
      if(smgtime==20)
      {   smg_show(10);
        WE_1=0;
        WE_2=1;
        smg_show(data);

      }
      if(smgtime==30)
      {
          smg_show(10);
          smgtime=0;
      }


出现的问题是,第二个数码管的亮度比第一个数码管亮度明显,第一个数码管出现明显的闪烁,第二个数码管闪烁不明显。硬件电路是这样设计的,
74HC573驱动段选,数码管是共阴极的,单片机通过三极管来控制公共端。
现在问题不知道出现在哪里,请大家帮我分析一下,谢谢。

 

20条回答
叶春勇
2020-03-13 21:18
再编个
smg_show_with_flash(x,flag)
{
     if(flag) smg_show(10);
     else smg_show(x);
}

然后定义flash_acc,flash_flag变量
在定时器中断加入
if(flash_acc<1000) flash_flag++;
else flash_flag=0;
flash_flag=(flash_acc>500);

然后你调用
smg_show_with_flash(x,flash_flag)
这样就可以按照flash_flash的频率闪烁了。


一周热门 更多>