蓝桥杯单片机省赛——第十一届“温度与电压输出”程序部分

本文主要是介绍蓝桥杯单片机省赛——第十一届“温度与电压输出”程序部分,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

往期回顾

第三届蓝桥杯单片机省赛
第四届蓝桥杯单片机省赛
第五届蓝桥杯单片机省赛
第六届蓝桥杯单片机省赛
第七届蓝桥杯单片机省赛
第八届蓝桥杯单片机省赛
第九届蓝桥杯单片机省赛
第十届蓝桥杯单片机省赛

文章目录

  • 往期回顾
  • 一、前期准备
  • 二、代码详情
    • 1.基础代码
      • 蜂鸣器/继电器/led/定时器之类的代码
    • 2.按键详解
      • 按键写法讲解
    • 3.驱动的处理
      • 驱动写法讲解
    • 4.温度/数码管部分处理
    • 5.总代码


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

一、前期准备

1:本文使用的头文件是由stc生成
在这里插入图片描述
点击保存文件之后,保存至自己文件目录下方即可
在这里插入图片描述
2:本文使用的都是官方提供的底层驱动代码
在这里插入图片描述

二、代码详情

1.基础代码

蜂鸣器/继电器/led/定时器之类的代码

参考之前写的文章
第四届蓝桥杯代码讲解

2.按键详解

按键写法讲解

直接跳转以前的文章即可
多种蓝桥杯/51按键写法详解

3.驱动的处理

驱动写法讲解

直接跳转以前的文章即可
蓝桥杯驱动处理

4.温度/数码管部分处理

直接跳转以前的文章即可
蓝桥杯温度部分处理

5.总代码

#include<stc15f2k.h>
#include<iic.h>
#include<onewire.h>
sbit s7=P3^0;
sbit s6=P3^1;
sbit s5=P3^2;
sbit s4=P3^3;char dula[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf,0xff,0xc6,0x8c};
char disdula[]={0,0,0,0,0,0,0,0};int diswela,wei=9,key,ms,sign,temp;
int max=30,min=20,t_max=30,t_min=20;
int lock=1,lock_h,lock_l,lock_1;bit flag,shezhi,yichang;void buzz()
{P2=((P2&0x1f)|0xa0);P0=0x00;P2&=0x1f;P2=((P2&0x1f)|0x80);P0=0xff;P2&=0x1f;
}void led(int on)
{P2=((P2&0x1f)|0x80);P0=on;P2&=0x1f;
}void delay(int x)
{int i;while(x--)for(i=0;i<5*123;i++);
}void din()
{TMOD=0x10;TH1=(65536-11059/12)/256;TL1=(65536-11059/12)%256;	EA=1;ET1=1;TR1=1;
}void display()
{if(diswela==wei&&ms>=1000){diswela=diswela+2;}P2=((P2&0x1f)|0xe0);P0=0xff;P2&=0x1f;P2=((P2&0x1f)|0xc0);P0=1<<diswela;P2&=0x1f;P2=((P2&0x1f)|0xe0);P0=dula[disdula[diswela]];P2&=0x1f;if(++diswela>=8)diswela=0;
}void display_temp()
{disdula[0]=12;disdula[1]=11;disdula[2]=11;disdula[3]=11;disdula[4]=11;disdula[5]=11;disdula[6]=temp/10;disdula[7]=temp%10;
}void wendu()
{int LSB,MSB;Init_DS18B20();Write_DS18B20(0xcc);Write_DS18B20(0x44);delay(100);Init_DS18B20();Write_DS18B20(0xcc);Write_DS18B20(0xbe);LSB=Read_DS18B20();MSB=Read_DS18B20();Init_DS18B20();temp=0x00;temp=MSB;temp=(temp<<8)|LSB;if((temp&0xf800)==0x0000){temp>>=4;temp=temp+(LSB&0X0F)*0.0625;}
}char anjian()
{static int key_up=1;int keyscan=0;if(key_up&(s7==0||s6==0||s5==0||s4==0)){delay(20);key_up=0;if(s4==0)keyscan=4;else if(s5==0)keyscan=5;else if(s6==0)keyscan=6;else if(s7==0)keyscan=7;}else if(s4==1&&s5==1&&s6==1&&s7==1)key_up=1;return keyscan;
}void display_shezhi()
{disdula[0]=13;disdula[1]=11;disdula[2]=11;disdula[3]=max/10%10;disdula[4]=max/1%10;disdula[5]=11;disdula[6]=min/10%10;disdula[7]=min/1%10;
}void da(int date)
{IIC_Start();IIC_SendByte(0x90);IIC_WaitAck();IIC_SendByte(0x40);IIC_WaitAck();IIC_SendByte(date);IIC_WaitAck();IIC_Stop();
}void shuchu()
{if(temp>max)da((255/5)*4);			else if(temp>=min&&temp<=max)da((255/5)*3);		else if(temp<min)da((255/5)*2);	
}void main()
{buzz();wendu();din();while(1){shuchu();if(shezhi==0){wendu();display_temp();}else if(shezhi==1){display_shezhi();}if(flag==1){if(yichang==0){if(temp>max)led(0xfe);			else if(temp>=min||temp<=max)led(0xfd);		else if(temp<min)led(0xfb);}			else led(0xf7);flag=0;key=anjian();switch(key){case 4:if(shezhi==0){shezhi=1;wei=6;}else {shezhi=0;wei=9;}if(max>=min){yichang=0;t_max=max;t_min=min;}else if(max<min){yichang=1;max=t_max;min=t_min;} break;case 5:			if(wei!=9){if(wei==6)wei=3;else wei=6;	}										break;case 6:if(wei==3){if(max==99)max=99;else max++;				}				else if(wei==6){if(min==99)min=99;else min++;}				break;case 7:if(wei==3){if(max==0)max=0;else max--;			}			else if(wei==6){				if(min==0)min=0;else min--;}				break;}}}
}void qa() interrupt 3
{TH1=(65536-11059/12)/256;TL1=(65536-11059/12)%256;ms++;if(!(ms%100))flag=1;if(ms>=1500)ms=0;display();
}

这篇关于蓝桥杯单片机省赛——第十一届“温度与电压输出”程序部分的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/945389

相关文章

Mysql删除几亿条数据表中的部分数据的方法实现

《Mysql删除几亿条数据表中的部分数据的方法实现》在MySQL中删除一个大表中的数据时,需要特别注意操作的性能和对系统的影响,本文主要介绍了Mysql删除几亿条数据表中的部分数据的方法实现,具有一定... 目录1、需求2、方案1. 使用 DELETE 语句分批删除2. 使用 INPLACE ALTER T

python多种数据类型输出为Excel文件

《python多种数据类型输出为Excel文件》本文主要介绍了将Python中的列表、元组、字典和集合等数据类型输出到Excel文件中,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参... 目录一.列表List二.字典dict三.集合set四.元组tuplepython中的列表、元组、字典

如何用java对接微信小程序下单后的发货接口

《如何用java对接微信小程序下单后的发货接口》:本文主要介绍在微信小程序后台实现发货通知的步骤,包括获取Access_token、使用RestTemplate调用发货接口、处理AccessTok... 目录配置参数 调用代码获取Access_token调用发货的接口类注意点总结配置参数 首先需要获取Ac

基于Python开发PDF转Doc格式小程序

《基于Python开发PDF转Doc格式小程序》这篇文章主要为大家详细介绍了如何基于Python开发PDF转Doc格式小程序,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 用python实现PDF转Doc格式小程序以下是一个使用Python实现PDF转DOC格式的GUI程序,采用T

Spring AI集成DeepSeek实现流式输出的操作方法

《SpringAI集成DeepSeek实现流式输出的操作方法》本文介绍了如何在SpringBoot中使用Sse(Server-SentEvents)技术实现流式输出,后端使用SpringMVC中的S... 目录一、后端代码二、前端代码三、运行项目小天有话说题外话参考资料前面一篇文章我们实现了《Spring

Rust格式化输出方式总结

《Rust格式化输出方式总结》Rust提供了强大的格式化输出功能,通过std::fmt模块和相关的宏来实现,主要的输出宏包括println!和format!,它们支持多种格式化占位符,如{}、{:?}... 目录Rust格式化输出方式基本的格式化输出格式化占位符Format 特性总结Rust格式化输出方式

将java程序打包成可执行文件的实现方式

《将java程序打包成可执行文件的实现方式》本文介绍了将Java程序打包成可执行文件的三种方法:手动打包(将编译后的代码及JRE运行环境一起打包),使用第三方打包工具(如Launch4j)和JDK自带... 目录1.问题提出2.如何将Java程序打包成可执行文件2.1将编译后的代码及jre运行环境一起打包2

在不同系统间迁移Python程序的方法与教程

《在不同系统间迁移Python程序的方法与教程》本文介绍了几种将Windows上编写的Python程序迁移到Linux服务器上的方法,包括使用虚拟环境和依赖冻结、容器化技术(如Docker)、使用An... 目录使用虚拟环境和依赖冻结1. 创建虚拟环境2. 冻结依赖使用容器化技术(如 docker)1. 创

使用TomCat,service输出台出现乱码的解决

《使用TomCat,service输出台出现乱码的解决》本文介绍了解决Tomcat服务输出台中文乱码问题的两种方法,第一种方法是修改`logging.properties`文件中的`prefix`和`... 目录使用TomCat,service输出台出现乱码问题1解决方案问题2解决方案总结使用TomCat,

C++中实现调试日志输出

《C++中实现调试日志输出》在C++编程中,调试日志对于定位问题和优化代码至关重要,本文将介绍几种常用的调试日志输出方法,并教你如何在日志中添加时间戳,希望对大家有所帮助... 目录1. 使用 #ifdef _DEBUG 宏2. 加入时间戳:精确到毫秒3.Windows 和 MFC 中的调试日志方法MFC