使用74HC595目的是节省IO口,那么它是如何做到的呢?就是通过将MCU的一个IO口(数据输出引脚)输出的串行数据转换成并行数据,转换后的并行数据再通过74HC595的引脚输出到片外外设,所以使用时我们需要将MCU寄存器中的并行数据(通常是一个字节)首先转换成串行数据,放置到MCU的一个数据引脚上,然后74HC595对这个引脚上的电平进行采样,移位寄存后再次转换成串行数据。所以你有没有发现一个关键的步骤:MCU数据输出引脚上的电平需要依据MCU寄存器的字节数据进行变化!!!所以你如果直接对ser赋值,只能不断的往外送出同一个字节数据!!!
1.3 74HC595 简介74HC595 它是一个芯片,是一个 8 位串行输入、并行输出的移位缓存器,那么它的功能就是将串行数据转化为并行数据,它的内部具有八位移位寄存器和一个存储器,还有三态输出功能。如下图所示 由上图可知,输入数据的最低位和 Q7 是对应的、最高位和 Q0 是对应的。
那么下面就讲一下我们的 74HC595 芯片应该怎么使用。首先说一下 MR 复位端 这个端口是主复位端口,引脚名称 MR 上面有一根横线代表是低电平有效,当它为低电平时它可以将移位寄存器内的数据进行清零。通常我们把它接到 VCC 目的是防止数据的清零。 第二个端口是 DS 端口,这个端口与我们的 MCU 相连接,通过这个端口我们将串行数据传入到移位寄存器当中
下面的是 SHCP 端口,这个端口是移位寄存器时钟输入,在它的上升沿时将输入的串行数据移入到移位寄存器当中;需要注意的是:它是一个移位寄存器,也就是说当下一个脉冲到来时,上一个脉冲移入的数据就会往下进行移位。如果我们串行数据输入 8 比特数据,那么 8 比特数据输入完之后,第一位输入的数据就会自动移到最后面;如果我们一次输入的数据超过 8 比特,那么最前面输入的数据就会通过 Q7S 端口输出,这个端口与下一个 74HC595 芯片的 DS 端口相连接,就相当于先前输入的数据会输入到下一个 74HC595 芯片当中
当我们的串行数据都输入到 74HC595 芯片之后怎么控制它的输出呢? 我们的 74HC595 芯片,它的内部有一个八位存储寄存器,它由 STCP 这个信号控制它,叫存储寄存器时钟;在存储寄存器时钟的上升沿时,74HC595 芯片会将移位寄存器当中的数据写入到我们的存储寄存器当中
当我们的输出使能信号 OE 为有效的低电平时,74HC595 芯片就将存储寄存器当中的数据通过 Q0、Q1、Q2、……、Q7 这八个端口传输出去
这八个端口就与我们的片外外设相连接,这样就完成了串行输入到并行输出的一个转换,这就是我们的 74HC595 芯片。 |