声明:本篇知识梳理适合4~8年级的学生,学习STEAM科技编程的有基础的学生。可用于喜欢STEAM的学生自学,也适用于家长带孩子探索学习STEAM。

集成型四位数码管显示应用
四位数码管,可以理解为两个两位数码管(即双位数码管)的组合,或者是能够同时显示四个单位数字(0~9)的单一组件。所以通过上一篇学习的双位数码管原理,可以很容易就推导出四位数码管的用法。

四位数码管外观结构
四位数码管广泛应用于各种需要数字显示的电子设备中,如电子计时器、计数器、电子秤、温度计、电压表、电流表等。在这些应用中,四位数码管能够快速、准确地显示多位数字信息,为人们的生活和工作提供便利。
一、基本构造与分类 1.基本构造:
四位数码管由四个独立的双位数码管(或集成在一起的四个显示单元)组成。
每个单位数码管内部包含有LED灯(通常是七段或八段,用于显示数字和可能的小数点)。
数码管的LED灯可以是共阳极或共阴极连接(课堂上我们选择与前面课程一致的共阴极数码管)。

四位数码管基本构造
2.分类:
根据显示方式的不同,可以分为静态显示和动态显示两种类型。
静态显示时,每个数码管的显示是独立的,不需要扫描。
动态显示时,通过分时扫描的方式依次点亮每个数码管,实现多位数字的显示。
在我们前面课程中有介绍过静态显示与动态显示的区别,这里就不再赘述了。为了让电路结构更简单,并且接线更容易,我们继续选择动态显示。
二、控制方法 1.驱动电路:
四位数码管通常需要驱动电路来提供足够的电流以点亮LED灯。驱动电路可以是简单的电阻限流电路,也可以是更复杂的恒流源电路。

四位数码管内部电路原理图
2.控制方式:
可以通过微处理器或其它逻辑电路来控制数码管的显示。根据数码管的类型(共阳极或共阴极),选择合适的控制信号极性。通过向数码管的段位端发送字形码数据来控制LED灯的亮灭状态,从而显示数字。
三、接线与编程 1.接线: 由于我们前面课程中孩子们掌握的很不错,四位数码管的接线就很简单了。根据控制原理,由双位数码管拓展到四位即可。具体接线可以参考下方的实物仿真图(与Nano板的接线引脚图一模一样,更换主控板型号即可)。

基于Uno板接线仿真图(跟Nano同)
将数码管的公共端(共阴极)连接到Nano板的D10,D11,D12和D13(依次从左到右,如上图所示,注意接保护电阻)。这里我们用的事动态显示,这四个引脚是用于控制数码管的扫描顺序(如果用静态显示,这四个公共端接到电源地)。
将段位端连接到控制器的输出端口(Nano板的D2~D8,如需小数点可以把D9接到小数点Dp,即“四位数码管基本构造”图中的引脚h)。
2.编程:
编写控制程序,根据需要显示的数字向段位端发送相应的字形码数据。
编写扫描程序,依次点亮每个数码管。在编程时,需要注意数码管的显示周期和人眼的视觉暂留效应,以确保显示效果稳定。
具体代码实现如下:

初始程序设计,定义好各个引脚功能
这里数组data[4]用于传递和存储需要四位数码管显示的数据,从左到右依次对应四位数码管的1、2、3、4位数据。这里data[]={0,0,0,0}默认显示四个零。

定义显示函数,用于显示data[]中存储的4位数值

主函数程序
其中setup()为初始化各个控制引脚,并关闭数码管显示。loop()函数直接分离出四位数码管的每一位数据并存储在数组data[]中,直接调用刚刚定义好的show()函数即可显示。如果数据刷新频率太快,只需控制增加show()函数被调用的次数即可。

我们后面会发现,该问题同样适用于点阵扫描程序
切忌使用delay()函数降低刷屏频率!!!很多同学容易想到通过等待函数放慢显示过程,这对于一般的程序可以,但是对于动态显示程序不仅解决不了问题,还会阻止正常的显示功能。主要原因是对动态显示的过程没有理解到位。动态显示核心思想其实就是不断轮流扫描四位数码管每一位的数据,速度足够快才能“欺骗”人的眼睛,形成视觉暂留,让你看到四位数码管好像同时在显示四位数据。实际上任意时刻只有一位数码管在显示,一旦使用了等待功能,这个动态过程就会被阻断。从而显示出问题。