数码管原理与驱动技术详解

数码管原理与驱动技术详解

一、什么是数码管?

数码管,也称作辉光管,是一种可以显示数字和其他信息的电子设备。玻璃管中包括一个金属丝网制成的阳极和多个阴极。大部分数码管阴极的形状为数字。管中充以低压气体,通常大部分为氖加上一些汞和/或氩。给某一个阴极充电,数码管就会发出颜色光,视乎管内的气体而定,一般都是橙色或绿色。

尽管在外观上和真空管相似,其原理并非为加热阴极放射电子。因而它被称为冷阴极管或霓虹灯的一个变种。在室温下,即使处于极端的室内工作条件下,这种管子的温度很少超过40℃。

数码管的最常见形式有10个阴极,形状为数字0到9,某些数码管还有一个或两个小数点。然而也有其他类型的数码管显示字母、标记和符号。如一种“数码管”,其阴极为一个模板制成的面具,上面有数字形状的孔。一些俄罗斯的数码管,如IN-14,使用倒立的数字2代表5,大概是为了节约生产成本,而没有明显的技术或美学方面的原因。俄罗斯的数码管大部分都使用了倒立的2作为5。

将170伏的直流电压加在阴极和阳极之间,每一个阴极可以发出氖的的红橙色光。由于混合气体的不同,不同类型的数码管之间的颜色有所区别。寿命较长的数码管在制造中加入了汞,减少了溅射,结果发出的光的颜色为蓝色或紫色调。在某些情况下,这些颜色被玻璃上的红色或橙色过滤涂层过滤。常见数码管

二、数码管的组成与显示:

数码管的组成不同,数码管CK即共阴极数码管(common Cathode或common kathion),也称CC;CA即共阳极(common anode)。共阴极是将7段的所有阴极直接连接在一起,共阳极具有连接在一起的7段的所有阳极。数码管显示不同,共阴极:在共阴极显示中,LED段的所有阴极连接都连接在逻辑“0”或接地。通过经由限流电阻器施加“HIGH”或逻辑“1”信号来照亮各个段,以使各个阳极端子(ag)正向偏置。

共阳极数码管是指八段数码管的八段发光二极管的阳极(正极)都连在一起,而阴极对应的各段可分别控制。共阴极数码管是指八段数码管的八段发光二极管的阴极(负极)都连在一起,而阳极对应的各段分别控制、数码管由七个条状和一个点状发光二极管管芯制成,称为七段数码管。根据其结构的不同,可分为共阳极数码管和共阴极数码管两种。共阳共阴,是针对数码管的公共脚而说的。典型的一位数码管,一般有10个脚,8个段码(7段加1个小数点),剩下两个脚接在一起。共阳,也就是说公共脚是正极(阳极),所有的段码实际上是负极,当某一个或某几个段码位接低电平,公共脚接高电平时,对应的段码位就能点亮,进而组合成数字或字母。

共阴是公共脚是负极(阴极),段码位是阳极,当公共脚接地,段码位接高电平时,对应段码位点亮。共阳极: 在共阳极数码管中,LED段的所有阳极连接都连接到逻辑“1”。

通过将合适的限流电阻施加到特定段(ag)的阴极的接地逻辑“0”或“低”信号来照亮各个段。接电现象不同,若公共端接地,其他端接电源,若各段测试能亮,说明是共阴的,反之共阳的;若公共端接电源,其他端分别接地,测得各端亮,则说明是共阳的,反之为共阴的。数码管的内部组成

数码管的七段显示元件通常由

LED

(发光二极管)或

VFD

(真空荧光显示管)制成,每个显示元件都可以显示数字0

9

和一些字母字符。每个数字或字符的显示通过点亮或关闭数码管的不同段来实现。这些段通常按照一定的排列方式编号,如图2-1-3

所示,

"a"

"b"

"c"

"d"

"e"

"f"

"g"

是按照固定的方 式排列的。通过控制这些段的状态,可以显示所需的数字或字符。

三、数码管的驱动原理:

数码管内的

LED

灯排列方式是固定的,要显示特定字符的时候,点亮对应位置上的

LED

灯即可,其他位置

LED

则熄灭。

例如要显示数字

“5”

,则需点亮

a

f

g

c

d

,熄灭

b

e

h

四、多位数码管的驱动方式:

1、查看开发板原理,得知数码管的a-h分别与P00-P07连接

我们学习了

1

位数码管的驱动方式,使用的是单片机的

P0

口分别与数码管的

a-h

相连,通过

控制

P0

口驱动数码管,那么如果要驱动多位数码管呢?

2、IO

口直接驱动法

直接使用单片机的

IO

口驱动数码管,

1

位数码管占用

8

IO

口,每个数码管都是专线专用。以

51

单片机为

例,一共有

4

IO

口,如果使用

IO

口直接驱动数码管则最多只能接

4

位数码管。

优点:所有数码管每时每刻都能得到显示信号,显示稳定不闪烁,编程简单

缺点:非常占用单片机的

IO

口资源,驱动

4

位数码管后,单片机所有

IO

口被占用,无法实现其他功能。

3、专用驱动芯片驱动

每位数码管使用

74LS164

芯片单独驱动,

该芯片可以串联使用,驱动多位数码管,只需

占用单片机

2

IO

口。

优点:所有数码管每时每刻都能得到显示信号,显示稳定不闪烁,占用极少的

IO

口,消耗很小的

CPU

缺点:电路元器件较多,编程较为复杂,硬件成本较大

4、时分复用动态显示

这种显示方式

8

位数码管共用一组信号线,

8

位数码管轮流显示,同一时刻只有

1

位数码管得到显示信

号,未得到显示信号的数码管都处于熄灭状态,因为

8

位数码管的轮流显示速度是非常快的(间隔

3ms

右),因为人眼的视觉残留效应,看起来就是

8

位同时显示

优点:占用

IO

口较少,电路简单,基本不用增加额外的器件

缺点:编程较为复杂;需要

CPU

每时每刻轮流显示

8

个数码管,占用

CPU

资源多;数码管不能同时得到显

示信号,有可能会出现闪烁这种显示方式8位数码管共用一组信号线,8位数码管轮流显示,同一时刻只有1位数码管得到显示信号,未得到显示信号的数码管都处于熄灭状态,因为8位数码管的轮流显示速度是非常快的(间隔3ms左右),因为人眼的视觉残留效应,看起来就是8位同时显示。

优点:占用

IO

口较少,电路简单,基本不用增加额外的器件

缺点:编程较为复杂;需要

CPU

每时每刻轮流显示

8

个数码管,占用

CPU

资源多;数码管不能同时得到显

示信号,有可能会出现闪烁

时分复用动态显示

的原理可得,其关键是如何单独给每位数码管发送显示信号。以显示

“12345678”

例:其显示步骤如下:

1.

打开第

1

位数码管的显示开关,关闭其余数码管显示开关

2.

在数据线上发送数字

“1”

的字码

3.

维持一小段时间(大约

2ms

4.

发送消隐的字码,此时第

1

位数码管关闭显示

5.

打开第

2

位数码管的显示开关,关闭其余数码管显示开关

6.

在数据线上发送数字

“2”

的字码

7.

维持一小段时间(大约

2ms

8.

发送消隐的字码,此时第

2

位数码管关闭显示

9.

从步骤

5

开始重复,直到

8

个数字显示完成

从显示步骤中可以看到,实际上每个位只显示了

2ms

后就熄灭了,为了维持显示效果,需要不断的重复这样就需要CPU

一直执行显示代码,如果

CPU

没能及时的执行显示代码,会出现数码管闪烁的

情况,严重时无法正常显示内容。

5、动态显示驱动方案选择

我们学习了动态显示的原理,知道其关键是单独给每一位数码管发送显示信号,那么如何实现这个功能

呢?观察数码管的内容电路,

要让数码管显示需要同时满足

2

个条件:一是

LED

的正极有高

电平,二是

LED

的负极为低电平,两个条件同时满足时

LED

点亮。因为

8

个数码管的正极都是共用一组驱 动信号,所以正极有高电平的时候8

个数码管都有高电平。要想独立控制只能从条件二入手,只要负极不是低电平,那么不管正极什么情况,数码管都不会点亮,由此就得到控制方案:控制阴极电平的高低

(与

GND

之间的通断)

将数码管的阴极与单片机

IO

口连接,当

IO

口为低

电平时,该位数码管就是选中状态。

6、使用译码器减小

IO

口占用

8

位数码管,则需要

8

IO

口控制其阴极的通断,为了进一步减少

IO

的使用,可

以使用译码器芯片。我们的目的就是在

8

路信号中选择

1

路导通,这种情况可以使用

38

译码器

74HC138

,通过

3

IO

口控制

8

路信号的选中状态,达到减小IO口占用的目的。

(逻辑图与真值表)

编写数码管位选择函数,通过该函数可以选择哪一位数码管导通,因为开发板中使用了

74HC138

码器,所以需要结合译码器的真值表进行编写,开发板的连接原理图如下图所示:

五、编写代码过程:

1. 新建文件夹,命名为“1位数码管” 新建工程2. 打开Keil5软件,在菜单栏中依次点击“Project->New uVision Project”

(新建工程)

3、编写main函数及主循环(Show_Num()内输入数码管显示的数字)

(主函数)

4、

声明一个数组

meg_code

,保存数字

的字码。

5、

,编写数码管位选择函数:

因为需要逐个显示

数所以字显示需要间隔,这样才能观察得到稳定的数据,则需要延时函

数。定义一个延时函数,函数名称为

Delay_Ms,

其参数为延时的时间,单位是毫秒,函数内容如

下,该函数内是两个循环,其目的就是让

CPU

在这个函数内执行一些没有实际意义的语句(

CPU

行语句是需要时间的,如果

CPU

执行一天语句需要

0.1us

,那么

1

条语句循环执行

10

次就需要花费

1us

,),通过这种方式,可以让

CPU“

在延时函数这里,延时时间到了继续往下执行。

(延时函数)

编写显示数字的代码 )

(数码管模块代码)

点击编译后,在底部会显示编译结果,如编译有错误,可复制粘贴在网上查询其报错原因。

五、程序下载

1.

使用数据线连接开发板和电脑;

2.

运行下载工具

STC-ISP;

3.

选择单片机型号及串口号,并选择生成的

hex

文件,然后点击

下载

”;

4.

单击

下载

后,需要给单片机重新上电,即关闭电源开关然后再打开电源开关,随后就会进入下载

模式将

hex

程序下载到单片机中,下载成功后

STC-ISP

提示下载成功!

相关推荐