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(