51单片机-驱动74HC595芯片实现IO口扩展模块教程

发布于:2025-08-19 ⋅ 阅读:(20) ⋅ 点赞:(0)

本章概述思维导图:

51单片机驱动74HC595芯片实现IO口扩展

74HC595芯片简介

74HC595是一款8位串行输入、并行输出的移位寄存器,属于硅结构的CMOS器件。它能将串行输入数据转换为并行输出,其中并行输出为三态输出(即高电平、低电平和高阻抗)。广泛应用于单片机系统的I/O扩展,尤其使用于驱动数码管,LED矩阵等显示设备。74HC595芯片实物图如下:

74HC595核心特性:

        三态输出:支持高电平、低电平和高阻抗三种输出状态。

        高速移位:最高移位频率可达100MHZ(5V供电时)。    

        低功耗:典型静态电路仅4微安

        级联能力:通过串行输出引脚(Q7’)可级联多个芯片,扩展输出端口。

        锁存功能:内置存储寄存器,确保数据在移位过程种输出稳定。

74HC595芯片的引脚定义与功能  

引脚号

符号

功能描述

1-7,15

Q0-Q7

8位并行数据输出端,可直接控制数码管的段选或LED矩阵的行列。

9

Q7'

串行数据输出端,用于级联下一级74HC595的DS引脚。

10

MR

主复位引脚(低电平有效),复位移位寄存器,通常接VCC防止误触发。

11

SHCP

移位时钟输入(上升沿触发数据移位),控制数据向左移动一位。

12

STCP

锁存时钟输入(上升沿触发数据锁存),将移位寄存器数据存入输出寄存器。

13

OE

输出使能引脚(低电平有效),高电平时输出为高阻态,用于控制输出状态。

14

DS

串行数据输入端,接收来自单片机的串行数据。

16

VCC

电源正极(通常接5V)。

8

GND

电源地。


74HC595芯片实现IO口扩展硬件电路原理图分析

74HC595芯片实现IO口扩展硬件电路原理图分析:

首先观察将74HC595芯片的VCC引脚、GND引脚、OE引脚引出一个编号为J24的座子,这是为了方便驱动74HC595芯片,要是74HC595芯片工作需使跳线帽将OE引脚和GND引脚进行连接;不工作时,需使跳线帽将OE引脚与VCC引脚进行连接;原理:OE使能引脚(低电平有效);

74HC595芯片的SRCLR复位引脚与VCC进行连接;原理:SRCLR是低电平复位,为了防止误触,通常与VCC进行连接;

74HC595芯片的RCLK存储寄存器时钟引脚与MCU的P35引脚进行连接,分析P35引脚为74HC595芯片提供一个存储寄存器的时钟信号;

74HC595芯片SRCLK移位寄存器时钟引脚与MCU的P36引脚进行连接,分析P36引脚为74HC595芯片提供一个移位寄存器的时钟信号;

74HC595芯片的QA~QH为并行输出脚,与开发板的8*8点阵LED灯DPa~DPh行引脚进行连接;

74HC595芯片的QH'为串行输出脚,功能用于级联下一级74HC595芯片实现控制;

MCU的P0端口(P00~P07)引脚连接8*8点阵LED灯的列引脚实现LED灯阴极控制;

(电路原理图中的引脚定义单词与文中引脚定义介绍处不一样,是因为每个厂商生产的74HC595芯片定义引脚时都有自己的风格;小伙伴们不用深究啦,引脚功能都是一样滴,只是名字不一样啦!)

总结:通过电路原理图我们可分析出我们只用使用MCU的3个I/O口通过74HC595芯片就可实现8个I/O口的输出。74HC595是I/O口的扩展利器!74HC595芯片传输时MCU输入方向是高位->低位,对应输出方向是QH~QA;


74HC595芯片实现IO口扩展驱动8*8点阵LED软件编程设计

利用74HC595芯片实现IO口扩展驱动8*8点阵LED灯循环点灯软件编程

第一步:首先我们要函数封装74HC595传输数据函数;先将MCU数据串行输入到移位寄存器中,(传输数据方向为:高位->低位),在将移位寄存器中一字节数据传输给存储寄存器中并行输出;注意点:74HC595芯片传输数据是在上升沿时发送数据,传送时间延时时间为纳秒级别,这里我们用10us代替;

第二步:8*8点阵LED灯的阴极被MCU的P0端口控制,我们给P0端口写入0x00;在计算8*8点阵LED灯的阳极控制点亮八行八种状态,将八种状态存储到数组中方便使用;

第三步:在主函数中实现循环点亮;

代码示例:

#include "reg52.h"
typedef unsigned char u8;
typedef unsigned int u16;
void Delay_10us(u16 us)//微秒延时函数:输入1大概延时时间为10us
{
	while(us--);
}
void Delay_ms(u16 ms) //毫秒延时函数:输入1大概延时时间为1ms
{
	u16 i,j;
	for(i=ms;i>0;i--)
	{
		fot(j=110;i>0;j--)
		{
		
		}
	}
}
sbit SER=P3^4;        //74HC595串行输入
sbit TRCLK=P3^5;      //74HC595存储寄存器时钟
sbit SRCLK=P3^6;      //74HC595移位寄存器时钟
#define LED_DZ P0     //宏定义LED点阵阴极端口

void HC595_out(u8 temp)//函数封装:74HC595芯片IO口扩展输出
{
	u8 i=0;
	for(i=0;i<8;i++)
	{
		SER=temp>>7;   //取最高位
		temp<<=1;	   //左移一位
		SRCLK=0;       //移位时钟为低电平
		Delay_10us(1); //延时10us(上升沿触发)
		SRCLK=1;       //移位时钟为高电平,一位数据发送完成
		Delay_10us(1);
	}
	TRCLK=0;           //存储时钟为低电平
	Delay_10us(1);     //延时:上升沿的过程
	TRCLK=1;           //存储时钟为高电平,一字节数据传输完成
	Delay_10us(1);
}
u8 LED_zl[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
int main()															 
{	
	LED_DZ=0x00;
  	while(1)
	{
		u8 i=0;
		for(i=0;i>8;i++)
		{
			HC595_out(LED_zl[i]);
			Delay_10us(50000);        //延时480ms
			HC595_out(0x00);          //消影
		}
	}
}

74HC595芯片实现IO口扩展驱动8*8点阵LED灯循环点灯效果展示

74HC595芯片实现IO口扩展驱动8*8点阵LED灯


74HC138和74HC595区别

74HC138和74HC595是两种功能迥异的数字逻辑芯片,以下是它们的核心区别:

功能上的区别:

74HC138:3-8线译码器
将3位二进制输入(A0-A2)转换为8路互斥的低电平有效输出(Y0-Y7),实现“3选1”的译码功能。

74HC595:8位串入并出移位寄存器
将串行数据转换为并行输出,支持级联扩展,用于I/O口扩展或数据缓冲。

工作原理:

74HC138:
当使能引脚(E1=0, E2=0, E3=1)有效时,根据A0-A2的3位二进制输入,唯一选定一个输出引脚(如A0-A2=000时,Y0为低电平,其余为高电平)。
典型应用:地址译码、多路选择器、LED矩阵行驱动。

74HC595:
串行数据通过DS引脚输入,在移位时钟(SHCP)上升沿逐位移入8位移位寄存器,随后通过锁存时钟(STCP)上升沿将数据同步到输出寄存器,更新Q0-Q7的并行输出。
典型应用:数码管段选扩展、LED点阵列驱动、传感器数据缓冲。

(个人心得:74HC138和74HC595都是三个MCU的I/O引脚控制芯片输出8个脚,74HC138是在同一时刻选中8个引脚中其中一个引脚实现选择,74HC595是在同一时刻输出8个引脚信号实现控制)


制作不易!喜欢的小伙伴给个小赞赞!喜欢我的小伙伴点个关注!有不懂的地方和需要的资源随时问我哟!


网站公告

今日签到

点亮在社区的每一天
去签到