SM74HC595D芯片的8位串行输入/输出和并行输出特性详解

SM74HC595芯片是一款8位串行输入/输出或者并行输出移位寄存器,它具有高阻关断状态和三态输出的特性。以下是关于SM74HC595芯片的更详细的特性描述:

1. 8位串行输入:该芯片可以接受8位串行数据输入。

2. 8位串行或并行输出:数据可以以串行或并行的方式从芯片中输出。

3. 存储状态寄存器,三种状态:芯片内有一个存储状态寄存器,它可以在三种不同的状态之间进行切换。

4. 输出寄存器可以直接清除:输出寄存器的内容可以直接被清除。

5. 100MHz的移位频率:该芯片可以在高达100MHz的频率下进行数据移位操作。

6. 并行输出,总线驱动:芯片支持并行输出,并且可以驱动总线。

7. 中等规模集成电路:SM74HC595是一款中等规模集成电路。

此外,SM74HC595芯片还常被用于串行到并行的数据转换,以及作为遥控保持寄存器使用。

在描述方面,SM74HC595是一款高速的硅结构CMOS器件,它兼容低电压TTL电路,并遵守JEDEC标准。芯片内部包含一个8位移位寄存器和一个存储器,具有三态输出功能。移位寄存器和存储器的工作是依赖于各自独立的时钟信号的。数据在SCHcp的上升沿输入,并在STcp的上升沿进入存储寄存器。如果两个时钟信号被连接在一起,那么移位寄存器总是会比存储寄存器早一个脉冲。

SM74HC595D

SM74HC595D工作原理

1、SM74HC595的数据端:

QA--QH:八位并行输出端,可以直接控制数码管的8个段。

QH‘:级联输出端。我将它接下一个595的SI端。

SI:串行数据输入端。

2、SM74HC595的控制端说明:

/SCLR(10脚):低电平时将移位寄存器的数据清零。通常我将它接Vcc。

SCK(11脚):上升沿时数据寄存器的数据移位。QA--》QB--》QC--》。。。--》QH;下降沿移位寄存器数据不变。(脉冲宽度:5V时,大于几十纳秒就行了。我通常都选微秒级)

3、控制移位寄存器

SCK上升沿数据移位SCK下降沿数据保持

RCK(12脚):上升沿时移位寄存器的数据进入存储寄存器,下降沿时存储寄存器数据不变。通常我将RCK置为低电平,当移位结束后,在RCK端产生一个正脉冲(5V时,大于几十纳秒就行了。我通常都选微秒级),更新显示数据。

4、控制存储寄存器

RCK上升沿移位寄存器的数据进入存储寄存器RCK下降沿存储寄存器数据不变

/G(13脚):高电平时禁止输出(高阻态)。如果单片机的引脚不紧张,用一个引脚控制它,可以方便地产生闪烁和熄灭效果。比通过数据端移位控制要省时省力。

SM74HC595D

SM74HC595D

注:

1)74164和74595功能相仿,都是8位串行输入转并行输出移位寄存器。74164的驱动电流(25mA)比74595(35mA)的要小,14脚封装,体积也小一些。

2)SM74HC595的主要优点是具有数据存储寄存器,在移位的过程中,输出端的数据可以保持不变。这在串行速度慢的场合很有用处,数码管没有闪烁感。

3)与74hc164只有数据清零端相比,74hc595还多有输出端时能/禁止控制端oe,可以使输出为高阻态。所以是用这块芯片会更方便

4)SM74HC595是具有8位移位寄存器和一个存储器,三态输出功能。移位寄存器和存储器是分别的时钟。数据在SHcp(见时序图)的上升沿输入,在STcp(见时序图)的上升沿进入的存储寄存器中去。如果两个时钟连在一起,则移位

5)寄存器总是比存储寄存器早一个脉冲。移位寄存器有一个串行移位输入(Ds),和一个串行输出(Q7’),和一个异步的低电平复位,存储寄存器有一个并行8位的,具备三态的总线输出,当使能OE时(为低电平),存储寄存器的数据输出到总线。

  • 15
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是STC89C52RC的C语言代码,实现串口数据接收并显示在数码管上: ```c #include <reg52.h> //包含STC89C52RC芯片的头文件 #define uchar unsigned char //定义uchar为无符号字符型 sbit LATCH=P2^2; //定义LATCH锁存器接口 sbit SCLK=P2^1; //定义SCLK时钟接口 sbit DS=P2^0; //定义DS数据接口 uchar code LedChar[]={ //定义数码管显示字符集 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f, 0x77,0x7c,0x39,0x5e,0x79,0x71 }; void delay_ms(unsigned int i) //延时函数,单位毫秒(ms) { unsigned int j,k; for(j=0;j<i;j++) for(k=0;k<125;k++); } void Write595(uchar dat) //595写入数据函数 { uchar i; for(i=0;i<8;i++) { SCLK=0; //SCLK置0 if(dat&0x80) DS=1; //DS置1 else DS=0; //DS置0 dat<<=1; SCLK=1; //SCLK置1 } LATCH=0; //LATCH置0 LATCH=1; //LATCH置1,595输出数据 } void UartInit() //串口初始化函数 { TMOD=0x20; //设置定时器1工作在模式2,8位定时器,自动重装载 TH1=0xfd; //设置定时器1初值,波特率为9600bps TL1=0xfd; TR1=1; //启动定时器1 SM0=0; //设置串口工作在模式1,8位数据,波特率可变 SM1=1; REN=1; //启用串口接收 EA=1; //开启总中断 ES=1; //开启串口中断 } void Uart() interrupt 4 //串口中断函数 { static uchar i; if(RI) { RI=0; //接收到数据,RI置0 i=SBUF; //将接收到的数据存入i中 Write595(LedChar[i-'0']); //将i对应的数码管显示字符写入595 } } void main() { UartInit(); //串口初始化 Write595(0x00); //数码管初始化,全部清0 while(1); } ``` 代码中使用了一个595芯片作为数码管的驱动器,并且定义了一个数码管显示字符集`LedChar`。在`Write595()`函数中,使用了三个引脚`LATCH`、`SCLK`、`DS`来控制595芯片的工作,将要显示的字符写入595芯片中。在串口中断处理函数`Uart()`中,使用了`SBUF`寄存器来接收串口发送的数据,将接收到的数据对应的数码管显示字符写入595芯片中,实现串口数据接收并在数码管上显示的功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值