蓝桥杯经验分享【国赛一等奖备考经验分享】单片机设计与开发-井冈山大学李伟

龚晨·中国矿业大学
27 天前
阅读数256

本文是我参加蓝桥杯单片机比赛的经历和一些心得体会以及个人总结,希望能给以后参加蓝桥杯单片机的同学带来一些帮助。

个人情况:

    我参加的是第十一届蓝桥杯单片机比赛,在大一下半年的时候开始接触 51 单片机,那时候就和实验室的同学一起学习单片机,但是那时候因为刚开始接触这方面的东西,没有任何基础,唯一有接触的东西就是 C 语言,那时候 C 语言的功底不算很好,但是能看懂基本的代码,那时候没有数电模电和一些微机原理的知识,所以学起单片机来有些费脑力,那时候我大部分精力还是在平时课程的学习上,对单片机的学习比较怠慢,只学到了单片机的一些基本的用法,稍微难一点的,就不会了。大一暑期留校也在继续学习单片机,但是那时候我暑假有自己的事情要处理,在单片机的学习上就没花很大的精力,总的来说,大一这一年,我一直在处理自己的事情,所以 51 单片机学的很差。

    大二开始,前半段时间的精力还是在自己的课程学习上,但是慢慢的,我开始能看懂电路图,偶尔会抽出点时间来学习 51 单片机,那时候我开始想尝试做一下往届蓝桥杯的赛题,在此之前,我写代码还不会用模块化编程,因为之前自己写代码只是一些小小的工程。我开始回去重新学了一遍模块化编程,我意识到模块化编程对处理大量代码时的好处,我意识到:这是我真正意义上的认真准备蓝桥杯,也就是说,我真正开始准备蓝桥杯,是在我懂得模块化编程开始的。我开始敲第一个赛题之前,我先把数码管,按键,定时器部分分好模块,大概花了两天左右的时间,把模块化的思路捋顺了,然后从赛题里面找到和 LED,按键,数码管相关的操作提取出来,仅仅只实现这部分功能,当做完这些之后,我对 51 单片机有了进一步的理解,我开始去学习其他的模块,并且用模块化方法,把底层驱动准备好,方便我调用,那时候,我开始敲第一个赛题,去理解题目里面的逻辑。这个时候,我蓝桥杯单片机的学习才步入正轨。

    之后就是大二的寒假了,寒假在家也一直在不断的训练赛题,寒假每周都会有一定的训练量,从一开始的一个赛题要做几天才能做完,慢慢练习,后面一天就能做完一个赛题,那时候对各个代码已经很熟练,自己的代码风格也在不断改良,我会把每一届赛题中的容易错的地方和我从中理解到的新东西记录下来,知识就这样一点一点的积累下来了。直到最后,省赛的每一届题目敲完了第三遍,自己对 51 单片机的理解有了很深的认识,代码的风格也固定下来了,那时候离比赛时间还有一段时间,我开始准备国赛,我开始敲往届的国赛代码,这个过程相比准备省赛,就没有这么艰难了,国赛相比于省赛,模块加多了,题目的逻辑性更强,但在准备国赛的过程中,我又学到了很多新的东西,知识体系变得更加完善了。那时候每天晚上,我们会在一起讨论历届的客观题,由于我们已经学完了数电模电和微机的知识,做客观题就没有这么难了。最后就是从容应对比赛,正常发挥。

赛前如何准备:

    在学完基本的模块之后 尽早地进入赛题的训练,赛题是对多个模块之间的协调和整合,能帮助你更好的了解和操作单片机。

每个模块必须掌握它的原理,在不借鉴他人代码的前提下,能自己独立的将底层代码写出来,并且知道如何调试。熟能生巧,底层代码一定给要熟练的敲出来,我不建议大家去背代码,代码只有自己理解了,才能进行巧妙的变化,也是后期代码出现错误时,能根据自己的理解,对代码进行修改的前提。

    要去看一看比赛时发的赛点资源包里面都有些什么,里面的东西哪些东西能为你所用,在比赛期间能帮上什么忙。比如里面有串口烧录软件和 USB 驱动,这些如果在比赛地点没有的话,就可以在资源包里面找到;底层驱动代码里面给出了 SPI 总线,IIC 总线和单总线的驱动,在比赛时,就不需要自己去写这些驱动了,直接复制进去就可以了,在赛题训练过程中可以去测试一下这些代码,有的需要修改,记住哪里要修改的就行。资源包里面最重要的就是用户手册和 原理图了,这两个文件一定要会用,原理图文件在你忘记引脚的连接时可以查看,用户手册里面包含了各个寄存器的操作方法,客观题的答案与单片机有关的,有些也能在里面查找到。还有一个就是共阳极数码管断码表,如果比赛的时候不想自己算的话,数码管的断码直接从里面复制就好了。

在进行赛题训练的时候,每一届赛题里面出现的难点,都需要记录下来,我习惯每做完一个赛题,就对这个赛题进行一次总结,这个总结和我的代码文件放在一起,总结里面包括:在赛题训练中我觉得比较好的编程思路,代码移植过程中要注意和修改的部分,还有在经过这个赛题训练后我从中理解到的新东西。

在配置底层的过程中,大家会遇到直接对寄存器地址的操作,那些基本的寄存器地址,还是需要记一下的,比如:15 单片机比赛的板子上面 8591 的器件地址 0x90,读地址 0x91,24c02 的地址 0xa0,读地址 0xa1,这些虽然能在手册上面查找到,但是能记下来最好,能省下部分时间,而且需要记的寄存及地址不多,大部分都是有规律的。

 

每一届省赛的题目我建议都最少敲两边以上,第一遍作为学习过程,学习里面的编程思路,并且形成自己的编程风格,在敲第一遍的过程中,逐渐去把平时没有学好的部分解决,并且把赛题中出现的问题弄清楚,这个过程应该是要花大量时间去探索和总结的,在第一遍结束的时候,让自己对 15 这块板子有大致的了解,期间可能会有些问题解决不了,但是到第二遍的时候,把那些容易的部分快速过掉,那些存在的小问题,或者没有解决的问题,在第二遍的时候就要注意了,第二遍一定要把那些问题细致的处理,比如说:LED 灯的操作有些时候会让不该亮的 LED 灯有些微微闪烁,这个细致的问题就需要改善你的代码了,经过多次尝试,找到问题所在,并且记录下来,下次进行操作的时候,就把这个问题考虑进去,代码就会被很好的优化。

在平时也需要拿出时间,去训练一下客观题,客观题在比赛中占的分值是 30 分,很容易会被大家忽视,客观题里面考察一些数电模电的知识,C 语言的知识,单片机的基础知识,还涉及到一点点微机原理。大家要对往届的题目有所了解,往届有些题目题型是一样的,其中最简单的就是数电的内容了,对于学完数电模电的同学,相信自己也能弄懂,其他的需要平时的积累,单片机相关的知识点有些能在单片机用户数据手册中查找到,所以大家要提前去翻一翻用户手册。模电主要会考运放,信号,以及二极管的一些基本特性,数电主要会考逻辑运算,单片机会考的东西就很杂了。

参加比赛后的变化:

最大的变化就是为自己以后的学习打下了牢固的基础,现在学习任何一块单片机都轻松很多了,我在大二的暑期留校准备蓝桥杯,但是在这两个多月的时间里,我还在学习 STM32 单片机,虽然比 51 复杂,但是因为有 51 的基础,学起来却没有太吃力。蓝桥杯比赛结束之后我们还有电赛,当时组队参赛,我们队选了一个做小车的题目,题目要求我们只能用 MSP430 单片机来完成,在此之前,我们没有接触过这款单片机,但是我们用一天的时间去查找资料,熟悉基本操作,第二天开始就能熟练地运用这款单片机进行基础的操作了,因为都是操作寄存器,我们只需要知道这款单片机有哪些寄存器就能像 51 一样进行操作,这便是学完 51 之后给我带来的好处。如果我仅仅只是按照学习步骤,把 51 单片机板子上的模块一个一个学完,可能到最后我还是不知道怎么去合理的运用他,但是我现在能用一块芯片,搭配各种模块,去控制各种外设,在电赛时运用各种模块和单片机的知识完成一个作品,让自己身上学到的东西发挥出作用,真的很棒。

给下届参赛选手的一些建议:

如果是刚开始接触 51 单片机的同学,你们要相信一点:万事开头难。在最初阶段,你会发现自己进度很慢,而且很难往前进步,这个时候不要对自己失去信心,在学习的路上不会一帆风顺,我认为学习任何一门技术最好的方法就是一个 “试错”的过程,如果一个人在学习的过程中一直都顺顺利利,这样不一定就是最好的,往往那些平时经历过很多错误的同学,解决问题的思维都比别人要高很多,在写代码的过程中,你要为自己遇到的 bug 感到庆幸,因为你经遇到这个 bug,你解决了,你再多经历几次,当下次在此遇到这个 bug 的时候,你会很快的解决它,并且你会对这个 bug 知根知底,一目了然。

新手在用 keil软件的时候,越快了解模块化编程越好,这个知识点能帮助你理解代码的框架以及相互之间的关系。

平时可以多去逛一下单片机的论坛,看看别人的贴子,51 的资料基本都是开源的,在网上也很普遍,所以论坛很多,在自己遇到解决不了的问题的时候,去论坛上找答案,论坛没有在去百度上面找,基本上自己遇到的问题,别人很早都遇到过。论坛是一个很有趣的东西,里面不仅有对各种问题的解决方法,还有大家用单片机做的小作品,以及每个人对于单片机各个部分的一些理解,多看看别人的思路,说不定就能启发自己。

学习是一个很枯燥的过程,所以大家如果是一群人参加比赛,最好是建一个群,大家可以多交流,共同进步。

我希望大家准备比赛的目的是在学习中能把它用到实践。比如在自己能完整地敲完一个赛题的时候,尝试自己去做一个小作品,最简单的,可以以小车作为自己的训练项目,蓝牙小车,寻迹小车。在做这些作品的过程中,就能很好的理解单片机的实际应用,对自己训练赛题会有很好的帮助。当然,比赛的目的也不是一定要拿到多高的奖项,只要是在经历过这次的比赛后,自己学有所成,当自己能用一块裸机,一块芯片去操作更多的东西,能把学到的东西在实际中用出来,才是你最大的收获,以赛促学,我相信这也是组委会举办这个比赛的真正目的。

收藏
分享
别默默的看了,快来和大家聊聊吧,登录后发表评论~ 登录 立即注册
打赏
龚晨
打赏金额(金额:¥0)
给Ta留言
赏金已入袋,多谢!(*^__^*)
温馨提示

非常抱歉!本站不支持旧版本IE浏览器~~建议使用IE10/IE11/Chrome/Firefox/Safari等高级浏览器浏览。

温馨提示
温馨提示
帮助与反馈

热门问题

0
在线咨询