这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » DIY与开源设计 » 开源硬件 » 请教一个LED数码管闪烁的问题

共6条 1/1 1 跳转至

请教一个LED数码管闪烁的问题

工程师
2019-12-16 22:04:36     打赏

用定时器实现两个数码管同时点亮的程序,但目前有闪烁,现在问题不知道出现在哪里,请大家帮我分析一下,谢谢。


相关程序如下:

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%10);
        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%10);

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


出现的问题是,第二个数码管的亮度比第一个数码管亮度明显,第一个数码管出现明显的闪烁,第二个数码管闪烁不明显。硬件电路是这样设计的,
74HC573驱动段选,数码管是共阴极的,单片机通过三极管来控制公共端。




关键词: 闪烁     数码管     LED    

工程师
2019-12-16 22:21:07     打赏
2楼

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


工程师
2019-12-16 22:28:51     打赏
3楼

建议程序修改这样看看:


if(smgtime==30)
      {
          smg_show(10);
        
    WE_1=0;//关闭显示
       WE_2 =0;
      }
if(smgtime==30000) //关闭显示要足够长时间才能“闪”
{
smgtime =0
}


高工
2019-12-16 22:34:28     打赏
4楼

看楼上的代码不错


工程师
2019-12-16 22:38:15     打赏
5楼
正常的电路,2个以上数码管显示,是采用动态扫描方式,首先要知道显示原理,才可以编写正确的软件。
假设2个数码管,刷新周期10ms,每个数码管显示5ms。
正常显示:数码管1显示5ms,数码管2显示5ms,一直循环。
需要闪烁,比如数码管1,1S闪烁一次,则0.5S内显示,0.5S内不显示即可,需要增加一个闪烁的计数标志位,用于判断是否需要显示。
不需要显示时,可以控制段码,也可以控制位码。



工程师
2019-12-16 22:44:31     打赏
6楼

每个数字的显示时间是相等的,亮度才能一样。每个数字是循环的,不分前后。闪烁的根本原因是刷新时间太短~


共6条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]