MicroPython-On-ESP8266——8x8LED点阵模块(2)使用74HC595驱动

本文介绍了使用74HC595芯片驱动8x8LED点阵屏的方法,包括原理讲解、电路连接及MicroPython代码实现。通过级联两片74HC595芯片,实现对16个GPIO的控制,从而控制8x8LED点阵屏显示图案。

MicroPython-On-ESP8266——8x8LED点阵模块(2)使用74HC595驱动

1. 使用74HC595驱动的原理

1.1. 基础回顾

上篇我们学习了8x8LED点阵屏的电路基础知识和驱动的原理,见

8x8LED点阵模块(1)驱动原理

里面也提到了,咱们nodemcu开发板的GPIO引脚不够,只能借助74HC595、MAX7219此类IC来完成点阵屏的驱动。这里咱们先从74HC595开始来实验。

数码管的使用,2片HC595驱动四位数码管

595芯片的基础原理前面文章也有做过介绍,这里还是再笼统回顾一下。

1.2. 74HC595如何使用

595输入端只需要3个GPIO,却可以输出8个GPIO状态,其实咱们就理解为把GPIO管脚扩充了。

在这里插入图片描述
动画演示595工作原理

注:
1、这个动图不是我做的,也不清楚来源,但确实很形象。如有侵权请私信通知删除,感谢原作者!
2、图上有个错误的地方,大家要留意。DS串行口推入数据的次序是Q0 -> Q1 -> Q2 -> Q3 -> Q4 -> Q5 -> Q6 -> Q7 -> Q7S(溢出位) 。如果只送了8位过去,第一个移入的位状态最终会移到Q7,最后一个移入的状态位最终停留在Q0。也就是先送高位。上图锁存器对应的引脚顺序要反向过来才对。

实际使用时,时钟引脚每跳变(先变成高电平再变回低电平)一次,就把输入数据引脚DS的状态送入位移寄存器,想送入多少个随自己定。送完位移数据后,让锁存引脚跳变一下,把位移寄存器的值整体推入锁存器,从而让输出GPIO能保持住想要的状态。

仔细品味一下上面的动图,一定要理解串入并出是怎么实现的。^_^

1.3. 多个74HC595级联使用

既然一个595能有8个GPIO输出,那咱们要控制8x8LED点阵的16个引脚,就只需要两片595就行了。595还能无限级联实现串行,本片先入先出的状态值会经过Q0位移到Q7再溢出到Q7S管脚,把Q7S接入到下一片595的DS输入数据引脚作为输入端,就能实现级联了。

在这里插入图片描述

不管级联了多少片,把每片的时钟引脚和锁存引脚都短接在一起,这样咱们在开发板上指定两个GPIO引脚统一进行位移跳变和锁存跳变。

也就是说按照上图来说我想要一次性控制4片75HC595的输出状态,相对于在最左侧给DS(SER)引脚要输入4*8=32个状态位,每一个状态位输入完中间进行一下位移引脚跳变,所有状态位向右移动一次。

  • 第一个状态位,经历过32次位移后,电平状态移动到了第4片74HC595的QH(Q7)位移寄存器
  • 第二个状态位,经历过32-1次位移后,电平状态移动到了第4片74HC595的QG(Q6)位移寄存器
  • 依次。。。
  • 最后一个(第32个)状态位,位移1次,输出到了第1片74HC595的QA(Q0)位移寄存器

大家排队往前走,32个小伙伴都就位后,锁存引脚跳变一下。大家集体上位进入对应的锁存寄存器,

2. 74HC595实操接线

基本电路图:

在这里插入图片描述

电路图比较简洁,因为把led的16个管脚用标签的形式来对应了,没有直接进行连线,要不然会交叉的很厉害,没法看。

锁存GPIO位与点阵管脚连接顺序表:

锁存IC 管脚 控制对象 点阵屏管脚
U1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值