|
【MicroPython】LAB04 - MAX7219 8x8 点阵驱动
[复制链接]
本帖最后由 slotg 于 2016-7-9 11:41 编辑
MAX7219 是一颗 LED 的显示芯片,可以驱动 8 位的数码管或是 8x8 点阵,芯片使用了 SPI 接口的控制方式,这个 LAB 就是要使用 MicroPython 板上的 SPI 接口来控制一片 MAX7219 8x8 点阵模块。
MicroPython 上有 2 组 SPI 接口:
我们使用第 1 组也就是 X6、X8 这一组,由于只使用到了 MOSI 功能,因此将 X7 定义为 MAX7219 的 CS 控制管脚。
- spi = pyb.SPI(1, pyb.SPI.MASTER, bits=8, firstbit=pyb.SPI.MSB, crc=None)
- MAX7219_CS = Pin('X7', Pin.OUT_PP)
复制代码
程序中定义了 send_data(reg, dta) 函数实现将资料写入 MAX7219 寄存器的功能:
- def send_data(reg, dta):
- MAX7219_CS.low()
- spi.send(reg)
- spi.send(dta)
- MAX7219_CS.high()
复制代码
这次的 LAB 是在 8x8 点阵模块上循环显示一个点阵动画,完整程序如下:
main.py
- # main.py LAB04
- from pyb import SPI
- from pyb import Pin
- ########################################################
- def send_data(reg, dta):
- MAX7219_CS.low()
- spi.send(reg)
- spi.send(dta)
- MAX7219_CS.high()
- ########################################################
- def MAX7219_Init():
- send_data(0x09,0)
- send_data(0x0a,8)
- send_data(0x0b,7)
- send_data(0x0c,1)
- send_data(0x0f,0)
- for i in range(1, 9):
- send_data(i,0)
- ########################################################
- # DOT display pattern
- pattn = [[0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00],
- [0x00, 0x00, 0x3C, 0x24, 0x24, 0x3C, 0x00, 0x00],
- [0x00, 0x7E, 0x42, 0x42, 0x42, 0x42, 0x7E, 0x00],
- [0xFF, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0xFF]]
- spi = pyb.SPI(1, pyb.SPI.MASTER, bits=8, firstbit=pyb.SPI.MSB, crc=None)
- MAX7219_CS = Pin('X7', Pin.OUT_PP)
- MAX7219_CS.high()
- MAX7219_Init()
- while True:
- for i in range (4):
- for j in range (8):
- send_data(j+1,pattn[i][j])
- pyb.delay(200)
复制代码
演示视频:
【MicroPython】LAB01 - 流水灯
【MicroPython】LAB02 - 流水灯2
【MicroPython】LAB03 - GPIO 输入
|
赞赏
-
1
查看全部赞赏
-
|