基于STM32的DS18B20多点测温系统(Proteus仿真+程序)

news2025/7/25 9:24:39

编号:22

基于STM32的DS18B20多点测温系统

功能描述:

      本设计由STM32F103单片机+三路DS18B20温度传感器+1602液晶显示模块组成。
1、主控制器是STM32F103单片机
2、三路共用“单总线”DS1820温度传感器测量温度
3、1602液晶显示温度,保留一位小数,精度0.5℃ 测温范围-55~125摄氏度

Proteus 8.11版本才可使用 8.12 8.13不兼容

视频演示链接:

22、基于STM32的多点测温系统

仿真图:

程序源码:

#include "delay.h"
#include "LCD1602.h" 
#include "ds18b20.h"
#include "timer.h"


#include "stdio.h" 	
#include "stdlib.h" 	


int main(void)
{	
	unsigned char i = 0;
	short temprature[3];		   			        //定义温度变量
    short Temp;		   			  		            //定义显示温度变量

	NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);	//设置中断优先级分组为组2:2位抢占优先级,2位响应优先级
	
	Lcd1602_Init();									//液晶1602初始化
	DS18B20_Init();
	while(DS18B20_Init()!=0)						//ds18b20初始化检测  
	{
        Lcd1602_String(0,0,(u8 *)" DS18B20 Error! ");
        delay_ms(800);
        Lcd1602_String(0,0,(u8 *)"                ");
        delay_ms(800);
	}	
	TIM2_Int_Init(199,7199);						//10Khz的计数频率,计数到200为20ms 

 	while(1)
	{	
		
		if(flag_timer==1)					    //600毫秒赋一次值 flag_timer是标志位
		{
			flag_timer = 0;					    //清除标志  等待下一次600ms
			TIM_Cmd(TIM2, DISABLE);  //使能TIMx	
			for(i=0;i<3;i++)
			{
				temprature[i]=DS18B20_Get_Temp(i); 	//读取温度
			}
		
		
			TIM_Cmd(TIM2, ENABLE);  //使能TIMx	
			Lcd1602_String(0,0,"1:");			//从第一行第一列开始显示
			if(temprature[0]>=0)  				//如果温度大于等于0
			{	
				Temp = temprature[0]; 			//				
				Lcd1602_Write_Data(' ');
			}	
			else	 							//如果温度是负的
			{
				Temp = abs(temprature[0]); 		//取绝对值
				Lcd1602_Write_Data('-');		//显示负号
			}
			Lcd1602_Write_Data(Temp/1000+0X30);
			Lcd1602_Write_Data(Temp%1000/100+0X30);
			Lcd1602_Write_Data(Temp%1000%100/10+0X30);
			Lcd1602_Write_Data('.');
			Lcd1602_Write_Data(Temp%1000%100%10+0X30);
			Lcd1602_Write_Data(0XDF);
			Lcd1602_Write_Data('C');
			
			Lcd1602_String(0,1,"2:");			//从第二行第一列开始显示
			if(temprature[1]>=0)  				//如果温度大于等于0
			{	
				Temp = temprature[1]; 			//				
				Lcd1602_Write_Data(' ');
			}	
			else	 							//如果温度是负的
			{
				Temp = abs(temprature[1]); 		//取绝对值
				Lcd1602_Write_Data('-');		//显示负号
			}
			Lcd1602_Write_Data(Temp/1000+0X30);
			Lcd1602_Write_Data(Temp%1000/100+0X30);
			Lcd1602_Write_Data(Temp%1000%100/10+0X30);
			Lcd1602_Write_Data('.');
			Lcd1602_Write_Data(Temp%1000%100%10+0X30);
			Lcd1602_Write_Data(0XDF);
			Lcd1602_Write_Data('C');	
			
			Lcd1602_String(13,0,"3:");				//从第一行第14列开始显示
			Lcd1602_Write_Com(0xc0+11);
			if(temprature[2]>=0)  					//如果温度大于等于0
			{	
				Temp = temprature[2]; 				//				
				Lcd1602_Write_Data(' ');
			}	
			else	 								//如果温度是负的
			{
				Temp = abs(temprature[2]); 			//取绝对值
				Lcd1602_Write_Data('-');			//显示负号
			}
	//		Lcd1602_Write_Data(Temp/1000+0X30);
			Lcd1602_Write_Data(Temp%1000/100+0X30);
			Lcd1602_Write_Data(Temp%1000%100/10+0X30);
			Lcd1602_Write_Data('.');
			Lcd1602_Write_Data(Temp%1000%100%10+0X30);
			Lcd1602_Write_Data(0XDF);
			Lcd1602_Write_Data('C');		
            
		}
	}	
}

软件免费下载地址:

1、Proteus仿真软件
文件内容:Proteus7.8安装包、Proteus8.6安装包、Proteus.8.10安装包、Proteus Professional 8.11 SP0安装包

链接:https://pan.baidu.com/s/11LNUZ9BJXWvXf1C4dPc3_w 
提取码:2756 


3、KEIL5 MDK软件(STM32开发软件)
链接:https://pan.baidu.com/s/1t3eY-3yRdTa7jZMlijq_jg 

提取码:ab58 

文件下载:

https://pan.baidu.com/s/17i6EYSWTVTi8vKrzVEdCVA?pwd=h589

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

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

相关文章

[附源码]java毕业设计明光中学考试系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

Meta开源新工具啊,Git地位危险了?

程序员宝藏库&#xff1a;https://gitee.com/sharetech_lee/CS-Books-Store 从事编程开发的同学&#xff0c;绝大多数都会和版本控制系统打交道。 提到版本控制系统&#xff0c;目前比较主流的就是Git和SVN&#xff0c;尤其是Git&#xff0c;使用最为广泛。 关于Git和SVN之间…

python绘制Bubble气泡图pltscatter

python绘制Bubble气泡图pltscatter 先上结果&#xff1a; 基础语法&#xff1a; Axes.scatter(x, y**,** sNone**,** cNone**,** markerNone**,** cmapNone**,** normNone**,** vminNone**,** vmaxNone**,** alphaNone**,** linewidthsNone**,** , edgecolorsNone,* plotnonf…

nVisual 场景搭建所需接口

使用nVisua在创建新的项目步骤是搭建场景、创建对象、创建对象连接&#xff0c;本章小编带大家先了解搭建场景需要的接口。 场景搭建可根据自身项目需要搭建园区、建筑、楼层、机房这几类场景。分别用到了地图场景创建接口、CAD场景创建接口、静态图片背景创建接口。 1.地图场…

企业内训系统源码,为企业量身定制学习平台

如何进行企业内训系统开发&#xff1f;不同的直播平台的功能是不同的&#xff0c;企业的发展与员工的素质、能力、工作人效等不可分割&#xff0c;如何提高员工的工作能力&#xff0c;企业内部培训是离不开的&#xff0c;那么企业内训系统如何开发&#xff1f;怎么做一个企业学…

Spring Cloud面试题

什么是Spring Cloud Spring Cloud是目前最常用的微服务开发框架&#xff08;微服务的特点就是"模块化、功能化"&#xff0c;微服务架构的本质是将原来的整体项目划分成多个功能模块&#xff0c;每个功能模块都可以独立运行提供服务&#xff09;&#xff0c;它利用Sp…

wps和office可以同时装吗?

wps和office是很多用户都在使用的办公软件&#xff0c;那就有小白用户问了一台电脑可以存在wps和office吗&#xff1f;两个软件兼容吗&#xff1f;wps和office性质上都是办公软件&#xff0c;但是并不算重复&#xff0c;因此是可以同时安装的。 wps和office能同时安装吗 答&…

合并多个PDF怎么合并?建议学会这几个合并方法

你们平时工作的时候&#xff0c;看到自己的电脑桌面有很多文档文件&#xff0c;会不会觉得很杂乱&#xff1f;如果不将这些资料好好整理一番&#xff0c;都不能好好完成接下来的工作。其实如果是同种类型的PDF文件&#xff0c;我们可以将它们合并&#xff0c;这样既可以归类&am…

STM32单片机DS18B20测温液晶1602显示例程(Proteus仿真+程序)

编号&#xff1a;21 STM32单片机DS18B20测温液晶1602显示例程 功能描述&#xff1a; 本设计由STM32F103C8T6单片机最小系统DS18B20温度传感器1602液晶显示模块组成。 1、主控制器是STM32F103C8T6单片机 2、DS1820温度传感器测量温度 3、1602液晶显示温度&#xff0c;保留一位…

理解Linux32位机器下虚拟地址到物理地址的转化

文章目录前言一、基本概念介绍二、虚拟地址到物理地址的转化过程总结前言 简要介绍LINUX32位系统下虚拟地址到物理地址的转化过程。 一、基本概念介绍 在32位机器下&#xff0c;IO的基本单位是块&#xff08;块&#xff1a;4kb),在程序编译成可执行程序时也划分好了以4kb为单…

Linux的前世今生

14天学习训练营导师课程&#xff1a; 互联网老辛《 符合学习规律的超详细linux实战快速入门》 努力是为了不平庸~ 学习有些时候是枯燥的&#xff0c;但收获的快乐是加倍的&#xff0c;欢迎记录下你的那些努力时刻&#xff08;学习知识点/题解/项目实操/遇到的bug/等等&#xf…

使用STM32CubeMX实现按下按键,电平反转

需提前学习&#xff1a;使用STM32CubeMX实现LED闪烁 目录 原理图分析 按键部分原理图分析 LED部分原理图分析 STM32CubeMX配置 关于STM32CubeMXSYS的Debug忘记配置Serial Wire处理办法 GPIO配置 LED的GPIO配置 KEY1配置 关于PA0后面这个WKUP是什么&#xff1f; 那么啥…

Linux开发工具(4)——Makefile

文章目录Makefilemakefile语法makefile原理Linux小程序倒计时小程序进度条程序Makefile Makefile是Linux下的项目自动化构建工具。 Makefile包含两部分&#xff0c;make是一个指令&#xff0c;makefile是一个文件。 在makefile这个文件里面需要写两部分内容&#xff1a; 依赖…

【LeetCode】891.子序列宽度之和

**> ## 题目描述 一个序列的 宽度 定义为该序列中最大元素和最小元素的差值。 给你一个整数数组 nums &#xff0c;返回 nums 的所有非空 子序列 的 宽度之和 。由于答案可能非常大&#xff0c;请返回对 109 7 取余 后的结果。 子序列 定义为从一个数组里删除一些&#xff…

Scala009--Scala中的数据结构【映射】

目录 一&#xff0c;概述 二&#xff0c;map的声明 1&#xff0c;不可变map 三&#xff0c;HashMap的声明 1&#xff0c;可变hashmap 四&#xff0c;map常用函数 1&#xff0c;查看map中的元素个数 size 2&#xff0c;获取map集合中key对应的value值 1&#xff09;使…

react源码中的hooks

今天&#xff0c;让我们一起深入探究 React Hook 的实现方法&#xff0c;以便更好的理解它。但是&#xff0c;它的各种神奇特性的不足是&#xff0c;一旦出现问题&#xff0c;调试非常困难&#xff0c;这是由于它的背后是由复杂的堆栈追踪&#xff08;stack trace&#xff09;支…

更新后的python seaborn用于科研图绘

python seaborn 0.12 数据科学和科研绘图的人离不开R的ggplot2&#xff0c;尽管python已经有了诸如matplotlib、seaborn等强大绘图包&#xff0c;兼有basemap、cartopy等空间数据可视化能力&#xff0c;但相较于R的ggplot&#xff0c;总感觉欠缺了点东西。 前不久seaborn更新…

Ubuntu系统安装

一、制作启动盘 首先格式化U盘&#xff0c;格式选NTFS 制作启动盘&#xff0c;这里使用的是ultraISO&#xff0c;也是使用最多的方式。 打开文件&#xff0c;选中下载好的镜像iso文件。 启动 -> 写入硬盘映像 选择自己的U盘&#xff0c;写入方式选择 USB-HDD&#xff0c;隐…

进程地址空间详解

文章目录空间布局图首先有一个问题&#xff0c;我们曾经学过的程序地址空间是内存吗&#xff1f;&#xff1f;&#xff1f;为什么fork()会返回两个值先来看一下一个代码的现象在这里插入图片描述在C/C中我们看到的地址是物理地址吗&#xff1f;为什么操作系统不让我直接看到物理…

SpringBoot整合RabbitMQ

RabbitMQ安装部署详情可见&#xff1a;RabbitMQ简介及在Linux中安装部署&#xff08;yum&#xff09; 一、导入pom.xml依赖 <dependency><groupId>com.rabbitmq</groupId><artifactId>amqp-client</artifactId><version>5.8.0</versio…