本帖最后由 安小芯 于 2022-4-14 17:43 编辑
基于RT-Thread和N32G457的RGB点阵屏 作品出处:RT-Thread 作者:**の我手中 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
└─────────┘
显示原理:
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
注意: 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.技术性
|