ESP8266 + SN74HC595N(8位移位寄存器)
目录
介绍
使用SN74HC595N 为 ESP8266 扩展
-
SN74HC595N(8位移位寄存器IC)
1. Vcc 16引脚 电压输入 (必须) 2. GND 地 (必须) 3. OE 需要接GND(必须) 4. MR 需要接高电压(必须) 5. Q0 ~ Q7 并行输出引脚,一般是5v 6. 12引脚 ST大平台 7. 11引脚 SH活塞 8. 14引脚 DS数据 9. 9引脚 扩充使用
-
SN74HC595N (实物图DC图)
-
SN74HC595N(简洁图)
准备
- 面包板
- 杜邦线
- SN74HC595N
- ESP8266
- LED * 8
- 200k电阻 * 8
连线
根据原理图,把 SN74HC595N 模块分为 4大块
1. 大平台(ST)
2. 数据(DS)
3. 活塞(SH)
4. GPIO引脚
- ST(大平台) 连接 ESP8266引脚 5
- DS(数据) 连接 ESP8266引脚 4
- SH(活塞) 连接 ESP8266引脚 0
- Vcc 连接 ESP8266引脚3V或者5V
- GND 连接 ESP8266引脚 GND
- OE 连接 GND(必须)
- MR 连接 Vcc(必须)
- Q0 ~ Q7 连接 LED灯和电阻
代码
#include <Arduino.h>
// SN74HC595 简称 N74
// ST 大平台 5
// DS 数据 4
// SH 活塞 0
const short N74_ST_BIG = 5;
const short N74_DS_DATA = 4;
const short N74_SH_PUSH = 0;
void setup()
{
pinMode(N74_ST_BIG, OUTPUT);
pinMode(N74_DS_DATA, OUTPUT);
pinMode(N74_SH_PUSH, OUTPUT);
}
void loop()
{
digitalWrite(N74_ST_BIG, LOW); // 放下大平台
digitalWrite(N74_SH_PUSH, LOW); // 活塞拉回
digitalWrite(N74_DS_DATA, 0); // 放入数据
digitalWrite(N74_SH_PUSH, HIGH); // 活塞推动数据
digitalWrite(N74_SH_PUSH, LOW);
digitalWrite(N74_DS_DATA, 1);
digitalWrite(N74_SH_PUSH, HIGH);
digitalWrite(N74_SH_PUSH, LOW);
digitalWrite(N74_DS_DATA, 0);
digitalWrite(N74_SH_PUSH, HIGH);
digitalWrite(N74_SH_PUSH, LOW);
digitalWrite(N74_DS_DATA, 1);
digitalWrite(N74_SH_PUSH, HIGH);
digitalWrite(N74_SH_PUSH, LOW);
digitalWrite(N74_DS_DATA, 0);
digitalWrite(N74_SH_PUSH, HIGH);
digitalWrite(N74_SH_PUSH, LOW);
digitalWrite(N74_DS_DATA, 1);
digitalWrite(N74_SH_PUSH, HIGH);
digitalWrite(N74_SH_PUSH, LOW);
digitalWrite(N74_DS_DATA, 0);
digitalWrite(N74_SH_PUSH, HIGH);
digitalWrite(N74_SH_PUSH, LOW);
digitalWrite(N74_DS_DATA, 1);
digitalWrite(N74_SH_PUSH, HIGH);
digitalWrite(N74_ST_BIG, HIGH); // 拉起大平台
}
代码优化
#include <Arduino.h>
// SN74HC595 简称 N74
// ST 大平台 5
// DS 数据 4
// SH 活塞 0
const short N74_ST_BIG = 5;
const short N74_DS_DATA = 4;
const short N74_SH_PUSH = 0;
const int LED[] = {0, 1, 0, 1, 0, 1, 0, 1};
void pull_push_data(short num); // 数据活塞 num:0或1
void setup()
{
pinMode(N74_ST_BIG, OUTPUT);
pinMode(N74_DS_DATA, OUTPUT);
pinMode(N74_SH_PUSH, OUTPUT);
}
void loop()
{
digitalWrite(N74_ST_BIG, LOW); // 放下大平台
for (unsigned short i = 0; i < 8; i++)
{
pull_push_data(LED[i]);
}
digitalWrite(N74_ST_BIG, HIGH); // 拉起大平台
}
void pull_push_data(short num)
{
digitalWrite(N74_SH_PUSH, LOW); // 活塞拉回
digitalWrite(N74_DS_DATA, num); // 放入数据
digitalWrite(N74_SH_PUSH, HIGH); // 活塞推动数据
}
运行
ok