网站大量收购独家精品文档,联系QQ:2885784924

Mixly开源项目设计26: 移位寄存器(一)——将LED点.docx

Mixly开源项目设计26: 移位寄存器(一)——将LED点.docx

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

Mixly开源项目设计26:移位寄存器(一)——将LED点亮

流水灯项目是我们在开源硬件学习项目中很常见的一个项目。实验中,我们常用一个管脚控制一个LED,这样我们做一个8位流水灯,就需要占用8个管脚,而常用的ArduinoUNOR3开发板只有20个管脚,如果要做一个30位流水灯,如果依然让一个管脚控制一个LED,那么UNO上的管脚显然是不够的,这时,我们应该怎么办呢?换成管脚更多的Mega2560吗?同样,如果我们要做64位流水灯,Mega2560的管脚也是不够的,所以,我们换个角度来想,不如想办法用少量的管脚控制多个LED,74HC595移位寄存器这个小小的芯片就能够帮我们实现这种想法。

74HC595是一块8位串行输入、并行输出(也可以串行输出)的芯片,我们使用它,只需要UNO的3个管脚即可控制8个独立的LED(如图1)。

网络上介绍74HC595的文章很多,但采用的全是代码编程,让很多不懂代码的初学者望而生畏,实际上,在图形化编程软件Mixly中有一个模块是与它相关的。因此,本文中将用Mixly轻松玩转74HC595,力图让初学者也能秒懂。

如图2所示,74HC595共有16只脚,下面我们就来认识一下它的各个引脚。

在74HC595芯片上有个小凹口,只要与图上引脚的小凹口对应,即可知道它的各个引脚。

VCC和GND自不必说,分别接UNO的5V和GND即可;

Q0~Q7是并行输出,本文中我们接8个LED;

DS、SHCP(下面简称SH)、STCP(下面简称ST)是输入端;

DS是串行数据输入端(一般Arduino的代码里会定义一下引脚,74HC595的案例中,dataPin指的是接这个脚);

SH是串行时钟输入端(clockPin指的是接这个脚);

ST是锁存端(latchPin指的是接这个脚);

OE是输出使能引脚,低电平时输出,高电平时不输出,所以,直接接在GND上使其一直保持低电平输出数据;

MR是用来重置内部寄存器的引脚,低电平时重置内部寄存器,所以,直接连接在VCC上一直保持高电平;

Q7S是串行输出(可以接下一个74HC595的DS,数据可作为串行输入,这就是74HC595的级联,也就是说,此时3个输入控制16个输出),此引脚不用可以空置。

需要的元件(如下页表所示)

电路连接如下页图3所示,8个LED的负极(短脚)分别通过一个220Ω电阻与GND连接;74HC595有小凹口的一面向左,VCC接5V,VCC与GND之间接一个104电容,GND接GND;DS接管脚2,ST接管脚3,SH接管脚4,OE接GND,MR接VCC,Q7S空置。

应用74HC595做流水灯,在ArduinoIDE中我们会用到shiftOut这个函数,在Mixly中也有对应的模块,如图4所示。

首先,我们通过一个程序来了解一下74HC595串行输入、并行输出的过程。将图5程序上传,我们会发现Q7脚接的灯是亮的,如图6所示。

下面,我们来解释一下这个过程:

首先,管腳3给了锁存端(ST)一个低电平,意思是说“嗨,74HC595,开始干活了”,然后,管脚2给了数据(DS)一个十进制数1,关键是74HC595不认识它,所以,就需要转换成8位的二进制不足8位的,前面加0补足8位,为啥是8位的?因为,74HC595是8位移位寄存器,有8个输出(如图7)。

这时候,时钟(SH)开始干活了,管脚4每制造一次上升沿(先拉低电平再拉高电平),这一串数就进去一个,8次之后,都进去了,每个数就都有自己的一个位置了,即每个动作只操作一位数据,这就叫串行输入(如图8)。

至于谁先进去,进去之后,每一个数字都在哪个位置,这得看是低位先入还是高位先入,什么意思呢?我们先要弄明白低位和高位,以二进制例,左边0这一端是高位,右边1这一端是低位,所以,低位先入的意思就是从最右边的1(低位)开始依次进入,直到最左边的0(高位)进去;高位先入的则刚好相反,从最左边的0(高位)开始依次进入,直到最右边的1(低位)进去。

下面我们以低位先入为例,用上大巴车做个比方:在二进制,低位先入,给SH脚制造一次上升沿(我们可以理解为检票),那第一个上大巴车的肯定是最右边的1,它上去了之后,就占据了第一排的位置(如图9)。

继续给SH脚制造一次上升沿之后,1左边的0,开始上车,然后,它并不是走向第二排座位,而是让1往后挪一个,它坐第一排(如图10)。

继续给SH脚制造一次上升沿,已经上车的1和0继续往后挪,新上车的0占据第一排座位(如图11)。

如此继续给SH脚制造上升沿,高位的0,继续上车,车上的数继续往后排顺延,直到发生第8次上升沿,所有的数字都上车了(如图12)。

然后,管脚3给了锁存端(ST)一个高电平,让每个数都记住自

您可能关注的文档

文档评论(0)

ZC强 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档