littlebot
Published on 2025-04-10 / 20 Visits
0

【源码】基于Arduino的HUB75显示器驱动系统

项目简介

本项目是一个基于Arduino的库,可借助Arduino UNO风格的开发板控制32x16的HUB75显示器。该库利用双缓冲帧缓冲区实现8色(3位)显示,能有效避免闪烁,使Arduino UNO在资源有限的情况下也可驱动HUB75显示器。

项目的主要特性和功能

  1. 绘图功能丰富:支持绘制基本图形,可进行单个像素的读写,能绘制任意线条、填充和未填充的矩形,具备黑、红、黄、绿、青、品红、蓝、白8种颜色。
  2. 文本显示:拥有5x7的位图字体,可在显示器上书写文本。
  3. 动画与滚动效果:通过以合适速率重绘缓冲区,可实现简单的动画和滚动效果。
  4. 双更新模式:提供两种更新显示的方法,手动调用update()方法显示较亮但亮度不一致;使用硬件定时器在中断服务例程(ISR)中调用update()方法,更新时间更一致,显示更稳定。
  5. 坐标系统灵活:可通过函数指针修改X/Y坐标系,方便调整原点位置,也可将面板旋转90或270度。

安装使用步骤

硬件连接

该库使用Uno的12个引脚驱动HUB75显示器,6个颜色输出引脚在AVR硬件端口D上按顺序排列,以加快颜色数据的移入速度。具体引脚对应关系如下: | AVR Port | AVR Pin | Arduino UNO Pin | HUB75 Display | Description |
| :---: | :---: | :---: | :---: | --- |
| D | 2 | 2 | R1 | Red 1 (upper half red) |
| D | 3 | 3 | G1 | Green 1 (upper half green) |
| D | 4 | 4 | B1 | Blue 1 (upper half blue) |
| D | 5 | 5 | R2 | Red 2 (upper half red) |
| D | 6 | 6 | G2 | Green 2 (upper half green) |
| D | 7 | 7 | B2 | Blue 2 (upper half blue) |
| B | 0 | 8 | A | Row 'A' select |
| B | 1 | 9 | B | Row 'B' select |
| B | 2 | 10 | C | Row 'C' select |
| B | 3 | 11 | CLK | bit clock for shifting in color data |
| B | 4 | 12 | LAT | Latch shift register |
| B | 5 | 13 | OE | Output enable (active low) |

若需重新分配引脚,需编辑panel_impl.hpanel.cpp文件。

软件使用

  1. 实例化对象:创建Uno_HUB75_Driver类的成员实例。
  2. 初始化:调用begin()方法,该方法有两个参数(有默认值),第一个参数定义是否从Timer 2 ISR调用更新方法,第二个参数定义坐标转换方法。
  3. 绘制内容:使用库提供的原语在面板上“绘制”,或逐像素绘制。绘制完成后,调用draw()方法将工作帧缓冲区复制到输出帧缓冲区,防止显示闪烁。
  4. 更新显示:定期调用update()方法,可在Timer 2 ISR中调用(推荐),也可在应用程序的主循环中调用。若使用ISR方法,需在代码中添加如下内容: ISR(TIMER2_COMPA_vect, ISR_BLOCK) { panel.update(); }panel替换为实际使用的类实例名称。

下载地址

点击下载 【提取码: 4003】【解压密码: www.makuang.net】