迪文科技论坛

 找回密码
 立即注册
搜索
查看: 103|回复: 0

【分享】2023级 胡万 苏嗣淼 RGB LED灯光控制和点阵showing设计

[复制链接]

1

主题

0

回帖

39

积分

新手上路

Rank: 1

积分
39
发表于 2026-9-3 17:01:40 | 显示全部楼层 |阅读模式
整个项目分为三大案例。
案例一:全彩 RGB LED 灯光颜色控制
案例二:点阵 Showing 设计
案例三:贪吃蛇游戏(创新部分)
【作品简介】

(一)利用 RGB LED 和迪文 EKT043E 开发板设计一个全彩 RGB LED 灯光颜色控制系统,满足以下要求:


1.屏幕具有开机画面,能够显示学校 LOGO 和标志性建筑、迪文公司 LOG、题目和队员信息等内容;
2.设计 RGB 控制界面:R、G、B 分量分别具有拖动调节和滑动刻度显示功能,并能够显示具体数值(0~255);
3.通过拖动调节实现 RGB LED 发出不同颜色灯光;
4.增加键盘输入功能,R、G、B 分量数值可通过键盘输入;
5.增加三个按键用于控制特定颜色发光:一个按钮控制显示红光,一个按钮控制显示蓝光,一个按钮控制显示绿光;
6.增加特定颜色发光功能;
此外,团队还添加了一个颜色流水功能。
(二)利用 MAX7219 点阵模块(四合一 8*32)和迪文串口屏开发板EKT043B,制作一个点阵 Showing 装置,满足以下要求:
1.利用 MAX7219 点阵模块实现数字 0-9 及大写英文字母 A-Z 的流水轮询显示;
2.利用 MAX7219 点阵模块实现精美图案的流水轮询显示,图案包括但不限于动态烟花、汽车模型、爱心和笑脸、HNNU 呼吸灯以及各种文字,可以根据实际情况自由发挥。
3.增设时钟:增加时间显示和时间调节界面,用四合一 MAX7219 点阵模块显示时间的时、分、秒,中间用冒号隔开;
4.设置多字母或数字录入功能,支持将录入的字母数字组合用 MAX7219点阵模块流水轮询展示;
此外,团队还添加了时钟倒计时、秒表计时复位等功能。
(三)(创新部分)利用MAX7219 点阵模块(四合一 8*32)和迪文串口屏开发板EKT043B,制作一个贪吃蛇游戏。

【工作原理】
(一)全彩RGB LED灯光颜色控制
1. RGBLED发光原理:RGBLED内部集成红、绿、蓝三颗独立LED灯珠,通过分别控制三路灯珠的导通电流大小,改变三种原色发光亮度,按照三原色混光原理混合得到不同色彩。
2. PWM脉冲宽度调制调光:单片机产生PWM方波,通过调节高/低电平占空比,控制红(R)、绿(G)、蓝(B)三色灯的平均导通时间。占空比越大,对应颜色亮度越高;R/G/B三个分量(0‑255)不同数值组合,实现成千上万种颜色输出。
3. 迪文串口屏交互原理:迪文EKT043B串口屏通过串口和单片机通信,屏幕上滑动条、数字输入框将R、G、B分量数值下发给单片机;单片机读取屏幕变量,根据数值输出对应PWM波形驱动RGB‑LED;同时把当前色彩状态回传给屏幕显示。
4. 定时器中断实现PWM:单片机定时器做定时中断,设置计数周期0‑255;计数值和R/G/B设置值对比,输出引脚电平翻转,模拟PWM输出,完成三色亮度调节。
(二)点阵Showing设计
1. MAX7219芯片原理:MAX7219是点阵驱动芯片,可驱动8×8点阵;多片级联可以扩展成更大点阵(本例8*32)。芯片使用DIN、CLK、CS三线串行通信。
2. 串行通信:单片机通过DIN引脚发送16bit数据包,CLK提供时钟,CS片选信号控制锁存;多片级联时,第一片芯片输出接到下一片DIN,数据依次移位,CS拉高后,所有芯片同时锁存数据,点阵同步刷新显示。
3. 字模显示原理:数字、字母、图案预先提取字模点阵码,存储在单片机数组。单片机把字模数据逐字节发送给MAX7219,控制点阵每一个LED点亮熄灭。
4. 迪文屏交互:迪文DGUS屏幕作为人机界面,输入文字、选择动画模式,通过串口把数据发送单片机;单片机接收输入内容,调用对应字模,循环刷新MAX7219点阵,实现滚动、静态、动画效果。
(三)贪吃蛇游戏
1. MAX7219点阵驱动原理
MAX7219是点阵显示驱动芯片,采用DIN、CLK、CS三线串行通信;多片级联可扩展点阵屏幕,单片机发送16bit数据包完成点阵的行、列寄存器配置,CS片选信号锁存显示数据,控制点阵每一个LED的亮灭,构成游戏显示画布。游戏画面(蛇身体、食物、边界)全部转换为点阵字模数据,发送至MAX7219驱动点阵硬件进行显示。
2. 迪文DGUS串口屏人机交互原理
迪文EKT043E串口屏作为游戏操作终端,通过触控按键输出方向指令(上、下、左、右、开始、暂停、重启),经由串口将方向控制命令下发给单片机;单片机把游戏状态(分数、游戏结束提示)回传给串口屏做文本显示。串口屏不负责画面渲染,只承担按键输入与分数信息显示,游戏画面输出由MAX7219点阵完成。
3. 贪吃蛇游戏逻辑原理
①蛇身使用数组存储每一节身体的点阵坐标;蛇按照设定方向持续移动,新的蛇头坐标生成,去除蛇尾坐标实现前进。
②食物随机生成在点阵空白位置;当蛇头坐标与食物坐标重合,代表吃到食物,蛇身数组增加一节,分数加1,再重新随机生成新食物。
③碰撞判定:蛇头触碰点阵边界、蛇头碰到自身身体,判定游戏结束。
④按键方向控制:接收串口屏方向指令,做方向合法性校验(禁止直接向反方向掉头,如向上时不能直接向下),更新移动方向。
4. 定时刷新机制
单片机定时器产生固定时间中断,周期性执行蛇移动逻辑,刷新MAX7219点阵画面;定时时间决定游戏速度,分数提升后可缩短定时周期,实现游戏难度提升。
【设计思路】
(一)全彩RGB LED灯光颜色控制
1.硬件搭建:迪文串口屏与STM32单片机串口相连;单片机IO引脚外接RGBLED,串联限流电阻保护灯珠。

2.界面设计(DGUS):在迪文DGUS软件制作UI界面,添加R、G、B三个滑动条、数字显示控件,绑定变量地址,用来设置、读取0‑255的三原色分量。
3.单片机程序框架系统初始化:IO口、串口、定时器初始化;循环读取迪文屏变量,获取R、G、B的设置数值;定时器中断服务函数做PWM计数,根据R/G/B数值输出对应占空比电平,驱动RGBLED;将当前R、G、B数值回传到屏幕,实现界面实时显示。
4。增加按键输入,按键修改R/G/B数值;设置功能按键,一键切换红色、绿色、蓝色、橙色、紫色等固定颜色模式。
(二)点阵Showing设计

1.硬件电路:迪文EKT043B串口屏单片机引脚连接MAX7219点阵模块的DIN、CLK、CS;模块5V供电,不需要额外驱动电阻。
2.DGUS界面设计:搭建显示界面,设置模式选择控件、文本录入框;绑定变量地址,实现模式选择(静态、滚动、雪花、爱心等)、文字输入,向单片机下发指令。
3.软件设计:
MAX7219底层驱动:编写写字节、写寄存器函数,完成芯片初始化,设置亮度、扫描界限、工作模式;
字模数组:预先制作数字0‑9、大写A‑Z、雪花、爱心、HNNU等图案的字模;
主循环:读取迪文屏变量,判断显示模式;读取屏幕输入的字符串,取出对应字模,调用MAX7219驱动,实现点阵静态显示或者流水滚动显示。
4.增加时钟计时功能,软件计时,在点阵模块显示时分秒;
5.增加文字录入功能,屏幕输入任意字符组合,点阵实现滚动输出;

(三)贪吃蛇游戏
1.硬件接线
单片机与迪文串口屏连接UART串口,实现指令下发和分数回传。
单片机IO口连接MAX7219点阵模块的DIN、CLK、CS引脚,多片MAX7219级联构成游戏显示点阵画布(例如8×32点阵),模块接5V电源。
2.DGUS串口屏界面设计
使用DGUS软件制作游戏控制界面:布置方向触控按键(上、下、左、右)、开始、暂停、重启按键;添加文本显示控件,用于显示当前得分、游戏结束提示;绑定对应变量地址,按键按下向单片机发送对应键值变量。
3.底层驱动编写
编写MAX7219驱动函数:单字节写入、寄存器写函数、芯片初始化函数,设置点阵亮度、扫描界限;封装画面刷新函数,将点阵缓冲区数据整体输出到MAX7219硬件。
2.游戏数据定义
定义蛇身坐标数组,记录蛇每一节身体的X、Y位置;定义方向变量、食物坐标、得分变量、游戏状态标志(运行/暂停/结束)。
开辟点阵显示缓冲区数组,游戏逻辑修改缓冲区,再统一调用MAX7219刷新函数输出画面。
3.主程序框架
①系统初始化:IO、串口、定时器、MAX7219初始化;游戏初始化,设置蛇初始长度、初始位置,随机生成第一个食物,分数清零。
②主循环:读取迪文串口屏的按键变量,解析方向、开始/暂停/重启指令;
③定时器中断服务函数:定时触发蛇移动逻辑,完成碰撞判断、吃食物逻辑,更新点阵缓冲区,调用MAX7219刷新画面;将分数回传给迪文串口屏显示。
④游戏结束逻辑:停止蛇移动,点阵显示游戏结束图案,串口屏显示得分与游戏结束提示,等待重启按键。
【演示视频】
串口屏RGB LED灯光颜色控制以及点阵设计-哔哩哔哩 https://b23.tv/ULRSPms
【附件上传】

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|迪文科技论坛 ( 京ICP备05033781号-1 )

GMT+8, 2026-9-18 13:38 , Processed in 0.036995 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表