# 74HC595 移位寄存器
## 概述
- 74HC595 用于ESP32使用3个引脚直接控制多个LED。74HC595 是一款价格便宜的八位移位锁存器,通过三个引脚(DS、STCP、SHCP),就可以控制几乎无限量地输出。DS是串行输入端口,每当时钟输入(SHCP)上升沿来临时,DS引脚当前电平值在移位寄存器中会移一位,连续进行8次同样的动作,就可以完成全部(Q0至Q7)移位。最后当STCP(Latch)上升沿到来时,移位寄存器的值将会被锁定在存储器里,并从Q0至Q7引脚输出。ESP32 的数字输出引脚时有限的,如果需要更多的输出的话,期中的一种方法就是通过74HC 595扩展更多的输出引脚。
- 特性
8 位串行输入,并行输出
2 V 至 6 V 的宽工作电压范围
大电流 3 态输出可驱动多达 15 个 LSTTL 负载
低功耗,最大 80 μA ICC
典型 tPD = 14 ns
5 V 时 ±6 mA 输出驱动器
最大 1 μA 的低输入电流
直接复位的移位寄存器
Q0-Q7:8 位并行数据输出引脚,适合直接控制 8 个 LED 或 8 个 7 段显示器的引脚。
- 引脚
Q7':串行输出引脚连接到另一个 74HC595 的 DS,以串联多个 74HC595
MR:复位引脚,低电平有效;
SHcp: 移位寄存器的时间序列输入。随着 rising edge, shift register 中的数据连续移动一位,即 Q1 中的数据进入 Q2 ,依此类推。对于 falling edge,shift register 中的数据保持不变。
STcp: 内存寄存器的时序输入。随着 rising edge 的到来,数据从 shift register 移动到 memory register。
OE:输出激活引脚,低电平有效。
DS:串行数据输入引脚
VCC:正电源电压。
GND:大地。
## 使用方法
``` c
#include "74HC595.h"
void app_main(void)
{
HC595_INIT(); //初始化
open_led_all(); //打开全部LED
vTaskDelay(pdMS_TO_TICKS(1000));
close_led_all(); //关闭全部LED
while(1)
{
for(int i=0;i<8;i++)
{//依次打开LED
open_led(i);
vTaskDelay(pdMS_TO_TICKS(1000));
}
for(int i=7;i>=0;i--)
{//倒序关闭LED
close_led(i);
vTaskDelay(pdMS_TO_TICKS(1000));
}
}
}
```
## 许可证
本项目采用 MIT 许可证。更多信息请参阅 [LICENSE](LICENSE) 文件。
## 贡献
## 作者
LINQQ001
## 历史版本
- 1.0.0 初始版本
## 接线图
<!-- 
 -->
<img src="https://gitee.com/linqq001/test/raw/main/images/1.jpg">
<br>
<img src="https://gitee.com/linqq001/test/raw/main/images/2.jpg">
idf.py add-dependency "linqq001/74hc595^1.0.3"