RAR蓝桥杯单片机第十四届省赛题 73.76KB

阿波c麻了需要积分:2(1积分=1元)
文件:14届省赛.rar

资源介绍:

蓝桥杯单片机竞赛是由中国计算机学会组织的一项针对高校学生的电子设计竞赛,其目的在于推动电子信息类相关专业的学生实践能力,激发学生对单片机技术的兴趣和掌握。第十四届省赛题特指该赛事在某一年省级选拔赛中的竞赛题目,这些题目通常涵盖了单片机编程、硬件设计以及系统集成等多个层面,要求参赛者具备扎实的电子技术基础和创新解决问题的能力。 在此次竞赛中,所谓的“4T满分文件”可能指的是一个评分标准,其中“4T”很可能是某种特定的评分规则或者评价指标的简称。由于没有具体的文件内容,我们无法得知“4T”具体指代的含义,但可以合理推测,这可能是指在竞赛中能够得到满分的文件需要满足的某些硬性标准或要求。 单片机是一种集成电路芯片,它包含了CPU、存储器、输入输出接口等微电子部件,可以独立完成特定的逻辑控制功能。由于其体积小、成本低、功能强、易操作等特点,单片机广泛应用于电子产品的智能化控制中。在蓝桥杯竞赛中,单片机的应用通常要求参赛者编写程序,控制硬件按照一定的逻辑进行工作。 由于文件名称为“14届省赛1”,我们可以推断这可能是第十四届省级选拔赛中的第一个竞赛题目或者相关文件。这些文件可能包括题目的详细描述、技术要求、评分标准以及可能的硬件选择指南等。对于参赛者来说,这些文件是准备比赛的重要参考资料。 准备参加此类竞赛的学生需要具备以下知识点和技能:了解单片机的基本工作原理和结构;掌握至少一种单片机的编程语言,如C语言或汇编语言;熟悉单片机的开发环境和调试工具;能够根据实际问题设计出合理的电路,并利用单片机进行控制;具有一定的创新能力和解决实际问题的能力。除了理论知识,动手实践同样重要,学生需要在实际操作中不断完善自己的设计,使之更加高效和稳定。 了解了上述内容,参赛学生应该重视对单片机技术的深入研究和实践操作,不断提升自身的综合素质。在实际比赛中,学生需要仔细阅读题目,准确理解要求,然后结合自身所学知识,设计出创新的解决方案。最终,通过反复的实验和调试,确保作品能够达到竞赛的满分标准。 鉴于“4T”可能是竞赛的关键点,参赛者应该特别关注这方面的规则和要求,确保在比赛时能够针对这些评分点进行优化,从而取得优异的成绩。
/*头文件区域*/ #include <STC15F2K60S2> #include <Led> #include <Seg> #include <Init> #include <Key> #include <iic> #include <onewire> #include <ds1302> #include <intrins> /*参数变量区域*/ unsigned char Key_Old,Key_Up,Key_Down,Key_Val; unsigned char Seg_Slow,Key_Slow; unsigned char Seg_Pos; //数组 unsigned char Seg_Buf[8] = {10,10,10,10,10,10,10,10}; unsigned char Point[8] = {0,0,0,0,0,0,0,0}; unsigned char Led_Buf[8] = {0,0,0,0,0,0,0,0}; unsigned char Time[3] = {0x00,0x11,0x22}; //界面 unsigned char Seg_Mode ;//0时间,1回显,2参数 unsigned char back_Mode;//0温度回显,1湿度回显,2时间回显 //标志位 bit L6_flag; bit L4_flash;//L4闪烁标志位 bit sidu_enable;//湿度数据有效标志位,0为有效1为无效点亮 bit Time_Start;//长按计时标志位 bit Disp_Start;//进入温度湿度界面标志位 unsigned char Time_100ms;//闪烁时间0.1s unsigned int Time_1s;//计算频率时间1s unsigned int Time_3s;//界面3s计时 unsigned int Time_2s;//长按2s计时 unsigned char tempture_limit = 30;//温度参数值 unsigned char pre_flow;//之前光照值 unsigned int freq;//ne555获取的频率值 //记录的数据 unsigned char Time_record[3] = {0x00,0x00,0x00};//记录触发时间 unsigned char trigger_record = 0;//触发次数 unsigned int tempture_now_10x;//当前温度值 unsigned int tempture_pre_10x;//之前温度值 unsigned int tempture_max;//温度最大值 unsigned int tempture_avg_10x;//温度平均值 unsigned int sidu_max;//湿度最大值 unsigned int sidu_now_10x;//当前湿度值 unsigned int sidu_pre_10x;//之前湿度值 unsigned int sidu_avg_10x;//湿度平均值 /*清除数据函数区域*/ void clear_val(){ trigger_record = 0; tempture_now_10x = 0; tempture_pre_10x = 0; tempture_max = 0; tempture_avg_10x = 0; sidu_max = 0; sidu_now_10x = 0; sidu_pre_10x = 0; sidu_avg_10x = 0; Time_record[0] = Time_record[1] = Time_record[2] = 0; } /*按键函数区域*/ void Key_Proc(){ if(Key_Slow) return; Key_Slow = 1; Key_Val = Key_Read(); Key_Down = Key_Val & (Key_Val ^ Key_Old); Key_Up = ~Key_Val & (Key_Val ^ Key_Old); Key_Old = Key_Val; if(Key_Down == 4){//按下S4数码管显示界面切换 if(++Seg_Mode == 3) Seg_Mode = 0; back_Mode = 0;//每次回到回显界面都到温度回显 } if(Seg_Mode == 1){//在回显界面下有效 if(Key_Down == 5) back_Mode = back_Mode == 2?0:back_Mode+1;//按下按键S5切换温度,湿度,时间回显三个界面 } if(Seg_Mode == 2){//在参数界面下有效 if(Key_Down == 8) tempture_limit = tempture_limit==99?99:tempture_limit+1; if(Key_Down == 9) tempture_limit = tempture_limit==0?0:tempture_limit-1; } if(Seg_Mode == 1 && back_Mode == 2){//按键9在时间回显子界面长按清除所有记录的数据 if(Key_Down == 9){ Time_Start = 1;//开始计时 }//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~按键长按 if(Key_Up == 9){//松手了,看计时超过2s没有 Time_Start = 0;//松手停止计时 if(Time_2s>=2000) clear_val();//长按超过2s清空存储的数据 Time_2s = 0;//清空时间数据方便下次运行 } } } /*频率获取函数*/ float sidu_get(){ float sidu_temp; if(freq<200>2000) return 0; else{ sidu_temp = 8*(freq-200)/180 + 10;//获取当前湿度 return sidu_temp; } } /*数码管函数区域*/ void Seg_Proc(){ unsigned char temp_flow;//当前光照值 if(Seg_Slow) return; Seg_Slow = 1; temp_flow = Ad_Read(0x41);//读取当前光照值 if(pre_flow > 50 && temp_flow < 50 xss=removed xss=removed xss=removed xss=removed xss=removed xss=removed xss=removed xss=removed xss=removed xss=removed tempture_avg_10x=(tempture_avg_10x*(trigger_record-1)+tempture_now_10x)/trigger_record;//~~~~~~~~~~获取温度平均值 sidu_avg_10x=(sidu_avg_10x*(trigger_record-1)+sidu_now_10x)/trigger_record;//获取湿度平均值>tempture_max){//获取温度最大值 tempture_max = tempture_now_10x; } if(sidu_now_10x>sidu_max){//获取湿度最大值 sidu_max = sidu_now_10x; } if(trigger_record>=2){//不是第一次触发,且是有效触发 if(tempture_now_10x>tempture_pre_10x && sidu_now_10x>sidu_pre_10x) L6_flag = 1;//温度湿度都比之前高点亮L6 else L6_flag = 0; } tempture_pre_10x = tempture_now_10x; sidu_pre_10x = sidu_now_10x; Time_Read(Time_record);//记录下最近一次触发的时间 } pre_flow = temp_flow;//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~不管有没有触发我们都要在判断条件外记录当前光照值 if(Disp_Start){//进入湿度界面 Point[6] = 0;//熄灭小数点 Seg_Buf[0] = 16;//E Seg_Buf[1] = 10; Seg_Buf[2] = 10; Seg_Buf[3] = tempture_now_10x/100; Seg_Buf[4] = tempture_now_10x/10; Seg_Buf[5] = 11;//- if(sidu_now_10x == 0){//采集到的湿度数据无效 Seg_Buf[6] = 17;//A Seg_Buf[7] = 17; } else{//采集到有效数据 Seg_Buf[6] = sidu_now_10x/100; Seg_Buf[7] = sidu_now_10x/10; } } else{//没有进入湿度界面正常显示其他界面 switch(Seg_Mode){ case 0://时间界面 Time_Read(Time);//时间界面读取时间信息减小运行负担 Point[6] = 0;//熄灭小数点 Seg_Buf[0] = Time[0]/16; Seg_Buf[1] = Time[0]; Seg_Buf[2] = 11;//- Seg_Buf[3] = Time[1]/16; Seg_Buf[4] = Time[1]; Seg_Buf[5] = 11;//- Seg_Buf[6] = Time[2]/16; Seg_Buf[7] = Time[2]; break; case 1://回显界面 if(back_Mode == 0){//温度回显 Seg_Buf[0] = 12;//c if(trigger_record!=0){ Seg_Buf[1] = 10; Seg_Buf[2] = tempture_max/100;//都是10倍关系 Seg_Buf[3] = tempture_max/10; Seg_Buf[4] = 11;//- Seg_Buf[5] = tempture_avg_10x/100; Point[6] = 1;//点亮小数点 Seg_Buf[6] = tempture_avg_10x/10; Seg_Buf[7] = tempture_avg_10x; } else{ Point[6] = 0;//除了标志符其他全部熄灭 Seg_Buf[1] = Seg_Buf[2] = Seg_Buf[3] = Seg_Buf[4] = Seg_Buf[5] = Seg_Buf[6] = Seg_Buf[7] = 10; } } else if(back_Mode == 1){//湿度回显 Seg_Buf[0] = 13;//H if(trigger_record!=0){ Seg_Buf[1] = 10; Seg_Buf[2] = sidu_max/100; Seg_Buf[3] = sidu_max/10; Seg_Buf[4] = 11;//- Seg_Buf[5] = sidu_avg_10x/100; Point[6] = 1;//点亮小数点 Seg_Buf[6] = sidu_avg_10x/10; Seg_Buf[7] = sidu_avg_10x; } else{ Point[6] = 0;//除了标志符其他全部熄灭 Seg_Buf[1] = Seg_Buf[2] = Seg_Buf[3] = Seg_Buf[4] = Seg_Buf[5] = Seg_Buf[6] = Seg_Buf[7] = 10; } } else{//时间回显, Seg_Buf[0] = 14;//F Seg_Buf[1] = trigger_record/10; Seg_Buf[2] = trigger_record; if(trigger_record!=0){//触发次数不为0时 Seg_Buf[3] = Time_record[0]/16; Seg_Buf[4] = Time_record[0]; Seg_Buf[5] = 11; Point[6] = 0;//熄灭小数点 Seg_Buf[6] = Time_record[1]/16; Seg_Buf[7] = Time_record[1]; } else{ Point[6] = 0; Seg_Buf[3] = Seg_Buf[4] =Seg_Buf[5] = Seg_Buf[6] = Seg_Buf[7] = 10;//熄灭无关数码管 }
100+评论
captcha
    类型标题大小时间
    ZIP使用C#进行Yolo模型的Predict和Segment训练及推理51.75MB2周前
    PDF第十五届蓝桥杯大赛软件赛省赛-C/C++ 研究生组161.99KB2周前
    ZIPARM麒麟Kylin-v10 openssh-9.9p1-1.ky10.aarch6414.85MB2周前
    ZIPcentos8的openssh9.9p2 RPM包,解决漏洞CVE-2025-26465 和 CVE-2025-264662.18MB2周前
    ZIPDeepSeek+wxauto+Python 实现最简单的微信自动回复机器人(极简实现)2.68KB2周前
    ZIP毕业设计基于python+django+vue开发的电子商城系统源码38.85MB2周前
    APK橘猫定制抓号器_8.2(1).apk257.06KB2周前
    PDFPython 八股文.pdf303.7KB2周前