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

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

往期回顾

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

文章目录

  • 往期回顾
  • 一、前期准备
  • 二、代码详情
    • 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

相关文章

从基础到高级详解Python数值格式化输出的完全指南

《从基础到高级详解Python数值格式化输出的完全指南》在数据分析、金融计算和科学报告领域,数值格式化是提升可读性和专业性的关键技术,本文将深入解析Python中数值格式化输出的相关方法,感兴趣的小伙... 目录引言:数值格式化的核心价值一、基础格式化方法1.1 三种核心格式化方式对比1.2 基础格式化示例

基于Python编写自动化邮件发送程序(进阶版)

《基于Python编写自动化邮件发送程序(进阶版)》在数字化时代,自动化邮件发送功能已成为企业和个人提升工作效率的重要工具,本文将使用Python编写一个简单的自动化邮件发送程序,希望对大家有所帮助... 目录理解SMTP协议基础配置开发环境构建邮件发送函数核心逻辑实现完整发送流程添加附件支持功能实现htm

基于Python实现温度单位转换器(新手版)

《基于Python实现温度单位转换器(新手版)》这篇文章主要为大家详细介绍了如何基于Python实现温度单位转换器,主要是将摄氏温度(C)和华氏温度(F)相互转换,下面小编就来和大家简单介绍一下吧... 目录为什么选择温度转换器作为第一个项目项目概述所需基础知识实现步骤详解1. 温度转换公式2. 用户输入处

java -jar example.jar 产生的日志输出到指定文件的方法

《java-jarexample.jar产生的日志输出到指定文件的方法》这篇文章给大家介绍java-jarexample.jar产生的日志输出到指定文件的方法,本文给大家介绍的非常详细,对大家的... 目录怎么让 Java -jar example.jar 产生的日志输出到指定文件一、方法1:使用重定向1、

C#控制台程序同步调用WebApi实现方式

《C#控制台程序同步调用WebApi实现方式》控制台程序作为Job时,需同步调用WebApi以确保获取返回结果后执行后续操作,否则会引发TaskCanceledException异常,同步处理可避免异... 目录同步调用WebApi方法Cls001类里面的写法总结控制台程序一般当作Job使用,有时候需要控制

Spring Boot集成/输出/日志级别控制/持久化开发实践

《SpringBoot集成/输出/日志级别控制/持久化开发实践》SpringBoot默认集成Logback,支持灵活日志级别配置(INFO/DEBUG等),输出包含时间戳、级别、类名等信息,并可通过... 目录一、日志概述1.1、Spring Boot日志简介1.2、日志框架与默认配置1.3、日志的核心作用

golang程序打包成脚本部署到Linux系统方式

《golang程序打包成脚本部署到Linux系统方式》Golang程序通过本地编译(设置GOOS为linux生成无后缀二进制文件),上传至Linux服务器后赋权执行,使用nohup命令实现后台运行,完... 目录本地编译golang程序上传Golang二进制文件到linux服务器总结本地编译Golang程序

使用Docker构建Python Flask程序的详细教程

《使用Docker构建PythonFlask程序的详细教程》在当今的软件开发领域,容器化技术正变得越来越流行,而Docker无疑是其中的佼佼者,本文我们就来聊聊如何使用Docker构建一个简单的Py... 目录引言一、准备工作二、创建 Flask 应用程序三、创建 dockerfile四、构建 Docker

在Linux中改变echo输出颜色的实现方法

《在Linux中改变echo输出颜色的实现方法》在Linux系统的命令行环境下,为了使输出信息更加清晰、突出,便于用户快速识别和区分不同类型的信息,常常需要改变echo命令的输出颜色,所以本文给大家介... 目python录在linux中改变echo输出颜色的方法技术背景实现步骤使用ANSI转义码使用tpu

python编写朋克风格的天气查询程序

《python编写朋克风格的天气查询程序》这篇文章主要为大家详细介绍了一个基于Python的桌面应用程序,使用了tkinter库来创建图形用户界面并通过requests库调用Open-MeteoAPI... 目录工具介绍工具使用说明python脚本内容如何运行脚本工具介绍这个天气查询工具是一个基于 Pyt