当前位置:首页 > 文章中心 > 正文内容

74HC595 芯片原理和 Arduino 使用实例

dgx6662个月前 (05-26)文章中心10

74HC595 简单说来就是具有8位移位寄存器和一个存储器,以及三态输出功能。 这里我们用它来控制8个LED小灯。我们为什么要用74HC595来控制小灯呢?一定会有很多朋友会问这个问题,我想问的是我们要是单纯的用Arduino控制8个小灯的话要占用多少个I/O呢?答案是8个,但是我们的Arduino 168有几个I/O口呢?加上模拟接口也就20个吧,这8个小灯占用了太多的资源了,我们用74HC595的目的就是减少I/O口的使用数量。用74HC595以后我们可以用3个数字I/O口控制8个LED小灯岂不美哉。

原理说明
先转一段百度百科上74HC595芯片的简介。


74HC595具有8位移位寄存器和一个存储器,三态输出功能。 移位寄存器和存储器有相互独立的时钟。数据在SH_cp(移位寄存器时钟输入)的上升沿输入到移位寄存器中,在ST_cp(存储器时钟输入)的上升沿输入到存储寄存器中去。如果两个时钟连在一起,则移位寄存器总是比存储寄存器早一个脉冲。移位寄存器有一个串行移位输入(Ds),和一个串行输出(Q7’),和一个异步的低电平复位,存储寄存器有一个并行8位的,具备三态的总线输出,当使能OE时(为低电平),存储寄存器的数据输出到总线。

看不懂吧,没关系,我们先看一下芯片的引脚图:


分别解释一下:

  • GND接地,VCC接5V电源,这个就不用说了。
  • Q0-Q7这8根引脚是芯片的输出引脚,直接跟数码管的8段引脚相连。对应关系要看你怎么接线和写代码时传送数据的顺序了。
  • DS是串行输入引脚,所谓串行就是使数据在一根信号线上按顺序一位一位地传输,就像一串糖葫芦。这个引脚我们接到树莓派任意一个GPIO口上(输出模式)。
  • SHCP是移位寄存器的时钟引脚。听上去有点复杂,其实很简单。74HC595内部有一个8位的移位寄存器用来保存从DS引脚输入的数据。那么74HC595怎么知道什么时候该从DS引脚上取数据了呢?正是通过SHCP这个时钟引脚来实现的。只有在SHCP发生一次上升沿的时候,74HC595才会从DS引脚上取得当前的数据(高/低电平)并把取到的这一位数据保存到移位寄存器里。同样的,这个引脚也接到树莓派任意一个GPIO口上。当我们向芯片发送数据时,要先在DS引脚上准备好要传送的数据,然后制造一次SHCP引脚的上升沿(先拉低电平再拉高电平),74HC595会在这个上升沿将DS引脚上的数据存入移位寄存器D0,同时D0原来的数据会顺移到D1,D1的数据位移到D2。。。D6的数据位移到D7。而原先D7的数据已经没有地方储存了,这一位数据会被输出到引脚Q7S上。这个引脚的作用我们下一篇再说,本文暂时用不到这个引脚。(注意这里说的不是输出引脚Q0-Q7,而是指内部的8位移位寄存器里每一个“小房间”,芯片手册上并没有给这些小房间编号,这里为了说明方便进行了编号)
  • STCP是芯片内部另外一个8位锁存寄存器的时钟引脚。当移位寄存器的8位数据全部传输完毕后,制造一次锁存器时钟引脚的上升沿(先拉低电平再拉高电平)。74HC595会在这个上升沿将移位寄存器里的8位数据复制到锁存器中(锁存器里原来的数据将被替换)。注意,到这里为止,这8位数据还只是被保存在锁存器里,并没有输出到数码管上。这个引脚同样连接到树莓派任意一个GPIO口上即可。
  • OE是输出使能引脚,在其他芯片里也很常见。作用是控制锁存器里的数据是否最终输出到Q0-Q7输出引脚上。低电平时输出,高电平时不输出(既不是高电平,也不是低电平而是高阻态,不通电)。本例为了方便直接接在GND上使其一直保持低电平输出数据。
  • MR是用来重置内部寄存器的引脚。低电平时重置内部寄存器(MemoryReset?)。本例为了方便直接连接在Vcc上一直保持高电平。
  • Q7S引脚,串行输出引脚,本文不使用,下一篇再解释它的作用。
  • 关于锁存器。顾名思义就是将数据保存并锁定。一旦进入了锁存器,除非断电或重置数据(MR口设置为低电平),锁存器的数据不会再改变。好处是,当你需要更新数据时,将数据串行输入移位寄存器的过程中,锁存器里的数据不会有任何影响,也就不会有闪烁了。一直到移位寄存器8位数据准备完毕,再制造一次STCP的上升沿一次性更新锁存器的数据,更新输出。

关于锁存器。顾名思义就是将数据保存并锁定。一旦进入了锁存器,除非断电或重置数据(MR口设置为低电平),锁存器的数据不会再改变。好处是,当你需要更新数据时,将数据串行输入移位寄存器的过程中,锁存器里的数据不会有任何影响,也就不会有闪烁了。一直到移位寄存器8位数据准备完毕,再制造一次STCP的上升沿一次性更新锁存器的数据,更新输出。
另外,我做了一个动画帮助你理解整个过程。

下面是我们要准备的元器件。
74HC595 直插芯片*1、红色M5 直插LED*4、绿色M5 直插LED*4、220Ω直插电阻*8、面包板*1、面包板跳线*1 扎。

准备好元件我们就按下面的原理图连接电路。



此电路图看似复杂,我们仔细分析以后再结合参考实物就会发现很简单。
下面是参考源程序:

int latchPin = 5;
int clockPin = 4;
int dataPin = 2; //这里定义了那三个脚
void setup ()
{
pinMode(latchPin,OUTPUT);
pinMode(clockPin,OUTPUT);
pinMode(dataPin,OUTPUT); //让三个脚都是输出状态
}
void loop()
{
for(int a=0; a<256; a++) //这个循环的意思是让a这个变量+1一直加到到256,每次循环都进行下面的活动
{
digitalWrite(latchPin,LOW); //将ST_CP口上面加低电平让芯片准备好接收数据
shiftOut(dataPin,clockPin,MSBFIRST,a);
//这个就是用MSBFIRST参数让0-7个针脚以高电平输出(LSBFIRST 低电平)是dataPin的参数,
//clockPin的参数是变量a,前面我们说了这个变量会一次从1+1+到256,是个十进制数,
// 输入到芯片后会产生8个二进制数,达到开关的作用
digitalWrite(latchPin,HIGH); //将ST_CP这个针脚恢复到高电平
delay(1000); //暂停1秒钟让你看到效果
}
}

下载完程序大家就可以看到8 个小灯闪烁的美妙场景了。

扫描二维码推送至手机访问。

版权声明:本文由第六芝士网发布,如需转载请注明出处。

本文链接:http://www.dgx666.com/post/1900.html

标签: arduino下载
分享给朋友:

“74HC595 芯片原理和 Arduino 使用实例” 的相关文章

手机显示电话符号和hd

我们平时开数据的时候,有的人可能会发现,在手机的信号显示区域,会有一个HD的标志。那么,手机4G信号旁边有个HD是什么意思?首先,我们来了解一下手机信号为什么会显示HD。其实,如果我们只开通了普通的服务的话,手机是不会有这个HD的标识的,只有开通了VoLTE业务的用户,其手机才会显示HD。并且,手机...

天正建筑CAD怎样查看三维图纸?原来还有这种方法?学到了

视频学习教程推荐:天正建筑CAD设计零基础入门到精通【全套自学视频教程】使用天正画建施图之后,想使用立体的三维图像检查图纸,查看三维效果,但是却不知道怎样操作,或者是操作之后,不知道怎样还原成原来的平面图,下面图文给你带来三维查看和还原的方法。1.这里以天正2014为例,打开一张绘制好的平面工程图纸...

T20天正暖通CADV8.0(2022)软件安装及使用教程

↓↓↓↓ 点击获取T20天正暖通软件V8.0体验地址软件下载(免费更新各种办公软件,记得关注喔)T20天正暖通软件V8.0支持Win7 32位AUTOCAD 2010-2016,Win7/10 64位AUTOCAD 2010-2022平台,是一款全新的专业化、智能化的暖通设计软件。软件符合《民用建筑...

网易停运两年游戏将复活,魔兽争霸官方对战平台明年却要停运了

最近游戏圈里也是出了不少让人唏嘘的反转,上个月网易和暴雪分手也是引发整个行业内外都在关注了。而今天的两个主角,却恰恰又和网易、暴雪沾上了关系——游戏经历比较久远的网友,对于对战平台等可能都不会太陌生,当年的浩方、11等对战平台也是成为一代人联机体验《魔兽争霸3:冰封王座》《DOTA》《真三国无双》等...

天正CAD软件批量导入坐标技巧总结,学会后轻松变高手

excel坐标批量导入cad的方法如下:步骤一、cad如何批量导入坐标?首先,将要批量导入CAD的高程坐标导入到excel中。步骤二、在excel中新建E列为展点划线,新建F列为注释。步骤三、在excel表格的E列中输入如下公式:【="line"&B2&","&C2】,在F列中输入如下公式:【="-...

一个好用的桌面日历 解决备忘录+提醒+桌面美化 看日期功能

一个好用的桌面日历 解决备忘录+提醒+桌面美化,这个日历功能不错,还很美观,我们一起来看下~!芝麻日历不仅仅是桌面日历,他可以美化你的桌面,让日历完美融合到你的桌面,桌面就变成一个好看的日历壁纸,看日历还很方便,可以查看新历以及农历,一个功能齐全的日历添加到桌面,让你随时掌握时间。芝麻日历(http...