蓝桥杯|蓝桥杯单片机最全备考资料(真题、代码、原理图、指导手册、资源包)


目录

  • 前言
  • 一、第一~十二届省/国赛真题、十三届模拟题
  • 二、第八~十二届省/国赛客观题参考答案与解析
  • 三、《“蓝桥杯”全国软件和信息技术专业人才大赛实训指导书》
  • 四、《51单片机原理与应用开发》小蜜蜂学习笔记与题库、《蓝桥杯单片机设计与开发》特训手册【小蜜蜂】
  • 五、赛点资源数据包_单片机_2021、2020年
  • 六、CT107D竞赛板 Protues 仿真模拟原理图
  • 七、IAP15F2K61S2_V20_00原理图
  • 八、1.代码展示-(蓝桥杯大赛指导书配套-官方源代码
  • 九、2.代码展示-(CT107D竞赛平台实验程序-国信长天
  • 十、3.代码展示-(课程代码-蚂蚁科技)
  • 十一、4.代码展示-(课程代码-小蜜蜂)
  • 十二、5.代码展示-(个人代码-耗不尽的先生)

前言
所有资料都是个人在学习蓝桥杯单片机时候滴(侵犯私聊删)
呜呜呜呜~~~ 汇总太不容易了
一定要记得关注 公粽号“耗不尽的先生” 嗷~
呜呜呜呜。。。
回复“蓝桥杯“
获取所有资料昂(含泪免费)!!!
【耗不尽的先生】感性与理性的分享…
臭宝你!要是能帮我宣传一波就更好了,哈哈哈哈~
蓝桥杯|蓝桥杯单片机最全备考资料(真题、代码、原理图、指导手册、资源包)
文章图片

一、第一~十二届省/国赛真题、十三届模拟题 (近几年官方整理文档,内容自由可编辑)
蓝桥杯|蓝桥杯单片机最全备考资料(真题、代码、原理图、指导手册、资源包)
文章图片

二、第八~十二届省/国赛客观题参考答案与解析 (官方答案+小蜜蜂老师的解析,文档自由可编辑)
蓝桥杯|蓝桥杯单片机最全备考资料(真题、代码、原理图、指导手册、资源包)
文章图片

三、《“蓝桥杯”全国软件和信息技术专业人才大赛实训指导书》 (官方指导书附近年真题答案,文档自由可编辑)
蓝桥杯|蓝桥杯单片机最全备考资料(真题、代码、原理图、指导手册、资源包)
文章图片

四、《51单片机原理与应用开发》小蜜蜂学习笔记与题库、《蓝桥杯单片机设计与开发》特训手册【小蜜蜂】 蓝桥杯|蓝桥杯单片机最全备考资料(真题、代码、原理图、指导手册、资源包)
文章图片

蓝桥杯|蓝桥杯单片机最全备考资料(真题、代码、原理图、指导手册、资源包)
文章图片

五、赛点资源数据包_单片机_2021、2020年 蓝桥杯|蓝桥杯单片机最全备考资料(真题、代码、原理图、指导手册、资源包)
文章图片

六、CT107D竞赛板 Protues 仿真模拟原理图 蓝桥杯|蓝桥杯单片机最全备考资料(真题、代码、原理图、指导手册、资源包)
文章图片

七、IAP15F2K61S2_V20_00原理图 蓝桥杯|蓝桥杯单片机最全备考资料(真题、代码、原理图、指导手册、资源包)
文章图片

蓝桥杯|蓝桥杯单片机最全备考资料(真题、代码、原理图、指导手册、资源包)
文章图片

八、1.代码展示-(蓝桥杯大赛指导书配套-官方源代码
#include "tim.h" #include "key.h" #include "seg.h" #include "stdio.h" #include "iic.h"unsigned intuiFre_Val, uiVol_Val, uiSeg_Dly; unsigned char ucAdc_Val, ucLed_Ctrl=1, ucSeg_Ctrl=1; unsigned char ucState, ucLed, ucDac_Flag=1; unsigned char pucSeg_Buf[10], pucSeg_Code[8], ucSeg_Pos; unsigned char ucKey_Dly, ucKey_Old; unsigned long ulms; void Timer0Init(void)// 16位计数器模式 { AUXR &= 0x7F; // 定时器时钟12T模式 TMOD |= 5; // 设置16位计数器模式 TL0 = 0; // 设置计数初值 TH0 = 0; // 设置计数初值 TF0 = 0; // 清除TF0标志 TR0 = 1; // 开始计数 }void Key_Proc(void); void Seg_Proc(void); void Led_Proc(void); void main(void) { Cls_Peripheral(); Timer1Init(); Timer0Init(); while(1) { Key_Proc(); Seg_Proc(); Led_Proc(); } }void Time_1(void) interrupt 3 { ulms++; if(++ucKey_Dly == 10) ucKey_Dly = 0; if(++uiSeg_Dly == 500) uiSeg_Dly = 0; if(!(ulms % 1000)) { uiFre_Val = (TH0<<8)+TL0; TH0 = 0; TL0 = 0; } Led_Disp(ucLed); Seg_Disp(pucSeg_Code, ucSeg_Pos); if(++ucSeg_Pos == 8) ucSeg_Pos = 0; }void Key_Proc(void) { unsigned char ucKey_Val, ucKey_Down; if(ucKey_Dly) return; ucKey_Dly = 1; ucKey_Val = Key_Read(); ucKey_Down = ucKey_Val & (ucKey_Old ^ ucKey_Val); ucKey_Old = ucKey_Val; switch(ucKey_Down) { case 4:// S4 ucState ^= 1; break; case 5:// S5 ucDac_Flag ^= 1; break; case 8:// S8 ucLed_Ctrl ^= 1; break; case 9:// S9 ucSeg_Ctrl ^= 1; } }void Seg_Proc(void) { if(uiSeg_Dly) return; uiSeg_Dly = 1; ucAdc_Val = PCF8591_Adc(); if(ucDac_Flag) PCF8591_Dac(102); // 255*2/5 else PCF8591_Dac(ucAdc_Val); if(ucSeg_Ctrl) { if(!ucState) sprintf(pucSeg_Buf, "U%03.2f", (float)ucAdc_Val/51.0); // 5/255 else sprintf(pucSeg_Buf, "F%5u", (unsigned int)uiFre_Val); } else sprintf(pucSeg_Buf, ""); Seg_Tran(pucSeg_Buf, pucSeg_Code); }void Led_Proc(void) { if(ucLed_Ctrl) { if(!ucState) { ucLed |= 1; ucLed &= ~2; } else { ucLed |= 2; ucLed &= ~1; }uiVol_Val = ucAdc_Val*100/51; // 500/255 if((uiVol_Val < 150) || ((uiVol_Val >= 250) && (uiVol_Val < 350))) ucLed &= ~4; else ucLed |= 4; if((uiFre_Val < 1000) || ((uiFre_Val >= 5000) && (uiFre_Val < 10000))) ucLed &= ~8; else ucLed |= 8; if(ucDac_Flag) ucLed &= ~0x10; else ucLed |= 0x10; } else ucLed = 0; }

九、2.代码展示-(CT107D竞赛平台实验程序-国信长天
#include "reg52.h"//定义51单片机特殊功能寄存器sbit LED1 = P0^0; sbit LED2 = P0^1; void cls_buzz() { P2 = ((P2&0x1f)|0xA0); P0 = 0x00; P2 &= 0x1f; } void cls_led() { P2 = ((P2&0x1f)|0x80); P0 = 0xFF; P2 &= 0x1f; }void main(void) { cls_buzz(); cls_led(); EX0 = 1; IT0 = 1; //边沿触发方式(下降沿)EX1 = 1; IT1 = 1; //边沿触发方式(下降沿)EA = 1; //开启总中断 while(1); }//外部中断0中断服务函数 void isr_intr_0(void) interrupt 0 { P2 = ((P2&0x1f)|0x80); LED1 = ~LED1; P2 = P2&0x1f; }//外部中断1中断服务函数 void isr_intr_1(void) interrupt 2 { P2 = ((P2&0x1f)|0x80); LED2 = ~LED2; P2 = P2&0x1f; }

十、3.代码展示-(课程代码-蚂蚁科技)
# include "bsp_init.h"# include "bsp_seg.h" # include "timer.h" # include "bsp_key.h" # include "bsp_led.h"#include "bsp_onewire.h"# include "stdio.h" //----------------------------------------------- /* 函数声明 */ //三个主体循环,基本上永远不变 void Key_Proc(void); //按键处理,底层数据变更 void Seg_Proc(void); //显示处理,显示信息生成 void Led_Proc(void); //LED处理,LED状态信息表示//----------------------------------------------- /* 全局变量声明 *///数码管显示专用,基本上永远不变 unsigned char seg_buf[8]; //放置字符串转换后的段码到数组 unsigned char seg_string[10]; //放置字符串 unsigned char pos = 0; //中断显示专用//LED显示专用,基本上永远不变 unsigned char ucLed; //记录LED的状态信息//按键专用,基本上永远不变 unsigned char Key_Value; //读取按键的数值存储变量 unsigned char Key_Down, Key_Old; //读取按键的数值存储变量 //按键和显示函数减速专用,基本永远不变 unsigned int Key_Slow_Down; //按键减速 unsigned int Seg_Slow_Down; //按键减速//滴答定时专用 unsigned long ms_Tick=0; //上电之后会一直运行下去 ,49天才会产生溢出 //根据代码需求发生变化 //----------------------------------------------- /* main */ void main() { //根据代码需求发生变化 Cls_Peripheral(); //关闭外设 Timer1Init(); //定时器1初始化,并且使能定时器1中断,1ms进入一次 EA = 1; //打开总中断 while(1) { //永远不变 Key_Proc(); //按键处理,底层数据变更 Seg_Proc(); //显示处理,显示信息生成 Led_Proc(); //LED处理,LED状态信息表示 }}//----------------------------------------------- /* Timer1_interrupt routine */ void tm1_isr() interrupt 3 { ms_Tick++; //上电自动++,持续运行 //永远不变 if(++Key_Slow_Down == 10) Key_Slow_Down = 0; if(++Seg_Slow_Down == 500) Seg_Slow_Down = 0; //取时间间隔 if(!(ms_Tick%800)) {} //永远不变 Seg_Disp(seg_buf, pos); //数码管显示刷新 if( ++pos == 8 )pos = 0; Led_Disp(ucLed); //LED显示 }//----------------------------------------------- /*key_proc */void Key_Proc(void)//按键处理,底层数据变更 { //永远不变 if(Key_Slow_Down) return; Key_Slow_Down = 1; //减速程序 Key_Value = https://www.it610.com/article/Key_Read(); //读取按键按下的编号 Key_Down = Key_Value & (Key_Old ^ Key_Value); // (0000^0101) = 01010101 & 0101 =0101,如果按键发生了下降沿的变化,输出结果和本次按键数值相同 // (0101^0101) = 00000101&0000 = 0000如果按键一直保持同样的状态,输出结果为0 Key_Old = Key_Value; //根据代码需求发生变化 switch(Key_Down)//如果捕捉到下降沿跳变 { } }//---------------------------------------------- /*seg_proc */ void Seg_Proc(void)//显示处理,显示信息生成 { //永远不变 if(Seg_Slow_Down) return; Seg_Slow_Down = 1; //减速程序 //根据代码需求发生变化 switch(0) { } //永远不变 Seg_Tran(seg_string, seg_buf); }//---------------------------------------------- /*led_proc */ void Led_Proc(void)//显示处理,显示信息生成 { //根据代码需求发生变化 switch(0) { } }

十一、4.代码展示-(课程代码-小蜜蜂)
#include "reg52.h"sbit L1 = P0^0; sbit L8 = P0^7; void Delay(unsigned int t) { while(t--); while(t--); while(t--); }void SelectHC573() { P2 = (P2 & 0x1f) | 0x80; }void Working() { SelectHC573(); L1 = 0; Delay(60000); L1 = 1; Delay(60000); }//================================ void Init_INT0() { IT0 = 1; EX0 = 1; EA = 1; }unsigned char stat_int = 0; void ServiceINT0() interrupt 0 { stat_int = 1; }void LEDINT() { if(stat_int == 1) { L8 = 0; Delay(60000); Delay(60000); Delay(60000); Delay(60000); Delay(60000); Delay(60000); L8 = 1; } stat_int = 0; } //================================ void main() { Init_INT0(); while(1) { Working(); LEDINT(); } }

十二、5.代码展示-(个人代码-耗不尽的先生)
#include"init.h" #include"key.h" #include"seg.h" #include".h" #include".h"#define uchar unsigned char #define uint unsigned intuintms; //默认11个参数 uchar Seg_dly, Key_dly, state=0, led; uchar Key_old, Key_val, Key_down; uchar Seg_buf[9], Seg_code[8], pos; void Key_Proc(void); void Seg_Proc(void); void Led_Proc(void); //========================== void main() { InitSys(); Timer1Init(); EA = 1; while(1) { Key_Proc(); Seg_Proc(); Led_Proc(); } } //========================== void Time1() interrupt 3 { ms++; if(++Key_dly== 10)Key_dly=0; if(++Seg_dly== 500) Seg_dly=0; if(!(ms % 1000)) {}Led_disp(led); Seg_disp(Seg_code,pos); if(++pos == 8) pos=0; } //========================== void Key_Proc() { if(Key_dly) return; Key_dly = 1; Key_val =KeyRead(); Key_down=Key_val & (Key_old ^ Key_val); Key_old =Key_val; switch(Key_down) {} } //========================== void Seg_Proc() { if(Seg_dly) return; Seg_dly=1; switch(state) { case 0: sprintf(Seg_buf, "1234%04u",(uint)ms); break; } Seg_tran(Seg_buf,Seg_code); } //========================== void Led_Proc(void) {} //==========================

【蓝桥杯|蓝桥杯单片机最全备考资料(真题、代码、原理图、指导手册、资源包)】推荐蓝桥杯单片机学习网址:
21ic-小蜜蜂
小蜜蜂笔记
CSDN-小蜜蜂
B站-小蜜蜂
B站-蚂蚁工厂
B站-51单片机个人收藏

    推荐阅读