芯片介绍:74HC595N

芯片介绍:74HC595N

​ 74HC595N是单片机系统中应用极为广泛的常用芯片,核心功能为将串行输入信号转换为并行输出信号,常被用于数码管、点阵屏等外设驱动。借助该芯片,仅需占用单片机3个I/O端口,即可实现对8路输出引脚的控制,大幅节约宝贵的I/O口资源;同时芯片自带一定的驱动能力,可省去三极管等外部放大电路,简化硬件设计,因此在各类嵌入式项目中应用十分普遍。

一、引脚功能介绍

image-20260522191037047

引脚编号 引脚名 引脚定义功能
1、2、3、4、5、6、7、15 QA~QH 三态输出引脚
8 GND 电源地
9 QH` 串行数据输出引脚
10 ^SRCLR 移位数据清零端(低电平清零)
11 SRCLK 数据输入时钟线
12 RCLK 输出存储器锁存时钟线
13 ^OE 输出使能(低电平可以输出)
14 SER 串行数据输入端
16 Vcc 电源端

引脚说明:

  • 1~7、15号引脚,引脚名称 QA~QH,一共8个引脚,其作用是八位并行数据的输出端。
  • 8号引脚 GND,接地引脚。
  • 9号引脚 QH`,串行数据的输出引脚,通常将它接下一个 74HC595N 的 SER 端。
  • 10号引脚 ^SRCLR,移位寄存器清零端口,低电平时将移位寄存器的数据清零,通常设计电路时将它接 Vcc。
  • 11号引脚 SRCLK,数据输入时钟线,上升沿时数据寄存器的数据移位,下降沿时移位寄存器数据不变,控制 14 号引脚(串行数据输入端),依次一位一位往 74HC595N 内部传送数据,数据在 74HC595N 内部的移位方向:QA --> QB --> QC --> ... --> QH,因此,在传送一个字节的数据时,应先发送该字节数据的高位数据。在供电 5V 时,脉冲宽度应大于19纳秒。
  • 12号引脚 RCLK,输出存储器锁存时钟线。上升沿时输出存储器发送数据,下降沿时输出存储器数据不变。此引脚主要用于控制八位并行数据的传输端向外发送数据。
  • 13号引脚 ^OE,输出使能端,高电平时禁止输出(高阻态)。通常设计电路时将它接GND,如果单片机的引脚够用,可用一个引脚控制它,可以方便地产生闪烁和熄灭效果,比通过数据端移位控制要省时省力。
  • 14号引脚 SER,串行数据输入端,在11号引脚 SRCLK(数据输入时钟线)控制下,从最高位开始依次往 74HC595N 内部传输数据。
  • 15号引脚Vcc,电源端。
image-20260522193533518

二、74HC595N 芯片功能描述

​ 74HC595N 是8 位串行输入、并行输出的移位寄存器 + 锁存器,属于高速 CMOS 逻辑芯片,常用于扩展单片机 IO 口,实现串口转并口输出,驱动 LED、继电器等,是电子设计最常用的 IO 扩展芯片。

内部分为两部分:

  1. 8 位移位寄存器:接收串行数据,逐位移入
  2. 8 位存储锁存器:缓存移位寄存器数据,统一输出
  3. 三态输出缓冲:可禁止输出

工作原理

  1. 串行移位SER输入 1bit 数据,SRCLK上升沿将数据移入移位寄存器,连续发 8 次,完成 8 位数据移入。
  2. 锁存输出RCLK上升沿,将 8 位移位寄存器数据一次性送入锁存器,从QA~QH并行输出。
  3. 级联扩展QH'接下一片SER,多片级联可扩展为 16、24… 位输出。
  4. 复位^SRCLR拉低,清空移位寄存器。
  5. 输出禁止^OE拉高,所有并行输出变为高阻,低电平输出有效。

关键时序逻辑

  • 数据在SRCLK 上升沿移入
  • 输出在RCLK 上升沿更新
  • 移位与输出相互独立:移位时不影响当前输出,锁存瞬间更新全部输出

三、74HC595N 芯片使用步骤

芯片仅需占用单片机3个IO口,即可完成8路信号控制,是节约IO资源的核心关键。

14号引脚(SER)——串行数据输入端:连接单片机数据控制IO口,所有需要输出的8位数据,均通过该引脚逐位传入芯片内部。

11号引脚(SRCLK)——移位时钟端:连接单片机时钟控制IO口,为数据移位提供时钟脉冲。时钟信号上升沿触发数据移位,下降沿时内部数据保持不变。

12号引脚(RCLK)——锁存时钟端:连接单片机锁存控制IO口,负责将芯片内部移位完成的8位数据,统一锁存并向外输出。

image-20260522230010691

image-20260522230212903

基于74HC595N的数码管驱动程序实现

在8个数码管上同时显示数字0程序:

#include<reg52.h>
sbit P_HC595_SER = P2^7;
sbit P_HC595_RCLK = P2^5;
sbit P_HC595_SRCLK = P2^6;

/* 给 74HC595N 发送数据子程序 */
void Send_595(unsigned char dat)
{
  unsigned char i;
  for(i = 0;i < 8;i++)
  {
	if(dat & 0x80)          /* 判断最高位数据 */
	{
	  P_HC595_SER = 1;      /* 如果最高位是1,就把1通过14引脚(SER)发送给 74HC595N */
	}
	else
	{
	  P_HC595_SER = 0;      /* 否则就把0通过14引脚(SER)发送给 74HC595N */
	}
	P_HC595_SRCLK = 0;
	P_HC595_SRCLK = 1;      /* 74HC595N 的11引脚出现上升沿 */
	dat = dat << 1;         /* 右移1位 */
  }
}

/* 数码管显示子程序 */
void DisplayScan()
{
  Send_595(0x00);           /* 发送位选数据,选中8个数码管同时显示 */
  Send_595(0x3f);           /* 发送段选数据,在8个数码管上同时显示数字0 */ 
  P_HC595_RCLK = 0;      
  P_HC595_RCLK = 1;         /* 74HC595N 的12号引脚出现上升沿 */
}
posted @ 2026-05-22 23:21  Q&25  阅读(8)  评论(0)    收藏  举报