风筝
发表于: 2024-11-1 17:42:30 | 显示全部楼层

当我们开发一个项目需要连接多个外围设备时,偶尔会遇到使用的单片机的I/O不够。我们可以选择封装尺寸更大的型号,这样会增加成品以及增大电路板空间。这时,我们也可以选择使用串行转并行的移位寄存器来解决问题。


在本篇文章中,我们将主要介绍如何基于Arduino开发板使用SN74HC164D八位移位寄存器模块。


所需的组件

●    Arduino Uno R3开发板

●    SN74HC164D八位移位寄存器模块

●    连接跳线

Required-Materials-2.jpg


SN74HC164D八位移位寄存器模块

SN74HC164D八位移位寄存器模块是一种功能强大且用户友好的电子元件,广泛用于数字电路。该模块是一种方便的方式来扩展微控制器上的输出引脚数量,使其成为电子爱好者和工程师的必备工具。其关键特性在于能够以最少的输入引脚有效控制多个输出,从而为管理电路内的各种组件提供灵活性。移位寄存器的直接操作涉及将数据串行移入模块,从而实现并行输出控制。这种简单性使其成为空间和引脚数量是关键考虑因素的项目的绝佳选择。SN74HC164D兼容各种微控制器,简化了级联多个模块的过程,以实现更大的扩展。它的多功能性、易用性和兼容性使其成为业余爱好者和专业人士的首选解决方案,可提高数字电路的效率和功能。

1-2.jpg


SN74HC164D模块的引脚排列

SN74HC164D八位移位寄存器模块有13个引脚:

pin-1.jpg

●    VCC (5V):电源输入。

●    GND:模块的接地参考。

●    A:输入A,用于将数据引入移位寄存器的串行输入

●    B:输入B,用作输入使能。

●    CLK:时钟输入,用于同步寄存器内数据的移位。

●    CLR (MR):主复位,允许完全复位移位寄存器。

●    Q1:第一位的输出,形成初始数据输出。

●    Q2:第二位的输出,对于串行数据流至关重要。

●    Q3:移位寄存器序列中的第三位的输出。

●    Q4:输出第四位,在数据级联中发挥作用。

●    Q5:输出第五位,便于顺序数据传输。

●    Q6:输出第六位,有助于数据输出。

●    Q7:输出移位寄存器中的第七位,即队列中的最后一位。


硬件连接

以下电路显示了如何将SN74HC164D模块连接到Arduino开发板。

wire-2.jpg

在此电路中,我们使用了LED来更清楚地说明此模块的运行方式。但是,您可以随意在需要其功能的任何电路中使用此模块的输出。


代码

首先在Arduino IDE安装74HC164_lib库,该库文件的下载地址:74HC164_lib

将以下代码上传到Arduino开发板。

  1. /*
  2. Create on January 09, 2024
  3. */

  4. #include <Arduino.h>
  5. #include <SN74HC164D.h>

  6. SN74HC164D xx164;

  7. void setup()
  8. {
  9.   Serial.begin(9600);
  10.   Serial.println("test");
  11.   xx164.begin(7, 6, 5, 4);
  12.   xx164.rainbow();
  13. }

  14. void loop()
  15. {
  16.   if (Serial.available())
  17.     xx164.write(Serial.read() - 48, MSBFIRST);
  18. }
复制代码

上传后,LED会在短时间内发生变化。之后,您可以使用串口监视器传输0到9之间的数字,并在LED上以二进制格式显示发送的数字。


跳转到指定楼层
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题 705 | 回复: 1492



手机版|

GMT+8, 2024-11-21 14:47 , Processed in 0.443000 second(s), 6 queries , Gzip On, MemCache On. Powered by Discuz! X3.5

YiBoard一板网 © 2015-2022 地址:河北省石家庄市长安区高营大街 ( 冀ICP备18020117号 )

快速回复 返回顶部 返回列表