proteus仿真之51之74HC595之流水灯
74HC595A 由一个 8 位移位寄存器和一个 8 位具有三态并行输出的 D 型锁存器。移位寄存器接受串行数据并提供串行输出。移位寄存器也向 8 位锁存器提供并行数据。移位寄存器和锁存器有独立的时钟输入。该设备还具有异步复位移位寄存器。HC595A 直接与上的 SPI 串行数据端口连接CMOS MPU 和 MCU。
目录
1.封装类型
2.引脚分布
3.逻辑图
4.功能列表
SPI协议的三个引脚对应表
硬件引脚 | SPI引脚 |
---|---|
Shift Clock(11) | SCK |
Serial Input A(14) | DS |
Latch Clock(12) | CE |
4.1功能表—Shift data into shift register(数据写入移位寄存器,MSB->LSB)
SCK | R |
---|---|
DS | D |
CE | L,H,F |
R = RISING D = DATA F = FALLING L = LOW H=HIGH
4.2功能表—Transfer shift register contents to latch register(传送移位寄存器内容到锁存器)
SCK | L,H,F |
---|---|
DS | X |
CE | R |
X = 不关心
5.引脚说明(引脚名参考逻辑图)
引脚 | 说明 |
---|---|
INPUTS A (Pin 14)(DS) | 串行数据输入。该引脚上的数据被移入8 位串行移位寄存器。 |
CONTROL INPUTS Shift Clock (Pin 11)(SCK) | 移位寄存器时钟输入。低到高的过渡 此输入导致串行输入引脚上的数据被移位 进入 8 位移位寄存器。 |
Reset (Pin 10) | 低电平有效、异步、移位寄存器复位输入。该引脚上的低电平仅复位该器件的移位寄存器部分。 8 位锁存器不受影响。 |
Latch Clock (Pin 12)(CE) | 存储锁存时钟输入。此输入上的低到高转换会锁存移位寄存器数据。 |
Output Enable (Pin 13) | 低电平有效输出使能。该输入的低电平允许来自锁存器的数据呈现在输出端。此输入的高电平迫使输出 (QA-QH) 进入高阻抗状态。串行输出不受此控制单元的影响。 |
OUTPUTS QA – QH (Pins 15, 1, 2, 3, 4, 5, 6, 7) | 同相、三态、锁存输出。 |
SQH (Pin 9) | 同相串行数据输出。这是 8 位移位寄存器第 8 级的输出。此输出不具有三态功能。 |
6.51代码
代码效果:
D1-D8轮流点亮
#include <reg52.h>
#include <intrins.h>
sbit SCK = P2^1;
sbit DS = P2^0;
sbit LATCH = P2^2;
#define NOP _nop_()
void DelayX10us(unsigned int num);
void HC595SendData(unsigned char dat);
void main()
{
unsigned char LED=0XFE;
HC595SendData(0xFF);
while(1)
{
HC595SendData(LED);
LED <<= 1;
LED = LED|0x01;
if(LED == 0xFF)
LED=0xFE;
DelayX10us(50000);
}
}
void DelayX10us(unsigned int cnt)
{
do {
NOP;
NOP;
NOP;
NOP;
NOP;
NOP;
NOP;
NOP;
}while(cnt--);
}
void HC595SendData(unsigned char dat)
{
unsigned char i;
for( i=0;i<8;i++)
{
if((dat<<i)& 0x80) //最高位开始写入
DS =1;
else
DS = 0;
SCK =0; //写入移位寄存器
NOP;
NOP;
SCK = 1;
}
LATCH =0;
NOP;
NOP;
LATCH=1;
}