文章目录
前面已经介绍了如何使用 51 单片机控制静态数码管显示,在实际应用中通常都需要显示多位数值,如果采用静态数码管显示就不够好,因此就需要采用另外一种显示方式,即数码管动态显示。开发板上板载 2 个四位一体的共阴数码管,下面介绍如何使用51单片机控制动态数码管显示。
一、数码管介绍
1.多位数码管简介
多位数码管,即两个或两个以上单个数码管并列集中在一起形成一体的数码管。当多位一体时,它们内部的公共端是独立的,而负责显示什么数字的段线(a-dp
)全部是连接在一起的,独立的公共端可以控制多位一体中的哪一位数码管点亮,而连接在一起的段线可以控制这个能点亮数码管亮什么数字,通常我们把公共端叫做“位选线”,连接在一起的段线叫做“段选线”,有了这两个线后,通过单片机及外部驱动电路就可以控制任意的数码管显示任意的数字了。
所使用的A4开发板上使用了 2 个四位一体的共阴数码管,这样可在上面同时显示 8个数值。
2.数码管动态显示原理
多位数码管依然可以静态显示,但是显示时要么只显示一位数码管,要么多位同时显示相同内容。当多位数码管应用于某一系统时,它们的“位选”是可独立控制的,而“段选”是连接在一起的,我们可以通过位选信号控制哪几个数码管亮,而在同一时刻,位选选通的所有数码管上显示的数字始终都是一样的,因为它们的段选是连接在一起的,送入所有数码管的段选信号都是相同的,所以它们显示的数字必定一样,数码管的这种显示方法叫做静态显示。
动态显示,就是利用减少段选线,分开位选线,利用位选线不同时选择通断,改变段选数据来实现的。比如在第一次选中第一位数码管时,给段选数据 0,下一次位选中第二位数码管时显示 1。为了在显示 1 的时候,0 不会消失(当然实际上是消失),必须在人肉眼观察不到的时间里再次点亮第一次点亮的 0。而这时就需要记住,人的肉眼正常情况下只能分辨变化超过 24ms 间隔的运动。也就是说,在下一次点亮 0 这个数字的时间差不得大于 24ms。这时就会发现,数码管点亮是在向右或者向左一位一位点亮,形成了动态效果。如果把间隔时间改长就能直接展现这一现象。
二、74HC245和74HC138芯片介绍
通过前面内容的介绍我们知道,要使单片机能控制开发板上 2 位一体的共阴数码管显示,仅靠单片机 IO
口来驱动是不行的,这里就需要增加外部驱动芯片,开发板上使用的是 74HC245
芯片。2 个 4 位一体的共阴数码管的位选线有 8 根,直接让单片机 IO
口控制是没有任何问题的,但考虑到 51 单片机 IO
口资源的限制,通常我们会使用一种 IO
扩展芯片,比如: 74HC138
、74HC164
、74HC595
芯片等,只需要很少的单片机 IO
口就可以扩展出 8 个控制口,通过级联方式甚至可扩展出更多的控制口(这个在后面 LED 点阵实验章节中会有详细介绍)。我们开发板上使用的是 74HC138
译码器芯片,只需单片机 3 个 IO
口就可以实现 8 个位选管脚的控制,节省了芯片的 IO
资源。
1.74HC245 芯片简介
74HC245
是一种三态输出、八路信号收发器,主要应用于大屏显示,以及其它的消费类电子产品中增加驱动。
-
主要特性:
- 采用
CMOS
工艺 - 宽电压工作范围:
3.0V-5.0V
- 双向三态输出
- 八线双向收发器
- 封装形式:
SOP20
、SOP20-2
、TSSOP20
、DIP20
- 采用
-
管脚功能定义:
从上面的管脚功能定义说明及真值表可以知道该芯片使用方法很简单,给OE
使能管脚低电平,DIR
管脚为高电平传输方向是A->B
输出,DIR
为低电平传输方向是B->A
,至于输出高电平还是输出低电平取决于输入端的状态,如果输入为低电平,输出即为低;输入为高电平,输出即为高。如果OE
使能管脚为高电平,不论DIR
管脚是高还是低,输出是高组态。
通常我们使用 74HC245
芯片用作驱动只会让其在一个方向输出,即 DIR
管脚为高电平,传输方向是 A->B
。
2.74HC138 芯片简介
74HC138D
是一种三通道输入、八通道输出译码器(38译码器),主要应用于消费类电子产品。
-
主要特性:
- 采用
CMOS
工艺 - 低功耗
- 工作电压:
3.0V-5.0V
- 封装形式:
SOP16
- 采用
-
管脚功