以下是使用micropython编写的max7219模块的控制程序,可以动态显示字母和数字:

from machine import Pin, SPI
import time

# 定义max7219的控制命令
MAX7219_DECODE_MODE = 0x09
MAX7219_INTENSITY = 0x0a
MAX7219_SCAN_LIMIT = 0x0b
MAX7219_SHUTDOWN = 0x0c
MAX7219_DISPLAY_TEST = 0x0f

# 定义字母和数字的编码
alphabet = {
    'A': 0x77, 'B': 0x7f, 'C': 0x39, 'D': 0x3f, 'E': 0x79, 'F': 0x71,
    'G': 0x3d, 'H': 0x76, 'I': 0x06, 'J': 0x1e, 'K': 0x76, 'L': 0x38,
    'M': 0x55, 'N': 0x37, 'O': 0x3f, 'P': 0x73, 'Q': 0x67, 'R': 0x33,
    'S': 0x6d, 'T': 0x78, 'U': 0x3e, 'V': 0x1c, 'W': 0x2a, 'X': 0x76,
    'Y': 0x6e, 'Z': 0x5b
}

numbers = {
    '0': 0x3f, '1': 0x06, '2': 0x5b, '3': 0x4f, '4': 0x66, '5': 0x6d,
    '6': 0x7d, '7': 0x07, '8': 0x7f, '9': 0x6f
}

# 定义SPI总线和max7219的引脚
spi = SPI(1, baudrate=10000000, polarity=0, phase=0)
ss = Pin(15, Pin.OUT)

# 初始化max7219模块
def init_max7219():
    ss.value(1)
    spi.write(bytes([MAX7219_SCAN_LIMIT, 0x07]))
    spi.write(bytes([MAX7219_DECODE_MODE, 0x00]))
    spi.write(bytes([MAX7219_SHUTDOWN, 0x01]))
    spi.write(bytes([MAX7219_INTENSITY, 0x0f]))
    spi.write(bytes([MAX7219_DISPLAY_TEST, 0x00]))
    ss.value(0)

# 在max7219上显示一个字符
def show_char(char, pos):
    if char in alphabet:
        code = alphabet[char]
    elif char in numbers:
        code = numbers[char]
    else:
        code = 0x00
    ss.value(1)
    spi.write(bytes([pos + 1, code]))
    ss.value(0)

# 在max7219上显示一段文本
def show_text(text):
    for i in range(len(text)):
        show_char(text[i], i)

# 测试程序
init_max7219()
while True:
    show_text('HELLO')
    time.sleep(1)
    show_text('12345')
    time.sleep(1)
``

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

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