蓝桥杯单片机组--------一个小时省赛二等奖
蓝桥杯必备资料汇总
各位来看应该都是报了蓝桥杯的,想要获奖的,博主有幸参加过一次,总体来说蓝桥杯单片机比赛对于在大一、大二校生来讲还是一个不错的比赛的,比较基础,对于新手来说比较合适。
当时我参加比赛其实总共也没准备多久,由于疫情的一些原因导致比赛时间比较乱,省赛大概就两个星期左右吧!国赛稍微长点……
废话不多说下面给大伙分享一些我参加比赛的干货,希望对大家有用
题型分析
这张图片相信大家都看过,比较经典,要考什么一目了然,省赛的话LED、数码管、蜂鸣器、独立按键绝对是必考,定时器当然不用说,剩下的主要就是18B20测温、A/D和D/A、1302时钟、24C02存储,每年基本都在这里面调两个一块考,当然第十届是个例外,考的是测频率的,稍微难理解一点。
接下来给大家展示一下我自己准备的模板。学会的画可以省很大一部分时间的哦!
SYS_init.c
这部分可以说那套题都可以用的上,首先系统初始化,关LED、蜂鸣器、继电器……,然后是显示函数,直接在子函数写段选或者位选都可以,最后呢就是每题必有的对单个LED的开关控制,有了LED_on();和LED_shout();两个子函数直接调用就可以了,舒服吧!
#include "main.h"
#include "onewire.h" //单总线函数库
code unsigned char tab[] = {
0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff,0xC6,0x8c};
//=====================系统初始化
void all_init()
{
P2=((P2&0x1f)|0x80);P0=0xFF;P2=P2&0x1f;//关闭LED
P2=((P2&0x1f)|0xA0);P0=0x00;P2=P2&0x1f;//关闭继电器,蜂鸣器
P2=((P2&0x1f)|0xC0);P0=0xff;P2=P2&0x1f;//关闭数码管位选
P2=((P2&0x1f)|0xE0);P0=0xff;P2=P2&0x1f;//关闭数码管段选
}
//=====================500ms延时函数,蜂鸣器间隔响正好
void Delay500ms() //@11.0592MHz
{
unsigned char i, j, k;
_nop_();
_nop_();
i = 22;
j = 3;
k = 227;
do
{
do
{
while (--k);
} while (--j);
} while (--i);
}
//=====================100us延时函数
void delayms(int ms)
{
int i,j;
for(i=ms;i>0;i--)
for(j=845;j>0;j--);
}
void Delay100us() //@11.0592MHz
{
unsigned char i, j;
i = 3;
j = 82;
do
{
while (--j);
} while (--i);
}
//=====================数码管显示函数
//=====================段选函数
void Display_1(unsigned char weixuan,unsigned char duanxuan)
{
switch (weixuan)
{
case 1:P2=((P2&0x1f)|0xC0);P0=0X01;P2=((P2&0x1f)|0xE0);P0=tab[duanxuan];
break;
case 2:P2=((P2&0x1f)|0xC0);P0=0X02;P2=((P2&0x1f)|