首页 理论教育8051单片机数码管原理及应用

8051单片机数码管原理及应用

【摘要】:8051系列单片机使用静态显示方式驱动数码管的电路如图5-7所示。

数码管是一种半导体发光器件,它基本的显示单元发光二极管。若干个发光二极管排列组合成一定的形状,并封装在一个固定形状的容器中,构成为标准的显示器件,即构成了数码管

5.1.1 内部结构

数码管按能显示多少个“8”字可分为一位、二位、三位、四位等多种。常用数码管的外形如图5-4所示。

图5-4 数码管

数码管中结构最为简单的当属一位数码管,其内部如图5-5所示。在一位数码管中,封装有8个LED发光二极管,每一个发光二极管对应着一个字段,当给二极管两端施加适当的电压时,发光二极管会发光,相应的字段就会点亮,从而显示出不同的字符来。

图5-5 数码管原理图

从图5-5中可以看出,要显示一个“8”字,最少需要使用七个字段,分别用a~g来表示,另外还有一个小数点,用dp表示,每一个字段都与一个发光二极管对应。为了节约引脚,可以将八个发光二极管的所有阳极或阴极连接在一起,形成一个公共端,用COM表示。将阳极作为公共端的数码管称为共阳极数码管,而将阴极作为公共端的数码管称为共阴极数码管,共阳极和共阴极数码管在外形上没有区别,其原理图如图5-6所示。

图5-6 数码管结构示意图

共阳极和共阴极数码管的驱动方式是不同的,共阳极数码管在使用时一般是将公共端(COM)连接到+5 V电源上,当某一字段的发光二极管阴极为低电平时,相应字段就点亮,而共阴极数码管在使用时需将公共端接地,当某一字段发光二极管的阳极为高电平时,相应字段即可点亮。

5.1.2 显示方式

按照驱动数码管的方法不同,可以将数码管的显示方式分为静态显示和动态显示两种。

1.静态显示

静态显示就是数码管在工作时,让其持续点亮。静态显示的特点是在每个数码管的段驱动端都要连接有一组8位数据线来保持显示的字形。8051系列单片机使用静态显示方式驱动数码管的电路如图5-7所示。

图5-7 数码管静态显示原理

在静态显示中,当单片机的一组I/O口送出一组字形码后,显示字形可以一直保持,直到送入另一组字形码为止,这种显示方式的优点是不用持续地对数码管进行扫描,数码管亮度高、无闪烁且占用CPU资源少。但静态显示也有缺点,主要是每显示一位都需要占用一组8位的I/O口,端口开销较大,特别是显示的位数较多时这种问题就更加突出,所以静态显示一般仅用于显示位数较少的场合。(www.chuimin.cn)

2.动态显示

动态显示是相对静态显示而言的。静态显示时数码管的每一位都是由一个单片机I/O来控制,但用多位数码管显示数字时,单片机不可能提供一个端口控制一位数码管,只能通过轮流输出控制码来逐位轮流点亮,对每一位数码管而言,是每隔一段时间才被点亮一次,利用人眼的视觉暂留原理,看起来多个数码管相当于同时显示了。四位共阴极数码管的动态显示驱动电路如图5-8所示。

图5-8 多位数码管的控制原理图

在动态显示中,数码管的所有同名段驱动端都连接在一起,单片机使用一组I/O口分别驱动这些段驱动端,而数码管的每一个位驱动端都由另外一个I/O口驱动。在显示时单片机轮流向各个数码管送出字形码和相应的位驱动信息,将多个数码管依次点亮。

动态显示的优点是既能节省I/O口,又能简化电路降低硬件成本,因此得到了广泛的应用。但它也有缺点,即数码管的显示亮度比静态显示要低一些,字符显示时有闪烁感,但这些缺点可以通过减小限流电阻、提高刷新频率的方法来克服。

5.1.3 段 码

通常情况下,使用单片机驱动数码管时段驱动端的接法是相对固定的,即将a段连接至一组I/O口的最低位,如图5-9所示。当单片机驱动图中的共阳极数码管时,在相应段驱动端施加低电平,该段即会发光。例如:如果让b段和c段所连接的I/O口输出低电平,其他各段保持高电平,那么b段和c段会发光,这时数码管会显示数字“1”,如图5-10所示,同理,将a、b、d、e和g段接低电平,其他保持高电平,数码管会显示数字“2”,如图5-11所示。

图5-9 数码管的段码

图5-10 共阳显示“1”

图5-11 共阳显示“2”

当数码管显示“1”时,P0.1、P0.2引脚输出低电平,而其他引脚输出高电平,此时P0口输出的二进制数为“1111 1001”,转换成十六进制后是“F9H”。同理显示“2”时,P0口的输出为“A4H”。这样,数码管上每显示一个字符,相应地在I/O口上就会输出一个数值,为了方便起见,我们把显示数字0~9和字母A~F时I/O端口输出的数值整理出来并列成表格,以方便查询和使用,这个表格就称为数码管的“段码表”,简称“码表”。由于数码管结构上的差异,共阴极和共阳极数码管的段码是不同的,具体见表5-1。

表5-1 数码管的段码表

从表5-1中可以看出,每位数字的共阴极段码和共阳极段码进行或运算后,结果是0xff,也就是说将共阴极段码按位取反后就是共阳极段码,反之亦然。