8位移位寄存器原理,8位移位寄存器电路设计

首页 > 经验 > 作者:YD1662022-11-06 07:03:05

8位移位寄存器原理,8位移位寄存器电路设计(1)

Arduino从零开始


你将学到什么

1、你将学到如何增加arduino uno的数字输出针脚

2、你将学到74HC595移位寄存器的使用方法

3、你将学到shiftOut函数的使用方法

Arduino uno板子只有13个数字针脚作为输出使用,但是有的时候13个针脚是不够用的,为了增加输出,我们可以使用移位寄存器

一个移位寄存器有8个可以被一个字节数据控制的数字输出针脚,这里我们使用的移位寄存器为74HC595

74HC595移位寄存器有八个数字输出针脚(和arduino数字针脚类似),共占用arduino 三个数字针脚,所以使用一个74HC595移位寄存器实际上增加了5个数字输出针脚。

8位移位寄存器原理,8位移位寄存器电路设计(2)

8位移位寄存器原理,8位移位寄存器电路设计(3)

74HC595移位寄存器

移位寄存器的原理

我们发送一个字节的数据给移位寄存器,其根据这个字节的数据(8位二进制数)来开关对应的八个数字输出针脚(0关1开)。

重点:

发送字节数据的函数是shiftOut,其有一个参数用来告诉移位寄存器从哪个方向解析这个字节的数据,共两种方向。

当参数为MSBFIRST的时候:

字节数据最左边的比特位(MSB)对应着移位寄存器的7号数字输出针脚。

字节数据最右边的比特位(LSB)对应着移位寄存器的0号数字输出针脚。

此时如果发送的字节数据为B11110000,则它会打开数字输出针脚7、6、5、4而关闭数字输出针脚3、2、1、0直到下一 个字节数据被接收或电源被断开。

当参数为LSBFIRST的时候:

字节数据最左边的比特位(MSB)对应着移位寄存器的0号数字输出针脚。

字节数据最右边的比特位(LSB)对应着移位寄存器的7号数字输出针脚。

此时如果发送的字节数据为B11110000,则它会关闭数字输出针脚7、6、5、4而打开数字输出针脚3、2、1、0直到下一个字节数据被接收或电源被断开。

Q7对应着字节数据中第一个发送过来的比特位。

Arduino的三个数字针脚不仅仅只能添加一个移位寄存器,多个移位寄存器也是可以的,这样当需要控制多个LED的时候,使用移位寄存器便很方便。

连接移位寄存器

我们的移位寄存器上共16个针脚,针脚15和针脚1到7对应着8个数字输出针脚(标记为Q0到Q7)。

针脚8连接GND

针脚9是"数据输出"针脚,用来发送数据到另外一个移位寄存器

针脚10连5V

针脚11和12叫CLOCK和latch

针脚13连接GND

针脚14接收来自arduino的数据

针脚16连接5V

项目实战:使用移位寄存器控制8个LED灯

8位移位寄存器原理,8位移位寄存器电路设计(4)

8个LED与移位寄存器接线图

(因为只有一个移位寄存器,所以针脚9没有连线)

接下来需要使用这8个LED来显示一个二进制数(一个字节数据)。

8位移位寄存器原理,8位移位寄存器电路设计(5)

程序代码

文字代码如下:

int DATA = 6,LATCH= 8,CLOCK =10;

void setup() {

// put your setup code here, to run once:

pinMode(LATCH,OUTPUT);

pinMode(DATA,OUTPUT);

pinMode(CLOCK,OUTPUT);

}

void loop() {

// put your main code here, to run repeatedly:

for(byte i=0;i<256;i )

{

digitalWrite(LATCH,LOW);//准备传输数据

shiftOut(DATA,CLOCK,MSBFIRST,i);//传输数据

digitalWrite(LATCH,HIGH);//数据传输结束

delay(200);

}

}

栏目热文

文档排行

本站推荐

Copyright © 2018 - 2021 www.yd166.com., All Rights Reserved.