如何级联移位寄存器(74HC595)
在这个项目中,我们将使用 74HC595 移位寄存器将 2 个移位寄存器级联在一起。这样级联移位寄存器现在可以控制 16 个输出。
当然您可以级联任意数量的移位寄存器。如果您要级联第三个移位寄存器,它可以控制 24 个输出。如果您级联第四个移位寄存器,它可以控制 32 个输出。
但在这个项目电路中,我们将只级联一个移位寄存器,总共有2个。
级联移位寄存器非常简单,只要您知道如何操作即可,因为 74HC595 专门设计为能够添加额外的移位寄存器。因此,只要您知道如何连接它,它就非常简单。
如上所述,优点是我们可以控制更多输出。我们将添加 一个移位寄存器,我们就可以控制 16 个输出。
我们需要为这个项目准备16个电阻器和 LED。
组件:
- 74HC595移位寄存器
- 16 个 LED
- 16个220Ω电阻
- Arduino
74HC595 移位寄存器是电子行业中最流行、应用最广泛的移位寄存器之一。单个 74HC595 可以控制 8 个输出。这意味着它可以控制例如 8 个 LED。
该移位寄存器共有16个引脚。
移位寄存器的引脚排列如下所示。

下表总结了这些引脚连接。
| 别针 | 功能 | |
| QA-QH | 移位寄存器的输出一个8个输出引脚 | |
| VCC (引脚16) | 移位寄存器电源接口 | |
| GND(引脚 8) | 移位寄存器的接地 | |
| Q H '(引脚 9) | 串行输出用于将数据移位到另一个 74HC595 移位寄存器(级联引脚) | |
| CLEAR (引脚 10) | 这会将移位寄存器中的所有位设置为 0,拉低则关闭。清除寄存器引脚 | |
| SRCLK(引脚 11) | 如果拉高,这会将移位寄存器中的所有值向前移动一位。存入引脚 | |
| RCLK(引脚 12) | 当拉高时,它会输出新的移位寄存器值。输出数据引脚(将寄存器中的数据输出到对应的管脚) | |
| OE(引脚 13) | 当接地时启用输出,当高电平时禁用输出。(常接地)使能引脚 | |
| SER(引脚 14) | 这是新串行数据的输入引脚。(接arduino 开发板管脚) |
首先我们接通电源。因此我们将移位寄存器的 两个 V CC连接到 5V arduino 端子。我们将移位寄存器的接地连接到 GND arduino 端子。这样可以为两个移位寄存器提供足够的电源。
接下来,我们将两个SRCLK(引脚 11)连接到 arduino 的数字引脚 9。
我们将RCLK(引脚 12)连接到 arduino 上的数字引脚 8。
对于第一个移位寄存器,我们将串行数据输入引脚14连接到 arduino 上的数字引脚7。第二个移位寄存器上的数据输入将与Q H '(引脚 9)连接。
由于我们要级联一个额外的移位寄存器,因此对于移位寄存器,我们将串行数据输出线连接到第二个移位寄存器上的串行数据输入线。这样可以让数据无缝地从移位寄存器流到第二个移位寄存器,我们可以将其理解成级联形成了一个16位的移位寄存器。
最后,我们将 LED 连接到输出引脚 Q A - Q H。我们为每个 LED 连接一个限流 220Ω 电阻。
74HC595 移位寄存器有 8 个输出。这意味着您可以将最多 8 个输出设备(例如 LED 或蜂鸣器)连接到移位寄存器。
为了给 74HC595 移位寄存器供电,我们为 V CC提供 +5V ,并将 GND 连接到 arduino 上的地。
将移位寄存器连接到arduino 时,SER(引脚 14)连接到 arduino 上的数字引脚 7。通过此连接,通过我们的代码,我们将写入想要在输出端显示的数据。例如,我们可以将 11111111 写入串行数据线。每一次将移位寄存器的11管脚拉高时会将一个1移入存储寄存器,然后将其拉低,重复以上动作8次,才能将所有的数据移入寄存器中。如果是两个移位寄存器串联,这个过程就需要16次了,一旦我们完成数据的移入,下一步将移位寄存器的12管脚拉高就可以一次性将寄存器中的数据输出到输出管脚,这意味着我们将数据从存储寄存器传输到输出端,这意味着 LED 全部会亮起。
级联移位寄存器电路:

代码:
int big=8 ;
int push= 9;
int datain = 7; // 数据资料int datainput[16]={1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0};void setup() {pinMode(big,OUTPUT);pinMode(push,OUTPUT);pinMode(datain,OUTPUT);}void loop() {digitalWrite(big,LOW);// 开启数据通道//先推上去的是最后一位也就是第八位,最后是第一位。for (int i=0;i<16;i++){pushsomething(datainput[i]);} //全部放入寄存器后,统一一次性输出到各个管脚。 digitalWrite(big,HIGH);
}
void pushsomething(int number){digitalWrite(push,LOW);// 准备将一位数据存入寄存器digitalWrite(datain,number);//发送数据digitalWrite(push,HIGH);//数据存入寄存器
}
相关文章:
如何级联移位寄存器(74HC595)
在这个项目中,我们将使用 74HC595 移位寄存器将 2 个移位寄存器级联在一起。这样级联移位寄存器现在可以控制 16 个输出。 当然您可以级联任意数量的移位寄存器。如果您要级联第三个移位寄存器,它可以控制 24 个输出。如果您级联第四个移位寄存器&#x…...
找到你的专属健康食谱:结合肠道菌群与疾病状态
谷禾健康 俗话说:“病从口入”。饮食是决定个人健康状况的重要因素,饮食与疾病的发展有关,特别是胃肠道(GI)疾病。 与膳食相关的症状发生率很高,例如在吸收不良(如乳糖不耐症)情况下出现的腹痛和腹泻;乳糜泻、食物过敏…...
大模型微调实战之基于星火大模型的群聊对话分角色要素提取挑战赛:Task01:跑通Baseline
目录 0 背景1 环境配置1.1 下载包1.2 配置密钥1.3 测试模型 2 解决问题2.1 获取数据2.2 设计Prompt2.2 设计处理函数2.3 开始提取 附全流程代码 0 背景 Datawhale AI夏令营第二期开始啦,去年有幸参与过第一期,收获很多,这次也立马参与了第二…...
大数据开发如何管理项目
在面试的时候总是 会问起项目,那在大数据开发的实际工作中,如何做好一个项目呢? 目录 1. 需求分析与项目规划1.1 需求收集与梳理1.2 可行性分析1.3 项目章程与计划 2. 数据准备与处理2.1 数据源接入2.2 数据仓库建设2.3 数据质量管理 3. 系统…...
在实施数据加密时,有哪些常见的加密技术可供选择?
在实施数据加密时,有哪些常见的加密技术可供选择? 在实施数据加密时,有许多常见的加密技术可供选择,这些技术根据其原理、安全性、效率和适用场景有所不同。以下是一些常见的加密技术: 对称加密(Symmetri…...
容易涨粉的视频素材有哪些?容易涨粉的爆款短素材库网站分享
如何挑选社交媒体视频素材:顶级视频库推荐 在社交媒体上脱颖而出,视频素材的选择至关重要。以下是一些顶级的视频素材网站推荐,不仅可以提升视频质量,还能帮助你吸引更多粉丝。 蛙学网:创意的源泉 作为创意和独特性的…...
2024 CISCN 华东北分区赛-Ahisec
Ahisec战队 WEB python-1 break 源码如下: # -*- coding: UTF-8 -*-from flask import Flask, request,render_template,render_template_stringapp Flask(__name__)def blacklist(name):blacklists ["print","cat","flag",&q…...
Linux驱动开发笔记(十三)Sysfs文件系统
文章目录 前言一、Sysfs1.1 Sysfs的引入1.2 Sysfs的目录结构1.2 Sysfs的目录详解1.2.1 devices1.2.2 bus1.2.3 class1.2.4 devices、bus、class目录之间的关系1.2.5 其他子目录 二、Sysfs使用2.1 核心数据结构2.2 相关函数2.2.1 kobject_create_and_add2.2.2 kobject_put()2.2.…...
Numpy array和Pytorch tensor的区别
1.Numpy array和Pytorch tensor的区别 笔记来源: 1.Comparison between Pytorch Tensor and Numpy Array 2.numpy.array 4.Tensors for Neural Networks, Clearly Explained!!! 5.What is a Tensor in Machine Learning? 1.1 Numpy Array Numpy array can only h…...
【面试系列】数据科学家 高频面试题及详细解答
欢迎来到我的博客,很高兴能够在这里和您见面!欢迎订阅相关专栏: ⭐️ 全网最全IT互联网公司面试宝典:收集整理全网各大IT互联网公司技术、项目、HR面试真题. ⭐️ AIGC时代的创新与未来:详细讲解AIGC的概念、核心技术、…...
mysql是什么
mysql是什么 是DBMS软件系统,并不是一个数据库,管理数据库 DBMS相当于用户和数据库之间的桥梁,有超过300种不同的dbms系统 mysql是关系型数据库,关系型数据库存储模型很想excel,用行和列组织数据 sql是一门编程语言…...
【软件工程】【22.04】p1
关键字: 软件需求规约基本性质、数据字典构成、内聚程度最高功能内聚、公有属性、RUP实体类、评审、测试序列、软件确认过程、CMMI能力等级 软件需求分类、DFD数据流图组成(实体)、经典详细设计、数据耦合、关联多重性、状态图、黑盒测试、…...
简单说下GPT-4
ChatGPT 4.0,是OpenAI开发的基于GPT-4架构的大型语言模型。它在多个方面相较于前代版本有了显著的改进。以下是从专业角度对ChatGPT 4.0的详解: 架构与训练 1. **架构**:GPT-4采用的是变压器(Transformer)架构&#x…...
力扣第一道困难题《3. 无重复字符的最长子串》,c++
目录 方法一: 方法二: 方法三: 方法四: 没有讲解,但给出了优秀题解 本题链接:4. 寻找两个正序数组的中位数 - 力扣(LeetCode) 话不多说,我们直接开始进行本题的思路解…...
【ai】tx2 nx :ubuntu查找NvInfer.h 路径及哪个包、查找符号
在Ubuntu系统中,你可以使用多种方法来查找某个头文件的路径。这里有几种常用的方法: 使用find命令: find命令是一个非常强大的工具,可以在文件系统中搜索匹配特定条件的文件。例如,如果你想查找名为stdio.h的头文件,可以使用以下命令:bash 复制代码 sudo find / -name …...
C++ 运算符的优先级和结合性表
优先级和结合性表 优先级运算符描述结合性1::作用域解析运算符左到右2() [] . -> --后缀运算符左到右3 -- - ! ~ * & sizeof new delete typeid一元运算符右到左4* / %乘除取模左到右5 -加法和减法左到右6<< >>左移和右移左到右7< < > >关系…...
MySQL中SQL语句的执行过程详解
1. 客户端连接和请求 客户端连接 在MySQL中,客户端连接和请求过程是执行SQL语句的第一步。该步骤主要涉及客户端如何连接到MySQL服务器,以及如何维护和管理客户端与服务器之间的会话。 客户端连接: 连接器(Connector)…...
文心一言4.0免费使用
领取&安装链接:Baidu Comate 领取季卡 视频教程:免费使用文心一言4.0大模型_哔哩哔哩_bilibili 有图有真相 原理:百度comate使用文心一言最新的4.0模型。百度comate目前免费使用,可以借助comate达到免费使用4.0模型目的。 …...
Mongodb安装与配置
Mongodb的下载 这里下载的是MongoDB 7.0.11版本的 首先进入官网:https://www.mongodb.com/ 点击完上面两步后,加载来到该页面,选择自己的版本、系统,是压缩包(zip)还是安装包(msi)。 下载好之后能,来到安装包哪里&a…...
Java校园跑腿小程序校园代买帮忙外卖源码社区外卖源码
🔥校园跑腿与外卖源码揭秘🔥 🚀 引言:为何需要校园跑腿与外卖源码? 在快节奏的校园生活里,学生们对于便捷、高效的服务需求日益增长。校园跑腿和外卖服务成为了解决这一需求的热门选择。然而,…...
后进先出(LIFO)详解
LIFO 是 Last In, First Out 的缩写,中文译为后进先出。这是一种数据结构的工作原则,类似于一摞盘子或一叠书本: 最后放进去的元素最先出来 -想象往筒状容器里放盘子: (1)你放进的最后一个盘子(…...
C++初阶-list的底层
目录 1.std::list实现的所有代码 2.list的简单介绍 2.1实现list的类 2.2_list_iterator的实现 2.2.1_list_iterator实现的原因和好处 2.2.2_list_iterator实现 2.3_list_node的实现 2.3.1. 避免递归的模板依赖 2.3.2. 内存布局一致性 2.3.3. 类型安全的替代方案 2.3.…...
k8s从入门到放弃之Ingress七层负载
k8s从入门到放弃之Ingress七层负载 在Kubernetes(简称K8s)中,Ingress是一个API对象,它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress,你可…...
在 Nginx Stream 层“改写”MQTT ngx_stream_mqtt_filter_module
1、为什么要修改 CONNECT 报文? 多租户隔离:自动为接入设备追加租户前缀,后端按 ClientID 拆分队列。零代码鉴权:将入站用户名替换为 OAuth Access-Token,后端 Broker 统一校验。灰度发布:根据 IP/地理位写…...
Qt Http Server模块功能及架构
Qt Http Server 是 Qt 6.0 中引入的一个新模块,它提供了一个轻量级的 HTTP 服务器实现,主要用于构建基于 HTTP 的应用程序和服务。 功能介绍: 主要功能 HTTP服务器功能: 支持 HTTP/1.1 协议 简单的请求/响应处理模型 支持 GET…...
unix/linux,sudo,其发展历程详细时间线、由来、历史背景
sudo 的诞生和演化,本身就是一部 Unix/Linux 系统管理哲学变迁的微缩史。来,让我们拨开时间的迷雾,一同探寻 sudo 那波澜壮阔(也颇为实用主义)的发展历程。 历史背景:su的时代与困境 ( 20 世纪 70 年代 - 80 年代初) 在 sudo 出现之前,Unix 系统管理员和需要特权操作的…...
Axios请求超时重发机制
Axios 超时重新请求实现方案 在 Axios 中实现超时重新请求可以通过以下几种方式: 1. 使用拦截器实现自动重试 import axios from axios;// 创建axios实例 const instance axios.create();// 设置超时时间 instance.defaults.timeout 5000;// 最大重试次数 cons…...
Unity | AmplifyShaderEditor插件基础(第七集:平面波动shader)
目录 一、👋🏻前言 二、😈sinx波动的基本原理 三、😈波动起来 1.sinx节点介绍 2.vertexPosition 3.集成Vector3 a.节点Append b.连起来 4.波动起来 a.波动的原理 b.时间节点 c.sinx的处理 四、🌊波动优化…...
【从零学习JVM|第三篇】类的生命周期(高频面试题)
前言: 在Java编程中,类的生命周期是指类从被加载到内存中开始,到被卸载出内存为止的整个过程。了解类的生命周期对于理解Java程序的运行机制以及性能优化非常重要。本文会深入探寻类的生命周期,让读者对此有深刻印象。 目录 …...
【前端异常】JavaScript错误处理:分析 Uncaught (in promise) error
在前端开发中,JavaScript 异常是不可避免的。随着现代前端应用越来越多地使用异步操作(如 Promise、async/await 等),开发者常常会遇到 Uncaught (in promise) error 错误。这个错误是由于未正确处理 Promise 的拒绝(r…...

