数码管
- 1.数码管简介
-
- [1.1 共阳极数码管](#1.1 共阳极数码管)
- [1.2 共阴极数码管](#1.2 共阴极数码管)
- 2.原理图
- 3.静态数码管显示代码
- [4 原理图](#4 原理图)
- 5.74HC245功能理解
- 6.74HC138功能理解
1.数码管简介

1.1 共阳极数码管
共阳极数码管是指的是将数码管所有阳极接在一起,形成一个公共端(com),接5V

共阳极数码管,当我需要点亮哪一个灯,则需要给哪一个灯低电平。
1.2 共阴极数码管
共阴极数码管是指的是将数码管所有阴极接在一起,形成一个公共端(com),接地

共阴极数码管,当我需要点亮哪一个灯,则需要给哪一个灯高电平。
2.原理图


数码管引脚,公共端一般在3号和8号引脚,在单片机中,如果通过io口去驱动数码管,可能会出现几个问题,1.电流不够,从而显示出来的灯亮度比较暗,2.过多的浪费单片机io口的使用,所以常使用芯片74HC245或74HC573进行连接数码管abcdefgdp引脚控制,通过单片机io口对芯片的控制,然后芯片对数码管控制。

一般情况下,常采用共阳极数码管多些,因为公共端是阳极接通在VCC端,那么只需要io口提供一个低电压就行,如果是公共端是阴极,io口则需要高电平,那么io口提供的电压电流不够的问题。所以常采用共阳极数码管。

当阴极数码管高电平有效 显示一个数字0,a~g分别接在P0.0-P0.7,对应abcdefg是1111 1100
P0.0 是1
P0.1 是1
P0.2 是1
P0.3 是1
P0.4 是1
P0.5 是1
P0.6 是0
P0.7 是0
高四位是 0011 低四位1111 对应的16进制为0x3F
当阳极数码管低电平有效 显示一个数字0,a~g分别接在P0.0-P0.7,对应abcdefg是0000 0011
P0.0 是0
P0.1 是0
P0.2 是0
P0.3 是0
P0.4 是0
P0.5 是0
P0.6 是1
P0.7 是1
高四位是 1100 低四位0000 对应的16进制为0xC0、
所以发现共阴极数码管与共阳极数码管发现一个规律,共阴极数码管编码与共阳极数码管编码是取反的。
共阳极数码管16进制0X3F取反就是共阴极数码管16进制的0XC0了显示一个数字0
3.静态数码管显示代码
c
#include <reg51.h>
typedef unsigned int u16;
typedef unsigned char u8;
#define SMG_A_DP_POST P0
u8 gsmg_code[17] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; //共阴数码管0-F
void delay_50ms(u16 us) {
while(us--);
}
void main() {
u8 i;
while(1) {
SMG_A_DP_POST = gsmg_code[0];
}
}
4 原理图

数码管采用8段共阴极数码管
5.74HC245功能理解
19脚接地,1脚方向脚,如果是1,从A端输入,B端输出,如果是0,B端输入,A端输出,这里是接VCC,所以输入端是A,输出端是B,功能是输入是0输出是0,输入端是1输出端是1
6.74HC138功能理解
6脚VCC,4,5引脚接地,功能是通过输入端ABC控制输出Y0-Y7
输入 输出
000 1111 1110
001 1111 1101
010 1111 1011
011 1111 0111
100 1110 1111
101 1101 1111
110 1011 1111
111 0111 1111
