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

您所在的位置:网站首页 蓝搜v30 【蓝桥杯单片机最全备考资料】真题、代码、原理图、指导手册、资源包

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

2023-07-25 04:34| 来源: 网络整理| 查看: 265

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

前言

蓝桥杯嵌入式资料最新总结,传送门~

所有资料都是个人在学习蓝桥杯单片机时候滴! 获取所有资料昂(含泪免费)!!! 公众号还收集了 💯各大期末不挂科平台 💯的视频和课件:高斯、斐多、猴博士、高数叔 等,快来一起玩呀🙈~

呜呜呜呜~~~ 汇总太不容易了 一定要记得关注 公粽号“耗不尽的先生” 嗷~ 【耗不尽的先生】感性与理性的分享… 公众号回复“蓝桥杯”获取全部资料! 欢迎大家过来关注一起玩呀~**

一、第一~十三届省/国赛真题

(整理的官方真题,内容自由可编辑,求个公众号关注~~~) 请添加图片描述

二、第八~十二届省/国赛客观题参考答案与解析

(官方答案+小蜜蜂老师的解析,文档自由可编辑) 请添加图片描述

三、《“蓝桥杯”全国软件和信息技术专业人才大赛实训指导书》

(官方指导书附近年真题答案,文档自由可编辑) 请添加图片描述

四、《51单片机原理与应用开发》小蜜蜂学习笔记与题库、《蓝桥杯单片机设计与开发》特训手册【小蜜蜂】

请添加图片描述 请添加图片描述

五、赛点资源数据包_单片机_2022、2021、2020年

在这里插入图片描述

六、CT107D竞赛板 Protues 仿真模拟原理图

请添加图片描述

七、IAP15F2K61S2_V20_00原理图

请添加图片描述

请添加图片描述

八、1.代码展示-(蓝桥杯大赛指导书配套-官方源代码) #include "tim.h" #include "key.h" #include "seg.h" #include "stdio.h" #include "iic.h" unsigned int uiFre_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 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 = 250) && (uiVol_Val 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 = Key_Read();//读取按键按下的编号 Key_Down = Key_Value & (Key_Old ^ Key_Value);// (0000^0101) = 0101 0101 & 0101 =0101 ,如果按键发生了下降沿的变化,输出结果和本次按键数值相同 // (0101^0101) = 0000 0101&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 int uint ms;//默认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单片机个人收藏



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3