74hc595存储寄存器引脚是否可以悬空?他的原理是不是让数据暂停?

如题所述

74HC595 的工作原理 74HC595 的工作原理-编程-显示 SCH 74HC595 是具有 8 位移位寄存器和一个存储器,三态输出功能。 移位寄存器和存 储器是分别的时钟。 数据在 11 SHcp(SCLK P0.4)的上升沿输入,在 12 STcp(nCS P0.8)的上升 P0.4) P0.8) ( ( 沿进入的存储寄存器中去。如果两个时钟连在一起,则移位寄存器总是比存储寄存器早一个 脉冲。 移位寄存器有一个串行移位输入 14 (Ds) P0.6) 和一个串行输出 9 (Q7’) MISO (MOSI P0.6), ( P0.5) P0.5),和一个异步的低电平复位,存储寄存器有一个并行 8 位的,具备三态的总线输出,当 使能 OE 时(为低电平),存储寄存器的数据输出到总线。 74HC595 各个引脚的功能: Q1~7 是并行数据输出口,即储寄存器的数据输出口 Q7' 串行输出口,其应该接 SPI 总线的 MISO 接口 STcp 存储寄存器的时钟脉冲输入口 SHcp 移位寄存器的时钟脉冲输入口 OE 的非 输出使能端 MR 的非 芯片复位端 Ds 串行数据输入端 程序说明: 每当 SHcp(SCLK)(SCLK P0.4)上升沿到来时,DS(MOSI P0.6) P0.4) ( (MOSI P0.6)引脚当前电平值 在移位寄存器中左移一位,在下一个上升沿到来时移位寄存器中的所有位都会向左移一位, 同时 Q7'( MISO) ( MISO P0.5) P0.5)也会串行输出移位寄存器中高位的值,这样连续进行 8 次,就 可以把数组中每一个数(8 位的数)送到移位寄存器;然后当 STcp(nCS)(nCS P0.8)上升 P0.8) ( 沿到来时,移位寄存器的值将会被锁存到锁存器里,并从 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 一为传送位选信号,一为传送代码段信号) CEPARK AVR 单片机 之 HC595 驱动数码管显示 (2009-09-16 17:30:13) 标签: 分类:Avr it 这里我用的 CEPARK 的 M64 AVR 开发板,这一课的重点是学会如何使用 74HC595 来驱动数码管。 74HC595 是具有 8 位移位寄存器和一个存储器,三态输出功能。移位寄存器和存储器是分别的时 钟。数据在 SHcp 的上升沿输入,在 STcp 的上升沿进入的存储寄存器中去。如果两个时钟连在一起,则移 位寄存器总是比存储寄存器早一个脉冲。移位寄存器有一个串行移位输入(Ds),和一个串行输出(Q7’), 和一个异步的低电平复位,存储寄存器有一个并行 8 位的,具备三态的总线输出,当使能 OE 时(为低电 平),存储寄存器的数据输出到总线。 引脚说明: QA--QH: 八位并行输出端,可以直接控制数码管的 8 个段。 QH': 级联输出端。我将它接下一个 595 的 SI 端。 SER(DS): 串行数据输入端。 74595 的控制端说明: /SCLR(MR)(10 脚): 低点平时将移位寄存器的数据清零。通常我将它接 Vcc。 SCK(SHCP)(11 脚):上升沿时数据寄存器的数据移位。QA-->QB-->QC-->...-->QH;下降沿移位寄存器数据 不变。(脉冲宽度:5V 时,大于几十纳秒就行了。我通常都选微秒级) RCK(STCP)(12 脚):上升沿时移位寄存器的数据进入数据存储寄存器,下降沿时存储寄存器数据不变。通 常我将 RCK 置为低电平,当移位结束后,在 RCK 端产生一个正脉冲(5V 时,大于几十纳秒就行了。我通常 都选微秒级),更新显示数据。 /G(OE)(13 脚): 高电平时禁止输出(高阻态)。如果单片机的引脚不紧张,用一个引脚控制它,可以方便 地产生闪烁和熄灭效果。比通过数据端移位控制要省时省力。 注:74164 和 74595 功能相仿,都是 8 位串行输入转并行输出移位寄存器。74164 的驱动电流(25mA)比 74595(35mA)的要小,14 脚封装,体积也小一些。 74595 的主要优点是具有数据存储寄存器,在移位的过程中,输出端的数据可以保持不变。这在串行速度 慢的场合很有用处,数码管没有闪烁感。 与 164 只有数据清零端相比,595 还多有输出端时能/禁止控制端,可以使输出为高阻态。 注明:74HC595 引脚命名我现在看到两种,如串行数据输入端(14 脚)有的 Datasheet 上叫 SER,还有一种 叫 DS。不过这都没有关系,只是名字不一样,大家看这些文档时,注意点就行。 现在大家对 595 有了一定的了解,现在我们看 CEPARK AVR 单片机开发板上这一部分的原理图: 大家这里只要注意 11,12,14 这三个引脚由单片机的哪几个口控制就好。 SHCP(11)-----------PG0 STCP(12)-----------PG1 DS(14)-------------PG2 下面是源程序: 效果:第一位和第二位数码管显示 5; #include <avr/io.h> #include <util/delay.h> #define SER_PORT PORTG //PG 口 #define SER_DATA PG2 //DS,串行数据入口 #define SER_RCK PG1 //STCP,来一个上升沿时数据进入并行输出 #define SER_SCK PG0 //SHCP,来一个上升沿时数据移位 unsigned char Led_Disbuf[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90}; //共阳极 void Send_Byte_HC595(unsigned char byte) //并行数据移位输出函数 { 一个数码管亮 //byte 是表示我们想哪一位数码管亮, 如为 0x01,表示第 unsigned char i; //循环变量 for(i = 0;i < 8;i++) { if(byte & 0x80) { SER_PORT |= _BV(SER_DATA); //PG2 输出 1 } else { SER_PORT &= ~_BV(SER_DATA);//PG2 输出 0 } SER_PORT |= _BV(SER_SCK); //上升沿触发,SER_DATA 数据进入移位寄存器 _delay_us(5); SER_PORT &= ~_BV(SER_SCK); byte <<= 1; //通过左移,逐个点亮个个数码管 } SER_PORT |= _BV(SER_RCK); //上升沿触发,移位寄存器中的数据并行输出 _delay_us(5); SER_PORT &= ~_BV(SER_RCK); } int main(void) { PORTB = 0xff; //PB 口赋初值为 ff DDRB = 0xff; //PB 口为输出态 PORTG = 0x00; //PG 口赋初值为 0 DDRG |= _BV(SER_DATA)|_BV(SER_RCK)|_BV(SER_SCK); //PG0,PG1,PG2 为输出态 PORTB = Led_Disbuf[5]; //数码管上显示 5 Send_Byte_HC595(0x03); //第一位,第二位数码管点亮 while(1) {}; }
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-11-20
74HC595是硅结构的CMOS器件, 兼容低电压TTL电路,遵守JEDEC标准。 74HC595是具有8位移位寄存器和一个存储器,三态输出功能。 移位寄存器和存储器是分别的时钟。 数据在SHcp的上升沿输入,在STcp的上升沿进入到存储寄存器中去。如果两个时钟连在一起,则移位寄存器总是比存储寄存器早一个脉冲。 移位寄存器有一个串行移位输入(Ds),和一个串行输出(Q7’),和一个异步的低电平复位,存储寄存器有一个并行8位的,具备三态的总线输出,当使能OE时(为低电平),存储寄存器的数据输出到总线。  8位串行输入/输出或者并行输出移位寄存器,具有高阻关断状态。三态。  编辑本段特点  8位串行输入 /8位串行或并行输出 存储状态寄存器,三种状态  输出寄存器可以直接清除 100MHz的移位频率  编辑本段输出能力  并行输出,总线驱动; 串行输出;标准中等规模集成电路  595移位寄存器有一个串行移位输入(Ds),和一个串行输出(Q7’),和一个异步的低电平复位,存储寄存器有一个并行8位的,具备三态的总线输出,当使能OE时(为低电平),存储寄存器的数据输出到总线。  参考数据  Cpd决定动态的能耗,  Pd=Cpd×VCC×f1+∑(CL×VCC^2×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”)出现在串行输出位。  × ↑ L H × NC Qn’ 移位寄存器的内容到达保持寄存器并从并口输出  ↑ ↑ L H × Q6’ Qn’ 移位寄存器内容移入,先前的移位寄存器的内容到达保持寄存器并出。  编辑本段注释  H=高电平状态  L=低电平状态  ↑=上升沿  ↓=下降沿  Z=高阻  NC=无变化  ×=无效  当MR为高电平,OE为低电平时,数据在SHCP上升沿进入移位寄存器,在STCP上升沿输出到并行端口。  编辑本段程序样例  void HC595_senddata(unsigned char dat)  {  unsigned char i;  for(i=0;i<8;i++) //发送一个八位数据  {  if((dat=dat<<i)&0x80==0)MOSIO=0; //第i位为0时,MOSIO发送0;  else MOSIO=1; //否则发送1;  SH_CLK=0; //SH_CLK的上升沿,将数据送进移位寄存器;  NOP();  NOP();  SH_CLK=1;  }  ST_CLK=0; //ST_CLK的上升沿,将数据由移位寄存器送到存储寄存器  NOP(); //并输出到Q0—Q7并口  NOP();  ST_CLK=1;  }  大致上就是这样子,把MOSIO输入的串行数据,转换到Q0—Q7的并行输出,我用的595芯片,输出是反向的,即是输入1时,输出为0
第2个回答  2013-11-21
74HC595是具有8位移位寄存器和一个存储器,三态输出功能。 移位寄存器和存储器是分别的时钟。数据在SCHcp的上升沿输入,在STcp的上升沿进入的存储寄存器中去。如果两个时钟连在一起,则移位
寄存器总是比存储寄存器早一个脉冲。移位寄存器有一个串行移位输入(Ds),和一个串行输出
(Q7’),和一个异步的低电平复位,存储寄存器有一个并行8位的,具备三态的总线输出,当使
能 OE时(为低电平),存储寄存器的数据输出到总线。

74HC595各个引脚的功能:
Q1~7 是并行数据输出口,即储寄存器的数据输出口
Q7' 串行输出口,其应该接SPI总线的MISO接口
STcp 存储寄存器的时钟脉冲输入口
SHcp 移位寄存器的时钟脉冲输入口
OE的非 输出使能端
MR的非 芯片复位端
Ds 串行数据输入端

程序说明:
每当spi_shcp上升沿到来时,spi_ds引脚当前电平值在移位寄存器中左移一位,在下一个上升沿到来时移位寄存器中的所有位都会向左移一位,
同时Q7'也会串行输出移位寄存器中高位的值,
这样连续进行8次,就可以把数组中每一个数(8位的数)送到移位寄存器;
然后当spi_stcp上升沿到来时,移位寄存器的值将会被锁存到锁存器里,并从Q1~7引脚输出
第3个回答  2013-11-20
Q0--Q7应该可以悬空,输出是三态门;输入端、复位端、使能端等就不能悬空了,外部信号对其干扰会使其无法正常工作。串入串出/并出移位寄存器,将串行信号变成并行信号,或者串行输出。应该类似74164
第4个回答  2013-11-21
4HC595是具有8位移位寄存器和一个存储器,三态输出功能。 移位寄存器和存储器是分别的时钟。数据在SCHcp的上升沿输入,在STcp的上升沿进入的存储寄存器中去。如果两个时钟连在一起,则移位
寄存器总是比存储寄存器早一个脉冲。移位寄存器有一个串行移位输入(Ds),和一个串行输出
(Q7’),和一个异步的低电平复位,存储寄存器有一个并行8位的,具备三态的总线输出,当使
能 OE时(为低电平),存储寄存器的数据输出到总线。

74HC595各个引脚的功能:
Q1~7 是并行数据输出口,即储寄存器的数据输出口
Q7' 串行输出口,其应该接SPI总线的MISO接口
STcp 存储寄存器的时钟脉冲输入口
SHcp 移位寄存器的时钟脉冲输入口
OE的非 输出使能端
MR的非 芯片复位端
Ds 串行数据输入端
相似回答