登录/注册

STM32 HC595

STM32 HC595

更多

以下是使用STM32驱动74HC595移位寄存器的详细步骤和代码示例:

连接原理图

STM32         74HC595
PA5  ------> SH_CP (移位时钟引脚 11)
PA7  ------> DS    (串行数据引脚 14)
PA4  ------> ST_CP (锁存时钟引脚 12)
VCC  ------> VCC (10脚)
GND  ------> GND (13脚)

注:MR(10脚)接VCC,OE(13脚)接地;级联时Q7'接下一级的DS


核心操作步骤

  1. 数据移位:通过DS引脚按位发送数据,用SH_CP上升沿锁存位数据
  2. 输出锁存:发送完1字节(8位)后,用ST_CP上升沿将数据输出到并行端口

HAL库驱动代码

// 引脚定义
#define DS_PIN    GPIO_PIN_7
#define DS_PORT   GPIOA
#define SH_CP_PIN GPIO_PIN_5
#define SH_CP_PORT GPIOA
#define ST_CP_PIN GPIO_PIN_4
#define ST_CP_PORT GPIOA

// 初始化函数
void HC595_Init(void) {
  GPIO_InitTypeDef GPIO_InitStruct = {0};

  // 使能GPIO时钟
  __HAL_RCC_GPIOA_CLK_ENABLE();

  // 配置引脚为推挽输出
  GPIO_InitStruct.Pin = DS_PIN | SH_CP_PIN | ST_CP_PIN;
  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
  GPIO_InitStruct.Pull = GPIO_NOPULL;
  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
  HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);

  // 初始状态拉低
  HAL_GPIO_WritePin(DS_PORT, DS_PIN, GPIO_PIN_RESET);
  HAL_GPIO_WritePin(SH_CP_PORT, SH_CP_PIN, GPIO_PIN_RESET);
  HAL_GPIO_WritePin(ST_CP_PORT, ST_CP_PIN, GPIO_PIN_RESET);
}

// 发送单字节数据
void HC595_SendByte(uint8_t data) {
  for(int i=0; i<8; i++) {
    // 1. 准备数据位(高位先出)
    HAL_GPIO_WritePin(DS_PORT, DS_PIN, (data & (0x80 >> i)) ? GPIO_PIN_SET : GPIO_PIN_RESET);

    // 2. 产生移位时钟上升沿
    HAL_GPIO_WritePin(SH_CP_PORT, SH_CP_PIN, GPIO_PIN_SET);
    HAL_Delay(1);  // 实际使用可缩短或替换为微秒延时
    HAL_GPIO_WritePin(SH_CP_PORT, SH_CP_PIN, GPIO_PIN_RESET);
  }

  // 3. 锁存数据到输出端
  HAL_GPIO_WritePin(ST_CP_PORT, ST_CP_PIN, GPIO_PIN_SET);
  HAL_Delay(1);
  HAL_GPIO_WritePin(ST_CP_PORT, ST_CP_PIN, GPIO_PIN_RESET);
}

// 级联发送多字节
void HC595_SendMulti(uint8_t *data, uint8_t len) {
  for(int i = len-1; i >= 0; i--) {  // 注意:级联时先发最后级的数据
    HC595_SendByte(data[i]);
  }
}

使用示例

// 主函数中调用
int main(void) {
  HAL_Init();
  HC595_Init();

  uint8_t led_data = 0x01; // 初始点亮第一个LED

  while(1) {
    HC595_SendByte(led_data);
    led_data = (led_data << 1) | (led_data >> 7); // 循环左移
    HAL_Delay(500); // 500ms流水灯效果
  }
}

关键注意事项

  1. 移位顺序:74HC595默认高位(MSB)在前,数据发送方向为D7→D6→...→D0
  2. 级联处理:多芯片级联时,先发送最后一级芯片的数据
  3. 时序优化
    // 替换HAL_Delay的快速电平切换(系统时钟72MHz时)
    #define DELAY_FAST() for(int i=0; i<10; i++) __NOP()
  4. 锁存时机:所有位发送完毕后才触发ST_CP锁存信号

实际应用场景:LED点阵控制、数码管驱动、I/O扩展等需要大量输出口的场合。单个74HC595可扩展8路输出,级联N片可扩展8N路输出。

STM8如何控制HC595驱动8个LED?

STM8如何控制HC595驱动8个LED,希望大神们能发个程序上来看一下,谢谢!

2024-04-25 07:56:27

SPICONTROLE 4个HC595移位寄存器设置流水灯时,在SPIIINTIGRATIONED化了的时候,控制的HC595 LED跳了起来如何解决?

采用 SPICONTROLE 4个HC595移位寄存器,在设置流水灯的时候了,SPICONTROLLES正常,但是在SPIIINTIGRATIONED化了的时候,控制的HC595的LED跳了起来。请问该如何解决。例子

2024-01-29 08:06:39

基于STM32的74HC595 IO扩展板卡设计

自己做了一块74HC595的IO扩展板卡,出于灵活考虑,没有都采用级联的方式,而是2组多芯片级联的结构。基于STM32平台设计。

2023-04-17 14:48:22

单片机 STM32 HAL IO扩展 74HC595 例子代码

#include "74hc595.h"/******************功 能:定义HC595的功能引脚备 注:变更引脚,由MX配置完成

资料下载 安立路 2021-11-24 09:36:03

利用51单片机+hc595芯片配合在led点阵上玩贪吃蛇 第一篇“显示贪吃蛇”

利用51单片机+hc595芯片配合在led点阵上玩贪吃蛇~

资料下载 佚名 2021-11-23 16:51:24

单片机 MSP430 G2553 HC595 数码管 SPI 通信

模拟SPI接法是任意的://HC595//VCC-VCC GND-GND RCK-P21 SCK-P22 DIO-P20硬件SPI,调节成3线SPI模式 8bit就可以通信:P14 P12

资料下载 佚名 2021-11-19 19:51:06

利用51单片机+hc595芯片配合在led点阵上玩贪吃蛇 第三篇“相关决策函数”

利用51单片机+hc595芯片配合在led点阵上玩贪吃蛇~

资料下载 佚名 2021-11-15 10:51:07

74HC595串入并出芯片应用汇总

74HC595串入并出芯片应用汇总

资料下载 风中浪子111 2021-09-22 10:02:23

HC164和HC595的区别是什么?

HC164和HC595的区别是什么?HC164和HC595都有数据输入端

2022-11-28 22:40:55

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

MicroPython-On-ESP8266——数码管的使用,2片HC595驱动四位数码管1. 背景前面在使用四位数码管时,需要用来12个GPIO接口,结果咱micropython能驱动

2022-02-17 07:07:05

74HC595使用说明与驱动原理功能

。高抗扰度 VNIH =VNIL = 28% VCC (最小)。原理图引脚功能描述名称符号引脚功能简述三态输出Q0~Q71~7+15数据输处地GND8电源负极级联数据Q`9把Q7的高位发送给下一位HC595复位清除MR10

2021-12-07 07:35:26

74HC595多组芯片多组级联代码分享

​自己做了一块74HC595的IO扩展板卡,出于灵活考虑,没有都采用级联的方式,而是2组多芯片级联的结构​。基于STM32平台设计​。​结构示意图74HV59

2021-12-07 06:43:44

单片机STM32 HAL IO扩展74HC595例子代码分享

#include "74hc595.h"/******************功能:定义HC595的功能引脚备注:变更引脚,由MX配置完成

2021-12-07 06:29:16

使用74HC595芯片真的能节省STM32的IO口吗

使用74HC595芯片真的能节省STM32的IO口吗?为什么要使用74HC595芯片呢?

2021-11-25 06:36:44

利用51单片机+hc595芯片配合在led点阵上玩贪吃蛇

利用51单片机+hc595芯片配合在led点阵上玩贪吃蛇~

2021-11-23 06:40:30
7天热门专题 换一换
相关标签