基于51单片机的DS18B20温度控制加热降温系统设计

这篇具有很好参考价值的文章主要介绍了基于51单片机的DS18B20温度控制加热降温系统设计。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1 开发环境

仿真图:proteus8.9以上

程序代码:KEIL4/KEIL5

原理图:AD

设计编号:A0007

2 功能说明介绍

结合实际情况,基于51单片机设计一个排队叫号系统设计。该系统应满足的功能要求为:

系统由51单片机、DS18B20温度传感器、LCD1602液晶显示屏、继电器、风扇、加热膜、按键、蜂鸣器组成。

可实现以下基本功能:

1、可进行温度值的实时显示,精度为0.1摄氏度;

2、使用数码管作为显示设备;

3、检测范围是-55~125摄氏度;

4、可通过按键设置温度的报警范围;

5、一旦温度过低,绿色指示灯亮,蜂鸣器响,加热膜加热,模拟升温装置;

6、一旦温度过高,红色指示灯亮,蜂鸣器响,小风扇转动,模拟降温装置;

本资料下载链接(可点击)

https://docs.qq.com/doc/DTk5xUXRZdHFqem5O文章来源地址https://www.toymoban.com/news/detail-407458.html

3 仿真图

AT89C51可以替换为AT89C52,实物可以换做STC89C51,STC89C52

AT89C51是美国ATMEL公司生产的低电压,高性能CMOS16位单片机,片内含4k bytes的可反复擦写的只读程序存储器和128 bytes的随机存取数据存储器,期间采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用16位中央处理器和Flash存储单元,功能强大的AT89C51单片机可灵活应用于各种控制领域。

AT89C51提供以下标准功能:4k字节Flash闪速存储器,128字节内部RAM,32个I/O口线,两个1 6位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。同时,AT89C51可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。掉电方式保存RAM中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。

本系统中央控制器采用的AT89C51单片机,复位电路采用上电复位电路。外接的晶振为12MHz晶振。

基于51单片机的DS18B20温度控制加热降温系统设计

4 程序

工程文件使用Keil4/keil5打开。编译产生hex加载到对应的单片机中。

基于51单片机的DS18B20温度控制加热降温系统设计

代码

#include <reg52.h>			// 包含头文件
#include <intrins.h>

#define uchar unsigned char		// 以后unsigned char就可以用uchar代替
#define uint  unsigned int		// 以后unsigned int 就可以用uint 代替

sbit DQ = P1^1;						// DS18B20传感器的引脚定义
sbit w1 = P2^4; 					// 数码管第1位的控制引脚
sbit w2 = P2^5;						// 数码管第2位的控制引脚
sbit w3 = P2^6;						// 数码管第3位的控制引脚
sbit w4 = P2^7;			 			// 数码管第4位的控制引脚
sbit Buzzer  = P1^0;			// 蜂鸣器引脚
sbit JdqLow  = P2^0;			// 温度过低继电器控制(加热)
sbit JdqHig  = P2^1;			// 温度过高继电器控制(降温)
sbit LedLow  = P2^2;			// 温度低指示灯
sbit LedHig  = P2^3;			// 温度高指示灯
sbit KeySet  = P3^2;			// 设置按键
sbit KeyDown = P3^3;			// 减按键
sbit KeyUp   = P3^4;			// 加按键



/*   数码管的显示值:  0    1    2    3    4    5     6   7    8    9    -   */
uchar code Array1[]={ 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40 };

/*                     0.   1.   2.   3.   4.   5.    6.  7.   8.   9.  */
uchar code Array2[]={ 0xBf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef };


uchar Buff[4];					// 显示缓冲区
uchar ShowID=1;					// 当前显示的是哪一个数码管

int AlarmLow=150;				// 默认报警的温度下限值是15度
int AlarmHig=300;				// 默认报警的温度上限值是30度


/*********************************************************/
// 毫秒级的延时函数,time是要延时的毫秒数
/*********************************************************/
void DelayMs(uint time)
{
	uint i,j;
	for(i=0;i<time;i++)
		for(j=0;j<112;j++);
}


/*********************************************************/
// 延时15微秒
/*********************************************************/
void Delay15us(void)
{
	_nop_();
	_nop_();
	_nop_();
	_nop_();
	_nop_();
	_nop_();
	_nop_();
	_nop_();
	_nop_();
	_nop_();
	_nop_();
	_nop_();
	_nop_();
	_nop_();
	_nop_();
}


/*********************************************************/
// 复位DS18B20(初始化)
/*********************************************************/
void DS18B20_ReSet(void)
{
	uchar i;
	DQ=0;

	i=240;
	while(--i);

	DQ=1;

	i=30;
	while(--i);

	while(~DQ);

	i=4;
	while(--i);
}


/*********************************************************/
// 向DS18B20写入一个字节
/*********************************************************/
void DS18B20_WriteByte(uchar dat)
{
	uchar j;
	uchar btmp;
	
	for(j=0;j<8;j++)
	{
		btmp=0x01;
		btmp=btmp<<j;
		btmp=btmp&dat;
		
		if(btmp>0)		// 写1
		{
			DQ=0;
			Delay15us();
			DQ=1;
			Delay15us();
			Delay15us();
			Delay15us();
			Delay15us();
		}
		else			// 写0
		{
			DQ=0;
			Delay15us();
			Delay15us();
			Delay15us();
			Delay15us();
			DQ=1;
			Delay15us();
		}
	}
}


/*********************************************************/
// 读取温度值
/*********************************************************/
int DS18B20_ReadTemp(void)
{
	uchar j;
	int b,temp=0;	

	DS18B20_ReSet();							// 产生复位脉
	DS18B20_WriteByte(0xcc);			// 忽略ROM指令
	DS18B20_WriteByte(0x44);			// 启动温度转换指令

	DS18B20_ReSet();							// 产生复位脉
	DS18B20_WriteByte(0xcc);			// 忽略ROM指令
	DS18B20_WriteByte(0xbe);			// 读取温度指令

	for(j=0;j<16;j++)							// 读取温度数量
	{						
		DQ=0;
		_nop_();
		_nop_();
		DQ=1;	
		Delay15us();
		b=DQ;
		Delay15us();
		Delay15us();
		Delay15us();
		b=b<<j;
		temp=temp|b;
	}
	
	temp=temp*0.0625*10;					// 合成温度值并放大10倍					
	
	return (temp);								// 返回检测到的温度值
}


/*********************************************************/
// 定时器初始化
/*********************************************************/
void TimerInit()
{
	TMOD = 0x01;					// 使用定时器0,工作方式1	 
	TH0  = 248;						// 给定时器0的TH0装初值
	TL0  = 48;						// 给定时器0的TL0装初值
	ET0  = 1;							// 定时器0中断使能
	EA   = 1;							// 打开总中断
	TR0	 = 1;							// 启动定时器0
}


/*********************************************************/
// 显示温度值
/*********************************************************/
void ShowTemp(int dat)
{
	if(dat<0)												// 负号
	{
		Buff[0]=Array1[10];
		dat=0-dat;
	}
	else														// 百位
	{
		Buff[0]=Array1[dat/1000];
	}
	
	Buff[1]=Array1[dat%1000/100];		// 十位
	Buff[2]=Array2[dat%100/10];			// 个位
	Buff[3]=Array1[dat%10];					// 小数后一位
}


/*********************************************************/
// 报警判断
/*********************************************************/
void AlarmJudge(int dat)
{
	if(dat<AlarmLow)				// 判断温度是否过低
	{
		LedLow=0;							// 温度低指示灯亮
		LedHig=1;							// 温度高指示灯灭
		JdqLow=0;							// 温度过低的继电器闭合(开始加热)
		JdqHig=1;							// 温度过高的继电器断开(停止降温)
		Buzzer=0;							// 蜂鸣器报警
	}
	else if(dat>AlarmHig)		// 判断温度是否过高
	{
		LedLow=1;							// 温度低指示灯灭
		LedHig=0;							// 温度高指示灯亮
		JdqLow=1;							// 温度过低的继电器断开(停止加热)
		JdqHig=0;							// 温度过高的继电器闭合(开始降温)
		Buzzer=0;							// 蜂鸣器报警
	}
	else										// 温度正常
	{
		LedLow=1;							// 温度低指示灯灭
		LedHig=1;							// 温度高指示灯灭
		JdqLow=1;							// 温度过低的继电器断开(停止加热)
		JdqHig=1;							// 温度过高的继电器断开(停止降温)
		Buzzer=1;							// 蜂鸣器停止报警
	}
}


/*********************************************************/
// 按键扫描
/*********************************************************/
void KeyScanf()
{
	if(KeySet==0)									// 如果设置按键被按下
	{
		/* 设置温度下限 */
		LedLow=0;										// 点亮绿色灯(代表当前正在设置温度下限)
		LedHig=1;										// 熄灭红色灯
		Buzzer=1;										// 关闭蜂鸣器
		ShowTemp(AlarmLow);					// 显示温度下限值
		DelayMs(10);								// 延时去抖
		while(!KeySet);							// 等待按键释放
		DelayMs(10);								// 延时去抖
		
		while(1)
		{
			if(KeyDown==0)								// 如果“减”按键被按下
			{
				if(AlarmLow>-550)						// 判断当前温度下限是否大于-55度
				{
					AlarmLow--;								// 温度下限值减去0.1度
					ShowTemp(AlarmLow);				// 刷新显示改变后的温度下限值
					DelayMs(200);							// 延时
				}
			}
			
			if(KeyUp==0)									// 如果“加”按键被按下					
			{
				if(AlarmLow<1250)						// 判断当前温度下限是否小于125度
				{
					AlarmLow++;								// 温度下限值加上0.1度
					ShowTemp(AlarmLow);				// 刷新显示改变后的温度下限值
					DelayMs(200);							// 延时
				}
			}
			
			if(KeySet==0)									// 如果“设置”按键被按下
			{
				break;											// 退出温度下限值的设置,准备进入上限值的设置
			}
		}
		
		/* 设置温度上限 */
		LedLow=1;										// 熄灭绿色灯
		LedHig=0;										// 点亮红色灯(代表当前正在设置温度上限)
		ShowTemp(AlarmHig);					// 显示温度上限值
		DelayMs(10);								// 延时去抖
		while(!KeySet);							// 等待按键释放
		DelayMs(10);								// 延时去抖
		
		while(1)
		{
			if(KeyDown==0)							// 如果“减”按键被按下							
			{
				if(AlarmHig>-550)					// 判断当前温度上限是否大于-55度
				{
					AlarmHig--;							// 温度上限值减去0.1度
					ShowTemp(AlarmHig);			// 刷新显示改变后的温度上限值
					DelayMs(200);						// 延时
				}
			}
			
			if(KeyUp==0)								// 如果“加”按键被按下					
			{
				if(AlarmHig<1250)					// 判断当前温度上限是否小于125度
				{
					AlarmHig++;							// 温度上限值加上0.1度
					ShowTemp(AlarmHig);			// 刷新显示改变后的温度上限值
					DelayMs(200);
				}
			}
			
			if(KeySet==0)								// 如果“设置”按键被按下
			{
				break;										// 准备退出设置模式
			}
		}
		
		/* 退出设置模式 */
		LedLow=1;									// 熄灭绿灯
		LedHig=1;									// 熄灭红灯
		DelayMs(10);							// 延时去抖
		while(!KeySet);						// 等待按键释放
		DelayMs(10);							// 延时去抖
	}
}


/*********************************************************/
// 主函数
/*********************************************************/
void main()
{
	int temp;
	uchar i;
	
	TimerInit();										// 定时器0的初始化(数码管的动态扫描)
	
	Buff[0]=Array1[0];							// 刚上电显示4个0
	Buff[1]=Array1[0];
	Buff[2]=Array1[0];
	Buff[3]=Array1[0];
	
	for(i=0;i<8;i++)								// 由于传感器刚上电读出的温度不稳定,因此先进行几次温度的读取并丢弃
	{
		DS18B20_ReadTemp();
		DelayMs(120);
	}
	
	while(1)
	{
		EA=0;													// 屏蔽中断
		temp=DS18B20_ReadTemp();			// 读取温度值
		EA=1;													// 恢复中断
		
		ShowTemp(temp);								// 显示温度值
		
		AlarmJudge(temp);							// 判断是否需要报警
		
		for(i=0;i<100;i++)						// 延时并进行按键扫描
		{
			KeyScanf();					
			DelayMs(10);								
		}
	}
}


/*********************************************************/
// 定时器0服务程序
/*********************************************************/
void Timer0(void) interrupt 1
{
	TH0  = 248;				// 给定时器0的TH0装初值
	TL0  = 48;				// 给定时器0的TL0装初值

	P0=0x00;					// 先关闭所有显示
	w1=1;
	w2=1;
	w3=1;
	w4=1;

	if(ShowID==1)  			// 判断是否显示第1位数码管
	{
		w1=0;		   				// 打开第1位数码管的控制开关
		P0=Buff[0];	   		// 第1位数码管显示内容	
	}
	
	if(ShowID==2)  			// 判断是否显示第2位数码管
	{
		w2=0;		   				// 打开第2位数码管的控制开关
		P0=Buff[1];	   		// 第2位数码管显示内容	
	}
	
	if(ShowID==3)  			// 判断是否显示第3位数码管
	{
		w3=0;		   				// 打开第3位数码管的控制开关
		P0=Buff[2];	   		// 第3位数码管显示内容	
	}
	
	if(ShowID==4)  			// 判断是否显示第4位数码管
	{
		w4=0;		   				// 打开第4位数码管的控制开关
		P0=Buff[3];	   		// 第4位数码管显示内容	
	}	
	
	ShowID++;	  				// 切换到下一个数码管的显示
	if(ShowID==5)
		ShowID=1;
}

流程图如下图所示。

基于51单片机的DS18B20温度控制加热降温系统设计

5 原理图

原理图由AD绘制,原理图和仿真图有出入,原理图需要电源,电源开关模块。此设计资料详细,硬件手册资料图片详细,不对硬件调试负责,做实物需要一定的基本功。主控芯片可以换为STC89C51/STC89C52

基于51单片机的DS18B20温度控制加热降温系统设计

整个系统以AT89C51单片机为核心器件,配合电阻电容晶振等器件,构成单片机的最小系统。其它个模块围绕着单片机最小系统展开。其中包括,传感器采用DS18B20,负责采集温度数据后发给单片机。显示设备采用4位共阴数码管,显示检测到的温度值。按键模块,主要是进行报警值的设置。报警模块采用蜂鸣器+LED的模式,超出报警范围则进行声光报警,同时还有升温和降温装置工作,使得温度恒定在一个范围之内。

基于51单片机的DS18B20温度控制加热降温系统设计

6 视频讲解

代码讲解+仿真讲解+仿真演示+原理图讲解

基于51单片机的DS18B20温度控制加热降温系统设计

7 设计报告

排队论(又称随机服务系统)是研究系统由于随机因素的干扰而出现排队(或拥塞)现象的规律的一门学科,它适用于一切服务系统,包括公共服务系统、通信系统、计算机系统等。可以说,凡是出现拥塞现象的系统,都属于随机服务系统。一个对象通过拥塞系统接受服务必须经过三个环节,即到达、排队等候处理、接受服务和离去。例如在医院中,排队流程如下:患者在挂号的同时领取排队号码,然后到候诊区候诊;当为前一患者完成诊断后,医生通过本系统呼叫队列中下一位患者,患者就可直接到空闲诊室行排队等候服务。

另一个方面,伴随着服务行业业务量不断增长,业务种类日益增多,排队等候已成为人们经常面临的实际问题。在银行,医院,电信,税务,工商等营业大厅里,前拥后挤,杂乱无章的排队等候,已是司空见惯的现象,影响了服务质量。因此,改善服务质量,树立良好的企业形象,解决客户劳累的排队现象,创造人性化服务环境已成为急需解决的问题。设计一套排队抽号的服务系统,可以很好的解决因排队引起的种种问题。

本系统通过AT89C51单片机直接扩展独立键盘,完成排队取号流程,单片机控制LCD1602显示排队等待情况,控制蜂鸣器发声完成叫号功能。该系统有良好的人机交互界面,模拟排队管理,科学地处理各种排队情况,操作简便,控制灵活,显示清晰,制作成本低,性价比较高。

7.1 设计目的

(1)巩固和加深对单片机原理和接口技术知识的理解;

(2)培养根据课题需要选学参考书籍、查阅手册和文献资料的能力;

(3)学会方案论证的比较方法,拓宽知识,初步掌握工程设计的基本方法;

(4)掌握常用仪器、仪表的正确使用方法,学会软、硬件的设计和调试方法;

(5) 能按课程设计的要求编写课程设计报告,能正确反映设计和实验成果,能用计算机绘制电路图、仿真图和流程图。

7.2 概述

二十一世纪是科技高速发展的信息时代,电子技术、微型单片机技术的应用更是空前广泛,伴随着科学技术和生产的不断发展,需要对各种参数进行温度测量。因此温度一词在生产生活之中出现的频率日益增多,与之相对应的,温度测量和控制也成为了生活生产中频繁使用的词语,同时它们在各行各业中也发挥着重要的作用。如在日趋发达的工业之中,利用测量与控制温度来保证生产的正常运行。在农业中,用于保证蔬菜大棚的恒温保产等。

温度是表征物体冷热程度的物理量,温度测量则是工农业生产过程中一个很重要而普遍的参数。温度的测量及控制对保证产品质量、提高生产效率、节约能源、生产安全、促进国民经济的发展起到非常重要的作用。由于温度测量的普遍性,温度传感器的数量在各种传感器中居首位。而且随着科学技术和生产的不断发展,温度传感器的种类还是在不断增加丰富来满足生产生活中的需要。

单片机温度测量则是对温度进行有效的测量,并且能够在工业生产中得到了广泛的应用,尤其在电力工程、化工生产、机械制造、冶金工业、农业等重要领域中担负着重要的测量任务。在日常生活中,也可广泛实用于地热、空调器、电加热器等各种家庭室温测量及工业设备温度测量场合。

7.3 国内外研究现状

国外对温度控制技术研究较早,始于20世纪70年代。先是采用模拟式的组合仪表,采集现场信息并进行指示、记录和控制。80年代末出现了分布式控制系统。目前正开发和研制计算机数据采集控制系统的多因子综合控制系统。90年代中期,智能温控仪问世,它是微电子技术、计算机技术和自动测试技术的结晶。目前,国际上已开发出多种智能温控产品系列,智能温控器内部包含温度传感器、AD转换器、信号处理器和接口电路,有的产品还有多路选择器、中央控制器、随机存储器和只读存储器等。现在世界各国的温度测控技术发展很快,一些国家在实现自动化的基础上正向着完全自动化、无人化的方向发展。

我国对于温度测控技术的研究较晚,始于20世纪80年代。我国工程技术人员在吸收发达国家温度测控技术的基础上,才掌握了温度室内微机控制技术,该技术仅限于对温度的单项环境因子的控制。我国温度测控设施计算机应用,在总体上正从消化吸收、简单应用阶段向实用化、综合性应用阶段过渡和发展。在技术上,以单片机控制的单参数单回路系统居多,尚无真正意义上的多参数综合控制系统,与发达国家相比,存在较大差距。我国温度测量控制现状还远远没有达到工厂化的程度,生产实际中仍然有许多问题困扰着我们,存在着装备配套能力差,产业化程度低,环境控制水平落后,软硬件资源不能共享和可靠性差等缺点。

基于51单片机的DS18B20温度控制加热降温系统设计

8 资料清单下载链接

见文章开头视频

基于51单片机的DS18B20温度控制加热降温系统设计

本资料下载链接:

https://docs.qq.com/doc/DTk5xUXRZdHFqem5O

到了这里,关于基于51单片机的DS18B20温度控制加热降温系统设计的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 51单片机(十三)DS18B20温度传感器

    ❤️ 专栏简介:本专栏记录了从零学习单片机的过程,其中包括51单片机和STM32单片机两部分;建议先学习51单片机,其是STM32等高级单片机的基础;这样再学习STM32时才能融会贯通。 ☀️ 专栏适用人群 :适用于想要从零基础开始学习入门单片机,且有一定C语言基础的的童鞋

    2024年02月11日
    浏览(31)
  • 51单片机DS18B20测温LCD1602显示

    主函数 自定义头文件 LCD1602函数 DS18B20 共用函数

    2024年02月11日
    浏览(26)
  • MCU-51:单片机DS18B20温度报警器

    DS18B20是一种常见的数字温度传感器,其控制命令和数据都是以数字信号的方式输入输出,相比较于模拟温度传感器,具有功能强大、硬件简单、易扩展、抗干扰性强等特点 测温范围:-55°C 到 +125°C 通信接口:1-Wire(单总线) 其它特征:可形成总线结构、内置温度报警功能、

    2024年02月02日
    浏览(42)
  • 【小实验】C51单片机 DS18B20温度显示实验

         利用单总线技术和数码管动态显示的原理,要求实现DS18B20温度采集并显示,能够设定温度值上限值27.5度,当超出上限值LED灯闪烁。    实验前可先用protues绘制出原理图:   代码仅供参考,希望大家能够在此基础上优化代码,而不是ctrl+c,ctrl+v。 谢谢!!!        

    2024年02月12日
    浏览(34)
  • 51单片机DS18B20测温数码管显示例程(Proteus仿真+程序)

          本设计由STM32单片机+DS18B20温度传感器+四段数码管显示模块组成。 1、主控制器是51单片机 2、DS18B20温度传感器采集温度,精度0.1摄氏度 3、数码管显示温度,由三极管驱动。 4、测温范围-55~110摄氏度,误差±0.1℃ 注意:Proteus7.8以上版本打开 19、51单片机DS18B20测温数码管

    2023年04月08日
    浏览(30)
  • 51单片机DS18B20温度报警器proteus仿真设计_可调上下限

    (仿真+源码+原理图+报告+讲解视频) 原理图:Altium Designer 仿真版本:proteus 7.8 程序编译器:keil 4/keil 5 编程语言:C语言 设计编号:S0008 本设计系统是18b20温度报警系统数码管显示,可设置温度上限高温报警和下限低温报警,报警温度可精确到0.1度,并具有掉电保存功能,数

    2024年02月11日
    浏览(28)
  • 51单片机DS18B20温度传感器使用及数码管温度计、LCD1602温度显示代码详解

    温馨提示:读者若要彻底理解并会灵活使用DS18B20温度传感器,请详细阅读中文手册,并且对照代码注释充分分析代码。请不要觉得中文手册内容繁多!如能静心分析,定能深有体会,获益匪浅! 主函数操作顺序(执行序列) 功能指令 最后希望我的分享对你有所帮助!敬请关

    2024年02月12日
    浏览(37)
  • DS18B20与单片机的通信、DS18B20采集温度、MODBUS协议、练习框架

    单总线数字温度计 异步的半双工的串行通信 测量范围从-55℃ ~ +125℃,增量值为0.5℃ 要用DS18B20采集温度,就要实现与单片机之间的通信,因此有两个问题 Bus master active low:主机执行低电平 DS1820 active low:DS18B20执行低电平 Both bus master and DS1820 active low:全都释放低电平 Resis

    2024年04月16日
    浏览(32)
  • 单片机驱动多个ds18b20

    目录 1设计内容 2ds18b20介绍 2.1传感器引脚及原理图 2.2寄存器配置 3程序实现 3.1配置初始化 3.2配置寄存器 3.3ROM读取 3.4温度读取 通过51单片机,读取总线上挂载的多个ds18b20的温度信息。 如下图,成功读取到3路温度数据。 DS18B20传感器的引脚及封装图如下: DS18B20一共有三个引脚

    2024年02月21日
    浏览(25)
  • 53、基于STC15W单片机的温度计(DS18B20)(Proteus仿真+程序)

          本设计由STC15W4K32S4单片机+DS18B20温度传感器+1602液晶显示模块+串口模块组成。 1、主控制器是STC15W4K32S4单片机 2、DS18B20温度传感器采集温度,精度0.1摄氏度 3、1602液晶显示温度。 4、测温范围-55~110摄氏度,误差±0.1℃ 5、温度值发送至串口助手显示。 Proteus软件: Proteus

    2024年02月03日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包