查看: 2040|回复: 0

[项目] MicroPython:基于TPYBoard集合MAX7219点阵模块制作表白女神神器

[复制链接]
  • TA的每日心情
    慵懒
    2018-1-6 09:01
  • 签到天数: 7 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    发表于 2019-6-10 17:00:59 | 显示全部楼层 |阅读模式
    分享到:
    前言
    又是一年毕业季,只有到了毕业季才会意识到自己又离青春远了一大步。毕业后,大家都各奔东西了,如果这个时候有喜欢的人还是藏在心底的话,不免会给人生留下遗憾。为了不留遗憾,不老套,制作一款表白神器,是不是会更容易表白成功呢?
    之前使用8*8LED点阵模块做过一款跳动的心,因为是直接用的点阵模块,所以控制就用了16个IO,未免有些繁琐,浪费资源。最近发现了一个好东西——MAX7219多位LED 显示驱动器。使用该驱动器加上点阵屏或者数码管,驱动起来特别方便简单,而且加上电源脚也不过就5根线而已。

    MAX7219介绍
    MAX7219 是美国MAXIM 公司推出的多位LED 显示驱动器,采用3 线串行接口传送数据,可直接与单片机接口连接,用户能方便修改其内部参数,以实现多位LED 显示。它内含硬件动态扫描电路、BCD译码器、段驱动器和位驱动器。此外,其内部还含有8X8 位静态RAM,用于存放8个数字的显示数据。显然,它可直接驱动64 段LED点阵显示器。当多片MAX7219 级联时,可控制更多的LED点阵显示器。显示的数据通过单片机数据处理后,送给MAX7219 显示。
    引脚图:
    引脚图.jpg
    当然了,直接拿到这个驱动器一时也不知道该怎么用,于是就直接买了现成的MAX7219驱动器结合8*8LED点阵屏模块。
    实物图.jpg 反面.jpg
    看反面图可以看出,该模块不仅有DIN输入端口还有DOUT输出端口,用于多个模块级联。使用的单个模块时,开发板只接入模块的输入端口即可;当多个模块级联时,第一个模块的输出端口接第二个模块的输入端口,第二个输出端口接第三个输入端口,依次类推。
    制作过程
    话不多说了,马上动手实践起来。接线很简单,见下表:
    TPYBoard v102MAX7219点阵模块
    VINVCC
    GNDGND
    X3(普通IO都可)DIN
    X2CS
    X1CLK

    TPYBoard v102开发板若没有使用过,附上链接看先了解下。
    程序呈上:
    主程序 main.py。
    1. import MAX7219 #导入模块

    2. #CLK -> X1,CS -> X2,DIN -> X3
    3. #num级联的模块数量
    4. led = MAX7219.Lattice('X1','X2','X3',num=1)
    5. #要显示的内容,显示的内容根据字库文件而定,见font_max7219.py。
    6. #大家也可以自定义图案添加上。
    7. msg = 'LOVE大小'

    8. while True:
    9.     #显示
    10.     led.display(msg)
    复制代码

    字库文件 font_max7219.py。
    1. FONT8_8= {
    2.     '0':[0x3C,0x42,0x42,0x42,0x42,0x42,0x42,0x3C],#0
    3.     '1':[0x10,0x18,0x14,0x10,0x10,0x10,0x10,0x10],#1
    4.     '2':[0x7E,0x2,0x2,0x7E,0x40,0x40,0x40,0x7E],#2
    5.     '3':[0x3E,0x2,0x2,0x3E,0x2,0x2,0x3E,0x0],#3
    6.     '4':[0x8,0x18,0x28,0x48,0xFE,0x8,0x8,0x8],#4
    7.     '5':[0x3C,0x20,0x20,0x3C,0x4,0x4,0x3C,0x0],#5
    8.     '6':[0x3C,0x20,0x20,0x3C,0x24,0x24,0x3C,0x0],#6
    9.     '7':[0x3E,0x22,0x4,0x8,0x8,0x8,0x8,0x8],#7
    10.     '8':[0x0,0x3E,0x22,0x22,0x3E,0x22,0x22,0x3E],#8
    11.     '9':[0x3E,0x22,0x22,0x3E,0x2,0x2,0x2,0x3E],#9
    12.     'A':[0x8,0x14,0x22,0x3E,0x22,0x22,0x22,0x22],#A
    13.     'B':[0x3C,0x22,0x22,0x3E,0x22,0x22,0x3C,0x0],#B
    14.     'C':[0x3C,0x40,0x40,0x40,0x40,0x40,0x3C,0x0],#C
    15.     'D':[0x7C,0x42,0x42,0x42,0x42,0x42,0x7C,0x0],#D
    16.     'E':[0x7C,0x40,0x40,0x7C,0x40,0x40,0x40,0x7C],#E
    17.     'F':[0x7C,0x40,0x40,0x7C,0x40,0x40,0x40,0x40],#F
    18.     'G':[0x3C,0x40,0x40,0x40,0x40,0x44,0x44,0x3C],#G
    19.     'H':[0x44,0x44,0x44,0x7C,0x44,0x44,0x44,0x44],#H
    20.     'I':[0x7C,0x10,0x10,0x10,0x10,0x10,0x10,0x7C],#I
    21.     'J':[0x3C,0x8,0x8,0x8,0x8,0x8,0x48,0x30],#J
    22.     'K':[0x0,0x24,0x28,0x30,0x20,0x30,0x28,0x24],#K
    23.     'L':[0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x7C],#L
    24.     'M':[0x81,0xC3,0xA5,0x99,0x81,0x81,0x81,0x81],#M
    25.     'N':[0x0,0x42,0x62,0x52,0x4A,0x46,0x42,0x0],#N
    26.     'O':[0x3C,0x42,0x42,0x42,0x42,0x42,0x42,0x3C],#O
    27.     'P':[0x3C,0x22,0x22,0x22,0x3C,0x20,0x20,0x20],#P
    28.     'Q':[0x1C,0x22,0x22,0x22,0x22,0x26,0x22,0x1D],#Q
    29.     'R':[0x3C,0x22,0x22,0x22,0x3C,0x24,0x22,0x21],#R
    30.     'S':[0x0,0x1E,0x20,0x20,0x3E,0x2,0x2,0x3C],#S
    31.     'T':[0x0,0x3E,0x8,0x8,0x8,0x8,0x8,0x8],#T
    32.     'U':[0x42,0x42,0x42,0x42,0x42,0x42,0x22,0x1C],#U
    33.     'V':[0x42,0x42,0x42,0x42,0x42,0x42,0x24,0x18],#V
    34.     'W':[0x0,0x49,0x49,0x49,0x49,0x2A,0x1C,0x0],#W
    35.     'X':[0x0,0x41,0x22,0x14,0x8,0x14,0x22,0x41],#X
    36.     'Y':[0x41,0x22,0x14,0x8,0x8,0x8,0x8,0x8],#Y
    37.     'Z':[0x0,0x7F,0x2,0x4,0x8,0x10,0x20,0x7F],#Z
    38.     '大':[0x00,0x66,0xFF,0xFF,0x7E,0x3C,0x18,0x00],#大心
    39.     '小':[0x00,0x00,0x66,0x7E,0x3C,0x18,0x00,0x00],#小心
    40.     '中':[0x8,0x7F,0x49,0x49,0x7F,0x8,0x8,0x8],#中
    41.     '国':[0xFE,0xBA,0x92,0xBA,0x92,0x9A,0xBA,0xFE],#国
    42. }
    复制代码
    模块驱动程序max7219.py就不在这里呈现了,文章末有链接,大家可以去下载。
    演示效果
    效果图.jpg

    无线遥控升级版
    这样虽然已经很炫了,不过加上无线遥控的效果是不是就更棒了。于是,找来了以前买的HC-05(HC-06也一样)蓝牙模块,结合一下整上。
    蓝牙模块的连接线:

    TPYBoard v102HC-05/06蓝牙模块
    VINVCC
    GNDGND
    Y1RX
    Y2TX

    其他文件不用动,改动下main.py,增加上串口读写操作即可。
    1. import MAX7219 #导入模块
    2. from pyb import UART
    3. #初始化串口参数,使用串口6 波特率9600 超时时间50毫秒
    4. #串口6 TX->Y1 RX->Y2
    5. #其他串口对应的引脚编号详见针脚图:http://old.tpyboard.com/document/documents/10x/TPYBoardv10xPCBpng.pdf
    6. uart = UART(6,9600,timeout=50)

    7. #CLK -> X1,CS -> X2,DIN -> X3
    8. #num级联的模块数量
    9. led = MAX7219.Lattice('X1','X2','X3',num=1)
    10. led.display('大')                   #默认显示大心图案
    11. while True:
    12.     if uart.any() > 0:              #any()返回串口缓存区的数据长度,返回值大于0即表示有数据
    13.         DATA = uart.read().decode() #读取缓存区全部数据,返回值为bytes,decode()转为字符串
    14.         led.display(DATA)           #进行显示
    复制代码



    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条



    手机版|小黑屋|与非网

    GMT+8, 2024-11-22 06:20 , Processed in 0.113416 second(s), 16 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.