7段数码管(共阳静态显示)
7段+小数点 · 共阳极接法 · 74HC573 锁存驱动
一、理论基础
1.1 器件概述
发光二极管数码显示器简称 LED 显示器。LED 显示器具有耗电省、成本低廉、配置简单灵活、安装方便、耐振动、寿命长等优点,目前广泛应用于嵌入式系统中。
7 段 LED 由 7 个发光二极管按"日"字形排列,所有发光二极管的阳极连在一起称共阳极接法,阴极连在一起称为共阴极接法。
1.2 显示原理
当选用共阴极的 LED 显示器时,所有发光二极管的阴极连在一起接地,当某个发光二极管的阳极加入高电平时,对应的二极管点亮。
要显示某字形就应使此字形的相应段的二极管点亮,也就是送一个用不同电平组合代表的数据字来控制 LED 的显示,此数据称为字符的段码。
1.3 段码表
字符 0~F 与 LED 码段 A~G 以及 DP(小数点)的对应关系:
| 字符 | DP | G | F | E | D | C | B | A | 段码(共阴) | 段码(共阳) |
|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 3FH | C0H |
| 1 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 06H | F9H |
| 2 | 0 | 1 | 0 | 1 | 1 | 0 | 1 | 1 | 5BH | A4H |
| 3 | 0 | 1 | 0 | 0 | 1 | 1 | 1 | 1 | 4FH | B0H |
| 4 | 0 | 1 | 1 | 0 | 0 | 1 | 1 | 0 | 66H | 99H |
| 5 | 0 | 1 | 1 | 0 | 1 | 1 | 0 | 1 | 6DH | 92H |
| 6 | 0 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 7DH | 82H |
| 7 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 07H | F8H |
| 8 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 7FH | 80H |
| 9 | 0 | 1 | 1 | 0 | 1 | 1 | 1 | 1 | 6FH | 90H |
| A | 0 | 1 | 1 | 1 | 0 | 1 | 1 | 1 | 77H | 88H |
| B | 0 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 7CH | 83H |
| C | 0 | 0 | 1 | 1 | 1 | 0 | 0 | 1 | 39H | C5H |
| D | 0 | 1 | 0 | 1 | 1 | 1 | 1 | 0 | 5EH | A1H |
| E | 0 | 1 | 1 | 1 | 1 | 0 | 0 | 1 | 79H | 86H |
| F | 0 | 1 | 1 | 1 | 0 | 0 | 0 | 1 | 71H | 8EH |
共阴 LED:被选中时的段为高电平有效,熄灭段码 00H 共阳 LED:被选中时的段为低电平有效,熄灭段码 FFH
1.4 静态显示 vs 动态显示
| 方式 | 原理 | 优点 | 缺点 |
|---|---|---|---|
| 静态显示 | 每位数码管的段选线独立连接一个 8 位并口,保持段码电平不变 | 显示稳定,亮度高,CPU 占用少 | 占用 IO 口多,硬件成本高 |
| 动态显示 | 所有位的段选线并联,公共端分时选通 | 节省 IO 口和硬件成本 | 需要持续扫描,CPU 占用多,位数多时亮度不足 |
本实验系统采用静态显示接口。
1.5 典型应用
- 数字电压表、电流表
- 计数器、计时器
- 温度/湿度显示
- 电子秤重量显示
- 仪器仪表数字显示
- 教学实验(IO 输出、段码原理)
二、实验实例:7段数码管显示
2.1 实验目的
- 掌握 7 段数码管显示原理
- 掌握 7 段数码管显示控制程序的编程方法
2.2 实验内容
在 IAR 集成开发环境中编写 7 段数码管显示控制程序,循环显示 0~F。
2.3 预备知识
- 了解 C 语言的基本知识
- 了解 IAR 中编写和调试程序的方法
- 了解 7 段数码管段码原理
2.4 实验设备
- 硬件:WSN-V 教学实验箱(带指示扩展板)、PC 机
- 软件:Windows + IAR EW for 8051
2.5 接口电路
实验系统采用共阳极 7 段数码管(SEG7MALE),由 74HC573 锁存器驱动。P1 口输出段码数据,P0.4 控制 74HC573 的锁存使能(LE)。

电路说明:
- U1(74HC573)为 8 位三态锁存器
- P1(P1.0~P1.7)连接 74HC573 数据输入端(D1~D8)
- P0.4 连接 74HC573 锁存使能端(LE),高电平时数据直通,低电平时锁存
- 74HC573 输出端(Q1~Q8)经限流电阻(R1~R8,101Ω)连接共阳数码管的各段(A~G, DP)
- 数码管公共阳极接 VCC3.3
- 共阳数码管:输出低电平时对应段点亮
2.6 关键代码
// 共阳数码管段码表(0~F)
unsigned char seg7table[16] = {
/* 0 1 2 3 4 5 6 7 */
0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8,
/* 8 9 A B C D E F */
0x80, 0x90, 0x88, 0x83, 0xc6, 0xa1, 0x86, 0x8e
};
void main(void)
{
unsigned char i;
P0DIR |= 0x70; // P0.4, P0.5, P0.6 为输出
P1DIR = 0xff; // P1 为输出
P0 = 0x0;
while(1)
{
for(i=0;i<0x10;i++){
P0 |= (0x1<<4); // 使能 74HC573(LE=1,数据直通)
P1 = seg7table[i]; // 输出段码
P0 &= ~(0x1<<4); // 禁止 74HC573(LE=0,锁存数据)
delay(); // 延时保持显示
}
}
}2.7 实验步骤
- 连接好仿真器,及带指示扩展板的通用调试母板
- 新建工程 seg7,添加相应文件并修改工程设置
- 创建 seg7.c 并加入到工程中
- 编写 seg7 相关函数,在设定的间隔时间循环显示 0~F
- 编译下载运行,观察控制板上 7 段数码管的显示
2.8 实验现象
- 数码管按设定的间隔时间循环显示 0、1、2、...、E、F
- 显示完 F 后回到 0,循环往复
- 改变延时时间可以改变显示切换速度
知识点
共阳数码管的段码是共阴段码的按位取反(如共阴 0=3FH,共阳 0=C0H)。74HC573 锁存器的作用是锁存数据:当 LE=1 时输出跟随输入,当 LE=0 时输出保持锁存值不变,这样即使 P1 口后续输出其他数据,数码管的显示也不会改变。这是静态显示的关键——只需在需要更新显示时输出一次段码并锁存,之后 CPU 可以做其他事情。多位数码管通常使用动态扫描以节省 IO 口,但需要定时器中断持续刷新。
内容来源:《WSN-V 物联网综合教学实验指导书》第 7 章·7.4 数码管控制实验,结合课程教学经验整理。