1.作品介绍
- 硬件部分:
使用32*32 P5 RGB LED 屏,HUB接口,1/16扫描,之前淘宝 20块买了两块,没事就拿出来玩玩又放回去,一直没有把这个做成实用的
HUB75 复制
- ┌─────────┐
- │ R1 G1 │ MTX_PR0 MTX_PG0
- │ B1 GND │ MTX_PB0
- │ │
- │ R2 G2 │ MTX_PR1 MTX_PG1
- └┐B2 GND │ MTX_PB1
- │ │
- ┌┘A0 A1 │ MOVE_IOA MOVE_IOB
- │ A2 AEX │ MOVE_IOC MOVE_IOD
- │ │
- │ CLK LOCK│ MTX_PCLK MTX_PLOCK
- │ OE GND │ MTX_POE
- └─────────┘
[color=rgb(51, 102, 153) !important]复制代码
显示原理:
32X32 RGB LED被分为 上下2部分 上半部分有R1 G1 B1输入信号,下半部分由R2 G2 B2输入信号,每部分16横行,由A0 A1 A1 A3,选择一行显示,通过串行输入RGB信号32次,显示一行, 重复16次,利用人眼视觉暂留效应,刷新频率大于60HZ,就可以全屏扫描显示,控制LED颜色,要么是电流控制需要每个灯都是独立控制,节约成本PWM控制,R255 G255 B255 8位 显示颜色,LED灯只有开关状态,我们需要在每横行显示增加PWM控制,即显示横行时,将RGB值分为8Bit,循环显示8次,每次延时时长2^N递减,依次类推 就可以显示灰度图
接线定义 复制
- MTX_PR0———->PA0
- MTX_PB0———->PA1
- MTX_PG0———->PA2
- MTX_PR1———->PE8
- MTX_PB1———->PE9
- MTX_PG1———->PE10
- MTX_PCLK ——->PB0
- MTX_PLOCK——->PB1
- MTX_POE ——->PB2
- MOVE_IOA———->PC0
- MOVE_IOB———->PC1
- MOVE_IOC———->pc2
- MOVE_IOD———->PC3
[color=rgb(51, 102, 153) !important]复制代码
注意: MTX_POE IO口此位置焊接一个 10K上拉电阻,避免烧录程序时乱信号输入显示,电流过大导致坏点,别问我怎么知道到 软件部分 - 使用RT-thread 不适合刷RGB 点阵屏,中断太多耗时,但是比赛要求使用,只能修改代码了
- 一个主线程,2个定时器,空闲线程,控制台线程,系统OS tick 50HZ 20ms中断一次
- 空闲线程:用钩子函数调用,LED显示部分,内部直接调用寄存器控制IO输出,中断锁上,避免中断导致显示高亮闪烁,
- 定时器1:每秒 控制台输出显示帧率,需要时开启,70HZ左右
- 定时器2:20MS 扫描依次按键, KEY1 切换显示DEMO KEY2 切换DEMO内图片,KEY3 开关显示
- 动画取模可以到这个网站抓包解析数据 https://pixel.divoom-gz.com/#/
- 淘宝有对应产品卖
2.创新性 - 好像没啥创新点,都是参考别人到设计代码,我只是综合利用罢了,
- 本人一直想用STM32驱动32X32点整屏 ESP8266后台访问网页,爬取divoom的图片,显示到这个屏幕上,或者直接PoJie divoom APP设置显示
- 还有一个比较好玩到开源应用,利用重力感应,屏幕小点随机碰撞显示,不过别人是用ZYNQ+FPGA做的
3.实用性 - divoom 点音别人已经做成产品了,
- P5 32X32淘宝上也有卖,放在车后
4.技术性
|