打印
[资料分享]

蓝桥杯单片机第九届省赛“彩灯控制器”源码及注释

[复制链接]
12478|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
转载自微信公众号“小蜜蜂科教”    我们的网友@ohy3686 个人公众号上关于“彩灯控制器”源码及注释,仅供参考!谢谢!


【题目要求】
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:
<4> 模式4:
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】数码管动态显示的基础函数。

【3】显示彩灯亮度等级函数。

【4】显示彩灯运行模式的设置。

【5】显示彩灯流转间隔的设置。

【6】初始化定时器0的函数。

【7】定时器0中断服务函数。

【8】24C02的字节读与字节写函数。

【9】读取PCF8591中电位器的电压数据。

【10】根据电位器的电压进行彩灯亮度控制。

【11】彩灯工作状态与模式切换函数。
  A-模式1的工作状态

B-模式2的工作状态

C-模式3与模式4的工作状态

D-4种工作模式的循环切换


【12】独立按键扫描与处理函数。
  A-按键S7的处理逻辑


按键S6的处理逻辑


按键S5的处理逻辑


按键S4的处理逻辑

【13】参数配置保存。


【14】系统初始化函数。


【15】最后就是主函数。


【特别提示】:上述程序的HEX可执行文件,可在群文件下载。


【特别注意】:在调用竞赛举办方提供的IIC总线接口底层驱动代码的时候,务必认真阅读代码文件,确保无误。另外,在读取PCF8591的模拟输入数据时,在代码正确的情况下,仍然无法获得准确数据,可以增大IIC驱动程序中的时序延时长度,即“iic.h”文件中的somenop

相关帖子

沙发
一叶倾城wwq| | 2019-3-22 11:44 | 只看该作者
占座,看这delay,确认是教学代码

使用特权

评论回复
板凳
lzdestiny| | 2019-3-22 17:37 | 只看该作者
支持下

使用特权

评论回复
地板
619888476| | 2019-3-22 21:19 | 只看该作者
看看

使用特权

评论回复
5
小小电子爱好者| | 2019-3-24 07:40 | 只看该作者
今天开赛   祝愿考生成绩优异!!!!

使用特权

评论回复
6
lihui567| | 2019-5-31 23:33 | 只看该作者
这代码写的非常工整阿,教学版的学习非常给力,挺好的

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1104

主题

7317

帖子

149

粉丝