74hc595驱动数码管
使用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Ω起试),或检查电源电压。
- 发热严重:总电流超限,减少同时点亮段数或改用三极管驱动。
通过以上步骤,您可高效驱动数码管并节省微控制器引脚资源!
2片HC595怎样驱动四位数码管呢
的esp8266开发板只有9个口能用,导致只能驱动两位数码管。还好动态扫描的机制是用到了。这回来学习第三个数码管,由两片72
硬件探索——STM32F4控制74HC595数码管
使用STM32F407VET6,通过串行方式驱动74HC595控制的4位数码管使用了PD0(DIO)、PD1(RCLK)、PD2(SCLK)三个
资料下载
张亮
2021-11-24 10:06:09
【STM32学习】(14)两个74HC595控制四个数码管显示
74HC595是在单片机系统中常用的芯片之一他的作用就是把串行的信号转为并行的信号,常用在各种数码管以及点阵屏的驱动芯片, 使用
资料下载
golabs
2021-11-23 18:06:48
STM32F4控制74HC595数码管的方法
使用STM32F407VET6,通过串行方式驱动74HC595控制的4位数码管使用了PD0(DIO)、PD1(RCLK)、PD2(SCLK)三个
74HC595芯片的作用是什么
74HC595是在单片机系统中常用的芯片之一他的作用就是把串行的信号转为并行的信号,常用在各种数码管以及点阵屏的驱动芯片, 使用
74hc595引脚图及功能表
74HC595和74hc164一样是在单片机系统中常用的芯片之一他的作用就是把串行的信号转为并行的信号,常用在各种数码管以及点阵屏的
2021-07-01 10:10:29
换一换
- 如何分清usb-c和type-c的区别
- 中国芯片现状怎样?芯片发展分析
- vga接口接线图及vga接口定义
- 芯片的工作原理是什么?
- 华为harmonyos是什么意思,看懂鸿蒙OS系统!
- 什么是蓝牙?它的主要作用是什么?
- ssd是什么意思
- 汽车电子包含哪些领域?
- TWS蓝牙耳机是什么意思?你真的了解吗
- 什么是单片机?有什么用?
- 升压电路图汇总解析
- plc的工作原理是什么?
- 再次免费公开一肖一吗
- 充电桩一般是如何收费的?有哪些收费标准?
- ADC是什么?高精度ADC是什么意思?
- EDA是什么?有什么作用?
- dtmb信号覆盖城市查询
- 中科院研发成功2nm光刻机
- 苹果手机哪几个支持无线充电的?
- type-c四根线接法图解
- 华为芯片为什么受制于美国?
- 怎样挑选路由器?
- 元宇宙概念股龙头一览
- 锂电池和铅酸电池哪个好?
- 什么是场效应管?它的作用是什么?
- 如何进行编码器的正确接线?接线方法介绍
- 虚短与虚断的概念介绍及区别
- 晶振的作用是什么?
- 大疆无人机的价格贵吗?大约在什么价位?
- 苹果nfc功能怎么复制门禁卡
- 单片机和嵌入式的区别是什么
- amoled屏幕和oled区别
- 复位电路的原理及作用
- BLDC电机技术分析
- dsp是什么意思?有什么作用?
- 苹果无线充电器怎么使用?
- iphone13promax电池容量是多少毫安
- 芯片的组成材料有什么
- 特斯拉充电桩充电是如何收费的?收费标准是什么?
- 直流电机驱动电路及原理图
- 传感器常见类型有哪些?
- 自举电路图
- 通讯隔离作用
- 苹果笔记本macbookpro18款与19款区别
- 新斯的指纹芯片供哪些客户
- 伺服电机是如何进行工作的?它的原理是什么?
- 无人机价钱多少?为什么说无人机烧钱?
- 以太网VPN技术概述
- 手机nfc功能打开好还是关闭好
- 十大公认音质好的无线蓝牙耳机