登录/注册

74hc595驱动数码管

更多

使用74HC595驱动数码管是一种常用且高效的方案,特别适合在微控制器引脚有限时扩展输出。以下是详细步骤和解释:


1. 核心原理

74HC595 是 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 正电源

数码管连接

电阻计算:通常段选线上串联 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:位选扩展(推荐)

示例代码(两位级联)

// 驱动两位共阴数码管显示"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. 注意事项

  1. 消隐处理:动态扫描时需在切换位选前关闭显示,避免残影。
  2. 驱动能力:74HC595单脚最大输出电流约35mA,整片70mA。确保所有段点亮时不超限。
  3. 共阳数码管:需改用开漏输出(如ULN2003驱动),或段码取反(~segmentCodes[0])。
  4. 级联顺序:数据从高位到低位依次发送,首个字节进入级联末端的芯片。

常见问题解决

通过以上步骤,您可高效驱动数码管并节省微控制器引脚资源!

基于74HC595的串行数码管显示实验

今天学习小王子开发板基于74HC595串行数码管显示实验基于74HC595串行数码管

2022-03-01 06:34:45

2片HC595怎样驱动四位数码管

的esp8266开发板只有9个口能用,导致只能驱动两位数码管。还好动态扫描的机制是用到了。这回来学习第三个数码管,由两片72

2022-02-17 07:07:05

74HC595驱动2位数码管的方法

74HC595驱动2位数码管驱动芯片:

2021-12-07 07:48:07

基于stm32的74HC595仿真数码管显示(包含源程序及仿真)

基于stm32的74HC595仿真数码管显示(包含源程序及仿真)

资料下载 木头1233 2023-04-20 15:56:42

ATmega16开发板教程(3)——74HC595驱动数码管显示

​4、数码管显示数码管驱动电路采用2片74HC595芯片进行IO扩展,仅

资料下载 杨海清 2021-11-24 10:21:07

硬件探索——STM32F4控制74HC595数码管

使用STM32F407VET6,通过串行方式驱动74HC595控制的4位数码管使用了PD0(DIO)、PD1(RCLK)、PD2(SCLK)三个

资料下载 张亮 2021-11-24 10:06:09

74HC595驱动8位段选数码管

74HC595驱动8位段选数码管利用两个74HC595实现三个引脚实现数

资料下载 陆军航空兵 2021-11-24 09:36:03

【STM32学习】(14)两个74HC595控制四个数码管显示

74HC595是在单片机系统中常用的芯片之一他的作用就是把串行的信号转为并行的信号,常用在各种数码管以及点阵屏的驱动芯片, 使用

资料下载 golabs 2021-11-23 18:06:48

如何实现74HC595驱动数码管显示

​4、数码管显示数码管驱动电路采用2片74HC595芯片进行IO扩展,仅

2021-12-07 07:29:59

STM32F4控制74HC595数码管的方法

使用STM32F407VET6,通过串行方式驱动74HC595控制的4位数码管使用了PD0(DIO)、PD1(RCLK)、PD2(SCLK)三个

2021-12-07 06:42:13

单片机控制74hc595驱动4个单数码管

单片机控制74hc595驱动4个单数码管静态显示演示效果:*材料 AT89C52 、7

2021-12-02 06:32:10

74HC595是如何去驱动数码管

74HC595是什么?74HC595有何作用?74HC595的管脚有哪些功能?74HC

2021-08-02 09:54:34

74HC595驱动LED点阵或数码管的正确用法是什么?

74HC595正确的工作原理是什么?74HC595驱动LED点阵或数码管

2021-07-23 12:34:52

74HC595芯片的作用是什么

74HC595是在单片机系统中常用的芯片之一他的作用就是把串行的信号转为并行的信号,常用在各种数码管以及点阵屏的驱动芯片, 使用

2021-07-22 07:05:56

74hc595引脚图及功能表

74HC595和74hc164一样是在单片机系统中常用的芯片之一他的作用就是把串行的信号转为并行的信号,常用在各种数码管以及点阵屏的

2021-07-01 10:10:29

7天热门专题 换一换
相关标签