Skip to content

7段数码管(共阳静态显示) ​

7段+小数点 · 共阳极接法 · 74HC573 锁存驱动

一、理论基础 ​

1.1 器件概述 ​

发光二极管数码显示器简称 LED 显示器。LED 显示器具有耗电省、成本低廉、配置简单灵活、安装方便、耐振动、寿命长等优点,目前广泛应用于嵌入式系统中。

7 段 LED 由 7 个发光二极管按"日"字形排列,所有发光二极管的阳极连在一起称共阳极接法,阴极连在一起称为共阴极接法。

1.2 显示原理 ​

当选用共阴极的 LED 显示器时,所有发光二极管的阴极连在一起接地,当某个发光二极管的阳极加入高电平时,对应的二极管点亮。

要显示某字形就应使此字形的相应段的二极管点亮,也就是送一个用不同电平组合代表的数据字来控制 LED 的显示,此数据称为字符的段码。

1.3 段码表 ​

字符 0~F 与 LED 码段 A~G 以及 DP(小数点)的对应关系:

字符DPGFEDCBA段码(共阴)段码(共阳)
0001111113FHC0H
10000011006HF9H
2010110115BHA4H
3010011114FHB0H
40110011066H99H
5011011016DH92H
6011111017DH82H
70000011107HF8H
8011111117FH80H
9011011116FH90H
A0111011177H88H
B011111007CH83H
C0011100139HC5H
D010111105EHA1H
E0111100179H86H
F0111000171H8EH

共阴 LED:被选中时的段为高电平有效,熄灭段码 00H 共阳 LED:被选中时的段为低电平有效,熄灭段码 FFH

1.4 静态显示 vs 动态显示 ​

方式原理优点缺点
静态显示每位数码管的段选线独立连接一个 8 位并口,保持段码电平不变显示稳定,亮度高,CPU 占用少占用 IO 口多,硬件成本高
动态显示所有位的段选线并联,公共端分时选通节省 IO 口和硬件成本需要持续扫描,CPU 占用多,位数多时亮度不足

本实验系统采用静态显示接口。

1.5 典型应用 ​

  • 数字电压表、电流表
  • 计数器、计时器
  • 温度/湿度显示
  • 电子秤重量显示
  • 仪器仪表数字显示
  • 教学实验(IO 输出、段码原理)

二、实验实例:7段数码管显示 ​

2.1 实验目的 ​

  1. 掌握 7 段数码管显示原理
  2. 掌握 7 段数码管显示控制程序的编程方法

2.2 实验内容 ​

在 IAR 集成开发环境中编写 7 段数码管显示控制程序,循环显示 0~F。

2.3 预备知识 ​

  1. 了解 C 语言的基本知识
  2. 了解 IAR 中编写和调试程序的方法
  3. 了解 7 段数码管段码原理

2.4 实验设备 ​

  • 硬件:WSN-V 教学实验箱(带指示扩展板)、PC 机
  • 软件:Windows + IAR EW for 8051

2.5 接口电路 ​

实验系统采用共阳极 7 段数码管(SEG7MALE),由 74HC573 锁存器驱动。P1 口输出段码数据,P0.4 控制 74HC573 的锁存使能(LE)。

7段数码管实验系统原理图

电路说明:

  • 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 关键代码 ​

c
// 共阳数码管段码表(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 实验步骤 ​

  1. 连接好仿真器,及带指示扩展板的通用调试母板
  2. 新建工程 seg7,添加相应文件并修改工程设置
  3. 创建 seg7.c 并加入到工程中
  4. 编写 seg7 相关函数,在设定的间隔时间循环显示 0~F
  5. 编译下载运行,观察控制板上 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 数码管控制实验,结合课程教学经验整理。


aioteer · 物联网专业课程群

💬AI 伴学配置