一、74HC595脚位图及说明
管脚说明:
- 14脚:DS(SER),串行数据输入引脚
- 13脚:OE,输出使能控制脚,它是低电才使能输出,所以接GND
- 12脚:RCK(STCP),存储寄存器时钟输入引脚。上升沿时,数据从移位寄存器转存到存储寄存器。
- 11脚:SCK(SHCP),移位寄存器时钟引脚,上升沿时,移位寄存器中的bit 数据整体后移,并接受新的bit(从SER输入)。
- 10脚:MR,低电平时,清空移位寄存器中已有的bit数据,一般不用,接 高电平即可。
- 9 脚 :串行数据出口引脚。当移位寄存器中的数据多于8bit时,会把已有的bit“挤出去”,就是从这里出去的。用于595的级联。
- Q0~Q7:并行输出引脚
使用参数:
- VCC:2V~6V,5V最好
- IQn:± 35mA
注意事项:
- 第一个从SER送入的bit将会从Q7出去。
二、74HC595详细介绍
74HC595的最重要的功能就是:串行输入,并行输出。
其次,74HC595里面有2个8位寄存器:移位寄存器、存储寄存器。
74HC595的数据来源只有一个口,一次只能输入一个位,那么连续输入8次,就可以积攒为一个字节了。
2.1、移位寄存器
74HC595的移位寄存器工作方式就像手枪弹夹,但是子弹的发射(移位寄存器中的数据转储到存储寄存器),又像是【散x弹】(因为是并行输出嘛)。
为什么说和弹夹很像呢?
- 1、串行输入,已进入的位数据依次下移(所以叫移位寄存器) | 子弹也是一颗一颗上的,先上的子弹,被后上的慢慢往下压。
- 2、第一个输入的位,是并行输出的最后一个位 | 最先进入弹夹的子弹,最后射出。
- 74HC595的14脚:DS,又叫SER 英文全称是:Serial data input ,顾名思义,就是串行数据输入口。
595的数据来源只有这一个口,一次只能输入一个位,那么连续输入8次,就可以积攒为一个字节了。
假如,我们要将二进制数据0111 1111 输入到595的移位寄存器中,下面来上一张动态图,模拟了前2个位输入的情景。
0111 1111 这个数据完全输入后是这样的:
- 74HC595的11脚,(shift register clock input) 移位寄存器时钟引脚。上升沿有效。
首先我们要介绍这个引脚的作用,我们知道51单片机的工作离不开晶振,他使CPU的工作步调稳定有序,就像跑步时喊1,2,1的那个人。那么这里的位移寄存器时钟也是同样的道理,当一个新的位数据要进来时,已经进入的位数据就在移位寄存器时钟脉冲的控制下,整体后移,让出位置。
上升沿:电平从低到高的那个过程。移位寄存器时钟在上升沿这个过程中才起作用。
2.2、存储寄存器
到这里我们已经大致讲了怎么上子弹,也把子弹上齐了。下面来将怎么将子弹打出去,也就是怎么将移位寄存器的数据转移到存储寄存器。存储寄存器是直接和8个输出引脚相通的,将移位寄存器的数据转移到存储寄存器后,Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7 就可以接收到我们开始输入的一个字节的数据。所谓存储寄存器,就是数据可以存在这个寄存器中,并不会随着一次输出就消失,只要595不断电,也没有新的数据从移位寄存器中过来,数据就一直不变且有效。新的数据过来后,存储寄存器中的数据就会被覆盖更新。
- 74HC595的12脚: (storage register clock input ) 存储寄存器时钟
数据从位移寄存器转移到存储寄存器,也是需要时钟脉冲驱动的,这就是12脚的作用。它也是上升沿有效。
2.3、74HC595级联
通过上面的介绍,见识到595的厉害了吧。138译码器通过3个输入口控制8个输出口,而且还只能是特定的8个输出值,而595只用了一个输入口就可以输任意的8位数据,可谓短小精悍。
你觉的1位控制8位输出还不够?让你的595串联起来吧!打造成加特林机关枪。
在上面的程序中用到的9脚,没用起作用,如果要让2个595串联起来的话,就需要它了。想一下,我们将移位寄存器的8个位填满后,再往移位寄存器中塞一个会怎么样?也许你想到了。对!移位寄存器的最后一个位数据会被挤出去,从哪里出去?就是从9脚输出的。如果我们把第一个595的9脚连接到第二个的串行数据输入脚SER,那么,就形成了595的级联。这样,如果我们用2个595组合成了一个新的超级595,这个超级595的移位寄存器和存储寄存器的容量都翻倍了,1口控制16口,有木有!你还可以继续级联下去!
三、基于51单片机的使用程序
自此,我们已经讲解了一个595正常情况下的工作流程,下面写一个程序,让8个LED保持 亮暗亮暗… 间隔的效果。接线说明如下:
- Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7 分别接 8个LED正极
- 14脚SER 接 单片机P3.4
- 11脚SCK 接 单片机P3.6
- 12脚RCK接 单片机P3.5
- 13脚OE接GND
- 10脚MR接VCC
- 9脚闲置不接
#include<reg51.h>
#include<intrins.h>
typedef unsigned char uchar;
typedef unsigned int uint;
/**********函数声明********************/
void SendTo595(uchar byteData);
/***********************************/
sbit SER = P3^4; //p3.4脚控制串行数据输入
sbit SCK = P3^6; //串行输入时钟
sbit RCK = P3^5; //存储寄存器时钟
void main()
{
SendTo595(85); //85的二进制:0101 0101
while(1);
}
//功能:发送一个字节的数据给595,再并行输出
void SendTo595(uchar byteData)
{
char i=0;
for(;i<8;i++)
{
SER = byteData>>7; //大家自己考量这2句
byteData= byteData<<1;
SCK = 1; //上升沿,让串行输入时钟变为高电平,并延时2个时钟周期
_nop_();
_nop_();
SCK = 0; //变为低电平,为下次准备
}
/*位移寄存器数据准备完毕,转移到存储寄存器*/
RCK = 1; //上升沿,让存储寄存器时钟变为高电平,并延时2个时钟周期
_nop_();
_nop_();
RCK = 0;
}
参考
- 【不知为何,原作者删除了文章】http://www.cnblogs.com/lulipro/p/5067835.html
- 单片机芯片之——图解74HC595(第一部分)
- 74HC595详解
- 74HC595在【8x8LED点阵】中的使用
- 74HC595引脚图时序图工作原理及pdf中文资料
- 74HC595级联介绍篇(一)
- 74HC595芯片介绍和使用详解【干货】
- 通俗易懂的74HC595芯片讲解_74HC595引脚功能及使用方法
今天的文章74hc595芯片资料_74hc595芯片手册[通俗易懂]分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/79420.html