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

349 阅读4分钟

        这一节我们学习如何使用我们的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五、点阵屏购买

某宝链接如下:

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

资料下载链接:

链接:pan.baidu.com/s/1FPt9TpAJ…  提取码: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铜柱固定

img img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上物联网嵌入式知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、电子书籍、讲解视频,并且后续会持续更新

如果你需要这些资料,可以戳这里获取