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

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驱动段选,数码管是共阴极的,单片机通过三极管来控制公共端。
现在问题不知道出现在哪里,请大家帮我分析一下,谢谢。

 

19条回答
HLHG
1楼 · 2020-03-13 17:07.采纳回答


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


谢谢,非常感谢。

ayb_ice
2楼-- · 2020-03-11 21:10
做个显示驱动 ,在定时器中完成显示,从缓冲区取数据显示,主循环控制缓冲区待显示的内容即可,实际项目都是这样的
HLHG
3楼-- · 2020-03-12 00:40


做个显示驱动 ,在定时器中完成显示,从缓冲区取数据显示,主循环控制缓冲区待显示的内容即可,实际项目都 ...


您的意思是 数码管常亮和闪烁放在一个函数里,需要常亮的时候就显示常亮,需要闪烁的时候,就闪烁?我也是这样做的,出现的问题就是两个数码管不同时闪烁,一个闪烁明显,一个闪烁不明显呢。

mcu5i51
4楼-- · 2020-03-12 04:00


您的意思是 数码管常亮和闪烁放在一个函数里,需要常亮的时候就显示常亮,需要闪烁的时候,就闪烁?我也 ...


你还没有听懂人家说什么

xch
5楼-- · 2020-03-12 06:43
if(smgtime==30)
      {
          smg_show(10);
        
    WE_1=0;//关闭显示
       WE_2 =0;
      }
if(smgtime==30000) //关闭显示要足够长时间才能“闪”
{
smgtime =0
}

gx_huang
6楼-- · 2020-03-12 10:49
 精彩回答 2  元偷偷看……
ayb_ice
7楼-- · 2020-03-12 14:48


您的意思是 数码管常亮和闪烁放在一个函数里,需要常亮的时候就显示常亮,需要闪烁的时候,就闪烁?我也 ...


不是这样的
实际项目软件都要分层的,利于维护,
显示只管显示,要显示什么内容是由具体的任务决定的,闪烁其实就是定时送不同的数据去显示。。。

一周热门 更多>