微信搜索ReCclay,也可免费阅读博主蓝桥系列所有文章,后台回复“代码”即可获取蓝桥所有备赛代码!关注博主公众号,还可拥有加入博主粉丝群实时沟通技术难题、免费下载CSDN资源等多项福利,还在等什么呢?快快扫码关注,学习才不会迷路

这里再向各位同学推荐一个CSDN博主 ReRrain 的蓝桥备赛博客,博主秉持初学者思路,向你讲述自己蓝桥备赛的心路历程,娓娓道来蓝桥备赛经验,个人觉得非常不错,值得细细品读。


文章目录

导读:《蓝桥杯单片机组》专栏文章是博主2018年参加蓝桥杯的单片机组比赛所做的学习笔记,在当年的比赛中,博主是获得了省赛一等奖,国赛二等奖的成绩。成绩虽谈不上最好,但至少问心无愧。如今2021年回头再看该系列文章,仍然感触颇多。为了能更好地帮助到单片机初学者,今年特地抽出时间对当年的文章逻辑和结构进行重构,以达到初学者快速上手的目的。需要指出的是,由于本人水平有限,如有错误还请读者指出,非常感谢。那么,接下来让我们一起开始愉快的学习吧。

靡不有初,鲜克有终。


1、关于超声波小数位

1m = 100cm
声速:340m/s
假设一个机器周期是12个时钟周期,对应晶振12M
×个机器周期(us)*10^-6(us换算成s)*340(m/s)/2(来回)*100(换算成cm)*10(取小数点后一位) = 0.17对应小数点后有一个小数

所以 time * 0.17 对应的距离单位cm带小数点后一位

2、还要注意设置DAC输入参数或者ADC返回值,对应的的电压都是实际电压扩大是十倍以后的!

比如5V对应val50

今天写第八届国赛题的部分代码截图如下。

3、E2初始化的问题

注意了,初始化E2必须这样写:

void ResetE2()
{u8 i, dat=1;for(i=0; i<10; i++){E2Write(&dat, i, 1);}
}

E2Write(0, i, 1); //这样直接写数据是不行的!

4、按键按下显示,弹起不显示数据的技巧总结

涉及例题可参考:
《第九届省赛_彩灯控制器》

《第八届省赛_电子钟》

emm,,其实仔细想想也就那么点东西,很多也都是套路的堆砌!

5、关于实现数码管闪烁

模拟电子钟:

彩灯控制器:

关键理解思想咯。。。。

6、关于实现LED闪烁

第八届国赛:

第八届省赛:

7、关于实现数码管闪烁同时自加自减操作总结

数码管闪烁,需要注意的是加上一个总的开关,只有处于时钟设置状态下才打开。因为放到while(1)里面扫的,这样做还能避免耽误其他程序的执行!

还有这个闪烁以及自加自减通常出现在那种电子钟的题目中,那么对应肯定是得有时、分、秒的闪了,如何实现对应的闪烁呢?
是这样处理的:

先设置两个标志位,一个控制总的逻辑上的索引,SetClkIndex,另一个控制实际位置的光标,SetClkCursor。同时注意他们各自的取值范围!是不一样的!

具体怎么设置光标处于何种位置呢,是先操作索引SetClkIndex,然后调用LedSetCursor设置SetClkCursor

比如,程序中的某一段的使用:

现在能定位光标,也能让数码管闪烁了,接下来就是自加和自减的问题了。

这时候就能初步体会到SetClkIndex的好处了,

我数码管闪烁的本质就是不断的开关,而再开的时候就有一个难点了,当前对应的数码管是哪个,对应的值是多少,这个其实我们并不容易得到,但是我们也不必管,只需要关了对应的单元,然后刷新数码管的时间,注意了不是实时刷新,因为Refresh(0)中的参数写的是0!然后只需要我们操作buffTime这个结构体自加和自减就行了!

再来看下IncBcdDecBcd的实现:

u8 IncBcd(u8 bcd, bit i)
{bcd += 0x01;if((bcd&0x0F) == 0x0A){bcd &= 0xF0;bcd += 0x10;}if(i == 1){if(bcd == 0x24)//0~24{bcd = 0x00;}}else//0~59{if(bcd == 0x60){bcd = 0x00;}}return bcd;
}u8 DecBcd(u8 bcd, bit i)
{bcd -= 0x01;if((bcd&0x0F) == 0x0F){bcd = (bcd&0xF0) | 0x09;}if(i == 1){if(bcd == 0xF9)//注意了0-1=0xFF,但是前面有对低位是F变为9的操作,故这里是判断0xF9!!{bcd = 0x23;}}else{if(bcd == 0xF9){bcd = 0x59;}}return bcd;
}

两点需要注意的:
1、输入参数中 i 的作用,是为了hour的处理加入的,小时0~23,其余0~59

2、还有减的时候,0再减1就是0xFF了,然后由于我们前面对低位是F的情况进行了变9的操作,所以应该判断是否为0xF9

8、本次赋值和上次赋值完成后记得更新上次赋值

9、频率计的计数记得清零哇

10、一个子系统下,两种工作模式切换的总结

以频率界面为例

s5 - 更新系统状态:

s4 - 改变频率界面的两种工作模式

具体实现:

11、关于测555频率时,定时器配置。

以T0为例,即P34口。定时器的初值设置为0xFF,TMOD设置为0x04!

然后,1s监控的地方1s到了记得清零计数啊!

 TH0 = 0xFF;TL0 = 0xFF;TMOD &= 0xF0;TMOD |= 0x04;ET0 = 1;TR0 = 1;

12、关于时钟赋值,BCD的高位和低位到底是什么,注意了!

傻逼了我,思路写题写的有点不清晰了

13、突发奇想的长按键

好久没写过这个了,突然想到会不会国赛涉及到,今晚也就顺便来了一波,还能写出来,甚是欣慰,还是那句话,一定要学会理解它!

具体实现呢,再来赘述下,就是阈值和按下时间的比较,然后执行动作。

结语:以上就是本篇文章的全部内容啦,希望大家可以多多支持我的原创文章。如有错误,请及时指正,非常感谢。


微信搜索ReCclay,即可免费阅读博主蓝桥系列所有文章,后台回复“代码”即可获取蓝桥所有备赛代码!关注博主公众号,还可拥有加入博主粉丝群实时沟通技术难题、免费下载CSDN资源等多项福利,还在等什么呢?快快扫码关注,学习才不会迷路

【蓝桥杯单片机组】备赛实战问题记录相关推荐

  1. 第jiu届蓝桥杯单片机省赛真题_第九届蓝桥杯单片机组省赛试题.pdf

    第九届蓝桥杯单片机组省赛试题 "彩灯控制器"的程序设计与调试 (70 分) 一.基本要求 1.1 使用CT107D 单片机竞赛板,完成"彩灯控制器"功能的程序设 ...

  2. 十三届蓝桥杯单片机组省赛真题程序解析

    第一次参加蓝桥杯,线上比赛,记录一下 比赛刚开始了十分钟才做上客观题,做上了之后才发现看一次题警告一次,当时就蚌埠住了,随便做了做就交了,手册也没怎么查(查一下直接给了3次黄牌,就没敢查了)其实老师1 ...

  3. 【第十四届蓝桥杯单片机组模拟赛1】

    第十四届蓝桥杯单片机组模拟赛1 距第十四届蓝桥杯单片机还有不到一个月的时间啦,加油 源码 /*------------------------------第十四届蓝桥杯单片机模式赛---------- ...

  4. 蓝桥杯Web组备赛笔记6

    目录 一.ElementUI 1.安装 2.简单使用 3.例子 4.其他内容的学习 二.echarts 1.简介 2.考点 3.安装 4.配置项:使用echarts的三步走 5.13届蓝桥真题(3)布 ...

  5. 蓝桥杯Web组备赛笔记1

    目录 一.flex布局 1.详细的使用解释 2.简单例子 3.flex布局要认识两个轴 4.版心布局 5.13届蓝桥真题 (1,6) 二.grid布局 1.应用 2.代码例子 三.CSS动画 1.注意 ...

  6. 蓝桥杯Web组备赛笔记5

    目录 一.vue 1.考察 2.引入式简单例子 二.生命周期 1.文档图示 2.常考模块介绍 三.组件传参方式 1.创建使用组件 2.父子传参 四.axios 1.简介 2.13届蓝桥真题(7)布局切 ...

  7. 蓝桥杯Web组备赛笔记4

    目录 一.es6新增特性 1.定义常量及其简单的使用 2.set()函数 3.构造器 4.构造函数 二.高阶函数 1.filter():过滤器 2.find() 三.13届蓝桥真题 (9) 1.解题思 ...

  8. 【蓝桥杯单片机的备赛旅行日记系列】之国赛决赛第五届多功能事件记录器

    目录 1.注意事项 2.部分代码展示 3.完整代码下载 1.注意事项   这是目前为止做到的最难的一套了,三个驱动都用上了,而且还增加了串口通信,最无奈的是光敏电阻和Rb2同时用上了.   ADC读取 ...

  9. 第十一届蓝桥杯单片机组省赛模拟试题——智能门锁

    试题可以直接在官网下载(试题链接),十分神奇地考了矩阵键盘. 按键功能: 矩阵键盘扫描方法很多,这里采用逐行扫描的方法:每次将某一行(R1.R2.R3.R4)置低电平,然后去读每一列(C1.C2.C3 ...

  10. 蓝桥杯Web组备赛笔记7

    目录 一.node.js 1.概念 2.认识前后端交互 3.注意 4.下载 二.常见api 1.读写文件内容 2.更多常见的使用 3.API中文网文档 三.http 1.使用 2.监听请求 3.传回数 ...

最新文章

  1. 如何将光标定位到行尾
  2. SharpUpdater:开源的.NET桌面程序自动更新组件
  3. Android数据存储
  4. asp.net gridview 模板列 弹出窗口编辑_连云港各种新型铝模板设计软件,哪家强_威尔达建材...
  5. 7-40 奥运排行榜 (25 分)(详解+思路+map+vector做法)兄弟们冲压呀呀呀呀呀呀呀
  6. LINQ学习之旅——再次拾起
  7. Java、Javascript、Javaweb三者的区别
  8. set/multiset容器
  9. java两年需要,Java 两年总结
  10. 2021-08-27最大回文子串 leetcode
  11. lc用U盘更新固件_索尼电视安卓8.0固件升级完后电视连不上WIFI?最新解决方法!...
  12. NLP︱中文分词技术小结、几大分词引擎的介绍与比较
  13. docker 假死 僵尸状态
  14. mysql创建表报错1055的原因_[Err] 1055
  15. 《C++语言程序设计(第4版)学生用书》课程学习(12)——第12章 异常处理
  16. 2017 我所分享的技术文章总结(下)
  17. 5.7 将图层样式转换为普通图层 [原创Ps教程]
  18. 记一次糟心的前端笔试(2)
  19. python坐标表示_已知经纬度坐标求两点间距离,用python表示
  20. react native生成APP报错:You have not accepted the license agreements of the following SDK components:

热门文章

  1. 单片机原理与应用设计第二章(AT89S51)
  2. 【开发工具】IDEA Lua 开发环境配置(完整无错)
  3. 如何使用大智慧条件选股
  4. 都2023年了,你如果还不知道这18个C语言入门经典程序就亏了
  5. 对抗生成网络(GAN)简介及生成数字实战
  6. 一个Roguelike类型H5游戏的服务器开发——成就系统
  7. 操作系统发展历程 (Unix、Linux、windows)
  8. 文件夹的“只读”属性
  9. 检验下载文件完整性、真实性——SHA256校验值
  10. java的web项目分工_JavaWeb中Servlet和JSP的分工案例