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
问题
总结
ESP8266 + SN74HC595N(8位移位寄存器)的更多相关文章
- 74HC595 8位移位寄存器的使用小结
请查看我的博客园文章,比较详细. https://www.cnblogs.com/CodeWorkerLiMing/p/11964258.html
- AC620教程 第十五节 8位7段数码管驱动设计与验证
本章导读 电子系统中常用的显示设备有数码管.LCD液晶以及VGA显示器等.其中数码管又可分为段式显示(7段.米字型等)以及点阵显示(8*8.16*16等),LCD液晶的应用可以分为字符式液晶(1602 ...
- [FPGA]Verilog实现8位串并转换器HC595
目录 想说的话... 正文 IC介绍_HC595 电路连接图 功能表 逻辑图 代码实现 代码已经更新,新的代码按照电路编写,忠实于原电路的逻辑,已注于文末(11/16) 修复并行输出数据出错的bug, ...
- 单片机与控制实验(2)——LED点阵显示屏
一.实验目的和要求 了解LED点阵显示的基本原理和实现方法.掌握点阵汉字库的编码和从标准字库中提取汉字编码的方法. 二.实验设备 单片机测控实验系统 LED点阵显示器实验模块 Keil开发环境 STC ...
- 串行移位锁存并行输出可级联器件74HC595
一.背景 老同学今天突然咨询关于74HC595,自己没用过,同学说可以级联10级!10级?我艹,这么叼,级联又是 什么鬼,这勾起了我极大兴趣,二话不说,手册down下来研究,并在此做个记录. 二.正文 ...
- 基于S5PC100裸机程序之SPI(上)
作者:杨老师,华清远见嵌入式学院讲师. SPI作为应用最为广泛的通信总线协议之一,开发人员应当掌握,本章将介绍SPI总线协议的基本理论,以及S5PC100的SPI总线控制器的操作方法. 1. SPI总 ...
- 74HC595 for STM32 源代码【worldsing笔记】
74HC595是硅结构的CMOS器件, 兼容低电压TTL电路,遵守JEDEC标准. 74HC595是具有8位移位寄存器和一个存储器,三态输出功能. 移位寄存器和存储器是分别的时钟. 数据在SHcp(移 ...
- CRC校验源码分析
这两天做项目,需要用到 CRC 校验.以前没搞过这东东,以为挺简单的.结果看看别人提供的汇编源程序,居然看不懂.花了两天时间研究了一下 CRC 校验,希望我写的这点东西能够帮助和我有同样困惑的朋友节省 ...
- SPI通信
SPI是由Motorola公司提出的一种同步串行外围接口:它在速度要求不高,低功耗,需要保存少量参数的智能化传感系统中得到了广泛应用: SPI是一个全双工的同步串行接口,在数据传输过程中,总线上只能是 ...
- 基于FPGA的OLED真彩色动态图像显示的实现
源:基于FPGA的OLED真彩色动态图像显示的实现 作为第3代显示器,有机电致发光器件(Organic Light Emitting Diode,OLED)由于其主动发光.响应快.高亮度.全视角.直流 ...
随机推荐
- 02-canvas注意点
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="U ...
- 如何在 Recovery 中启用应用
如果因为禁用了某个应用手机无法开机,那么你需要这个方法来救命 https://xdaforums.com/t/enable-or-disable-apps-directly-from-the-file ...
- disconf分布式配置管理(一) 安装与配置
一.背景 在生产部署过程中,遇到以下问题: 1.由于节点较多,每次增量修改配置文件后都需要每个节点替换配置文件. 2.有些动态配置修改后,需要重启服务. 二.解决方案 1.使用linux文件共享配置文 ...
- 20.从0学ARM-移植uboot支持exynos4412
经过前面一章的学习,我们已经了解了什么是uboot,本章主要目的是如何编译和移植uboot,增加串口.网络.emmc等功能,让他支持exynos4412开发板. 一.移植步骤 1. Uboot配置 指 ...
- React 18 自定义 Hook 获取 useState 最新值
原理:通过同步更新 useRef 来获取最新值 // util.ts export const useRefState = (init: any = null) => { const [sta ...
- Win32 sdk 下树形控件响应鼠标单击与双击,获得选中项的名称
//窗口过程函数INT_PTR CALLBACK myWin::myWinDlgProc(HWND dlgHwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) ...
- Linux samba的配置和使用
samba是什么 samba是什么?能干什么?什么场合需要用到它? samba 是基于SMB协议(ServerMessage Block,信息服务块)的开源软件,samba也可以是SMB协议的商标.S ...
- el-popover - 问题
背景:elemet - ui和vue , el-table中使用了 el-popover , el-popover 中使用了form, 每编辑一行数据,点击编辑按钮,出现el-popover弹窗,页面 ...
- 每天5分钟复习OpenStack(十五)Ceph与Bcache结合
上一章我们成功部署了bcache,这一章我们将Ceph与Bcache结合来使用,使用Bcache来为ceph的数据盘提速. 1 ceph 架构 一个标准的ceph集群可能是如下的架构,SSD/NVME ...
- JavaScript中class的静态属性和静态方法
我们可以把一个方法赋值给类的函数本身,而不是赋给它的 "prototype" .这样的方法被称为 静态的(static). 例如这样: class Animal { static ...