第九届蓝桥杯省赛:彩灯控制器
赛题:
1、基本功能描述
通过单片机控制8个LED指示灯按照特定的顺序(工作模式)亮灭;指示灯的流转间隔可通过按键调整,亮度可由电位器RB2进行控制;各工作模式的流转间隔时间需在E2PROM中保存,并可在硬件重新上电后,自动载入。
2、设计说明
1)关闭蜂鸣器、继电器等与本试题程序设计无关的外设资源。
2) 设备上电后默认数码管、LED指示灯均为熄灭状态。
3)流转间隔可调整范围为400ms-1200ms。
4)设备固定安照模式1、模式2、模式3、模式4的次序循环往复运行。
3、LED指示灯工作模式
1) 模式1:按照L1、L2...L8的顺序,从左到右单循环点亮。
2) 模式2:按照L8、L7...L1的顺序,从右到左单循环点亮。
3) 模式3:按照L8、L1同时向内点亮至L4、L5的顺序,从外向里单循环点亮
4) 模式4:按照L4、L5同时向外点亮至L1、L8的顺序,从里向外单循环点亮
4、亮度等级控制
检测电位器RB2的输出电压,控制8个LED指示灯的亮度,要求在0V~5V的可调区间内,实现4个均匀分布的LED指示灯亮度等级。
5、按键功能
1) 按键S7定义为"启动/停止"按键,按下后启动或停止LED的流转。
2)按键S6定义为"设置"按键,按键按下后数码管进入"流转间隔"设置界面,如下图所示:
通过按键S6可切换选择“运行模式”、“流转间隔”两个显示单元。当前被选择单元以0.8秒为间隔亮灭。
3) 按键S5定义为"加"按键,在设置界面下,按下该键,若当前选择的是运行模式,则运行模式编号加1,若当前选择的是流转间隔,则流转间隔增加100ms。
4)按键S4定义为"减"按键,在设置界面下,按下该键,若当前选择的是运行模式,则运行模式编号减1,若当前选择的是流转间隔,则流转间隔减少100ms。
5) 按键S4、S5的"加"、"减"功能只在"设置状态"下有效,数值的调整应注意边界属性。
6) 在非"设置状态"下,按键S4按键可显示指示灯当前的亮度等级,4个亮度等级从暗到亮,依次用数字1、2、3、4表示;松开按键S4,数码管显示关闭,亮度等级的显示格式如下图所示:
理解:
本届赛题主要在于各个界面的显示切换、各功能之间的协调整合以及定时器的使用。比如:如果不将数码管显示写在定时器里,整个功能的实现就比较麻烦了。
需要注意题目的各细节:模式循环往复运行,注意边界属性,各按键在何种情况下有效等等。
实现的功能主要为以下几种:
1、关闭无关外设,系统初始化
2、LED具有4种工作模式
3、由电位器控制LED亮度
4、流转间隔可更改
5、数码管显示(按照格式)
6、数码管0.8s闪烁
7、按键切换界面、模式
8、各运行模式的流转间隔记录
程序
原程序写了太多中文注释,复制后注释会变为大量乱码。因此,下方代码为主要代码的图片形式。
本文工程文件需从以下链接自取:
链接:https://pan.baidu.com/s/1Apj2HBhnjuKEdRSdiC4qBw?pwd=wdbr
提取码:wdbr
希望本篇文章能对你有所帮助。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构