目录
摘要:本文系统介绍了7段数码管的原理与应用,重点讲解了共阴/共阳数码管的区别、段码表生成方法及四种典型控制案例。内容包括:单个数码管0-9循环显示(直连IO)、8位数码管动态扫描(0-7滚动显示)、数字串闪烁显示和左移滚动显示三种效果实现。每个案例均提供完整的电路原理图、控制流程和51单片机C语言源代码,涉及动态扫描、环形队列等关键技术。文章还详细介绍了数码管驱动方式选择、常见问题排查方法等实用知识,为电子设计初学者提供了全面的数码管应用参考方案。
0案例视频效果展示
0.1例子1:控制单个数码管显示0-9
例子10:控制单个数码管显示0-9
0.2例子2:8个数码管控制显示
例子11:8个数码管控制显示
0.3例子3:8只数码管闪烁显示数字串
例子12:8只数码管闪烁显示数字串
0.4例子4:数码管滚动显示数字串
例子13:数码管滚动显示数字串
1基础知识补充
1.1 数码管基础知识
7段数码管(7-segment display)是最常见的数字显示器件之一,广泛用于仪表、时钟、计数器等场合。
1.1.1外观与引脚
如上图所示,7个发光段分别命名为 a、b、c、d、e、f、g(顺时针方向排列),再加一个小数点 dp。
引脚排列没有统一标准,务必看数据手册或用万用表「二极管档」量:红笔固定接公共端,黑笔依次碰其它脚,某一段亮就说明该脚对应段。
1.1.2 共阴(CC) vs 共阳(CA)
共阴:所有 LED 阴极并在一起 → 公共脚接 GND,要点亮某段就给该段阳极送高电平(+V)。
共阳:所有 LED 阳极并在一起 → 公共脚接 +V,要点亮某段就给该段阴极送低电平(GND)。
记忆口诀:
共阴 = “给1亮”
共阳 = “给0亮”
1.1.3段码表(以数字1为例)
数字1需要点亮 b、c 两段。
类型 |
a b c d e f g dp |
十六进制 |
说明 |
共阴 |
0 1 1 0 0 0 0 0 |
0x06 |
b、c=1,其余=0 |
共阳 |
1 0 0 1 1 1 1 1 |
0xF9 |
b、c=0,其余=1 |
完整段码速查:
0 1 2 3 4 5 6 7 8 9
共阴:0x3F 0x06 0x5B 0x4F 0x66 0x6D 0x7D 0x07 0x7F 0x6F
共阳:取反即可(~共阴 & 0xFF)
1.1.4驱动方式
A. 直连IO(最简单,占用IO多)
一个段一根线,共阴或共阳公共端固定接GND/VCC。
适合单个数码管、教学实验。
B. 译码/驱动芯片
74HC47(BCD→7段,共阳)
CD4511(BCD→7段,带锁存,共阴)
TM1637、MAX7219(集成扫描与亮度调节)
C. MCU+三极管/MOS(动态扫描多个位)
节省IO:段线共用,位选线轮流导通。
需要定时刷新(>100 Hz 无闪烁)。
1.1.5 多连排数码管动态扫描
以4位共阴为例:
12个IO:8段+4位选
流程:
关所有位(位选高)
送第N位段码
打开第N位(位选低)
延时1~2 ms
回到1,循环