如何在Arduino Uno中使用移位寄存器74HC595

原文地址:https://circuitdigest.com/microcontroller-projects/arduino-uno-shift-register-tutorial

如何在Arduino Uno中使用移位寄存器74HC595

ARDUINO的

经过**迪利普·拉贾(Dilip Raja)** 2015年8月5日0
在这里插入图片描述
在ARDUINO中,我们有20个I / O引脚,因此我们可以对20个UNO引脚进行编程以用作输入或输出。尽管ATMEGA328P控制器上的引脚比UNO上的引脚多,这是因为在设计开发板时,某些引脚是默认的。

现在,对于某些应用程序,我们需要30多个引脚,也就是说,如果我们要设计5x5x5 LED CUBE,那么为此,我们需要5x5 + 5 = 30pins。对于这种情况,我们使用串行到并行转换器芯片或移位寄存器。移位寄存器芯片以串行方式从UNO板上获取数据,并以8位并行配置提供输出。

所需组件

硬件: Arduino uno板,连接引脚,220Ω电阻,LED(八个),74HC595 IC,面包板。

**Sofware:**每晚的Arduino

电路图和工作说明

在这里,我们将通过单个通道将八位数据发送到移位寄存器。移位寄存器串行获取数据并将该数据存储在其存储器中。控制器发送完数据后,我们将发送一个命令到移位寄存器以在输出处显示数据,通过此命令,移位寄存器可以并行输出数据。

该输出由连接在输出处的八个LED表示。

对于移位寄存器连接的Arduino UNO我们需要做两件事情:

pinMode();
shiftOut(dataPin, clockPin, data);

首先,我们需要将UNO的任意三个引脚设置为输出。然后,我们需要将数字引脚,时钟引脚和闩锁引脚连接到这三个输出引脚。之后,我们需要告诉UNO哪个芯片引脚连接到UNO板引脚。这可以通过简单地在命令“ shiftOut(dataPin, clockPin, data);”中编写来完成。此处的数据可以是二进制,十进制或十六进制。代替“数据”,写入需要发送的八位信息。

发送的数据按以下方式完成:
在这里插入图片描述

**禁用锁存器(Disable latch),这告诉芯片暂时不显示输出。

我们将连续八次发送带有时钟的数据,因此时钟高,数据低,时钟低,依此类推。

使能锁存器,这告诉芯片显示八位数据。

在下面给出的C代码中逐步说明了ARDUINO与SHIFT REGISTER的工作:

代码

// The setup function runs once when you press reset or power the board

volatile int i = 0;

void setup()
{
  pinMode(2, OUTPUT);   // sets the pin2 as output
  pinMode(1, OUTPUT); // sets the pin1 as output
  pinMode(0, OUTPUT); // sets the pin0 as output
}

void loop()
{
  for (int i = 0; i < 255; i++) //if binary count is less than 255
  {
    digitalWrite(2, HIGH);
    shiftOut(0, 1, 2, i); //send eight bit data serially for each time there is a increment
    digitalWrite(2, LOW);
    delay(500); //wait for half a second
  }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值