Arduino 学习笔记 _74HC595
74HC595详解

74HC595 详解
工作电压2-6V,推荐5V。
14 脚串行输入:595 的数据来源只有这一个口,一次只能输入一个位,那
幺连续输入8 次,就可以积攒为一个字节了。
13 脚OE 输出使能控制脚:如果它不工作,那幺595 的输出就是高阻态,595 就不受我们程序控制了,这显然违背我们的意愿。
OE 的上面画了一条线,表示他是低电平有效。
于是我们将他接GND。
10 脚SRCLR 位移寄存器清空脚:他的作用就是将位移寄存器中的数据
全部清空,这个很少用到,所以我们一般不让他起作用,也是低电平有效,于是我们给他接VCC。
12 脚RCLK 存储寄存器:数据从位移寄存器转移到存储寄存器,也是需要
时钟脉冲驱动的,这就是12 脚的作用。
它也是上升沿有效。
11 脚SRCLK 移位寄存器时钟输入:当一个新的位数据要进来时,已经进
入的位数据就在移位寄存器时钟脉冲的控制下,整体后移,让出位置。
分析下数据输入和输出过程:
假如,我们要将二进制数据0111 1111 输入到595 的移位寄存器中,下面。
74HC595完整中文资料

74HC595完整中文资料74HC595芯片是一种串入并出的芯片,在电子显示屏制作当中有广泛的应用。
74HC595是8位串行输入/输出或者并行输出移位寄存器,具有高阻、关、断状态。
三态。
特点 8位串行输入 8位串行或并行输出存储状态寄存器,三种状态输出寄存器可以直接清除 100MHz的移位频率输出能力并行输出,总线驱动串行输出;标准中等规模集成电路应用串行到并行的数据转换 Remote contr ol holding register. 描述 595是告诉的硅结构的CMOS器件,兼容低电压TTL电路,遵守JEDEC标准。
595是具有8位移位寄存器和一个存储器,三态输出功能。
移位寄存器和存储器是分别的时钟。
数据在SCHcp的上升沿输入,在STcp 的上升沿进入的存储寄存器中去。
如果两个时钟连在一起,则移位寄存器总是比存储寄存器早一个脉冲。
移位寄存器有一个串行移位输入(Ds),和一个串行输出(Q7’),和一个异步的低电平复位,存储寄存器有一个并行8位的,具备三态的总线输出,当使能OE时(为低电平),存储寄存器的数据输出到总线。
CPD决定动态的能耗, PD=CPD×VCC×f1+∑(CL×VCC2×f0) F1=输入频率,CL=输出电容 f0=输出频率(MHz) Vcc=电源电压引脚说明符号引脚描述内部结构结合引脚说明就能很快理解 595的工作情况引脚功能表:管脚编号管脚名管脚定义功能1、2、3、4、5、6、7、15QA—QH 三态输出管脚8 GND 电源地9 SQH 串行数据输出管脚10 SCLR 移位寄存器清零端11 SCK 数据输入时钟线12 RCK 输出存储器锁存时钟线13 OE 输出使能14 SI 数据线15 VCC 电源端真值表:输入管脚输出管脚SI SCK SCLR RCK OEX X X X H QA—QH 输出高阻X X X X L QA—QH 输出有效值X X L X X 移位寄存器清零L 上沿H X X 移位寄存器存储LH 上沿H X X 移位寄存器存储HX 下沿H X X 移位寄存器状态保持X X X 上沿X 输出存储器锁存移位寄存器中的状态值X X X 下沿X 输出存储器状态保持第二步:目的:将位数据逐位移入74HC595,即数据串入方法:P1.2产生一上升沿,将P1.0上的数据移入74HC595中.从低到高。
张成74hc595

74HC595是硅结构的CMOS器件,兼容低电压TTL电路,遵守JEDEC标准。
74 HC595是具有8位移位寄存器和一个存储器,三态输出功能。
移位寄存器和存储器是分别的时钟。
数据在SCHcp的上升沿输入,在STcp的上升沿进入的存储寄存器中去。
如果两个时钟连在一起,则移位寄存器总是比存储寄存器早一个脉冲。
移位寄存器有一个串行移位输入(Ds),和一个串行输出(Q7’),和一个异步的低电平复位(MR’),存储寄存器有一个并行8位的,具备三态的总线输出,当使能OE时(为低电平),存储寄存器的数据输出到总线。
8位串行输入/输出或者并行输出移位寄存器,具有高阻关断状态。
三态。
特点8位串行输入/8位串行或并行输出存储状态寄存器,三种状态输出寄存器可以直接清除100MHz的移位频率输出能力并行输出,总线驱动;串行输出;标准中等规模集成电路595移位寄存器有一个串行移位输入(Ds),和一个串行输出(Q7’),和一个异步的低电平复位,存储寄存器有一个并行8位的,具备三态的总线输出,当使能OE时(为低电平),存储寄存器的数据输出到总线。
参考数据CPD决定动态的能耗,PD=CPD×VCC×f1+∑(CL×VCC2×f0)F1=输入频率,CL=输出电容f0=输出频率(MHz)Vcc=电源电压引脚说明符号引脚描述Q0…Q7 15,1,7 并行数据输出GND 8 地Q7’ 9 串行数据输出MR 10 主复位(低电平)SHCP 11 移位寄存器时钟输入STCP 12 存储寄存器时钟输入OE 13 输出有效(低电平)DS 14 串行数据输入VCC 16 电源功能表输入输出功能SHCP STCP OE MR DS Q7’ Qn× × L ↓ × L NC MR为低电平时仅仅影响移位寄存器× ↑ L L × L L 空移位寄存器到输出寄存器××H L ×L Z 清空移位寄存器,并行输出为高阻状态↑ × L H H Q6 NC 逻辑高电平移入移位寄存器状态0,包含所有的移位寄存器状态移入,例如,以前的状态6(内部Q6”)出现在串行输出位。
74HC595的工作原理

74HC595的工作原理-编程-显示SCH2007-05-24 23:1574HC595是具有8位移位寄存器和一个存储器,三态输出功能。
移位寄存器和存储器是分别的时钟。
数据在SHcp的上升沿输入,在STcp的上升沿进入的存储寄存器中去。
如果两个时钟连在一起,则移位寄存器总是比存储寄存器早一个脉冲。
移位寄存器有一个串行移位输入(Ds),和一个串行输出(Q7’),和一个异步的低电平复位,存储寄存器有一个并行8位的,具备三态的总线输出,当使能 OE时(为低电平),存储寄存器的数据输出到总线。
74HC595各个引脚的功能:Q1~7 是并行数据输出口,即储寄存器的数据输出口Q7' 串行输出口,其应该接SPI总线的MISO接口STcp 存储寄存器的时钟脉冲输入口SHcp 移位寄存器的时钟脉冲输入口OE的非输出使能端MR的非芯片复位端Ds 串行数据输入端程序说明:每当SHcp上升沿到来时,DS引脚当前电平值在移位寄存器中左移一位,在下一个上升沿到来时移位寄存器中的所有位都会向左移一位,同时Q7'也会串行输出移位寄存器中高位的值,这样连续进行8次,就可以把数组中每一个数(8位的数)送到移位寄存器;然后当STcp上升沿到来时,移位寄存器的值将会被锁存到锁存器里,并从Q1~7引脚输出。
//74HC595串行输出数据void outdisp(unsigned char num){unsigned char i;for (i=0;i<8;i++ ){DS=num;SHCP=1;SHCP=0;num<<=1;}}设计显示PCB板(595一为传送位选信号,一为传送代码段信号)。
最详细的74HC595芯片使用方法介绍

最详细的74HC595芯片使用方法介绍2010-01-17 00:07:05 来源: 电子工程师论坛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)。
对于一个最简单的74HC595应用来讲,可以用Arduino的三个数字I/O端口分别控制DS、SH_CP和ST_CP,然后将MR和OE分别接VCC和地。
74HC595完整中文资料word资料5页

74HC595芯片是一种串入并出的芯片,在电子显示屏制作当中有广泛的应用。
74HC595是8位串行输入/输出或者并行输出移位寄存器,具有高阻、关、断状态。
三态。
特点 8位串行输入 8位串行或并行输出存储状态寄存器,三种状态输出寄存器可以直接清除 100MHz的移位频率输出能力并行输出,总线驱动串行输出;标准中等规模集成电路应用串行到并行的数据转换 Remote contr ol holding register. 描述 595是告诉的硅结构的CMOS器件,兼容低电压TTL电路,遵守JEDEC标准。
595是具有8位移位寄存器和一个存储器,三态输出功能。
移位寄存器和存储器是分别的时钟。
数据在SCHcp的上升沿输入,在STcp 的上升沿进入的存储寄存器中去。
如果两个时钟连在一起,则移位寄存器总是比存储寄存器早一个脉冲。
移位寄存器有一个串行移位输入(Ds),和一个串行输出(Q7’),和一个异步的低电平复位,存储寄存器有一个并行8位的,具备三态的总线输出,当使能OE时(为低电平),存储寄存器的数据输出到总线。
CPD决定动态的能耗, PD=CPD×VCC×f1+∑(CL×VCC2×f0) F1=输入频率,CL=输出电容 f0=输出频率(MHz) Vcc=电源电压引脚说明符号引脚描述内部结构结合引脚说明就能很快理解 595的工作情况引脚功能表:管脚编号管脚名管脚定义功能1、2、3、4、5、6、7、15QA—QH 三态输出管脚8 GND 电源地9 SQH 串行数据输出管脚10 SCLR 移位寄存器清零端11 SCK 数据输入时钟线12 RCK 输出存储器锁存时钟线13 OE 输出使能14 SI 数据线15 VCC 电源端真值表:输入管脚输出管脚SI SCK SCLR RCK OEX X X X H QA—QH 输出高阻X X X X L QA—QH 输出有效值X X L X X 移位寄存器清零L 上沿H X X 移位寄存器存储LH 上沿H X X 移位寄存器存储HX 下沿H X X 移位寄存器状态保持X X X 上沿X 输出存储器锁存移位寄存器中的状态值X X X 下沿X 输出存储器状态保持74595的数据端:QA--QH: 八位并行输出端,可以直接控制数码管的8个段。
通俗易懂的74HC595讲解

电子设计随笔之74HC595——1016cyc Come on,我们看到下面这个图(这个图引自74HC595芯片手册),输出使能端13脚我们一直让它使能,复位端10脚我们一直让它无效,这两个引脚在硬件设计时为了方便,就直接给它们连到相应的电平上了。
程序中我们只需要关注数据输入引脚14脚、移位脉冲引脚11脚和锁存脉冲引脚12脚。
图中的SR A——SR H是移位寄存器(Shift Register),数据从它们的D引脚输入,从Q引脚输出,每次移位脉冲引脚(Shift Clock)提供一个脉冲,D引脚的数据就会输出并保持到Q引脚,因为这里的移位脉冲引脚(Shift Clock)是连到每一个SR上的,所以自然每次给一个移位脉冲的时候,所有的数据都向后移动了一位。
这里我们注意到,SR A的D脚连接的是串行数据输入,也就是我们的数据引脚。
所以每次给脉冲移位之前,我们需要准备好该引脚的值,因为每次给一个脉冲,它的数据就会移入后方。
很直观的看到,我们给几个脉冲,数据引脚就会有几次被移入移位寄存器,并且这些值会保持在各个SR的Q脚。
所以假设我们要将一个字节移入移位寄存器,因为1个字节是8位的,所以我们需要给出8个脉冲,那么SR A——SR H的Q脚就保持了这8位值,再看看这8位值,它是先在数据引脚输出的值就会走得越远,所以如果我们先输出数据高位的话,最高位在8个脉冲后就会跑到SR H 的Q脚。
这就像我们排队一样,一个寄存器里面有8个位置,每次给一个脉冲就好比一次呼叫:“大家可以往前移一位了!”就这样,队伍不断得往前移,很简单吧!然后我们看到LR A——LR H,它们是锁存寄存器(Latch Register),每次锁存脉冲引脚(Latch Clock)给一个脉冲,Q脚就会输出并保持D脚的值。
其实聪明的人肯定会看出来了,LR和SR其实是差不多的功能,只是SR多了个复位脚。
我们可以把LR看成是照相机,锁存脉冲引脚就相当于是照相机的快门,我们给一个锁存脉冲,那么数据就被锁存在了对应的Q脚。
基于arduino的74HC595扩展I

基于arduino的74HC595扩展I/O口方案辽工电子2013.5.174HC595内部原理图图注:G在实际使用中可以悬空,但将导致输出电压不稳。
可以常为低电平,即开通状态。
图示时序图传送的数据是“010”,两种时序图其结果是一样的,因为74595是上升沿读数的。
在arduino上的程序为(蓝色字体代码固定,可做循环):#define CLK 12//NO.11#define SER 13//NO.14#define RCK 11//NO.12#define G 10//NO.13#define RCLR 9//NO.10void setup() {pinMode(CLK, OUTPUT);pinMode(SER, OUTPUT);pinMode(RCK, OUTPUT);pinMode(G, OUTPUT);pinMode(RCLR, OUTPUT);}void loop() {digitalWrite(RCLR, HIGH); //un use it digitalWrite(G, HIGH); //close itdigitalWrite(RCK, LOW); //twice clkis still low//begin send itdigitalWrite(CLK, LOW);digitalWrite(SER, LOW);delay(1);digitalWrite(CLK, HIGH);delay(1); //1digitalWrite(CLK, LOW);digitalWrite(SER, HIGH);delay(1);digitalWrite(CLK, HIGH);delay(1); //2digitalWrite(CLK, LOW);digitalWrite(SER, LOW);delay(1);digitalWrite(CLK, HIGH);delay(1); //3//end itdigitalWrite(G, LOW); //open itdigitalWrite(RCK, HIGH); //give oneanotherdelay(1);digitalWrite(RCK, LOW); //return itwhile(1);//it's real end}这样输出的结果为0100,0000。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
48
20. 74HC595 实验
实验现象: 利用 74HC595 芯片实现 LED 流水灯效果。
原理与说明:
有时候限于 Arduino 本身的引脚数,无法直接控 制较多的电路。这里介绍一种扩展数字输出的芯片
——74HC595,通过此芯片,可以使用很少的引脚接
收串行信号(也就是 1 个引脚),输出的部分可以变
使用 shiftOut()这个函数的主要原因是我们需要自行输出频率变化。以 74HC595 为例,需要从 Arduino 的 clocckPin(本例中使用 Pin12)输出,这样 74HC595 才能知道 dataPin(本例中使用 Pin11)的正确读取方式。这些说明在 芯片的说明手册中都有提到。这里节录部分来进行说明。
函数 shiftOut(dataPin, clockPin, LSBFIRST, j)的目的在于 1 个执行时间内输出 第 4 个参数 j 的某一个位。1 个字符有 8 个位,若希望从高位(左边)开始,
47
第三个参数设定为 MSBFIRST;若从低位(右边)开始,则设定为 LSBFIRST。前 两个参数只是引脚定义。
74HC595 数据信号时序图 要想更加详细地了解工作原理,可以查阅 SPI(Serial Peripheral Interface)
的工作原理。而点亮的 LED 的位置需要将十进制数字转换为二进制才可以了解。
例如:
153
10011001
这时,应该是 Q0、Q3、Q4 和 Q7 这 4 颗 LED 发光。
功能的实现中使用了一个 Arduino 中的比较特殊的函数 shiftOut(dataPin, clockPin, LSBFIRST, j)。后面会给予介绍。
46
程序代码比较简单,如下:
int latchPin=8; //ST_CP of 74HC595 int clockPin=12; //SH_CP of 74HC595 int dataPin=11; //DS of 74HC595
进一步,可以利用 74HC595 扩展很多很多的数字输出,靠的就是将多颗 IC
串联在一起,只需要将 SH_CP 和 ST_CP 接在一起,前一颗的 Q7’接到后一颗的
DS 上即可。
附加: A. 若将上面程序中的 loop()的 for(int data=0; data<255; data++); 修改为 for(int data=0; data<255; data*=2); 即可实现 LED 的从低位向高位的单向循环显示。 B. 若再将 shiftOut(dataPin,clockPin,LSBFIRST,data); 中的参数 LSBFIRST 修改为 MSBFIRST,则会变为从高位向低位的循环显示。
74HC595 中的 ST_CP 与 Arduino 的 Pin8 连接,同时也通过 10k 的电阻接地。 OE 接地,MR 接 5V,(注意不要接错!)LED 均分别接上 220Ω的限流电阻。DS 接 Pin11,SH_CP 接 Pin12 。
在这个例子中,实现了利用二进制显示 LED 灯的变化,8 颗 LED 共可以显 示 256 种变化。使用循环显示,每个状态停留 1 秒。
void setup() {
pinMode(latchPin, OUTPUT); pinMode(clockPin, OUTPUT); pinMode(dataPin, OUTPUT); }
void loop() {
for(int data=0; data<255; data++) {
digitalWrite(latchPin,LOW); //低电位表示启动 shiftOut(dataPin,clockPin,LSBFIRST,data); digitalWrite(latchPin,HIGH); //高电位表示停止 delay(1000); } }
为并列输出(扩展为 8 个引脚)或依旧为串行输出
给另外的电路,可以实现多颗 595 芯片组合扩展。
74HC595 的引脚如右图所示,说明如下表。
引脚编 号
名称
功能说明
1~7,15
Q0~Q7
并行输出(Parallel Output)
8
GND
接地
9
Q7’
串行输出(Serial Output)
10
MR
Master Reset, 接 5V
11
SH_CP
Shift Register Clock Input
12
ST_CP
Storage Register Clock Input
13
OE
Output Enable (active LOW)
14
DS
Serial Data Input16ຫໍສະໝຸດ Vcc5V 工作电压
若使用 Arduino 与 74HC595 沟通,只需要 3 个引脚,实现 8 个数字输出引 脚的扩展。下面的例子中给出了一个简单的控制 8 颗 LED 的电路图(图中只给 出了引脚说明符)。使用 Arduino 的 8、11 和 12 脚。