网上的大神已经完成了MAX7219驱动点阵屏的程序, 参考网址 https://github.com/stechiez/raspberrypi-pico/tree/main/pico_max7219
首先下载 max7219.py 到 PICO 的/lib 目录下, 然后把作者提供的 范例文件 test_max7129.py 下载到根目录. 推荐使用Thonny编辑和下载.
1. 硬件连接
其中Max7219的VCC接Pin40(即VBUS)这是5V输出端口. GND互联, CLK-->GPIO2, DIN-->GPIO3, CS-->GPIO5.
2. 软件测试
import max7219
from machine import Pin, SPI
from time import sleep
spi = SPI(0, baudrate=10000000, polarity=1, phase=0, sck=Pin(2), mosi=Pin(3))
ss = Pin(5, Pin.OUT)
msg = 'STechiezDIY'
length = len(msg)
length = (length*8)
display = max7219.Matrix8x8(spi, ss, 4)
display.brightness(1) # adjust brightness 1 to 15
display.fill(0)
display.show()
sleep(0.5)
while True:
for x in range(32, -length, -1):
display.text(msg ,x,0,1)
display.show()
sleep(0.10)
display.fill(0)
这个是驱动8*8点阵屏. 这里没有显示图案的实现.
3. 拓展
在网上的一个博客中作者在PYBoard上实现了蓝牙控制点阵屏显示求爱的程序实现.
MicroPython:基于TPYBoard集合MAX7219点阵模块制作表白女神神器【附源码】_小小的森_51CTO博客
作者的MAX7219驱动程序和这里的不同, 具体可以参考
这里借用他弄好的一个字体文件 font_max7219.py
FONT8_8= {
'0':[0x3C,0x42,0x42,0x42,0x42,0x42,0x42,0x3C],#0
'1':[0x10,0x18,0x14,0x10,0x10,0x10,0x10,0x10],#1
'2':[0x7E,0x2,0x2,0x7E,0x40,0x40,0x40,0x7E],#2
'3':[0x3E,0x2,0x2,0x3E,0x2,0x2,0x3E,0x0],#3
'4':[0x8,0x18,0x28,0x48,0xFE,0x8,0x8,0x8],#4
'5':[0x3C,0x20,0x20,0x3C,0x4,0x4,0x3C,0x0],#5
'6':[0x3C,0x20,0x20,0x3C,0x24,0x24,0x3C,0x0],#6
'7':[0x3E,0x22,0x4,0x8,0x8,0x8,0x8,0x8],#7
'8':[0x0,0x3E,0x22,0x22,0x3E,0x22,0x22,0x3E],#8
'9':[0x3E,0x22,0x22,0x3E,0x2,0x2,0x2,0x3E],#9
'A':[0x8,0x14,0x22,0x3E,0x22,0x22,0x22,0x22],#A
'B':[0x3C,0x22,0x22,0x3E,0x22,0x22,0x3C,0x0],#B
'C':[0x3C,0x40,0x40,0x40,0x40,0x40,0x3C,0x0],#C
'D':[0x7C,0x42,0x42,0x42,0x42,0x42,0x7C,0x0],#D
'E':[0x7C,0x40,0x40,0x7C,0x40,0x40,0x40,0x7C],#E
'F':[0x7C,0x40,0x40,0x7C,0x40,0x40,0x40,0x40],#F
'G':[0x3C,0x40,0x40,0x40,0x40,0x44,0x44,0x3C],#G
'H':[0x44,0x44,0x44,0x7C,0x44,0x44,0x44,0x44],#H
'I':[0x7C,0x10,0x10,0x10,0x10,0x10,0x10,0x7C],#I
'J':[0x3C,0x8,0x8,0x8,0x8,0x8,0x48,0x30],#J
'K':[0x0,0x24,0x28,0x30,0x20,0x30,0x28,0x24],#K
'L':[0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x7C],#L
'M':[0x81,0xC3,0xA5,0x99,0x81,0x81,0x81,0x81],#M
'N':[0x0,0x42,0x62,0x52,0x4A,0x46,0x42,0x0],#N
'O':[0x3C,0x42,0x42,0x42,0x42,0x42,0x42,0x3C],#O
'P':[0x3C,0x22,0x22,0x22,0x3C,0x20,0x20,0x20],#P
'Q':[0x1C,0x22,0x22,0x22,0x22,0x26,0x22,0x1D],#Q
'R':[0x3C,0x22,0x22,0x22,0x3C,0x24,0x22,0x21],#R
'S':[0x0,0x1E,0x20,0x20,0x3E,0x2,0x2,0x3C],#S
'T':[0x0,0x3E,0x8,0x8,0x8,0x8,0x8,0x8],#T
'U':[0x42,0x42,0x42,0x42,0x42,0x42,0x22,0x1C],#U
'V':[0x42,0x42,0x42,0x42,0x42,0x42,0x24,0x18],#V
'W':[0x0,0x49,0x49,0x49,0x49,0x2A,0x1C,0x0],#W
'X':[0x0,0x41,0x22,0x14,0x8,0x14,0x22,0x41],#X
'Y':[0x41,0x22,0x14,0x8,0x8,0x8,0x8,0x8],#Y
'Z':[0x0,0x7F,0x2,0x4,0x8,0x10,0x20,0x7F],#Z
'大':[0x00,0x66,0xFF,0xFF,0x7E,0x3C,0x18,0x00],#大心
'小':[0x00,0x00,0x66,0x7E,0x3C,0x18,0x00,0x00],#小心
'中':[0x8,0x7F,0x49,0x49,0x7F,0x8,0x8,0x8],#中
'国':[0xFE,0xBA,0x92,0xBA,0x92,0x9A,0xBA,0xFE],#国
}
将 msg = 'LOVE大小' 前面的示例文件改成这一句,测试一下大心和小心的显示效果.
接下来的问题就是如何移植这个驱动到PICO的问题了.