文章目录
在前面的实验中,我们是直接使用单片机
IO
口控制外围设备,从
LED
流水灯到动态数码管显示,可以看到这些外围设备已经占据了很多的
IO
口,而 51单片机
IO
口非常有限,如果想要连接更多外围设备,此时可以通过
IO
扩展来实现。本节介绍一种
IO
口扩展方式-
串转并,使用的芯片是
74HC595
。开发板板载 1 个
74HC595
芯片,仅需单片机 3 个
IO
口即可扩展 8 个,如果需要还可以将 2 个
74HC595
级联扩展出 16 个
IO
,这就实现用少数
IO
资源控制多个设备。本节所实现的功能是:通过
74HC595
模块控制
LED
点阵以一行循环滚动显示。
一、74HC595 芯片介绍
74HC595
是一个 8 位串行输入、并行输出的位移缓存器,其中并行输出为三态输出(即高电平、低电平和高阻抗)。芯片管脚及功能说明如下:
上面两张都是 74HC595
芯片管脚图,可以发现左侧的 1 脚是 QB
,而右侧芯片的 1 脚是 Q1
,左侧芯片的 11 脚是 SCK
,而右侧芯片的 11 脚是SH_CP
,还有很多其他管脚不一样,其实这个都没有什么,每个人在绘制芯片管脚图时命名可能不一样而已,看一个芯片重点是管脚功能。
- 15 和 1 到 7 脚
QA--QH
:并行数据输出- 9 脚
QH 非
:串行数据输出,将第九脚连接到另一个 芯片的第十四脚,就通过级联进行了扩展- 10 脚
SCLK 非
( MR) : 低电平复位引脚- 11 脚
SCK
( SHCP) : 移位寄存器时钟输入- 12 脚
RCK
( STCP) : 存储寄存器时钟输入- 13 脚
G 非
( OE) : 输出有效- 14 脚
SER
( DS) : 串行数据输入
74HC595
是具有 8 位移位寄存器和一个存储器,三态输出功能。移位寄存器和存储器是单独的时钟。数据在 SCK
的上升沿输入,在 RCK
的上升沿进入到存储器中。如果两个时钟连在一起,则移位寄存器总是比存储器早一个脉冲。移位寄存器有一个串行输入(DS
),和一个串行输出(Q7 非
),和一个异步的低电平复位,存储寄存器有一个并行 8 位的,具有三态的总线输出,当 MR
为高电平,OE
为低电平时,数据在 SHCP
上升沿进入移位寄存器,在 STCP
上升沿输出到并行端口。
二、硬件设计
本实验使用到硬件资源如下:
8*8LED
点阵模块74HC595
模块
开发板上的 74HC595
模块电路如下图所示:
- 如果不使用595即不输出使能,可以用跳线帽将VCC与OE连接;如果使用595即输出使能,可以用跳线帽将OE与GND 连接。
从上图中可以看出,74HC595
需要用到的控制管脚 SER
、RCLK
、SRCLK
直接连接到 51 单片机的 P3.4-P3.6
IO
口上,输出端则是直接连接到 LED
点阵模块的行端口上,即为 LED
发光二极管的阳极,LED
点阵的列则为发光二极管的阴极。
要想控制 LED
点阵,可