单片机芯片之(74HC595/74LS595)

一、仅用一个74HC595驱动四位甚至更多的数码管

在数码管上要显示同一个数字可以用静态显示,当数码管要显示不同数字时就用到动态显示。图所示为74HC595芯片的封装及引脚分布。74HC595是由8位移位寄存器和8位三态并行输出的D型锁存器组成,如图所示。

14脚:DS(SER),串行数据输入引脚

13脚:OE,  输出使能控制脚,它是低电才使能输出,所以接GND

12脚:RCK,存储寄存器时钟输入引脚。上升沿时,数据从移位寄存器转存带存储寄存器。

11脚:SCK,移位寄存器时钟引脚,上升沿时,移位寄存器中的bit 数据整体后移,并接受新的bit(从SER输入)。

10脚:MR,低电平时,清空移位寄存器中已有的bit数据,一般不用,接 高电平即可。

9 脚 :串行数据出口引脚。当移位寄存器中的数据多于8bit时,会把已有的bit“挤出去”,就是从这里出去的。用于595的级联。

Qx:并行输出引脚

 

74HC595具有以下特征:

(1) 移位寄存器接收串行数据、提供串行或8位并行数据输出;

(2) 移位寄存器和锁存器拥有独立的时钟输入;

(3) 移位寄存器拥有异步复位信号

所示为74HC595的时序图。由时序图可以看出,串行输入数据在移位时钟的上升沿被读进移位寄存器中(更正先传输高位,时序图有误);当复位信号有效时,移位寄存器被清零;在输出使能为低电平且锁存时钟的上升沿时,移位寄存器的值被锁存输出;当输出使能为高电平时,输出高阻态。而串行输出接口则是输出移位寄存器的最高位,且不受输出使能的控制。

 

14脚:DS,又叫SER  英文全称是:Serial data input ,顾名思义,就是串行数据输入口。

11脚,(shift register clock input)  移位寄存器时钟引脚。上升沿有效。

12脚: (storage register clock input )  存储寄存器数据从位移寄存器转移到存储寄存器,也是需要时钟脉冲驱动的,上升沿有效。

  参考代码(代码有误,先传高位)

#include<reg51.h>
#include<intrins.h>

/**********函数声明********************/ void SendTo595(unsigned char byteData);
/***********************************/ sbit SER = P3^4; //p3.4脚控制串行数据输入 sbit SCK = P3^6; //串行输入时钟 sbit RCK = P3^5; //存储寄存器时钟 void main() { SendTo595(55); //85的二进制:0101 0101 while(1); } //功能:发送一个字节的数据给595,再并行输出 void SendTo595(unsigned char byteData) { char i=0;
for(;i<8;i++) { SER = byteData>>7; //此条语句严重错误,因为74HC595先传高位 byteData= byteData<<1; SCK = 1; //上升沿,让串行输入时钟变为高电平,并延时2个时钟周期 _nop_(); _nop_(); SCK = 0; //变为低电平,为下次准备 } /*位移寄存器数据准备完毕,转移到存储寄存器*/ RCK = 1; //上升沿,让存储寄存器时钟变为高电平,并延时2个时钟周期 _nop_(); _nop_(); RCK = 0; }

 74HC595和74HC164的区别主要有:
1、74HC595有锁存器,所以在移位过程中输出可以保持不变;而74HC164没有锁存器,所以每产生一个移位时钟输出就改变一次。这是二者的最大区别
2、74HC595使用专门的Q7'引脚实现多片级联;74HC164直接使用输出引脚Q7级联
3、74HC595有使能OE,OE无效时输出引脚为高阻态;而74HC164没有使能引脚
4、74HC595的复位是针对移位寄存器的,想要复位LATCH寄存器还须ST_CP上升沿将移位寄存器内容加载到锁存寄存器;也就是说:74HC595的复位是同步的,74HC164的复位是异步的,所以74HC164的复位更简单
5、74HC164有对应的74HC165并转串芯片

posted on 2020-04-04 10:27  一郎哥哥  阅读(7655)  评论(0编辑  收藏  举报

导航