使用74HC595移位寄存器的指南

74HC595

74HC595是一个移位寄存器,它是8位串行输入,并排输出!

首先74HC595不用管它,只要知道这个名字就好,那什么是移位寄存呢?什么又是8位串行输入,并排输出呢?

这里我们先来理解什么是移位寄存和8位串行输入:


74HC595移位寄存器+8位串行输入(01)

8位串行输入:

看到上面的一串数字了吗?,就是那个视频,它是由8个数字组成(当然这八个数字是我随意输入的二进制数)

所谓8位串行输入,就是由8个数字组成,每一个数字占据一个位,共有8个位,像串在一起一样以一行的方式输入到蓝色方框内!

(备注:蓝色方框,就代表咱们本文所介绍的主角儿74HC595移位寄存器)

移位寄存:

那移位寄存又是什么意思呢?我们再次看向那一串数字

它不是直接进去的,而是以“移位”的方式进去的,每次只移动一个数字进去

蓝色方框内最多可以移进去8个数字,也就说74HC595移位寄存器最多可存储8个数字,称为“寄存”

绿色方框 = SH_CP

因为移位寄存是需要条件的,

就像绿色方框 给了蓝色方框8个数一样,

那么移位寄存器的输入条件就是SH_CP这个引脚,

当它处于高电频时,数字才能被送进74HC595

现在不理解不要紧,待会儿咱们看实物!

并排输出

74HC595移位寄存器+并行输出

并排输出开关=ST_CP   (由蓝色变成黄色为打开开关)

跟上面一个意思,一个输出条件的引脚,处于高电频时触发输出

最后这个并排输出又啥?看上面的视频,当“并排输出开关”被触发时,74HC595移位寄存器里面存储的数字就会被输出出来,它不是一个一个的出来的,而是并排同时出来,称为“并排输出”

74HC595移位寄存器实物(引脚)

74HC595移位寄存器(引脚图)
引脚功能
         Q0~Q7       8个数字输出(二进制)
Vcc 接电源正极
GND 接电源负极
DS 高电频输入1,低电平输入0
/OE

低电平74HC595有效使用(接地GND就好了)

/MR 低电平复位(如果不需要复位直接接电源就行)
SH_CP 高电平触发时,DS的数被存入,一次存一个
ST_CP 高电平触发时,DS存入的所有二进制数被输出
Q7' 不用接

如何判断74HC595移位寄存器的方向?

双排直插式(74HC595N)

贴片式(74HC595D)

哪边有豁口哪边就朝上,然后对照那个“74HC595移位寄存器(引脚图)”认一下就知道咋接了!

I/O表:

Arduino与74HC595之间的接线
74HC595移位寄存器 Arduino UNO开发板
Vcc 电源正极
GND GND
DS D5
/MR 电源正极
/OE GND
Q0~Q7 LED1~LED8(灯)
SH_CP D3
ST_CP

D4

程序部分:

//74HC595
int SH_CP=3;//输入条件
int ST_CP=4;//输出条件
int DS=5;//二进制数的输入

void setup() //子函数(只执行一次)
{
  pinMode(SH_CP,OUTPUT);//定义为输出模式
  pinMode(ST_CP,OUTPUT);//定义为输出模式
  pinMode(DS,OUTPUT);//定义为输出模式
}

void loop() //主函数(无限循环执行)
{
  digitalWrite(ST_CP,LOW);//初始化输出条件为低电平,一开始我们不需要它并排输出什么,因为DS还没有输入二进制数
  
  digitalWrite(SH_CP,LOW);  //初始化输入条件为低电平,等我们把DS输入完数之后再用它(高电平)写进去
  digitalWrite(DS,1);       //我这里就写一个二进制数1
  digitalWrite(SH_CP,HIGH); //高电平把1写入


  digitalWrite(SH_CP,LOW);//再次将其至低电平,因为只有它处于低电平模式,DS才能写二进制数进去
  digitalWrite(DS,0);     //这里我写的二进制数是0
  digitalWrite(SH_CP,HIGH);//高电平写入
 
/*下面的都是以此类推8*/
  digitalWrite(SH_CP,LOW);
  digitalWrite(DS,1);
  digitalWrite(SH_CP,HIGH);


  digitalWrite(SH_CP,LOW);
  digitalWrite(DS,0);
  digitalWrite(SH_CP,HIGH);


  digitalWrite(SH_CP,LOW);
  digitalWrite(DS,1);
  digitalWrite(SH_CP,HIGH);


  digitalWrite(SH_CP,LOW);
  digitalWrite(DS,0);
  digitalWrite(SH_CP,HIGH);


  digitalWrite(SH_CP,LOW);
  digitalWrite(DS,1);
  digitalWrite(SH_CP,HIGH);


  digitalWrite(SH_CP,LOW);
  digitalWrite(DS,0);
  digitalWrite(SH_CP,HIGH);

  
  digitalWrite(ST_CP,HIGH);//等到8个数都写完了以后,就把这个输出条件至于高电平,进行“并排输出”,结果就可以点亮啦!!!
}

我的程序里面写的是10101010,所有的就只有4个LED灯是亮的

我是正着写进去的,它是倒着显示的01010101

所以它是反过来的输出。

 Protues8.9模拟仿真74HC595移位寄存器!!!(真能亮)

总结:

代码相对来说还是很容易理解的,不过也可以对代码进行简化,然后按照你能接受的方式去编写代码!

物联沃分享整理
物联沃-IOTWORD物联网 » 使用74HC595移位寄存器的指南

发表评论