树莓派控制3641BS数码管显示数字

3641BS数码管是一个小LED显示器,可以显示4位数字和4个小数点。它是没有驱动的,使用它的方法就是控制每一个LED灯的亮起和熄灭。这个型号的数码管长这个样子:

NFD-3641

硬件准备

  • 树莓派
  • 显像管 – 不是3641BS也可以,最好是位,没有驱动
  • 至少12根杜邦线 – 连接GPIO和显像管引脚
  • 排线,T形扩展板,面包板 – 非必须,方便调试,保护树莓派

原理

控制数码管显示数字的原理,简单来说就是让相应的LED亮起来。要让它亮就需要有电流通过,电流形成的条件是有电压。所以我们只要控制一个LED两端一端是高电平,一端是低电平,就可以让它发光了。

从上图看来,这个显像管一共有8(每个数字加点)X4=32个LED,一个LED需要两个引脚的话,那么一共需要64个引脚啦?

当然不是,树莓派一共才40个引脚呢。首先,每个数字的LED的一端格子控制电压,另一端公用,就可以达到控制电压的效果。例如显示一个数字的时候,将公用端设为低点平,在每个LED控制的一端,需要亮起的部分设置为高电平,不需要亮的部分设置低电平,就可以让它发光。公用端根据阳极和阴极的不同分为共阳极和共阴极显像管。在内部的公用电路是这样的:

7segLed

那这样的话,8个独立的加上一个公用的,只需要9个就行了,这样4个数字需要36个。也不是的,下图是3641的线路图:

3461

最下面的图中,我们可以发现,四个数字除了共阴极的一端,其余的9个引脚都是公用的。事实上只有12个引脚。这种显示方式称为扫描显示,比如(共阳极为例)显示1234的话,第一个共阴极低电平,其余的共阴极高电平,要显示的字形按照上一个原理,亮起的是高电平,就在第一位上显示出1.其实这个时候,第一位灭掉的是低电平,其余的共阴极是高电平,也形成了回路,但是它们不会亮的,因为二极管单向导电,只能从阳极流向阴极。1ms之后,将第一共阴极拉高,熄灭第一位,亮起第二位,1ms之后亮第三位。这样循环显示,叫做「扫描显示」。人类的视觉停留时间是1/16s,所以不会有闪烁的效果,看起来就和静态显示一模一样。

代码

Python代码使用了GPIO,懂了上面的原理之后,代码看起来就非常简单了,基本不用赘述。值得一提的是,我使用的BCM编码的引脚,如果你昨晚之后发现某个LED不正常,可以对照这两幅图的LED编号-显像管引脚编号-GPIO编号找到不正常的那个LED,再找到引脚,顺着杜邦线找到现在使用的GPIO,然后换一个GPIO。

220px-7_segment_display_labeled.svg

222348nccs4w5s4zicr8wn

参考资料

树莓派GPIO入门05-驱动数码管显示数字:这个链接中还有加了按钮的实现,还有更快速的C版本的实现。

Leave a comment

电子邮件地址不会被公开。 必填项已用*标注