蓝桥杯备赛攻略-单片机组

梁老师
梁老师 北京小升初老师~

0 人点赞了该文章 · 71 浏览





   今年的蓝桥杯省赛开赛已经近在咫尺了,除了前期备赛必要的积累以外,赛前的一些准备也能在一定程度上影响比赛成绩。在此,朱弘毅同学分享个人的省赛赛前准备方案。

    由于现在是临近比赛的关键时期,我们备赛的目标应当是用最少的时间保住最该拿的分数。往届的赛题分为客观题和主观题(即程序设计题)。

图片

客观题

    客观题主要涉及数电、模电以及围绕蓝桥杯开发板平台的相关知识。数电模电利用专业课课内知识即可拿下绝大部分分数。后者利用蓝桥杯官方提供的资料包即可在现场查询。

     比赛的总时长为5小时,因此省赛留给客观题的时间是绝对够用的。我们在赛前能做的就是熟悉比赛官方提供的资料包的结构,比赛时知道该怎么检索客观题涉及的单片机知识。

第十届蓝桥杯大赛个人赛省赛(电子类)选手资源数据包

链接: https://pan.baidu.com/s/1DKFRnSKi34VKOJS470kOxg

提取码: bm8k



图片

主观题

    省赛中起到决定性作用的还是程序设计题。如果在比赛时能够完成程序题的绝大部分要点,获得进入决赛资格的希望是很大的。因为这是写在比赛前的一篇攻略,省赛方面就着重谈谈在细节方面如何拿分。

    

Tip1 记忆部分


    蓝桥杯单片机设计竞赛的本质还是背诵,简言之,你在省赛前要做的就是将各个模块的调用代码记住,在比赛时按照题目的要求进行组装。因此在比赛前,你需要确保能够闭卷调用实验板上出现的模块。假如你觉得这有困难,那么可以退而求其次,按照重要性的优先级来记住各个模块。因为省赛的难度是有限的,一些过于复杂的模块(例如超声波)不太会在省赛中考。而像按键、键盘、数码管这些基础的输入输出模块毋庸置疑是必考项目。下列表格作为参考。(可能存在遗漏,仅适用省赛)

非常重要
重要一般
按键、键盘、数码管、LED、蜂鸣器、定时器ADC、光敏传感器、DS18B20、DS1302、EEPROM、继电器超声波、DAC、555芯片及PWM

常考模块

    首先很多模块的代码不需要全部记住,比如EEPROM的IIC总线驱动会直接给出,只需要结合数据包中提供的EEPROM芯片手册内的读写时序,编写相应的读写函数即可。同理温度传感器DS18B20的单总线驱动也会提供。像定时器这类,可以用比赛指定烧录软件STC-ISP直接生成。对于这些部分代码已经给出的模块,你在考前需要做的练习就是在完全闭卷的情况下,仅利用数据包里的资源,完成从工程建立到实现模块功能的全过程,这点非常重要。

非常考模块

    至于那些省赛不常考的模块,我也无法保证它绝对不会出现,但是还是得基于你的掌握程度。首先还得确保常考模块都已拿下,否则省赛花过多的时间在里面性价比是不高的。剩下的模块还有ADC/DAC。这两个模块其实没什么可说的,就是要强行记住。但是我们知道,ADC/DAC拥有多个通道。例如电位器电压、光敏传感器这两个ADC外设只是使用了ADC的不同通道。所以对于ADC/DAC模块实际上只要记背两套代码。此外你还应该熟练掌握实验板原理图的查找,否则在写代码时开错了通道,Debug起来就很痛苦了。


    

Tip2 调试部分


    写程序事实上只是一小部分,调试程序也是不可忽略的。有些参加过电子俱乐部招新笔试的读者可能有感触:某个模块传出的值总是异常,花了数十分钟也无法定位错误所在。这种情况在比赛中很致命,但也很常见。不过对代码的调试纠错能力是长期实践培养出来的,在这篇攻略中我恐怕无法用三言两语讲清楚我的个人经验。但是我这里有一些实战小技巧处理这些有关调试的困境。

避免不调试一口气写大量代码

    有时候思路来了,写代码就完全停不下来。但是应当及时调试,避免同时调试过多代码导致错误难以定位。比如在写好数码管显示后就应当测试一下显示效果,否则倘若加入其它代码后出现bug,搞不清楚是显示的问题还是其它模块输出有误,非常浪费时间。

采用标志位显示

    由于蓝桥杯的板子不支持在线调试,很多时候你未必知道程序执行到什么位置出错了。这时利用闲置的输出模块,例如几个LED,来标记程序当前的运行状态。这样当异常出现时可以根据LED的显示来确定程序出错的位置。同理,LED/数码管也可以用来监视某个关键变量的值(虽然调试效率不高,仅供应急)。这里不太建议用串口监视变量值。虽然串口显示很直观,但是题目未必用到串口,这样你还得花额外的时间去编写串口传输,也是相当耗时的。


    

Tip3 异常情况


    最后一点也是最不愿看到的一点:有时候由于各种缘故,某个模块的异常无法排除,并且已经在该异常上消耗了很多时间。这种情况很致命,但你需要保持理智,尝试以下步骤。

重启软件

    保存当前的工程,并重启所有有关的软件(别重启电脑),检查异常是否仍然存在。这个方案看起来很荒唐,但这是有可能发生的,不妨一试。

及时止损

    重启软件也没用,这大概率是程序写错了,但或许找出bug又得耗上数十分钟。如果你还有别的功能没实现,应该先跳过这一点。假设是温度检测读不出正常值,不妨产生一个合理的随机数作为返回值吧,或者直接输出常量。蓝桥杯的主观题严格按要点给分。相较于损失大量的时间,丢失这么一个要点无可厚非。完成了所有要点后再回来找bug也不迟。



图片

写在最后


    最后就是一些以前老生常谈的事项,如命名规范,工程结构之类的。省赛的主观题算得上是一个小工程了,因此程序中的变量,函数会有一大堆。给变量起名时一定要用表意明确的名字。此外在局部变量、全局变量、常量的命名上也要体现出差别。

    另外,有些同学喜欢在main函数里堆砌代码,这是个不良的习惯。过于臃肿的代码段会增加编程和调试的难度。这里可以借鉴封装的编程思想,将各个模块的功能分别写在不同的文件里,需要时只要包含头文件引用函数即可,即所谓“模块化编程”。这里有一份不错的教程:

    keil5 的模块化编程详解:

    https://www.cnblogs.com/hongjuedong/p/9214594.html

    我今天分享的就是这些内容。想要在蓝桥杯比赛中取得佳绩,平日的练习是必不可少的。希望我的这篇攻略能给你带来些许启发,也希望你在接下来的蓝桥杯省赛中取得满意的成绩!

图片


添加 家长论坛微信 



发布于 2024-04-26 12:38

免责声明:

本文由 梁老师 原创发布于 家长帮 ,著作权归作者所有。

登录一下,更多精彩内容等你发现,贡献精彩回答,参与评论互动

登录! 还没有账号?去注册

暂无评论

广告
All Rights Reserved Powered BY WeCenter V4.1.0 © 2025 京ICP备20005761号-2