用移位寄存器来扩展 8位移位寄存器

8位移位寄存器(由移位寄存器扩展)
今天我们将使用几个基本的电子“积木”,移位寄存器 。这些方便的设备可以用于各种目的,例如数据转换、缓冲和存储,但今天我们将看到它们也可以用于扩展Arduino数字I/O端口的数量 。
原文:加拿大人DroneBotWorkshop.com翻译:DIY百事可乐
通过学习使用移位寄存器,你将为设计师的工具箱增加另一个方便的工具 。
目录1简介1.1扩展您的Arduino
2移位寄存器2.1移位寄存器的类型2.1.1串行输入-并行输出2.1.2并行输入-串行输出2.1.3并行输入-并行输出&串行输入-串行输出2.2移位寄存器的工作原理2.3级联移位寄存器
3 74HC575和74HC165移位寄存器3.1 74HC595-8位串行输入-并行输出3.2 74HC165-8位并行输入-串行输出
4.74HC595的附加输出端口4.1 Arduino & 74HC595连接4.2 Arduino shiftOut()功能4.3 Arduino & 74HC595草图
5.驱动7段显示器5.1 7段LED显示器5.2 74HC595 7段显示器连接5.3 74HC595 7段显示器原理图
6.74hc165的附加输入端口6.1 Arduino shiftIn()函数6.2 Arduino & 74HC165连接6.3 Arduino & 74HC165代码
7.74HC595和74HC165一起用7.1 74HC595和74HC165连接7.2 74HC595和74HC165代码17.3 74HC595和74HC165代码2——激动人心!
8.结论
-
扩展您的ArduinoArduino已经有很多数字I/O端口 。事实上,Arduino Mega 250有54个数字I/O引脚和另外16个模拟输入,可以兼作数字I/O引脚 。因此,对于70个潜在的I/O引脚,通常不需要更多 。但有时你确实需要更多 。
以大家熟悉的“LED立方体”为例 。一个4x4x4的立方体需要64个led,如果你“借用”几个模拟引脚 , 这在Arduino Mega 2560的能力范围内 。但是你已经达到极限了 。
如果你想扩展到一个5x5x5的立方体,那么你就不走运了 。为此 , 你需要125个led,你不能用Arduino单独控制它们 。
即使是使用标准(即未寻址)RGB LED的4x4x4立方体也将超过极限 。
有许多方法可以解决这些问题,包括在矩阵中运行led或使用移位寄存器 。移位寄存器将允许您仅使用几个Arduino I/O引脚来寻址大量led 。
有时,您有许多传感器、显示器或其他I/O设备 , 并且您不能为LED或开关保留许多引脚,但您需要一个多LED显示器或键盘 。移位寄存器又可以派上用场了 。
让我们来看看这些设备的使用方法 。
移位寄存器移位寄存器是用于转换、存储或传输二进制数据的时序逻辑电路 。
这些设备用于串行和并行数据之间的转换 。它们可用于数据通信电路以及存储和缓冲电路 。许多复杂的电子电路,如微处理器和微控制器 , 在内部使用移位寄存器 。
移位寄存器的类型移位寄存器在其输入和输出端处理串行和并行数据,并且可以在这些格式之间转换 。
移位寄存器有四种基本类型:
串行输入-并行输出并行输入-串行输出并行到串行输出(PISO)移位寄存器将并行数据转换为串行数据 。它用于通信并将多个输入端口转换为串行数据 。
并行输入–并行输出和串行输入–串行输出你可能觉得这两个很奇怪 。为什么需要移位寄存器输出与输入格式相同的数据?
答案是 , 它可以用作缓冲器 , 在特定数量的时钟周期内保存数据 。我们今天使用的移位寄存器都使用类似的缓冲器来保存其输入和输出上的数据,因此当寄存器移位时,数据不会改变 。
移位寄存器的工作原理内部移位寄存器由许多基本逻辑门组成,其中许多被排列成“触发器” 。
如果您不熟悉触发器,它是一个基本的电子电路,可用于保存来自其输入的数据值 。它是一个基本的构建模块,无处不在 , 包含在许多形式的存储器电路中 。
串行输入-并行输出或SIPO寄存器使用一系列触发器,并行输出上的每一位对应一个触发器 。此处的插图显示了一个4位设备 。
当串行数据的第一位被计时时,它被存储在触发器中并出现在其输出端 。
下一位数据将原始位推到下一个触发器 。
随着串行数据的输入 , 该过程继续 。请注意,触发器仅在输入时更新输入值 。
最后,当并行输出中的所有数据都计时时,就可以读取它了 。在大多数移位寄存器中,一个额外的缓冲区保存并行数据,在所有数据输入时钟之前,它不会改变 。
PISO或并行输入串行输出移位寄存器的结构如下
图中的“MUX”部分实际上是由许多分立的逻辑门组成,用来在合适的时间将数据馈入相关的触发器 。
这很重要,因为PISO移位寄存器需要分别为并行数据的每一位计时 。这意味着并行输入上的数据在被读取时不能改变 。类似地 , 大多数实际设计使用缓冲器来存储并行数据 。

推荐阅读