使用micropython编写max7219模块的控制程序来动态显示字母和数字
以下是使用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 著作权归作者所有。请勿转载和采集!