第十一届蓝桥杯单片机总结
一些废话,可以不看,直接看后面的步入正题和如何备赛
现在已经2021/2/2下午8:37:31了,距离蓝桥杯单片机的比赛的日期已经过去了很久,之前一直没有总结一下,刚好现在在准备第十二届的蓝桥杯嵌入式,趁着这个机会,把之前的蓝桥杯单片机的比赛也总结一下吧,同时也是借着这个机会,也对自己过去的一年做一个总结。
上一年,说来就是去年寒假的时候了,那是候还是大二上刚结束,现在就已经是大三的老学长了,突然感叹一下,时间匆匆。大一进校,那时候什么目标都没有,每天都是正常的上课,没有什么追求,也对于课程想的就是能过就行。那时候刚上C语言,感觉还是挺有意思的, 其实在C语言第一讲课的时候,老师就已经给我们讲了ACM,说只要在十月份还是十一月份来着在学院的OJ上面做100道题,就可以直接进入ACM实验室,那时候很早就有几个同学已经刷完了100道题,在专业里面都把他们认为是大佬级别的人物,而我最开始是也并不是不想加,只是觉得这个东西肯定特别的难,直接就畏惧了,一道题都没有去刷。就在大一上学期快要结束的前几周,任课老师告诉我们如果想进ACM的话,可以将做题的时间延长,只要我们有兴趣。然后我试着去学院的OJ上面做了几道题,越做越起劲,当时觉得题对于我来说还是特别的难的,当时就是有兴趣去刷,那时候可以中午吃饭的时候就在手机上面一个写C语言的app上面写代码,经常一道题可以想几个小时,也有最后实在是想不出来去百度搜题解的,最后用了两周不到的样子我就刷完了100道题,那时候我就认为自己已经是一个ACMer了。
于是到了大一下,那时候实验室也没有给我们提要求什么的,属于放养型,也没有怎么给我们安排任务,感觉自己还是需要有人督促,要给我安排任务,我才能去做,不然的话,自己学是不可能的。后面有一个机会是要打一个实验室内部的新人赛,前三名可以去参加四川ICPC省赛,然后我居然就刚好是第三名,之前一直以为和其他人的差距是特别大的,当时经过这一次我发现自己的也没有特别差。最后,时间就到了暑假的时候,这个时候是暑期集训,集训的时候每周都会学习一个新的板块,我觉得还是相当的有难度的,每周六下午,会来一场内部得排位赛,暑期四周得集训下来,自己每周得排名还是不错的,好像是拿了两次第一,一次第二,一次第五吧,具体记不太清了,当时在最后一次的还有一个最终排位赛,在这次的排位赛中,我居然排到了倒数,不知道为什么,想破脑子都想不出来,说实话,这一次突然怀疑自己不是这方面的料了。
虽然在暑期集训的最后一次的排位赛中,结果不如人意,当时在前面的几次的比赛中,我的表现还是不错。本来我是觉得自己并不怎么样,可能是由于我自己的高中有关,我高中的学校,一届只有几个人能够过一本线,我那一届理科班的好像一共是有9个上一本的,而我就是其中的一个,所以我虽然来到了一个末流的双非院校,但是我对自己其实挺满意的了。来到了大学,发现身边很多都是来自很好的高中,比如说身边有几个和我来自一个城市的同学,他们都是我们那里数以数二的高中,可能我就因为这样,觉得自己总是比他们差,但是在ACM的这段时间,发现自己可能也并没有那么差,或许还能靠运气做个前几名吧。后面我对自己有了一些信心,觉得只要自己肯努力,认真学,也不见得就会比别人差。
步入正题
大一结束了,自己也不再是一个小萌新。大一迷迷糊糊的,对绩点也不看重,大一上的绩点3.85的样子,大一下的绩点4.1的样子,这个时候大一学年的总绩点好像是3.98(我们学校采用的是5分制的算法)。在大一学年的综合测评中,绩点的排名排到了专业第三,这个时候突然发现自己有希望保研,其实我并不明确自己是不是一定要去读研究生,但是在本科阶段是真的迷茫,现在学的东西,考试是还不错,但是也考试也特别基础,我知道在工程上面是远远不够的,而且周围的人大多都准备以后要考研的,于是,自己也争取一把吧,试一下走保研的这条路,选了这条路(后面也正是因为选了这条路,感觉自己对成绩有点过分看重了,其实我不希望自己这个样子)。然后接着,实验室开会了,老师告诉我们,要明确自己的方向,看看是不是真的想打ACM,给我们说ACM会占用很多很多的时间,这个时候我就开始动摇了,因为如果把精力全部都放在ACM的话,成绩上面可能会受影响,所以最后经过了很久的心理斗争,最终选择退出ACM实验室。。。其实我对与打ACM比赛是很有兴趣的,但是没办法,既然做出了选择,就希望自己不后悔吧。我很庆幸自己能有这么一年不到的短暂的ACMer的经历,总之也是因为在ACM里面的一些小的历练,在大学里面,对于其他的很多课的帮助是很大的,比如说软基、微机原理、数电、单片机、嵌入式等等。可能是编程打开了我的一部分的思维吧。
退出ACM实验室之后,就想着去加一个别的实验室什么的。然后在一个群里面,看到一个硬件实验室在招新,然后我就去报了,最后也顺利的通过了实验室的面试。在新的实验室里面,老师给我们开过几次会,有一次自愿的硬件培训,在这次培训主要是练习了焊接,以及AD软件的使用,示波器的使用。最后培训结束了,感觉吧,自己并没有收获很大。之后,实验室就没有再做过什么培训了,然后大二上结束了,本来实验室准备寒假提前返校做一些培训的,但是刚好就因为疫情的关系就耽搁了,导致实验室基本上一年都没有做什么培训,也没有学习过什么东西,感觉自己就没有什么额外的提升。
然后现在就要步入正题了,之前就是随便写写,不知咋地就从大一的时候就开始写了。就在大二上学期,刚好实验室要报名蓝桥杯,实验室里面的大部分人都选择了蓝桥杯单片机,只有几个同学报了蓝桥杯嵌入式,当然我对自己是没有那么自信的,自然我也是报的单片机组。在寒假的时候,跟着一个教程,是我们老师发的,给力这的一个51单片机的教程,讲的特别好,然后把一些重要的模块就过了一遍。然后自己在网上买了一个蓝桥杯单片机的板子, 买了一个视频(将蓝桥杯单片机赛题的)花了25。就直接开始做题,一套题做完了,就发现这个挺简单的,可能也是因为有一些软件方面的基础,发现赛题的逻辑方面,对我来说,毫不费力。在后面刷题的时候,会遇到一些自己还没有学到模块,如NE555测频率之类的,这个时候我就会看一下买的视频的讲解,然后把代码搞懂。最后省赛题用了不到一周的时间我就做完了。这个时候还是寒假期间的样子,因为疫情的关系,在家里面上网课导致比赛不能按之前的时间举行,后面就一直没有刷题了。时间推移,我就大三了,终于疫情缓解了,可以开学了,然后中间有一次电子设计大赛,这段时间就一直在准备电子设计大赛, 因为自己确实没有什么经验,队员也都没有什么经验,四天三夜还是做出来了一个东西,但是很差劲,在硬件选型的时候,也是一点经验都没有,最终导致没有获奖。紧接着,十天后就是蓝桥杯单片机的比赛了, 这段时间就在寝室里面,重刷省赛的题目,每天抽一些时间,每天刷一套题,比赛的前几天把省赛的题目又刷完了一遍,在比赛的前一天,就把各个模块过了一遍,第二天比赛的时候,拿到题目,用了两个小时不到的时间, 就把代码写完了,感觉十一届的难度真的很低,不知道是不是因为疫情的原因。然后两周之后成绩下来了,不出意外省一第二,接着就开始准备国赛,也是保持每天一套的速度,比赛前把国赛题做完了,在比赛的那天,国赛的题目也是过分简单了,没有涉及到超声波和串口通信的部分,感觉比以前的省赛的题目还简单,自己的客观题也还是不错,两天后,国赛的成绩就出来了,拿到了国一,并且入围了全国前五。这就是自己参加蓝桥杯单片机的经历了。
如何备赛
- 建议先提高一下自己的编程的能力以及c语言的功底,建议去找一个oj平台,刷一些入门的题目,50~100道,这时候c语言的功底应该就不错了。
- 学习51单片机,如果没有51的基础的话,可以去b站上面找一下。学习单片机就是学习如何配置寄存器,其实这句话一点都不错,51单片机也比较简单,只有一个时钟, 不像stm32那么复杂,很多配置几句代码就搞定了。建议学习一下重要的模块,输入输出,时钟,定时/计数器,中断等等,然后在这些的基础上面,再去学习一下iic,spi,onewire等协议,其实就是掌握好时间,对着时序图模拟一遍就可以了。
- 可以在淘宝买一个蓝桥杯单片机的赛题讲解的课程,(可选)
- 自己做一两套省赛的题目,如果遇到不会的一些模块,可以想去找资料学习了,再继续做,并且学会看原理图以及芯片手册。
- 做了一两套省赛的题目,应该就比较有感觉了,就可以总结一个自己的模板,也可以去网上找,后面我也会把我自己的代码放在文章的最后。然后看懂模板,可以自己做一些修改,只有自己会灵活运用即可。
- 提前刷省赛的题目,刷完可以适当的刷一些国赛的题目,这之后,独立的做几套题自己应该就比较有信心了。
- 在比赛的前几天,可以在做一遍省赛的题目,这个时候,自己应该是比较熟悉了,应该可以控制在三个小时左右就做完一套题。然后把用到的各个模块都写一遍,省赛的时候,应该就不会有问题了。
- 同样在后面国赛的时候,每天一套国赛的题目,将国赛可能会考的各个模块都写一遍,我相信,国二的应该是有了。
- 前面没有提到客观题的准备,客观题主要是考一些数模电的基础知识,如果学过了还是很简单的,如果没有学过可以看一看,很基础,比期末考试还要简单的多。里面还会有一些单片机的基础知识,有很多是可以在对应的芯片手册里面找到答案的,把每一届的都做一遍即可,也用不了多少时间。
代码分享
下面分享的代码里面,有我自己准备比赛写的模板,以及从第三届到第十届的所有的赛题和代码, 还包含第十一届提供的单片机资源数据包。只希望大家点个赞就可以了。