74HC595是一个8位串行输入、并行输出的位移缓存器,其中并行输出为三态输出(即高电平、低电平和高阻抗)。芯片管脚及功能说明如下:
引脚说明
符号 | 引脚 | 描述 |
---|---|---|
Q0-Q7 | 15,1,7 | 8位并行数据输出 |
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,包含所有的移位寄存器状态移入 |
❌ | ⬆ | L | H | ❌ | NC | Qn' | 移位寄存器的内容到达保持寄存器并从并口输出 |
⬆ | ⬆ | L | H | ❌ | Q6' | Qn' | 移位寄存器内容移入,先前的移位寄存器的内容到达保持寄存器并输出 |
H=高电平状态 L=低电平状态 ⬆=上升沿 ⬇=下降沿 Z=高阻态 NC=无变化 ❌=无关系
当MR为高电平,OE为低电平时,数据在SHCP上升沿进入移位寄存器,在STCP上升沿输出到并行端口。
#include "reg51.h"
#include "intrins.h"
typedef unsigned char u8;
typedef unsigned int u16;
sbit SER = P3^4;
sbit RCLK = P3^5;
sbit SRCLK = P3^6;
void delay(u16 i)
{
while(i--);
}
void hc595sendbyte(u8 dat)
{
u8 i;
SRCLK=1;
RCLK=1;
for(i=0;i<8;i++)
{
//移位
SER=dat >> 7;
dat <<= 1;
SRCLK=0;
delay(10000);
SRCLK=1;
}
//储存
RCLK=0;
delay(10000);
RCLK=1;
}
void main()
{
u8 led;
led = 0xfe;
while(1)
{
hc595sendbyte(led);
led = _crol_(led,1);
delay(15000);
}
}