×

8位串入、并出移位寄存器

发布时间:2020-11-05 发布时间:
|

8位串入、并出移位寄存器

74HC164、74HCT164 是高速硅门 CMOS 器件,与低功耗肖特基型 TTL (LSTTL) 器件的引脚兼容。74HC164、74HCT164 是 8 位边沿触发式移位寄存器,串行输入数据,然后并行输出。数据通过两个输入端(DSA 或 DSB)之一串行输入;任一输入端可以用作高电平使能端,控制另一输入端的数据输入。两个输入端或者连接在一起,或者把不用的输入端接高电平,一定不要悬空。 

时钟 (CP) 每次由低变高时,数据右移一位,输入到 Q0, Q0 是两个数据输入端(DSA 和 DSB)的逻辑与,它将上升时钟沿之前保持一个建立时间的长度。 主复位 (MR) 输入端上的一个低电平将使其它所有输入端都无效,同时非同步地清除寄存器,强制所有的输出为低电平。

特性 

门控串行数据输入  

异步中央复位  

符合 JEDEC 标准 no. 7A  

静电放电 (ESD) 保护:  

·HBM EIA/JESD22-A114-B 超过 2000 V  

·MM EIA/JESD22-A115-A 超过 200 V 。  

多种封装形式 

额定从 -40 °C 至 +85 °C 和 -40 °C 至 +125 °C 。

功能图

引脚信息

图 5. DIP14、SO14、SSOP14 和 TSSOP14 封装的引脚配置 

引脚说明 

8位并入,1位串出的移位寄存器

移位寄存器,比较简单,就不介绍了,直接上代码和测试文件。

顶层文件如下:

由计数器自加1,为移位寄存器提供控制信号。移位寄存器部分,分为三部分,cnt》0,cnt=0和cnt《0(当然不可能小于0)。

在cnt》0的条件下,从低7位向高7位左移一位;在cnt=0的条件下,将din赋值给d_reg;在cnt《0的条件下,保持d_reg。

最后只需将d_reg的最高位赋值给dout即可。

测试文件如下:

波形测试,达到移位寄存器的目的。如下:

74HC595串入并出8位移位寄存器 

Arduino, 常用元件 Add comments  

Arduino采用的ATmega168芯片带12个数字I/O管脚,其中每个都可以对一个数字量进行控制,从而实现类似于点亮一个发光二极管这样的功能。在实际的工程应用里,有时我们可能会遇到需要对更多的数字量进行控制的场合,比如同时控制16个发光二极管,这时Arduino自带的数字I/O管脚就不够用了,必须进行相应的扩展。其中一种可行的办法就是借助74HC595这样一个8位串入并出移位寄存器,这个芯片能够多个级连起来一起使用,因此理论上能够通过Arduino上有限的几个管脚(最少三个)产生任意多个的数字输出。

74HC595同数据相关的引脚可以分为三类: 

DS:串行数据输入,接Arduino的某个数字I/O引脚。  

Q0~Q7:8位并行数据输出,可以直接控制8个LED,或者是七段数码管的8个引脚。  

Q7′:级联输出端,与下一个74HC595的DS相连,实现多个芯片之间的级联。

74HC595同控制相关的引脚一共有四个: 

SH_CP:移位寄存器的时钟输入。上升沿时移位寄存器中的数据依次移动一位,即Q0中的数据移到Q1中,Q1中的数据移到Q2中,依次类推;下降沿时移位寄存器中的数据保持不变。  

ST_CP:存储寄存器的时钟输入。上升沿时移位寄存器中的数据进入存储寄存器,下降沿时存储寄存器中的数据保持不变。应用时通常将ST_CP置为低点平,移位结束后再在ST_CP端产生一个正脉冲更新显示数据。  

MR:重置(RESET),低电平时将移位寄存器中的数据清零,应用时通常将它直接连高电平(VCC)。   

OE:输出允许,高电平时禁止输出(高阻态)。引脚不紧张的情况下可以用Arduino的一个引脚来控制它,这样可以很方便地产生闪烁和熄灭的效果。实际应用时可以将它直接连低电平(GND)。


『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
降低ADC信噪比损失的设计技巧