我们将使用的移位寄存器是74HC595,它是一个8 位三态移位寄存器,即具有 8 个输出。三态意味着输出可以设置为高电平、低电平或高阻抗。让我们看一下该 IC 的引脚及其功能。
注意:上升沿 - 从 0V 到 5V 的转换(从低到高)
下降沿 - 从 5V 到 0V 的转换(从高到低)
引脚 14 - 串行数据输入
数据从此引脚送入寄存器。串行意味着数据是逐位送入的。
引脚 13 - 输出使能 (OE)
此引脚用于打开或关闭输出。它是一个低电平有效引脚,这意味着将其拉低即可启用输出。我们将它直接连接到 GND,以使输出始终处于打开状态。
引脚 12 - 存储寄存器时钟 (RCLK)
当此引脚被拉高时,存储寄存器中的数据被传输到输出。
引脚 11 - 移位寄存器时钟 (SRCLK)
此引脚提供时钟信号。引脚 14(串行数据输入)的数据仅在时钟的上升沿记录。简单来说,只有当时钟信号从 0V 上升到 5V 时,引脚 14 上的数据才会被存储在寄存器中。
引脚 10 - 移位寄存器清除 (SRCLR)
它是一个低电平有效引脚。顾名思义,当此引脚被拉低时,它会清除存储寄存器中的所有数据。我们将永久连接到 5V 电源,这样存储寄存器中的数据就永远不会被清除。
引脚 15,引脚 1 至 7 - QA 至 QH
这是移位寄存器的 8 个输出。
一开始我打算用一个项目机箱。但由于使用的组件不太适合面板安装,我决定用穿孔板。规划好组件的布局。在合理可行的前提下,可以发挥创意来选择布局。
我使用了微型 USB 分线板,因为我将使用 USB 为套件供电。
已附上构建示意图。
让我们开始运行它。我们将尝试点亮 Q0 和 Q1 处的 LED,即0000 0011
注意:按下按钮会使该特定引脚变为高电平(或 1),而松开按钮会使该特定引脚变为低电平(或 0)。
1. 首先,数据置为 1(高电平)。按住“数据”按钮。但数据尚未存储到寄存器中。
2. 当时钟信号从 0V 上升到 5V(即上升沿)时,数据存储在寄存器中。按住“数据”按钮的同时,按下“时钟”按钮一次,因为 IC 只会寻找上升沿。此时,数据以0000 0001 的形式存储在存储寄存器中。现在您可以松开“数据”按钮。
3. 为了让输出也反映同样的效果,按下 Latch 按钮一次。你应该会看到第一位的 LED 亮起。太棒了!
4. 还没完。再次按住“数据”按钮,并按一下“时钟”按钮。现在,原来的“1”左移一位,新添加的“1”取代原来的“1”。现在存储寄存器将显示为0000 0011。
5. 按下锁存按钮以在输出中反映相同的内容。
就是这样!
现在你或许能理解为什么需要使用移位寄存器了。在这种情况下,只需一根线就可以控制 8 个输出。当微控制器上的输出引脚用完时,移位寄存器就派上用场了。
我制作了一个定格动画视频,以便更清晰地展示。您可以在 YouTube 上观看。