无论数码管有多少个引脚,其工作原理都是一样的,都是通过点亮LED来显示数字。值得注意和区别开的是两种连接方式:共阳和共阴。
- 共阳数码管是所有的发光二极管阳极接在了一起,形成共阳;
- 共阴数码管是所有的发光二极管阴极接在了一起,形成共阴;
当共阳数码管需要点亮某一段时,只需要使I/O输出低电平;而51单片机的灌电流驱动较强,但共阳编码时与正电平逻辑相反。
一般操作数码管时会涉及到74HC573锁存器与74HC138译码器。因为单片机的I/O口数量有限,而8位数码管占用I/O口较多,所以使用锁存器和译码器;同时I/O的驱动能力弱,而锁存器输出的电流较大,驱动能力够。作为负载驱动的话74HC245也可以,但是245不具有锁存功能。这里给出芯片资料(573和138的中英文资料手册):
链接:https://pan.baidu.com/s/1Kxqh06tE3sl0at-ee9BwVA
提取码:jot4
作简要说明:
74HC573 :
- OE引脚接高电平,则输出端Q0~Q7都为Z(高阻态);因此在正常使用时,OE接低电平
- 若 LE 为高,则 输入 D 与 输出 Q 相同;而当 LE 为低,无论D为何种电平状态,Q都会保持上一次的电平。
数码管:
74HC138:
- G2接低电平,当G1接VCC时,138正常工作。
- 真值表:
数码管电路图
- 在573与数码管连接的电路上应添加小电阻(我选择的是200欧姆)。
电路实物与说明:
- 选用共阴数码管;
- 数码管编号 从左至右依次为 0~ 7号;
- 573与138供电均为 2~ 6V
- 573: 正常工作 OE–>GND,LE–>VCC;138 :正常工作 G1–>VCC
程序测试
程序说明:
- 573的D1~D8连接单片机的P0~P7。
- 138的ABC引脚连接单片机P2.0,P2.1,P2.2;
程序现象:
- 数码管0号显示数字6;
#include "reg52.h"
sbit HC_A=P2^0;
sbit HC_B=P2^1;
sbit HC_C=P2^2;
// 共阴数码管
int smgduan[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//显示0~F的值
void main()
{
HC_A=0;HC_B=0;HC_C=0; //选择0号数码管
P0=smgduan[6]; //数字6
while(1);
}