前言
前段时间整理硬盘发现了当时大二参加蓝桥杯时的一些记录,现在回想当时踩过的坑和备赛经历,现结合其写下这篇经验贴,供大家学习、高效备赛
一、参赛建议
蓝桥杯可参加的赛别很多,在所有赛别中单片机组可以说是最好拿奖的,虽然说含金量不高,但是很建议大家参加。个人建议大家在大一的时候就进入实验室参加蓝桥杯,单片机组的门槛其实很低,只需要有C的基础和对数模电的基本认知,而这些知识对后期的学习、其他的比赛都是很有帮助的,起到打基础的作用。其次很多小白看代码两三百行就有惧怕心理,其实大可不必,大家学习后就会发现,整个程序由很多个小模块组成,而这些小模块完全用不到高深的算法,都是if while for等一些最简单的语句的嵌套,就算C语言学的不好也能写,所以说完全不用怕,直接莽。我当时的练习代码也放在了专栏中供大家参考。
简单来说,建议小白从大一寒假开始准备,这时候刚好学完C语言,可以开始编程,
二、备赛过程
1.资料
关于资料,建议直接从比赛的这块板子(stc15f2k60s2)开始学,没必要先买别的板子学,我当时就是先买的普中的板子一个一个模块学,后面发现这样只是浪费时间。而蓝桥杯板子的教学视频,在B站、淘宝有很多,大科、蚂蚁工厂、小蜜蜂等等都是可以的。
2. 学习路线
省赛备赛过程:
STEP1:按模块学,不仅要掌握代码,也要知道其原理,会用手册
STEP2:敲历年省赛题代码,这时候会遇到各种问题,尤其注意各模块之间的冲突问题(如按键按下去影响数码管显示等问题)一开始可以不严格按比赛时间来敲,这个阶段主要是发现问题解决问题,熟悉代码的使用。注意在写代码的同时也要用txt记录自己的问题。
STEP3:在不断优化后,形成一套自己的模板,这个时候建议看一些进阶的资料,如杰克等,对模板再进行优化,这个时候可以关注一下多个定时器多个中断之间的冲突、数码管显示不稳定、每个LED灯亮度不一样等疑难杂症。
STEP4:用优化完的模板二刷省赛题,这时候的重点是对代码的熟练度,尽量按比赛时间完成,并背住自己的模板代码。这时也要带着看数模电C语言的基础知识,尽量背住一些通识性的知识,可以参考往年的卷子看看考到什么程度。
STEP5:比赛前不断熟练自己的代码模板,到比赛当天以最快的速度打出模板,然后按赛题直接填空即可。到后面就会发现大家模块都能实现个大概,大家的差距就体现在了客观题上,所以在这段时间要加强对客观题的学习。
关于所有模块要不要都学的问题:建议是把省赛和国赛中出现的模块都学一遍,以防万一
国赛备赛过程:
有了省赛学习的基础,国赛无非就是在省赛的基础上多加一些模块,直接刷往届国赛题即可。要注意模块和功能要求的增多,就会使中断里的东西会变得很多,如何保证不起冲突仍然是最为重要的,我当时在国赛中就因为没处理好DS1302的中断,加上主程序里对数据的运算程序,导致超声波测距乱码,自己的调试能力还是有待提升吧。
三、比赛过程
电子类比赛时间为5个小时,带好准考证、万用表。答题顺序看个人,写程序的时候先把自己准备的各模块模板写好,然后再按照赛题要求扩展。还有就是早上一定要吃饱,食物是可以自带的,但是基本也是啃两口面包就继续写代码了,省赛时间还行,国赛因为要实现的要求多就得抓紧时间。
总结
总的来说,蓝桥杯很适合作为一个入门类比赛,它可以帮你打好基础,锻炼自学能力,对后面的专业课的学习也起到预习的作用,祝大家玩的愉快!文章来源:https://www.toymoban.com/news/detail-726811.html
附-模板
在蓝桥的杯所有组别中,单片机组相对较水,尤其是省赛,实现了数码管显示、按键等基本功能就有二等奖,其实最后大家的功能都实现的差不多,主要差距在客观题,所以说基础功能的实现是入门蓝桥杯的第一步,如何处理使按键、数码管扫描和中断不冲突稳定运行尤其重要。下面将分享我当初备赛时的基本功能模板,具体功能的实现在其基础上填写即可。文章来源地址https://www.toymoban.com/news/detail-726811.html
main.c
#include<stc15f2k60s2.h>
unsigned char code smgduan[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};
unsigned char smgbuffer[8];
unsigned char smgcom,keytt;
void display();
void keyscan();
void Timer1Init(void) //1毫秒@12.000MHz
{
AUXR |= 0x40; //定时器时钟1T模式
TMOD &= 0x0F; //设置定时器模式
TL1 = 0x20; //设置定时初值
TH1 = 0xD1; //设置定时初值
TF1 = 0; //清除TF1标志
TR1 = 1; //定时器1开始计时
ET1=1;
EA=1;
}
void Timer1() interrupt 3
{
unsigned char P0_kepper=0,P2_kepper=0;
P0_kepper=P0; P2_kepper=P2; P2=P2&0x1f;
display();
keytt++; if(keytt==10) {keytt=0; keyscan();}
P0=P0_kepper; P2=P2_kepper;
}
void display()
{
P0=0xff; P2=P2&0x1f|0xc0; P2=P2&0x1f;
P0=0xff; P2=P2&0x1f|0xe0; P2=P2&0x1f;
P0=1<<smgcom; P2=P2&0x1f|0xc0; P2=P2&0x1f;
P0=smgduan[smgbuffer[smgcom++]]; P2=P2&0x1f|0xe0; P2=P2&0x1f;
if(smgcom==8) smgcom=0;
}
void keyscan() //独立键盘:普通按键用trg 长按键用dat(松手变为0) cnt有时会失效
{
unsigned char dat,trg,cnt;
dat=P3^0xff;
trg=dat&(dat^cnt);
cnt=dat;
if(trg&0x01){P0=0; P2=P2&0x1f|0x80; P2=P2&0x1f;}
else if(trg&0x02){P0=0x55; P2=P2&0x1f|0x80; P2=P2&0x1f;}
else if(trg&0x04){P0=0xaa; P2=P2&0x1f|0x80; P2=P2&0x1f;}
else if(trg&0x08){P0=0xff; P2=P2&0x1f|0x80; P2=P2&0x1f;}
}
void main()
{
P0=0x00; P2=P2&0x1f|0xa0; P2=P2&0x1f;
P0=0xff; P2=P2&0x1f|0x80; P2=P2&0x1f;
Timer1Init();
while(1)
{
}
}
到了这里,关于蓝桥杯单片机组_学习路线的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!