笔记包括:①题目难点解析、②易出错点提示、③完整代码链接
注:本文提供的所有代码都是使用第十四届竞赛包完成
⭐系列文章链接⭐
【蓝桥杯单片机】十四届省赛“重难点”解析(附源码)
【蓝桥杯单片机】十三届省赛“重难点”解析(附源码)
【蓝桥杯单片机】十二届省赛“重难点”解析(附源码)
【蓝桥杯单片机】十一届省赛“重难点”解析(附源码)
一、题目难点解析
- 计数值+1触发条件:
解释
:注意题图,分析出计数累加的条件为——下降沿触发时——“实际电压值从高到低”且“经过参数电压”
方法
:设置两个变量,分别储存“最新电压值(smg_volt)”和“历史电压值(old_volt)”,
在定时器中每隔50ms判断一次“计数条件 if((smg_volt < param)) && (old_volt >param))”是否满足(此处param为参数电压值)
且要注意数值边界(当计数达到100时,计数值赋值0,从0开始重新计数)
注: 将“AD获取电压值函数”与“判断计数条件”都放在50ms定时器中刷新,将数码管显示放在10ms定时器中进行刷新,保证界面显示与数值更新的符合性能要求,否则会出现鬼影(这也是我第一次将数码管放在定时器中进行刷新)
二、易出错点提示
- E2PROM实现参数掉电存储功能:
解释
:使用IIC进行通信,代码与PCF8951相似。要注意:
①电压参数的存储是在退出参数界面后有效的
②设备每次上电后都要将E2PROM地址0中的数据作为电压参数
方法
:
①在参数界面–>技术界面时,调用AT24C02写入函数,将参数值写入地址0x00
②在系统初始化时,调用AT24C02读取函数,获取地址0x00所储存的参数电压值
- LED1状态控制:
解释
:
①“最新(实际)电压”小于“参数电压”,
我的理解是
:
假设参数电压为3.00V,那么第一次实际电压测量为1.20V时,开始5s计时,若满足则点亮L1
第二次实际电压测量为2.50V时,因为需要重新开始计时,故L1先熄灭,当满足5s时,再点亮
总的来说,即在每一个最新电压值处,都需要重新判断计数5s的条件,即使前一个值和当前值都满足小于参数值
如果不加smg_volt==old_volt的判断条件,那么L1将会在第一次小于参数值后的所有小于参数值却不满5s的实际值下保持亮(不满足题目所表示的每一个状态都需要满足超过5s)
②满足条件,LED1亮5s(定时器中操作)
方法
:5s计时条件:“最新电压值(smg_volt)”小于“参数电压值(param)”并且“最新电压值(smg_volt)”等于“上一次测量的电压值(old_volt)”
注: 标注的蓝色部分不可以颠倒顺序,因为old_volt所处语句顺序才能够实现所要求的功能。
第一个old_volt仍然是上一次的历史值,而第二个old_volt已经被最新的电压值赋值了!!!
三、完整代码链接
下面提供了11届蓝桥杯单片机省赛代码,依据小蜜蜂老师风格编写
网盘链接:11届蓝桥杯单片机省赛代码-饥饿的半导体(提取码:1111)
本文是在博主练习完部分省赛题目后总结的笔记
文章为本人对试题的观点,难免有所欠缺,欢迎大家在评论区里共同讨论