LED数码管
更新: 4/10/2025 字数: 0 字 时长: 0 分钟
在前一节中,我们了解了如何控制LED灯带产生不同的颜色和效果。在本节中,我们将学习如何用LED数码管组合成不同的数字。
准备
硬件
硬件 | 说明 | 图片 |
---|---|---|
创意盒平台 | ![]() | |
七段数码管模块 | 创意盒官方模块 | ![]() |
软件
软件 | 链接 | 说明 |
---|---|---|
比分计数系统 | 链接 | 官方前端应用,可直接通过控制台加载和使用。 |
视频讲解
七段数码管
连接

连接 |
---|
▀ 将第一个七段数码管模块和平台的任意排针连接,这里是平台引脚16-19 |
▀ 将第二个七段数码管模块和平台的任意排针连接,这里是平台引脚8-11 |
使用
打开创意盒控制台,并加载灯光类中的计分板应用。进入该应用,选择主队和客队七段数码管和创意盒的连接引脚编号。点击对应加分选项。可以看到七段数码管显示主队和客队的分数。
创意盒控制台 | 加载应用 | 选择引脚编号并进行控制 |
---|---|---|
![]() | ![]() | ![]() |
原理
数据手册下载 | 链接 |
---|---|
七段数码管 | 链接 |
位移寄存器 | 链接 |
七段数码管
七段数码管是一种常用的数字显示器件,它由七个LED组成,排列成数字“8”的形状。每个LED代表数字中的一个线段,通过点亮或熄灭这些LED,可以显示从0到9的数字。此外,七段数码管的右下角还有一个圆点状的LED,当两个及以上的数码管连接在一起时,这个圆点可以用来代表小数点(DP)。

这些LED都有自己单独的引脚。只需要在对应的引脚上电,相应的LED段位就会亮起。不同的LED段位组合,就形成了不同的数字。

和RGB LED一样,七段数码管也分成共阳型(Common Anode)和共阴型(Common Cathode)。在共阳型数码管中,所有LED的阳极连接在一起,而阴极分别接到各个数字线段。在共阴型数码管中,所有LED的阴极连接在一起,而阳极分别接到各个数字线段。下图中所示的是共阳型七段数码管的电路图:

通过控制每个线段的点亮和熄灭,我们可以以灵活的方式显示各种数字、字母和符号。七段数码管可以在很多电子设备中看到,比如时钟、计数器、温度计等。它们提供了一种简单而直观的方式来显示数字信息。
位移缓存器
一个七段数码管有八个LED,我们可以为每个LED分配一个GPIO,即可控制任意LED。但是如果要控制多个数码管,那么这种方法就会导致电路非常繁琐。这时候,我们就需要借助位移缓存器。
位移缓存器(Shift Register)是一种数字电路元件,用于在时钟脉冲的控制下将数据从输入端“移动”到输出端。位移缓存器在数字系统中有广泛的应用,例如数据存储、数据传输、显示控制、序列生成等。

位移缓存器由若干个单比特“D型数据锁存器”组成,每个数据位都可以是逻辑“0”或“1”,它们以串行的方式串联在一起,使得一个数据锁存器的输出成为下一个锁存器的输入,依此类推。单个位移缓存器内的数据锁存器的数量,通常由要存储的位数决定,其中最常见的是8位(一个字节)宽,由八个单独的数据锁存器构成。

位移缓存器有四种不同的工作模式,其中数据在位移缓存器中的基本移动方式包括:
- 串行输入并行输出(SIPO)- 位移缓存器逐位串行加载数据,并将存储的数据以并行形式输出。
- 串行输入串行输出(SISO)- 数据在位移缓存器中按位进行串行“输入”和“输出”,在时钟控制下,每次逐位进行左移或右移。
- 并行输入串行输出(PISO)- 并行数据同时加载到位移缓存器中,并在时钟控制下逐位进行串行输出。
- 并行输入并行输出(PIPO)- 并行数据同时加载到位移缓存器中,并在同一个时钟脉冲下一起传输到各自的输出。
串行输入并行输出位移缓存器
为了实现用较少的GPIO控制多个LED,需要选用串行输入并行输出的位移缓存器。串行输入,意味着只需要一个GPIO输入信号;并行输出,意味着可以同时点亮多个LED。
以下图的4位串行输入并行输出位移缓存器为例:

如果将逻辑高电平“1”连接到FFA的DATA输入引脚,则在第一个时钟脉冲时,FFA的输出和因此QA的输出将被置为逻辑高电平“1”,而所有其他输出仍然保持逻辑低电平“0”。现在假设FFA的DATA输入引脚再次返回逻辑低电平“0”,这给我们一个数据脉冲或0-1-0。

随着时钟脉冲的不断产生,信号“1”在锁存器中不断传递。直到第四个时钟脉冲到达时,完整的数据值0-0-0-1存储在寄存器中。这时候,就可以从QA到QD的输出端同步读取数据。
下表是不同时钟脉冲时,各个锁存器的数值。第五个时钟脉冲时,所有输出都为逻辑低电平“0”,这是因为输入端保持在逻辑低电平“0”。
时钟脉冲 | QA | QB | QC | QD |
---|---|---|---|---|
0 | 0 | 0 | 0 | 0 |
1 | 1 | 0 | 0 | 0 |
2 | 0 | 1 | 0 | 0 |
3 | 0 | 0 | 1 | 0 |
4 | 0 | 0 | 0 | 1 |
5 | 0 | 0 | 0 | 0 |
74HC595位移缓存器
为了同时控制8个LED,我们需要一个8位串行输入并行输出的位移缓存器。下图所示的原理图,就是我们这次使用的74HC595位移缓存器:

74HC595的每一个引脚用途如下:
- OE: 输出使能端,拉低时允许信号输出。
- RCLK: 信号输出控制端,拉高时输出并行信号。
- SRCLR: 缓存器清零。
- SRCLK: 时钟脉冲信号。
- SER: 串行输入信号。
虽然74HC595仍需要5个引脚来控制一个七段数码管,似乎和传统的方法差别不大。但如果我们有多个数码管,则不同的缓存器之间可以共用除SER以外的其余四个GPIO。比如,控制三个数码管,传统的方式需要24个GPIO,而使用位移缓存器,则只需要7个GPIO,很大程度地简化了电路。
接下来,我们只需要了解不同的数字该点亮哪几个LED,然后将这8比特的信号并行传输给数码管,就可以显示出具体的数字了。
真值表
对于七段数码管,我们可以制作一个真值表,列出需要点亮的各个段,以产生从0到9的十进制数字,如下所示:

数字 | a | b | c | d | e | f | g |
---|---|---|---|---|---|---|---|
0 | 1 | 1 | 1 | 1 | 1 | 1 | 0 |
1 | 0 | 1 | 1 | 0 | 0 | 0 | 0 |
2 | 1 | 1 | 0 | 1 | 1 | 0 | 1 |
3 | 1 | 1 | 1 | 1 | 0 | 0 | 1 |
4 | 0 | 1 | 1 | 0 | 0 | 1 | 1 |
5 | 1 | 0 | 1 | 1 | 0 | 1 | 1 |
6 | 1 | 0 | 1 | 1 | 1 | 1 | 1 |
7 | 1 | 1 | 1 | 0 | 0 | 0 | 0 |
8 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
9 | 1 | 1 | 1 | 1 | 0 | 1 | 1 |