首页 🥳笔记

请注意,本文编写于:2021-03-04,最后编辑于2天前,内容可能已经不具有时效性,请谨慎参考。

74HC595是一个8位串行输入、并行输出的位移缓存器,其中并行输出为三态输出(即高电平、低电平和高阻抗)。芯片管脚及功能说明如下:

引脚说明

符号引脚描述
Q0-Q715,1,78位并行数据输出
GND8
Q7'9串行数据输出
MR10主复位(低电平有效)
SHCP11移位寄存器时钟输入
STCP12储存寄存器时钟输入
OE13输出有效(低电平有效)
DS14串行数据输入
VCC16电源

功能表

功能
SHCPSTCPOEMRDSQ7'Qn
LLNCMR为低电平时仅仅影响移位寄存器
LLLL清空移位寄存器到输出寄存器
HLLZ清空移位寄存器,并行输出为高阻状态
LHHQ6'NC逻辑高电平移入移位寄存器状态0,包含所有的移位寄存器状态移入
LHNCQn'移位寄存器的内容到达保持寄存器并从并口输出
LHQ6'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);
    }

}



文章评论