【第十三届蓝桥杯单片机国赛满分代码】

其他相关文章:
【提分必看!】蓝桥杯单片机提分技巧(国一经验分享)
【国一超全代码分享!】蓝桥杯单片机各模块代码整合
【蓝桥杯单片机客观题知识点汇总】

本代码经过编译后生成的hex文件经过了4T测试平台的满分测试。读者对代码有疑问的可以在评论区里提出。

主函数

#include "stdio.h"
#include "intrins.h"#include "bsp_init.h"
#include "bsp_led.h"
#include "bsp_key.h"
#include "bsp_seg.h"
#include "bsp_sonic.h"
#include "bsp_555.h"
#include "bsp_iic.h"#include "Timer.h"//
void Key_Proc(void);
void Seg_Proc(void);//
unsigned char Key_Slow=0;
unsigned char Seg_Slow=0;unsigned char onems_tick=0;
unsigned char freq_tick=0;
unsigned char pwm_tick=0;
unsigned int clear_tick=0;// 按键
unsigned char Key_Value;
unsigned char Key_Down;
unsigned char Key_Old;// 数码管
unsigned char seg_string[11];
unsigned char seg_buf[8]={0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff};
unsigned char pos=0;// LED
unsigned char ucLed=0;// EEPROM
unsigned char eeprom_string[2];// 超声波和频率测量
unsigned char dist=0;
unsigned int freq=0;// 逻辑标志位
unsigned char ui_state=0;
unsigned char par_mode=0;
bit cm_mode=0;
bit hz_mode=0;
bit pwm_flag=0;
bit dist_flag=0;
bit count_flag=0;
bit clear_flag=0;bit pp1_flag=0;
bit pp2_flag=0;// 湿度
unsigned char shidu=0;// 参数
float freq_par=9.0;
unsigned char shidu_par=40;
float dist_par=0.6;unsigned char count=0;void main(void)
{Cls_Waishe();Sonic_Timer1Init();Freq_Timer0Init();Timer2Init();EA=1;while(1){Key_Proc();Seg_Proc();}
}//
void Key_Proc(void)
{if(Key_Slow)  return;Key_Slow=1;Key_Value=Read_BTN();Key_Down=Key_Value&(Key_Old^Key_Value);Key_Old=Key_Value;if(Key_Down==4){ui_state++;if(ui_state>3)  ui_state=0;}if(ui_state==3 && Key_Down==5){par_mode++;if(par_mode>2)  par_mode=0;}if(ui_state==0 && Key_Down==7) hz_mode^=1;if(ui_state==2 && Key_Down==6) cm_mode^=1;if(ui_state==3){if(par_mode==0){if(Key_Down==6){freq_par+=0.5;if(freq_par>12.0)  freq_par=1.0;}else if(Key_Down==7){freq_par-=0.5;if(freq_par<1.0)  freq_par=12.0;}}else if(par_mode==1){if(Key_Down==6){shidu_par+=10;if(shidu_par>60)  shidu_par=10;}else if(Key_Down==7){shidu_par-=10;if(shidu_par<10)  shidu_par=60;}}else if(par_mode==2){if(Key_Down==6){dist_par+=0.1;if(dist_par>1.2)  dist_par=0.1;}else if(Key_Down==7){dist_par-=0.1;if(dist_par<0.1)  dist_par=1.2;}}}if(ui_state==1){if(Key_Value==7){if(clear_tick++>100){clear_flag=1;}}else{if(clear_flag==1){clear_tick=0;clear_flag=0;count=0;}else{clear_tick=0;}}}
}
//
void Seg_Proc(void)
{if(Seg_Slow)  return;Seg_Slow=1;shidu=(Pcf_ADC(0x43)/51.0)*20.0;dist=Wave_Rec();if((dist/100.0)>dist_par)  {if(count_flag==0){count_flag=1;count++;}dist_flag=1;ucLed |= 0x20;}else  {if(count_flag==1){count_flag=0;count++;}dist_flag=0;ucLed &= 0xDF;}eeprom_string[0]=count;EEPROM_Write(eeprom_string,0,1);if(shidu<=shidu_par){Pcf_DAC(51);}else if(shidu>=80){Pcf_DAC(255);}else{Pcf_DAC(((4.0/(80.0-1.0*shidu_par))*(float)shidu+((80.0-5.0*shidu_par)/(80.0-1.0*shidu_par)))*51.0);}if(shidu>shidu_par)  ucLed |= 0x10;else  ucLed &= 0xEF;if(freq>(freq_par*1000))  {pwm_flag=1;ucLed |= 0x08;}else {pwm_flag=0;ucLed &= 0xF7;}switch(ui_state){case 0:{ucLed = ucLed&0xF9|0x01;par_mode=0;if(hz_mode==0){sprintf(seg_string,"F %6d",freq);}else if(hz_mode==1){sprintf(seg_string,"F %7.1f",freq/1000.0);}break;}case 1:{ucLed = ucLed&0xFA|0x02;sprintf(seg_string,"H     %2d",(unsigned int)shidu);break;}case 2:{ucLed = ucLed&0xFC|0x04;if(cm_mode==0)  {sprintf(seg_string,"A    %3d",(unsigned int)dist);}else if(cm_mode==1){sprintf(seg_string,"A    %4.2f",dist/100.0);}break;}case 3:{if(par_mode==0){ucLed = ucLed&0xF9^0x01;sprintf(seg_string,"P1   %4.1f",freq_par);}else if(par_mode==1){ucLed = ucLed&0xFA^0x02;sprintf(seg_string,"P2    %2d",(unsigned int)shidu_par);}else if(par_mode==2){ucLed = ucLed&0xFC^0x04;sprintf(seg_string,"P3    %3.1f",dist_par);}break;}default:break;}Seg_Tran(seg_string,seg_buf);
}//-----------------------------------------------
//中断服务程序
void t2int() interrupt 12           //中断入口
{if(++onems_tick==10){onems_tick=0;if(Key_Slow++==10)  Key_Slow=0;if(Seg_Slow++==100)  Seg_Slow=0;if(++freq_tick==100){freq_tick=0;TR0 = 0;freq=((TH0<<8)|TL0);freq=freq*10;TL0 = 0;		TH0 = 0;		TR0 = 1;}Seg_Disp(seg_buf,pos);if(++pos==8)  pos=0;Led_Disp(ucLed);}if(dist_flag==0)  P0=0x00;else if(dist_flag==1)  P0=0x10;
//	if(pwm_flag==1){pp2_flag=0;if(pwm_tick<8){if(pp1_flag==0){pp1_flag=1;P0|=0x20;P2=P2&0x1F|0xA0;P2=P2&0x1F;}}else{if(pp1_flag==1){pp1_flag=0;P0|=0x00;P2=P2&0x1F|0xA0;P2=P2&0x1F;}}if(++pwm_tick==10)  pwm_tick=0;}else if(pwm_flag==0){pp1_flag=0;if(pwm_tick<2){if(pp2_flag==0){pp2_flag=1;P0|=0x20;P2=P2&0x1F|0xA0;P2=P2&0x1F;}}else{if(pp2_flag==1){pp2_flag=0;P0|=0x00;P2=P2&0x1F|0xA0;P2=P2&0x1F;}}if(++pwm_tick==10)  pwm_tick=0;}
}

其他模块

其他模块代码直接参考:【国一超全代码分享!】蓝桥杯单片机各模块代码整合

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/52816.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python从入门到精通:文件操作

目录 1、文件编码 2、文件的读取 open( )打开函数 3、文件的写入 4、文件的追加 5、文件的操作&#xff08;综合案例&#xff09; 1、文件编码 因为计算机只能识别0和1&#xff0c;所以我们是通过编码技术&#xff08;密码本&#xff09;将内容翻译成0和1存入&#xff0…

Clock skew

时钟偏差(有时称为时序偏差)是同步数字电路系统(如计算机系统)中的一种现象,其中由于门电路或更先进的半导体技术中导线信号传播延迟,源自同一源的时钟信号会在不同时间到达不同组件。任何两个时钟读数之间的瞬时差异被称为它们的偏差。 大多数数字电路的操作由一个周期…

C#——扩展方法

扩展方法 定义 扩展方法&#xff08;Extension Methods&#xff09;是C#中一种特殊的静态方法&#xff0c;它定义在一个静态类中&#xff0c;但是可以像实例方法一样被调用&#xff0c;使得代码更加简洁、易读。 设计目的 是为了给已有的类型添加新的行为&#xff0c;而不需要…

数学建模学习(124):使用Python实现模糊ARAS方法从原理到实战

文章目录 1. 引言2. 模糊ARAS方法原理2.1 模糊数的表示3. 案例分析:设备采购决策3.1 数据来源3.2 权重设定3.3 数据集3.4 Python实现模糊ARAS方法3.5 结果分析3.6 模糊ARAS的优势3.7 应用场景4. 总结参考文献1. 引言 在复杂的决策场景中,决策者往往面对的不仅仅是多个选择(…

Android APK打包脚本

build.gradle版本 同目录创建config.gradle文件写入需要的信息入 config.gradle文件内容 ext { /*** 自定义APP运行环境* dev: 开发* test: 测试* pro: 生产*/ env "pro" /*** 动态参数配置&#xff0c;根据自己需要添加参数* APP_ID: 包名* VERSION_CODE: 版本号…

【C++】奇异递归模板模式CRTP——静态多态

奇异递归模板模式&#xff08;Curiously Recurring Template Pattern&#xff0c;CRTP&#xff09;是C模板编程时的一种惯用法&#xff08;idiom&#xff09;&#xff1a;把派生类作为基类的模板参数。更一般地被称作F-bound polymorphism。CRTP在C中主要有两种用途&#xff1a…

在高质量视频生成文本、图像生成文本的GLM-4V-Plus技术加持下医疗未来的方向

人工智能的进步为医疗领域带来了巨大的变革&#xff0c;尤其是视频生成文字、图片生成文字和医学统计数据生成文字等技术的应用。这些技术使得我们能够更全面地利用大数据来辅助诊断&#xff0c;为患者提供更加精确和个性化的医疗服务。以下是一些可能的应用场景和优势&#xf…

国产网卡品牌崛起,做好网络信息安全的“守门人”

在信息技术日新月异的时代背景下&#xff0c;信息安全不仅关乎个人隐私保护&#xff0c;更是国家安全与经济发展的基石。LR-LINK联瑞凭借其前瞻性的视野和深厚的研发实力&#xff0c;成功自主研发出全国产化的FPGA&#xff08;现场可编程门阵列&#xff09;网闸隔离卡方案&…

优质企业上网行为管理软件大盘点

员工在上班时间摸鱼&#xff0c;看似是一个小问题&#xff0c;但却会给企业带来诸多不良影响。首先&#xff0c;摸鱼会降低员工的工作效率&#xff0c;导致工作任务无法按时完成&#xff0c;影响项目进度。其次&#xff0c;摸鱼行为会破坏企业的工作氛围&#xff0c;影响其他员…

零基础学习Python(七)

1. 字符串常用方法 lower()、upper()&#xff1a;转换为小写字符串、大写字符串 split(str)&#xff1a;按照指定字符串str进行分割&#xff0c;结果为列表&#xff1a; email "123qq.com" print(email.split("")) [123, qq.com] count(str)&#xf…

Linux 安装Mysql保姆级教程

一、检查环境 我们登录服务器&#xff0c;查看之前是否安装过mysql rpm -qa | grep mysql 由于我之前安装过&#xff0c;所以这里是有数据的 如果需要删除重新下载&#xff0c;可以使用 rpm -e mysql57-community-release-el7-10.noarch.rpm 二、安装 1、下载 接下来下载安装…

Hive SQL

一、基本数据类型 tinyint 1byte 有符号整数 smallint 2byte 有符号整数 int 4byte 有符号整数 bigint 8byte 有符号整数 boolean 布尔类型&#xff0c;true或者false float 单精度浮点数 double 双精度浮点数 decim…

电脑C盘临时文件怎么清理?

在解决“C盘临时文件怎么清理&#xff1f;”的问题前&#xff0c;先来一起了解一下清理C盘临时文件的原因&#xff1a; 释放磁盘空间&#xff1a;临时文件可以占用大量磁盘空间&#xff0c;尤其是在长时间未清理的情况下&#xff0c;清理这些文件可以释放空间。提高系统性能&a…

gaussian grouping训练自定义数据集

gaussian grouping是一个语义分割3DGS的方法。 它在每个3DGS点云中加入一个叫Identity Encoding的特征向量&#xff0c; 在渲染时把特征向量渲染到2D图像&#xff0c;每个像素位置为一个特征向量&#xff0c;使用额外的线性分类层对每个2D位置的特征向量分类。得到mask。 这个m…

Python——模块和包

模块 Python的模块&#xff08;Modules&#xff09;是Python程序的重要组成部分&#xff0c;它们允许你将代码分解成可重用的单元。每个模块都是一个包含Python代码的文件&#xff0c;文件名就是模块名加上.py后缀。模块可以定义函数、类和变量&#xff0c;也可以包含可执行的…

sheng的学习笔记-AI-半监督聚类

AI目录&#xff1a;sheng的学习笔记-AI目录-CSDN博客 半监督学习&#xff1a;sheng的学习笔记-AI-半监督学习-CSDN博客 聚类&#xff1a;sheng的学习笔记-AI-聚类(Clustering)-CSDN博客 均值算法&#xff1a;sheng的学习笔记-AI-K均值算法_k均值算法怎么算迭代两次后的最大…

突发!Runway 从 HuggingFace 及 GitHub 上删库跑路,背后有何隐情?

突发&#xff01;2024年8月29日Runway 从 HuggingFace 及 GitHub 上删库跑路&#xff0c;背后有何隐情&#xff1f; &#x1f9d0; 今天我们来聊一聊科技圈一则爆炸性消息&#xff1a;Runway ML 从 HuggingFace 和 GitHub 上删库跑路&#xff0c;毫无预警&#xff01;这个举动…

Java大文件上传方案(vue+饿了么):秒传、断点续传、分片上传!

前言 本篇文章是基于其他文章的基础上结合自己的理解写出来的,如果哪里有问题请指出! 详细教程 秒传 1、什么是秒传 通俗的说&#xff0c;你把要上传的东西上传&#xff0c;服务器会先做MD5校验&#xff0c;如果服务器上有它就会进入秒传&#xff0c;想要不秒传&#xff0…

properties文件提示未引用

问题描述 以前用的好好的项目,今天突然打开就发现idea不识别spring配置信息显示未引用,如果config代码中引入的配置却可以高亮显示,然后输入spring相关的配置,文件是没有提示的。经过研究发现是spring相关的插件被关闭了。效果如下 解决方法 启用三个插件spring Boot,Sp…

看完这100道软件测试面试题,拿不到offer,算我输

掌握此套面试题&#xff0c;人手至少2份offer&#xff0c;绝不瞎吹&#xff01;分享给大家。 一、自我介绍 二、灵活问题 1、大概说说之前公司的测试流程 2、测试报告有哪些内容? 3、如何保证用例的覆盖度&#xff1f; 4、什么是测试用例&#xff0c;什么是测试脚本&…