物联网开发笔记(76)- 使用Micropython开发ESP32开发板之使用MAX7219驱动控制8x8LED点阵模块

        大家好,今天我们带大家一起再来复习一下8*8数码矩阵,在前面的章节中,我们已经给大家介绍过。今天呢,我们换一种方法来实现。

物联网开发笔记(24)- 使用Micropython开发ESP32开发板之控制8x8点阵屏_esp32 点阵屏_魔都飘雪的博客-CSDN博客使用Micropython开发ESP32开发板之控制8x8点阵屏https://blog.csdn.net/zhusongziye/article/details/127321303?spm=1001.2014.3001.5502一、目的

        这一节我们学习如何使用我们的ESP32开发板控制带MAX7219驱动的8x8LED点阵模块。

二、环境

        ESP32 + MAX7219驱动的8x8LED点阵模块 + Thonny IDE + 几根杜邦线 + Win10

接线方法:       

 三、代码

from machine import Pin
import time

# 准备数据引脚
pin_clk = Pin(14, Pin.OUT, value=1)  # 时钟,上升跳变时数据位移锁存
pin_cs  = Pin(15, Pin.OUT, value=1)  # 上升跳变时,数据全部推入锁存
pin_din = Pin(13, Pin.OUT, value=1)  # 待移入的数据

def write_byte(data):
    "按位移入数据"
    for i in range(8):
        pin_clk.off()
        pin_din.value(1 if ((data << i) & 0x80) else 0)  # 从高位开始送数据
        pin_clk.on()

def write_data(addr, data):
    "向模块写入地址与数据"
    pin_cs.off()
    write_byte(addr)
    write_byte(data)
    time.sleep_us(5)
    pin_cs.on()

def init_max7219(brightness):
    "初始化模块"
    write_data(0x0c, 0x00)  #关断处于关闭状态 
    write_data(0x0f, 0x00)  #不测试
    write_data(0x0b, 0x07)  #扫描所有位码
    write_data(0x0a, brightness)  #亮度0x00到0x0f
    write_data(0x09, 0x00)  #不译码
    write_data(0x0c, 0x01)  #关断处于显示状态 

# 定义数据与初始模块
time.sleep_ms(50)
col = [0x00, 0x66, 0x99, 0x81, 0x42, 0x24, 0x18, 0x00]  # 心形对应的LED

# 爱心灭到最亮,再从最亮到灭
def main():
    while True:
        for i in range(0x00,0x10,1):
            init_max7219(i)
            time.sleep(0.1)

            # 写图案
            for n in range(8):
                write_data(n+1, col[n])

        for i in range(0x0f,-0x00,-1):
            init_max7219(i)
            time.sleep(0.1)

            # 写图案
            for n in range(8):
                write_data(n+1, col[n])

if __name__=="__main__":
    main()

演示效果:

      

 四、参考资料

        感谢这位博主的精彩文章:

MicroPython-On-ESP8266——8x8LED点阵模块(3)使用MAX7219驱动_嗑烤队长的博客-CSDN博客MAX7219驱动数码管,单单从标注的引脚和典型驱动数码管的接线图来看,要用本芯片来驱动8x8DIG_0 ~ DIG_7,这8个引脚用来控制数码管的位码,我们驱动8x8点阵屏就对应来控制8个行管脚;SEG_A ~ SEG_G,SEG_DP,这8个段码的引脚,驱动8x8点阵屏就对应来控制8个列管脚。https://blog.csdn.net/fatway/article/details/127872884五、点阵屏购买

某宝链接如下:

https://item.taobao.com/item.htm?spm=a1z09.2.0.0.51c12e8dYG3V7k&id=522574893834&_u=4p01rch6916icon-default.png?t=N176https://item.taobao.com/item.htm?spm=a1z09.2.0.0.51c12e8dYG3V7k&id=522574893834&_u=4p01rch6916

资料下载链接:

链接:https://pan.baidu.com/s/1FPt9TpAJYvst42ufmPhhNA  提取码:zcz2 

产品特性:

        MAX7219是一种集成化的串行输入/输出共阴极显示驱动器,它连接微处理器与8位数字的7段数字LED显示,也可以连接条线图显示器或者64个独立的LED,占用微处理器资源少。其上包括一个片上的B型BCD编码器、多路扫描回路,段字驱动器,而且还有一个8*8的静态RAM用来存储每一个数据。只有一个外部寄存器用来设置各个LED的段电流,驱动能力强。MAX7219 的段驱动有回流限制可以减少EMI;MAX7219 的串行口(可达10MHz)和SPI兼容;每个数据可以寻址在更新时不需要改写所有的显示。MAX7219同样允许用户对每一个数据选择编码或者不编码。整个设备包含一个150μA的低功耗关闭模式,模拟和数字亮度控制,一个扫描限制寄存器允许用户显示1-8位数据,还有一个让所有LED发光的检测模式。

产品参数:

1.单个模块可以驱动一个8*8共阴点阵

2.模块工作电压:5V

3.模块尺寸:长5厘米X宽3.2厘米X高1.5厘米

4.带4个固定螺丝孔,孔径3mm,可使用本店M3铜柱固定

5.模块带输入输出接口,支持多个模块级联

使用说明:

VCC电源正5V;GND电源负;

DIN引脚串行数据输入口,在时钟上升沿时数据被载入内部的16位寄存器;

CS引脚片选端,该端为低电平时串行数据被载入移位寄存器,连续数据的后16位在CS端的上升沿时被锁定;

CLK引脚时钟数据输入端,最大速率为10MHz,在时钟的上升沿,数据被移入内部移位寄存器,下降沿时,数据从DOUT端输出;

DOUT引脚级联串行数据输出端,从DIN输入的数据在16.5个时钟周期后在此端有效,当使用多个MAX7219用此端方便扩展。

1.模块左边为输入端口,右边为输出端口;

2.控制单个模块时,只需要将输入端口接到CPU;

3.多个模块级联时,第1个模块的输入端接CPU,输出端接第2个模块的输入端,第2个模块的输出端接第3个模块的输入端,以此类推...

注意:

正确接线!切勿将正负接反,使板子电子器件烧毁。

  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

魔都飘雪

您的1毛奖励是我创作的源源动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值