51单片机-驱动74HC595芯片实现IO口扩展模块教程
本章概述思维导图:
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); //延时480msHC595_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个引脚信号实现控制)
制作不易!喜欢的小伙伴给个小赞赞!喜欢我的小伙伴点个关注!有不懂的地方和需要的资源随时问我哟!