【蓝桥杯单片机】十一届省赛“重难点”解析(附源码)

【蓝桥杯单片机】十一届省赛“重难点”解析


笔记包括:①题目难点解析、②易出错点提示、③完整代码链接
本文提供的所有代码都是使用第十四届竞赛包完成

⭐系列文章链接⭐
【蓝桥杯单片机】十四届省赛“重难点”解析(附源码)
【蓝桥杯单片机】十三届省赛“重难点”解析(附源码)
【蓝桥杯单片机】十二届省赛“重难点”解析(附源码)
【蓝桥杯单片机】十一届省赛“重难点”解析(附源码)


一、题目难点解析

  1. 计数值+1触发条件:
    解释:注意题图,分析出计数累加的条件为——下降沿触发时——“实际电压值从高到低”且“经过参数电压”
    方法:设置两个变量,分别储存“最新电压值(smg_volt)”和“历史电压值(old_volt)”,
    在定时器中每隔50ms判断一次“计数条件 if((smg_volt < param)) && (old_volt >param))”是否满足(此处param为参数电压值)
    且要注意数值边界(当计数达到100时,计数值赋值0,从0开始重新计数)
    在这里插入图片描述

注: 将“AD获取电压值函数”与“判断计数条件”都放在50ms定时器中刷新,将数码管显示放在10ms定时器中进行刷新,保证界面显示与数值更新的符合性能要求,否则会出现鬼影(这也是我第一次将数码管放在定时器中进行刷新)


二、易出错点提示

  1. E2PROM实现参数掉电存储功能:
    解释:使用IIC进行通信,代码与PCF8951相似。要注意:
    ①电压参数的存储是在退出参数界面后有效的
    ②设备每次上电后都要将E2PROM地址0中的数据作为电压参数
    方法
    ①在参数界面–>技术界面时,调用AT24C02写入函数,将参数值写入地址0x00
    ②在系统初始化时,调用AT24C02读取函数,获取地址0x00所储存的参数电压值
    在这里插入图片描述
  1. 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)


本文是在博主练习完部分省赛题目后总结的笔记
文章为本人对试题的观点,难免有所欠缺,欢迎大家在评论区里共同讨论

  • 12
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值