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

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

往期回顾

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

文章目录

  • 往期回顾
  • 一、前期准备
  • 二、代码详情
    • 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的桌面应用程序,使用了tkinter库来创建图形用户界面并通过requests库调用Open-MeteoAPI... 目录工具介绍工具使用说明python脚本内容如何运行脚本工具介绍这个天气查询工具是一个基于 Pyt

Ubuntu设置程序开机自启动的操作步骤

《Ubuntu设置程序开机自启动的操作步骤》在部署程序到边缘端时,我们总希望可以通电即启动我们写好的程序,本篇博客用以记录如何在ubuntu开机执行某条命令或者某个可执行程序,需要的朋友可以参考下... 目录1、概述2、图形界面设置3、设置为Systemd服务1、概述测试环境:Ubuntu22.04 带图

Python程序打包exe,单文件和多文件方式

《Python程序打包exe,单文件和多文件方式》:本文主要介绍Python程序打包exe,单文件和多文件方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录python 脚本打成exe文件安装Pyinstaller准备一个ico图标打包方式一(适用于文件较少的程

Python程序的文件头部声明小结

《Python程序的文件头部声明小结》在Python文件的顶部声明编码通常是必须的,尤其是在处理非ASCII字符时,下面就来介绍一下两种头部文件声明,具有一定的参考价值,感兴趣的可以了解一下... 目录一、# coding=utf-8二、#!/usr/bin/env python三、运行Python程序四、

无法启动此程序因为计算机丢失api-ms-win-core-path-l1-1-0.dll修复方案

《无法启动此程序因为计算机丢失api-ms-win-core-path-l1-1-0.dll修复方案》:本文主要介绍了无法启动此程序,详细内容请阅读本文,希望能对你有所帮助... 在计算机使用过程中,我们经常会遇到一些错误提示,其中之一就是"api-ms-win-core-path-l1-1-0.dll丢失

SpringBoot后端实现小程序微信登录功能实现

《SpringBoot后端实现小程序微信登录功能实现》微信小程序登录是开发者通过微信提供的身份验证机制,获取用户唯一标识(openid)和会话密钥(session_key)的过程,这篇文章给大家介绍S... 目录SpringBoot实现微信小程序登录简介SpringBoot后端实现微信登录SpringBoo

uniapp小程序中实现无缝衔接滚动效果代码示例

《uniapp小程序中实现无缝衔接滚动效果代码示例》:本文主要介绍uniapp小程序中实现无缝衔接滚动效果的相关资料,该方法可以实现滚动内容中字的不同的颜色更改,并且可以根据需要进行艺术化更改和自... 组件滚动通知只能实现简单的滚动效果,不能实现滚动内容中的字进行不同颜色的更改,下面实现一个无缝衔接的滚动

使用Java将实体类转换为JSON并输出到控制台的完整过程

《使用Java将实体类转换为JSON并输出到控制台的完整过程》在软件开发的过程中,Java是一种广泛使用的编程语言,而在众多应用中,数据的传输和存储经常需要使用JSON格式,用Java将实体类转换为J... 在软件开发的过程中,Java是一种广泛使用的编程语言,而在众多应用中,数据的传输和存储经常需要使用j

Java使用WebView实现桌面程序的技术指南

《Java使用WebView实现桌面程序的技术指南》在现代软件开发中,许多应用需要在桌面程序中嵌入Web页面,例如,你可能需要在Java桌面应用中嵌入一部分Web前端,或者加载一个HTML5界面以增强... 目录1、简述2、WebView 特点3、搭建 WebView 示例3.1 添加 JavaFX 依赖3

防止SpringBoot程序崩溃的几种方式汇总

《防止SpringBoot程序崩溃的几种方式汇总》本文总结了8种防止SpringBoot程序崩溃的方法,包括全局异常处理、try-catch、断路器、资源限制、监控、优雅停机、健康检查和数据库连接池配... 目录1. 全局异常处理2. 使用 try-catch 捕获异常3. 使用断路器4. 设置最大内存和线