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

转载请注明文章来源,更多教程可自助参考docs.tpyboard.com,QQ技术交流群:157816561,公众号:MicroPython玩家汇

前言

又是一年毕业季,只有到了毕业季才会意识到自己又离青春远了一大步。毕业后,大家都各奔东西了,如果这个时候有喜欢的人还是藏在心底的话,不免会给人生留下遗憾。为了不留遗憾,不老套,制作一款表白神器,是不是会更容易表白成功呢?

之前使用8*8LED点阵模块做过一款跳动的心,因为是直接用的点阵模块,所以控制就用了16个IO,未免有些繁琐,浪费资源。最近发现了一个好东西——MAX7219多位LED 显示驱动器。使用该驱动器加上点阵屏或者数码管,驱动起来特别方便简单,而且加上电源脚也不过就5根线而已。

MAX7219介绍

MAX7219 是美国MAXIM 公司推出的多位LED 显示驱动器,采用3 线串行接口传送数据,可直接与单片机接口连接,用户能方便修改其内部参数,以实现多位LED 显示。它内含硬件动态扫描电路、BCD译码器、段驱动器和位驱动器。此外,其内部还含有8X8 位静态RAM,用于存放8个数字的显示数据。显然,它可直接驱动64 段LED点阵显示器。当多片MAX7219 级联时,可控制更多的LED点阵显示器。显示的数据通过单片机数据处理后,送给MAX7219 显示。

引脚图:

当然了,直接拿到这个驱动器一时也不知道该怎么用,于是就直接买了现成的MAX7219驱动器结合8*8LED点阵屏模块。

看反面图可以看出,该模块不仅有DIN输入端口还有DOUT输出端口,用于多个模块级联。使用的单个模块时,开发板只接入模块的输入端口即可;当多个模块级联时,第一个模块的输出端口接第二个模块的输入端口,第二个输出端口接第三个输入端口,依次类推。

制作过程

话不多说了,马上动手实践起来。接线很简单,见下表:

TPYBoard v102MAX7219点阵模块
VINVCC
GNDGND
X3(普通IO都可)DIN
X2CS
X1CLK

 

 

 

 

 

 

 

 

 

TPYBoard v102开发板若没有使用过,附上链接看先了解下。http://docs.tpyboard.com/zh/latest/tpyboard/tutorial/v10x/sta
rt/

程序呈上:

主程序 main.py。

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

字库文件 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],#
}

模块驱动程序max7219.py就不在这里呈现了,文章末有链接,大家可以去下载。

演示效果

https://v.qq.com/x/page/n08814kmrfc.html

无线遥控升级版

这样虽然已经很炫了,不过加上无线遥控的效果是不是就更棒了。于是,找来了以前买的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 
 8 #CLK -> X1,CS -> X2,DIN -> X3
 9 #num级联的模块数量
10 led = MAX7219.Lattice('X1','X2','X3',num=1)
11 led.display('')                   #默认显示大心图案
12 while True:
13     if uart.any() > 0:              #any()返回串口缓存区的数据长度,返回值大于0即表示有数据
14         DATA = uart.read().decode() #读取缓存区全部数据,返回值为bytes,decode()转为字符串
15         led.display(DATA)           #进行显示

蓝牙串口调试助手(Android)下载地址:http://old.tpyboard.com/download/tool/164.html

表白神器源码下载地址:https://github.com/TPYBoard/TPYBoard-v102

转载于:https://www.cnblogs.com/xiaowuyi/p/10998537.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
小圈圈、小爱心、囧字脸……只要是你想得到的,表情矩阵都能摆给你看,是不是很Cool呢~如果你不幸见到心仪的女孩就舌头打结,不妨考虑这个哦~ 现在很流行汽车表情仪(16×16的LED阵列),淘宝上,固定几个表情的(非阵列)要150左右,可以自定义表情的,16×16的要200多小300块。感觉自己DIY一个成本很低,于是先做一个8×8的表情矩阵,汽车上装着太小了,可以放在上班时候的工位上。哈哈哈。一般控制LED阵列的话,每一片8×8的阵列,使用一片max7219(约5元1片,美信公司的芯片都是很贵的)矩阵控制,或者使用两片 74HC595锁存器(约0.5元1片)。我买好了两片74HC595,不过想到一片8×8的阵列理论上应该可以直接使用一个89c51来控制(89c51有32个数据脚,arduino脚不够),仿真实验成功,省下了1块钱(2片595),哈哈。下面是成品图及我录的视频,我自己画了6个图切换。你发挥想象,可以做出更多的图来。我断断续续地在2天时间里抽时间把它做出来的(仿真实验和原理图我在N天前就已经做好了。本次DIY手工实际估算花费焊接40分钟,调试1小时)。 1 工具和材料 ○ 8x8 LED阵列,淘宝购得,单价4.7元(后来在diytrade.com上发现,一次性买32片的话,只需要0.7元一片); ○ STC89C52RC单片机一片, 淘宝购得,单价3.7元; ○ 51最小系统板一个,淘宝购得,单价3.9(此为亏本赚信用价,现在卖家已经涨价到9.9元。另有5.8元价格的,小一些,没有串口和 232芯片,做工也差一个级别。不如买9.9元的系统划算。); ○ 洞洞板一片,淘宝购得,单价0.4元; ○ 点触开关一个,淘宝购得价格0.4元(一定要买带盖子的,手感要好很多); ○ FC插头,淘宝购得,10套价格2.5元。本实验需用掉4套插头,2套插座; ○ FC线,淘宝购得,100cm价格5元,本实验用掉了9厘米和11厘米各一段; ○ 200欧排阻一枚,淘宝购得,单价0.4元(图片中为8枚单阻,淘宝买,100枚价格1元。手头正好有个排阻,可以少焊7个脚,用上了); ○ 电池盒及1.2V电池四枚,自有; ○ 维修线,淘宝购得,20米价格2元(图中黑色圈的那个。就是很细的漆包线,当电线用); ○ 排针3P,淘宝购得,40P价格0.25元(上图中没有); ○ 40欧电阻一枚,自有,购买的话100枚1元(上图中没有,调试过程中发现需要降压,不然低电平不够低,不亮的点会有漏光) 2 在仿真软件上搭建原型,写程序代码,调试 ● 仿真实验原理图。 ● 我使用的是proteus,附件里Matrix_pure.rar压缩包里有仿真实验文件(.dsn)。如果你直接下载我的实验源代码包,此步骤就可以省略,直接烧录martrix_pure.hex到单片机里就可以了。 3 用万用表测量阵列的引脚,确定接线方式 ● 如果你买的也是1588abeg的话,上图是我量好的说明书。 ● 如果你使用万用表的二极管档来量这个阵列的话,vcc表示红表棒,gnd表示黑表棒。万用表的表棒接触到相应的管脚的时候,选中的某行某列就会亮起来。阵列显示通常是使用行扫描或列扫描。形象点解释扫描:假设先给阵列右上角的1接上vcc,然后,为左上角1到8脚分别接上vcc和gnd。如果接的是gnd,那和vcc就型成了回路,第1行的某个点这亮了起来。这个过程叫扫描一行。接下去扫描第2行,第3行 如果一秒钟超过30次全屏扫描的话,人眼就能看到静止的图象了。因为买到的阵列和仿真器里的阵列转了90度,所以实质上,本实验使用的是列扫描。^_^ ● 如果你买的阵列是带说明书的,此步骤可以省略。 4 选择一个最顺眼的方式摆放元件 ● 把元件都堆到板子上,布一下局,看怎么排放比较漂亮。 5 对照仿真实验的原理图,用线焊接 ● 用老虎钳把FC线做好,9cm和11cm各做一条。焊接的时候我使用的是线径0.1mm的电气维修线,不用刮漆,烙铁可以直接把漆皮烫掉,直接焊就行了。由于我的布局原因,这里交叉的线非常多。用这种线焊比较困难,肉眼看不出是不是漆皮被烫掉了,一不当心就会把两根线短路在一起了。你可以选择使用带皮的电线,或直接使用FC排线来焊接,以免象我这样。焊了好久才算成功。(或者把那两个FC头子放到下图左边,线的情况就会好很多了。我在焊线前,先把元件都焊在板子上了,没法拆下来,只能硬着头皮焊了。) 6 连上开发板,为单片机烧录程序,调试 ● 如果你烧录我的hex文件,你可以省略调试步骤,直接烧录就可以了。 ● 如果你没有51开发板,没关系,淘宝上买一条USB转232线,接上原件清单里的这个最小系统,使用STC公司官方的烧录程序就可以直接烧录了。由于仿真软件里的原件电气性能都是无穷强大的

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值