1)实验平台:ALIENTEK NANO STM32F411 V1开发板
2)摘自《正点原子STM32F4 开发指南(HAL 库版》关注官方微信号公众号,获取更多资料:正点原子
第十七章 数码管显示实验
前面几章的实例,均没涉及到显示,这一章,我们将向大家介绍数码管的使用。在本章中,
我们将使用 NANO STM32F4 V1 开发板上的数码管模块,来点亮数码管,并实现字符的显示。
本章分为如下几个部分:
17.1 数码管/74HC595D/74HC138D 简介
17.2 硬件设计
17.3 软件设计
17.4 下载验证
17.1 数码管/74HC595D/74HC138D 简介
1)数码管
数码管,也称 LED 数码管,按发光二极管单元连接方式可分为“共阳极数码管”和“共阴
极数码管”。而开发板板载的数码管为四位共阴极数码管,实物图与内部引脚图,如图 17.1.1
所示:
图 17.1.1 四位数码管实物与内部引脚结构图
共阳极数码管是指将所有发光二极管的阳极接到一起,而共阴极数码管则是发光二极管的
阴极连到一起,连接方式如图 17.1.2 所示:
从上图可以看到,数码管为共阴时,当某一字段的发光二极管阳极为高电平时,响应字段
就点亮,为共阳时,当某一字段的发光二极管阴极为低电平时,相应字段则点亮。所以通过点
亮相对应的字段就可以显示我们需要的字符。
数码管要正常显示,就要用驱动电路来驱动数码管的各个端码,从而显示出我们要的字符,
因此根据数码管的驱动方式不同,可以分为“静态式”和“动态式”两类。
静态显示驱动,也称为直流驱动。静态驱动是指每个数码管的每一个端码都有一个单片机
的 I/O 端口进行驱动,或者使用如 BCD 码二-十进制译码进行驱动。静态驱动的优点是编程简
单,显示亮度高,缺点是占用 I/O 端口多,如驱动 5 个数码管静态显示则需要 5×8=40 个 I/O 端
口来驱动,要知道 STM32 单片机可用的 IO 端口是有限的,实际应用时必须增加译码器进行驱
动,但会增加电路的复杂性。
动态显示驱动,是单片机应用中最为广泛的显示方式,动态驱动是将所有数码管的 8 个显
示笔划“a,b,c,d,e,f,g,dp”的同名端连载一起,另外为每个数码管的公共级 COM 增
加位选通控制电路,位选通由各自独立 IO 线控制,当单片机输出字形码时,所有数码管都接
收到相同的字形码,但究竟是哪个数码管会显示出字形,取决于单片机对位选通 COM 端电路
的控制,所有我们只要将需要显示的数码管的选通控制打开,改为就显示出字形,没有选通的
数码管就不会亮。通过分时轮流控制各个数码管的 COM 端,就可以使各个数码管轮流显示。
在轮流显示过程中,每位数码管的点亮时间为 1~2ms,由于人的视觉暂留现象及发光二极管的
余辉效应,尽管实际上各位数码管并非同时点亮,只要扫描的速度够快,给人的印象就是一组
稳定的显示数据,不会有闪烁感,动态显示的效果和静止显示是一样的,能够节省大连的 IO
端口,功耗降低。
本实验我们将使用动态驱动的方式驱动数码管,为了节省 IO,使用到驱动电路,段选数据
使用 74HC595D 串行数据转并行数据输出芯片,位选数据使用 74HC138D 三-八译码器芯片。
下面将介绍这两款芯片。
2)74HC595D