第十二届蓝桥杯单片机国赛练习代码

文章目录

  • 前言
  • 一、问题重述
  • 二、主函数
  • 总结


前言

  第十五蓝桥杯国赛落幕已有十天,是时候总结一下,这个专栏也将结束。虽然并没有取得预期的结果,但故事结尾并不总是美满的。下面是赛前练习的第十二届国赛的代码。


一、问题重述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

二、主函数

  完整项目工程见第十二届蓝桥杯单片机国赛代码

#include "main.h"
#include "key_smg.h"
#include "timer.h"
#include "ultra.h"
#include "ds1302.h"
#include "iic.h"u8 smgflash=0;
u8 weishu=0;u8 keyflash=0,keytemp=0,keynum=0;u8 bigpage=0;u8 page1=0,page11=0,page2=0;float dis=0;long dis_show=100,maxdis=0,mindis=100;
float avedis=0;long avedis_show=0;u16 avenum=0;
u8 trigflash=2,trigflashtemp=2;
u8 dislimit=20,dislimittemp=20;
u8 trigflag=0;u8 sectemp=0x01;
u8 measuremode=12;int pcf8591flash=0;u8 lastvolu=0,nowvolu=0;u8 led[]={0,1,1,1,1,1,1,1};
u8 led5flag=0;void keyvalue();
void keyfun();
void showpage();
void fun();
void ledfun();void main()
{outputp0(0x80,0xff);outputp0(0xa0,0x00);ds1302set();Timer0_Init();Timer1_Init();while(1){keyvalue();keyfun();fun();ledfun();showpage();}}void Timer1_Isr(void) interrupt 3
{TL1 = 0x18;				//设置定时初始值TH1 = 0xFC;				//设置定时初始值smgflash++;if(smgflash>=2){smgflash=0;showloop();}keyflash++;pcf8591flash++;
}
void keyvalue()  //按键读取函数
{if(keyflash>=25){keyflash=0;keytemp=keygetvalue();}if(keytemp){keynum=keytemp;keytemp=0;}
}void keyfun()   //按键功能函数
{if(keynum == 4){bigpage=!bigpage;page1=page2=0;dislimit=dislimittemp;trigflash=trigflashtemp;showoff();}else if(keynum == 5){showoff();if(!bigpage){page1++;page1%=3;if(page1==2)page11=0;}else{page2++;page2%=2;}}else if(keynum == 8){   if(bigpage==0){if(page1 == 1){if(measuremode == 12)measuremode = 15;elsemeasuremode = 12;}else if(page1==2){showoff();page11++;page11%=3;}}}  else if(keynum == 9){if(bigpage){if(!page2){switch(trigflashtemp){case 2:trigflashtemp=3;break;case 9:trigflashtemp=2;break;default:trigflashtemp+=2;break;}}else {dislimittemp+=10;if(dislimittemp>=90)dislimittemp=10;}}}  
}void showpage()   //数码管显示函数
{if(bigpage==0){if(page1==0){ds1302read();segsy[0]=time[0]/10;segsy[1]=time[0]%10;segsy[2]=18;segsy[3]=time[1]/10;segsy[4]=time[1]%10;segsy[5]=18;segsy[6]=time[2]/10;segsy[7]=time[2]%10;}else if(page1 == 1){segsy[0]=20;segsy[1]=measuremode;segsy[2]=16;segsy[3]=16;segsy[4]=16;showperiod(dis_show,3);}else if(page1 == 2){if(page11==0){segsy[0]=21;segsy[1]=17;segsy[2]=16;segsy[3]=16;showperiod(maxdis,4);}else if(page11==1)     {segsy[0]=21;segsy[1]=18;segsy[2]=16;segsy[3]=16;showperiod(mindis,4);}  else if(page11==2)     {segsy[0]=21;segsy[1]=19;segsy[2]=16;segsy[3]=16;showperiod(avedis_show,4);dotsy[6]=1;}  }}else{if(page2==0){segsy[0]=22;segsy[1]=page2+1;segsy[2]=16;segsy[3]=16;segsy[4]=16;segsy[5]=16;segsy[6]=trigflashtemp/10;segsy[7]=trigflashtemp%10;}else if(page2==1){segsy[0]=22;segsy[1]=page2+1;segsy[2]=16;segsy[3]=16;segsy[4]=16;segsy[5]=16;segsy[6]=dislimittemp/10;segsy[7]=dislimittemp%10;}}
}void fun()   //其他功能函数
{if(measuremode==15){    ds1302read();if(time[2]%trigflash==0 && sectemp!=time[2]){trigflag=1;sectemp=time[2];}}else if(measuremode==12){if(pcf8591flash>=300){pcf8591flash=0;lastvolu=nowvolu;nowvolu=pcf_ad();if(lastvolu>204 && nowvolu<102)trigflag=1;}}if(trigflag==1){trigflag=0;dis=ultra_rx();dis_show=dis+0.5;if(dis_show>maxdis)maxdis=dis_show;if(dis_show<mindis)mindis=dis_show;avedis=(avedis*avenum+dis_show)/(++avenum);avedis_show=avedis*10+0.5;if(dis_show<=10)pcf_da(51);else if(dis_show<=80)pcf_da( (dis_show-10)*2/35*51 + 51);elsepcf_da(255);if(measuremode==15){if(dis_show>=(dislimit-5) && dis_show<=(dislimit+5)){led5flag++;if(led5flag>=3){led5flag=2;led[4]=0;}}else{led5flag=0;led[4]=1;}}}
}void ledfun()  //led灯函数
{if(keynum){ledoff;if(bigpage==0){if(page1==0){led[0]=0;}else if(page1==1){led[1]=0;}else if(page1==2){led[2]=0;}    }}if(measuremode==12){led[3]=0;}else{led[3]=1;}if(nowvolu>204){led[5]=0;}else{led[5]=1;}ledset; if(keynum)keynum=0;
}

总结

  就以此作为人生中该分支旅途的终点吧。

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

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

相关文章

大数据快速使用Kerberos认证集群

一、创建安全集群并登录其Manager 创建安全集群&#xff0c;开启“Kerberos认证“参数开关&#xff0c;并配置“密码“、“确认密码“参数。该密码用于登录Manager&#xff0c;请妥善保管。 登录MRS管理控制台页面。 单击“集群列表“&#xff0c;在“现有集群“列表&#xf…

虚拟机调用摄像头设备一直 select timeout问题的解决

在VMware里面调用v4l2-ctl捕获图像&#xff0c;或者opencv的VideoCapture(0)捕获图像&#xff0c;或者直接调用v4l2的函数&#xff0c;在streamon后&#xff0c;调用select读取数据&#xff0c;均会一直提示select timeout的问题&#xff0c;大概率是由于USB版本的兼容性造成的…

fs.1.10 ON rockylinux8 docker镜像制作

概述 freeswitch是一款简单好用的VOIP开源软交换平台。 rockylinux docker上编译安装fs1.10版本的流程记录。 环境 docker engine&#xff1a;Version 24.0.6 rockylinux docker&#xff1a;8 freeswitch&#xff1a;v1.10.7 手动模式 rockylinux准备 docker hub拉取r…

AI智能体做高考志愿填报分析

关注公众号&#xff0c;赠送AI/Python/Linux资料&#xff0c;对AI智能体有兴趣的朋友也可以添加一起交流 高考正在进行时&#xff0c;学生焦虑考试&#xff0c;家长们焦虑的则是高考志愿怎么填。毕竟一个好的学校&#xff0c;好的专业是进入社会的第一个敲门砖 你看张雪峰老师…

2024.6.10学习记录

1、代码随想录二刷 2、项目难点 review 3、计组复习

RabbitMQ-工作模式(Topics模式RPC模式Publisher Confirms模式)

文章目录 Topics模式topic代码示例 RPC模式客户端界面回调队列关联ID总结RPC代码示例 Publisher Confirms模式概述在通道上启用发布者确认单独发布消息批量发布消息异步处理发布者确认总结总体代码示例 更多相关内容可查看 Topics模式 在Topics中&#xff0c;发送的消息不能具…

目标检测算法YOLOv9简介

YOLOv9由Chien-Yao Wang等人于2024年提出&#xff0c;论文名为&#xff1a;《YOLOv9: Learning What You Want to Learn Using Programmable Gradient Information》&#xff0c;论文见&#xff1a;https://arxiv.org/pdf/2402.13616 &#xff1b;源码见: https://github.com/W…

一文带你轻松掌握Java数组定义和声明

哈喽&#xff0c;各位小伙伴们&#xff0c;你们好呀&#xff0c;我是喵手。运营社区&#xff1a;C站/掘金/腾讯云&#xff1b;欢迎大家常来逛逛 今天我要给大家分享一些自己日常学习到的一些知识点&#xff0c;并以文字的形式跟大家一起交流&#xff0c;互相学习&#xff0c;一…

Java_Map集合

认识Map集合 Map集合称为双列集合&#xff0c;格式&#xff1a;{key1value&#xff0c;key2value2,key3value3,…},一次需要存一对数据作为一个元素。 Map集合的每个元素“Keyvalue” 称为一个键值对/键值对对象/一个Entry对象&#xff0c;Map集合也被叫做“键值对集合” Map集…

Vue笔记(二)

Vue&#xff08;一&#xff09;&#xff1a;Vue笔记&#xff08;一&#xff09;-CSDN博客 综合案例&#xff1a;水果购物车 项目功能&#xff1a; 视频链接&#xff1a;034-水果购物车-基本渲染_哔哩哔哩_bilibili 目录结构&#xff1a; index.css .app-container {padding-…

已解决Error || RuntimeError: size mismatch, m1: [32 x 100], m2: [500 x 10]

已解决Error || RuntimeError: size mismatch, m1: [32 x 100], m2: [500 x 10] 原创作者&#xff1a; 猫头虎 作者微信号&#xff1a; Libin9iOak 作者公众号&#xff1a; 猫头虎技术团队 更新日期&#xff1a; 2024年6月6日 博主猫头虎的技术世界 &#x1f31f; 欢迎来…

第十一篇——信息增量:信息压缩中的保守主义原则

目录 一、背景介绍二、思路&方案三、过程1.思维导图2.文章中经典的句子理解3.学习之后对于投资市场的理解4.通过这篇文章结合我知道的东西我能想到什么&#xff1f; 四、总结五、升华 一、背景介绍 通过信息中的保守主义&#xff0c;我想到了现实中人的保守主义一样&#…

汇编语言作业(五)

目录 一、实验目的 二、实验内容 三、实验步骤以及结果 四、实验结果与分析 五、 实验总结 一、实验目的 1.熟悉掌握汇编语言的程序结构&#xff0c;能正确书写数据段、代码段等 2&#xff0c;利用debug功能&#xff0c;查看寄存器&#xff08;CS,IP,AX,DS..)及数据段的…

基于AI大文本模型的智慧对话开发设计及C#源码实现,实现智能文本改写与智慧对话

文章目录 1.AI 大模型发展现状2.基于AI服务的智慧对话开发2.1 大模型API选择2.2 基于C#的聊天界面开发2.3 星火大模型API接入2.4 优化开发界面与显示逻辑 3.源码工程Demo及相关软件下载参考文献 1.AI 大模型发展现状 端午假期几天&#xff0c;关注到国内的AI大模型厂商近乎疯狂…

计算机网络期末考试知识点(关键词:江中)

目录 大家端午节快乐呀&#xff01;又到了一年两度的期末考试月了&#xff0c;这里给大家整理了一些复习知识点&#xff0c;大家可以边吃粽子边复习&#xff0c;事半功倍哈哈哈。祝各位期末过&#xff01;过&#xff01;过&#xff01;。 1 第一章 计算机网络体系结构 计算机…

Kaggle -- Digit Recognizer 98.57%

使用卷积神经网络进行模型构建&#xff0c;代码如下&#xff1a; import pandas as pd import numpy as np import torch import torch.nn as nn import torch.optim as optim import torch.nn.functional as F from torch.utils.data import DataLoader, Dataset, random_spl…

【MySQL】聊聊唯一索引是如何加锁的

首先我们要明确&#xff0c;加锁的对象是索引&#xff0c;加锁的基本单位是next-key lock&#xff0c;由记录锁和间隙锁组成。next-key是前开后闭区间&#xff0c;间隙锁是前开后开区间。根据不同的查询条件next-key 可能会退化成记录锁或间隙锁。 在能使用记录锁或者间隙锁就…

电路防护-贴片陶瓷气体放电管

贴片陶瓷气体放电管 GDT工作原理GDT主要特性参数典型电路压敏电阻与 TVS 管的区别 GDT工作原理 陶瓷气体放电管是一种电子器件&#xff0c;其工作原理基于气体放电现象。这种管子的内部填充了一种特定的气体&#xff0c;通常是氖气或氩气。当管子两端施加足够的电压时&#xf…

vivado HW_ILA_DATA、HW_PROBE

HW_ILA_DATA 描述 硬件ILA数据对象是ILA调试核心上捕获的数据的存储库 编程到当前硬件设备上。upload_hw_ila_data命令 在从ila调试移动捕获的数据的过程中创建hw_ila_data对象 核心&#xff0c;hw_ila&#xff0c;在物理FPGA上&#xff0c;hw_device。 read_hw_ila_data命令还…

nginx优化与防盗链【☆☆☆】

目录 一、用户层面的优化 1、隐藏版本号 方法一&#xff1a;修改配置文件 方法二&#xff1a;修改源码文件&#xff0c;重新编译安装 2、修改nginx用户与组 3、配置nginx网页缓存时间 4、nginx的日志切割 5、配置nginx实现连接超时 6、更改nginx运行进程数 7、开启网…