使用MicroPython控制MAX7219显示数字内容 - ESP8266/ESP32教程

本教程将详细介绍如何使用MicroPython库控制MAX7219模块,在ESP8266或ESP32开发板上实现数字内容显示。

1. 准备工作

首先需要准备以下硬件和软件:

硬件:

  • ESP8266开发板(例如NodeMCU)或者ESP32开发板
  • MAX7219模块
  • 杜邦线若干

软件:

  • MicroPython固件
  • ampy工具(用于上传代码到开发板)

2. 连接MAX7219模块

将MAX7219模块连接到开发板上。连接方式如下图所示:

连接MAX7219模块的方式

3. 编写代码

3.1 max7219.py

在电脑上新建一个文件,命名为max7219.py,将以下代码复制进去:

from machine import Pin, SPI
import time

class MAX7219():
    def __init__(self, spi, cs_pin, num_digits=8):
        self.spi = spi
        self.cs_pin = cs_pin
        self.num_digits = num_digits
        self.buffer = [0] * num_digits
        self._init()

    def _init(self):
        self.spi.init(baudrate=100000, polarity=1, phase=0)
        self.cs = Pin(self.cs_pin, Pin.OUT)
        self.cs.on()
        self._write_all(0x09, 0x00)  # decode mode: no decode
        self._write_all(0x0a, 0x03)  # intensity: medium
        self._write_all(0x0b, 0x07)  # scan limit: all digits
        self._write_all(0x0c, 0x01)  # shutdown: normal operation

    def _write_all(self, register, data):
        self.cs.off()
        for i in range(self.num_digits):
            self.spi.write(bytearray([register, data]))
        self.cs.on()

    def set_digit(self, index, value):
        self.buffer[index] = value

    def update(self):
        for i in range(self.num_digits):
            self.cs.off()
            self.spi.write(bytearray([i+1, self.buffer[i]]))
            self.cs.on()

    def clear(self):
        self.buffer = [0] * self.num_digits
        self.update()

代码解释:

  • MAX7219类:
    • 初始化函数__init__中的参数spi和cs_pin用于指定SPI总线和CS引脚的编号,num_digits用于指定数码管数量,默认为8个。
  • _init函数: 初始化MAX7219模块。
  • _write_all函数: 向所有数码管写入数据。
  • set_digit函数: 设置指定位置的数码管显示的数字。
  • update函数: 更新所有数码管的显示。
  • clear函数: 清除所有数码管的显示。

3.2 main.py

接下来,新建一个文件,命名为main.py,将以下代码复制进去:

from machine import Pin, SPI
import max7219
import time

spi = SPI(1, baudrate=100000, polarity=1, phase=0, sck=Pin(14), mosi=Pin(13))
display = max7219.MAX7219(spi, cs_pin=15, num_digits=4)

while True:
    for i in range(10000):
        display.set_digit(3, i % 10)
        display.set_digit(2, i // 10 % 10)
        display.set_digit(1, i // 100 % 10)
        display.set_digit(0, i // 1000 % 10)
        display.update()
        time.sleep(0.001)

代码解释:

  • 通过SPI总线初始化MAX7219模块。
  • 循环显示0~9999之间的数字。

4. 上传代码

使用ampy工具将max7219.py和main.py上传到开发板上。上传命令如下:

ampy -p /dev/ttyUSB0 put max7219.py
ampy -p /dev/ttyUSB0 put main.py

注意,/dev/ttyUSB0需要替换成实际的串口号。

5. 运行代码

重置开发板,代码就会开始运行,数码管会显示0~9999之间的数字。

6. 结束运行

按下开发板上的复位按钮,代码运行结束。

总结

本教程详细介绍了使用MicroPython控制MAX7219模块显示数字内容的步骤,并提供了一些示例代码。希望这篇文章能够帮助您快速上手,并能够在自己的项目中应用该模块。

使用MicroPython控制MAX7219显示数字内容 - ESP8266/ESP32教程

原文地址: https://www.cveoy.top/t/topic/nipe 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录