使用74HC595驱动数码管是一种常用且高效的方案,特别适合在微控制器引脚有限时扩展输出。以下是详细步骤和解释:
1. 核心原理
74HC595 是 8位移位寄存器,通过 串行输入 转换为 并行输出:
- 串联控制:仅需3个微控制器引脚(数据、时钟、锁存)即可驱动多位数码管。
- 级联能力:多片74HC595可串联驱动更多数码管(如两片驱动4位8段数码管)。
2. 电路连接
必要接线(以单个数码管为例)
| 74HC595引脚 | 连接目标 | 作用 |
|---|---|---|
DS (14) |
微控制器的数据引脚 | 串行数据输入 |
SH_CP (11) |
微控制器的时钟引脚 | 移位寄存器时钟 |
ST_CP (12) |
微控制器的锁存引脚 | 存储寄存器时钟 |
Q0-Q7 (15,1-7) |
数码管段选(a~dp) | 段码控制 |
OE (13) |
GND | 输出使能(低有效) |
MR (10) |
VCC | 复位(高电平无效) |
GND (8) |
GND | 电源地 |
VCC (16) |
+5V | 正电源 |
数码管连接
- 共阴数码管:74HC595的
Q0-Q7接段选引脚(需串联限流电阻),公共端接GND。 - 共阳数码管:74HC595的
Q0-Q7接段选引脚,公共端接VCC(需改用ULN2003等驱动IC)。
电阻计算:通常段选线上串联 220Ω 电阻(根据电流和亮度调整)。
3. 驱动代码逻辑(Arduino示例)
// 引脚定义
const int dataPin = 2; // DS (数据)
const int clockPin = 3; // SH_CP (时钟)
const int latchPin = 4; // ST_CP (锁存)
// 共阴数码管段码表(0-9)
byte segmentCodes[10] = {
B00111111, // 0 (a,b,c,d,e,f亮)
B00000110, // 1 (b,c亮)
B01011011, // 2
B01001111, // 3
B01100110, // 4
B01101101, // 5
B01111101, // 6
B00000111, // 7
B01111111, // 8
B01101111 // 9
};
void setup() {
pinMode(dataPin, OUTPUT);
pinMode(clockPin, OUTPUT);
pinMode(latchPin, OUTPUT);
}
void loop() {
// 示例:显示数字"3"
byte num = 3;
digitalWrite(latchPin, LOW); // 锁存低电平(开始数据传输)
shiftOut(dataPin, clockPin, MSBFIRST, segmentCodes[num]); // 发送段码(高位在前)
digitalWrite(latchPin, HIGH); // 锁存高电平(更新输出)
delay(1000);
}
4. 多位数码管驱动
方案1:位选扩展(推荐)
- 片1(段选):控制所有数码管的段码。
- 片2(位选):控制每位数码管的公共端(如共阴接地/共阳接VCC)。
- 动态扫描:快速轮流点亮每位,利用视觉暂留效果显示完整内容。
示例代码(两位级联)
// 驱动两位共阴数码管显示"12"
byte digit1 = segmentCodes[1]; // 十位"1"的段码
byte digit2 = segmentCodes[2]; // 个位"2"的段码
void displayDigits() {
// 先发送位选信号(选择个位),再发送段码
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, digit2); // 段码(个位)
shiftOut(dataPin, clockPin, MSBFIRST, B00000001); // 位选(个位=1)
digitalWrite(latchPin, HIGH);
delay(5); // 短暂点亮个位
// 同理切换十位(需快速扫描)
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, digit1); // 段码(十位)
shiftOut(dataPin, clockPin, MSBFIRST, B00000010); // 位选(十位=2)
digitalWrite(latchPin, HIGH);
delay(5);
}
5. 注意事项
- 消隐处理:动态扫描时需在切换位选前关闭显示,避免残影。
- 驱动能力:74HC595单脚最大输出电流约35mA,整片70mA。确保所有段点亮时不超限。
- 共阳数码管:需改用开漏输出(如ULN2003驱动),或段码取反(
~segmentCodes[0])。 - 级联顺序:数据从高位到低位依次发送,首个字节进入级联末端的芯片。
常见问题解决
- 显示乱码:检查段码表定义是否与接线顺序匹配(Q0-Q7对应a~dp)。
- 亮度不足:确认限流电阻值是否过大(建议220Ω起试),或检查电源电压。
- 发热严重:总电流超限,减少同时点亮段数或改用三极管驱动。
通过以上步骤,您可高效驱动数码管并节省微控制器引脚资源!
51单片机的超声波测距,并用74HC595驱动数码管显示超声波测距的距离
个人是小白,实在不会写,麻烦大佬们帮忙写一个程序,实现51单片机的超声波测距,并用74HC595驱动数码管显示超声波测距的距离!!!
jf_45451522
2023-11-23 15:19:03
如何实现74HC595驱动数码管显示
4、数码管显示数码管驱动电路采用2片74HC595芯片进行IO扩展,仅仅只需3Pin即可驱动需要16位引脚的数码管。74HC595是一个8位串行输入、并行输出的位移缓存器。只有对74HC595
维生素B2
2021-12-07 07:29:59
「正点原子NANO STM32开发板资料连载」第十七章 数码管显示实验
LED_Wei 函 数 控 制 位 选 需 要 显 示 的 数 码 管 ,LED_Write_Date 函数代码如下://74HC595 驱动//数码管显示//duan:显示的段码//wei:要显示的数码管
正点原子运营官
2020-04-21 12:00:37
「正点原子NANO STM32F103开发板资料连载」第十七章 数码管显示
,LED_Write_Date 函数代码如下://74HC595 驱动//数码管显示//duan:显示的段码//wei:要显示的数码管编号 0-7(共 8 个数码管)void LED_Write_Data
正点原子运营官
2020-04-28 12:20:53
74HC595是如何去驱动数码管的
74HC595是什么?74HC595有何作用?74HC595的管脚有哪些功能?74HC595是如何去驱动数码管的?
尼克wo
2021-08-02 09:54:34
单片机和74HC595驱动芯片对数码管的控制设计
本设计使用了一个4位的数码管,为共阳型,为了节省单片机的IO口,使用了两片74HC595作为数码管的驱动芯片,共占用3个IO口。
2019-03-22 15:04:21
基于74HC595的串行数码管显示实验
今天学习小王子开发板基于74HC595串行数码管显示实验基于74HC595串行数码管显示实验1 认识74HC595串行数码2 了解锁存脉冲信号【RCLK】和时钟脉冲信号【SCLK】锁存脉冲信号输入
一瞅一个准
2022-03-01 06:34:45
74HC595驱动2位数码管的方法
74HC595驱动2位数码管驱动芯片:74HC595,74LS595,单片机:AT89C52,或者STC89C52都可以实例代码#include //#include#include "
werywer
2021-12-07 07:48:07
74HC595芯片的作用是什么
74HC595是在单片机系统中常用的芯片之一他的作用就是把串行的信号转为并行的信号,常用在各种数码管以及点阵屏的驱动芯片, 使用74HC595可以节约单片机mcu的io口资源,用3个io就可以控制8
尼克wo
2021-07-22 07:05:56
单片机控制74hc595驱动4个单数码管
单片机控制74hc595驱动4个单数码管静态显示演示效果:*材料 AT89C52 、74HC595采用Proteus仿真实例程序#include#define uchar unsigned
小麦地
2021-12-02 06:32:10
STM32F4控制74HC595数码管的方法
使用STM32F407VET6,通过串行方式驱动74HC595控制的4位数码管使用了PD0(DIO)、PD1(RCLK)、PD2(SCLK)三个GPIO,将其与数码管模块对应连接程序中使用了延时函数
gvxiaot
2021-12-07 06:42:13
74hc595引脚图及功能表
74HC595和74hc164一样是在单片机系统中常用的芯片之一他的作用就是把串行的信号转为并行的信号,常用在各种数码管以及点阵屏的驱动芯片, 使用74HC595可以节约单片机mcu的io口资源,用
2021-07-01 10:10:29
2片HC595怎样驱动四位数码管呢
的esp8266开发板只有9个口能用,导致只能驱动两位数码管。还好动态扫描的机制是用到了。这回来学习第三个数码管,由两片72HC595位移寄存器芯片驱动的四位数码管。2. 位移寄存器芯片74HC595先了解一下这个74HC595芯片(收下简称595)是个什么东西又是如何工作的。2.1. 595原理图
linlin10
2022-02-17 07:07:05
74HC595怎么使用
一、74HC595使用方法74HC595的数据端Q0--Q7:八位并行输出端,可以直接控制数码管的8个段。Q7:级联输出端。将它接下一个595的DS端。DS:串行数据输入端,级联的话接上一级的Q7
人走了
2021-12-07 06:46:57
