基于STM32的保温水壶控制器设计

摘 要

时代每时每刻都在飞速地变化着,科学技术每分每秒也在不断发展,这是你我都有目共睹的。现代社会许多专业的机器都正在或多或少地向高精尖的技术靠近,变得更加数字化、智能化。那么想要达到更加智能化的控制,对于不管是现代科技化的农业,还是更加复杂化的工业,这些与生产相关的产业来说,对于温度的调整、测量和控制都是至关重要的。另一方面,在生活水平不断提高的今天,服务业更需要运用大量的数字智能化技术从而满足人们对高质量生活的追求。高级的电子技术的运用不仅使人们的生活变得更加的便利,而且在一定程度上减少了资源、能源消耗。
从前使用的非常传统的温度测量系统,基本原理和测量方法相较于现在都是稍落后的测量技术,可想而知这其中产生的误差肯定会比现在的更加精细准确的电子测量技术要多的多,这其中一点点误差产生的蝴蝶效应会导致整个系统或设备的性能大幅降低。传统的测量技术往往产生较大的由多点测量产生的切换误差,信号调节电路产生的误差,读取误差等等。由此本论文设计出一种数字测控的智能温度测控报警系统,由DS18B20作为温度传感器,LCD液晶数码管进行显示,搭配软件编程进行调试的报警系统。这种设计运用到的传感器发展方向是更加小型化,集成化和数字化。放眼现实生活,我想到做一种带有温度测控报警系统的保温杯服务于人们。
我们这次用的单片机是STM32型号的,用到的温度传感器是DS18B20型号的,用到的温度显示装置是1602版本的LCD液晶输出装置,最后用到的报警器是蜂鸣器。用到这些装置设计出来的保温杯不仅方便读取杯中液体的温度,最重要的是可以设置温度的范围,当温度不在设定范围内时进行报警。满足了人们对水温适宜把控的要求,尤其是很好地照顾到了婴幼儿。并且操作简单,体积微小,还可以使用一条总线和两个以上的功能元件进行连接,这样更能节省电压、能源。就算是在环境比较恶劣的情况下也可进行检测,非常耐用。

关键词:单片机;数字测控;保温杯;DS18B20;LCD液晶显示

1绪论

在科技发展如日中天的今天,电子技术更是蓬勃发展,集成电路更是大规模的应运而生,使人们的生活几乎产生的是根本性的变化。在当今的现代社会中,大的工业生产中普遍要用到水位控制和温度控制,在日常生活中也经常用到这种控制,比如说热水器,家里用的不论是洗澡用的热水器还是加热食物的电器,无一不用到对温度的测控,倘若没有这些高效的测控技术,我们可能不知道具体的水温,就很有可能发生危险。微型计算机的发展历程也算是历久弥新,由刚开始的超大型计算机一步一步缩小精简化,现代生活中许多设备都使用到了微型计算机进行数字化控制。温度控制属于一类繁琐,纷乱而又精密的任务。温度控制的任务量繁重,通常不可以失误,但是若是使用人力操作,温度控制进行大量冗杂的工作,耗费操作者许多的光阴和心力。而以计算机实现温度控制时,不单可以保障温度的精确性,并且同步性强,利于操作者实行实时的监视与掌握,而且单片机拥有超乎人力的可靠性,基于此,本设计基于单片机的定时水温控制系统展开研究工作。本设计所研究的定时水温控制系统具备实况测量和控制水体温度的功能,同时具有实时温度和时间数值显示的功能。还具备实现时间的人工设定及定时工作等功能。固然,对于温度控制这个方向,市场上也存在相仿的商品,但是其售价不菲,而且控制程度相对较小。由于其在生产流程当中应用较多,因此削弱了相关产品在实际生活当中的推行。本设计研究即是旨在提升某些产品在应用方面表现出的劣势,参考实际的社会需求,运用仿真软件,设计一个符合预期的硬件仿真电路。而后设计对应仿真电路的软件部分,并且使它模块化,进而实现产品化,以期实现定时此系统的价格降低、温度控制程度增大、控制环节模块化,将便于我们的设计成长为应用技术,进而增强此控制系统于生活的普及。
用单片机控制器改造后的设备都比以前具有更多的优点,有强大的单片机性能加持,温度测控系统就能更好地服务于人们。单片机技术的应用超级广泛,小到一个闹钟,大到一个电梯控制系统,可见单片机的应用在当今社会有多么广泛。以前落后的设备庞大而费力,现在改造后的设备不仅性价比高,使用寿命长且自动化程度相当高,节省了大量的人力物力。
保温杯是我们在生活中随处可见的物品,普通保温杯仅仅是用物理隔热的方法利用泡沫塑料等散热性慢的材料制成,因为材料不同,自然不同的保温杯保温性能是有或大或小的差异的,我们很难清楚地知道不同保温杯的保温性能究竟如何。即使现在有了可加热保温杯,我们依然无法直观地知道液体中的温度,也不知道合适的温度需要冷却多久,这时为提高生活质量,的确是需要一个准确的温度报警保温杯。尤其是对于体质娇弱的婴幼儿,他们更需要保护,更需要严格的温度把控。甚至于有些医药和烹饪食材方面也需要在一定的温度下进行,这时也需要准确的温度报警器。本论文设计出这种温度提示保温杯,以达到最佳的饮用体验。
本文内容主要分为五个部分:
第一部分:首先概述了此次论文主题的背景以及设计的意义。
第二部分:设计总体系统,包括电路总框图设计、电路总原理图,然后是系统各部分硬件电路,包括显示电路、DS18B20温度检测装置、单片机接口电路、振荡电路、复位电路、报警电路、键盘显示系统;
第三部分是软件部分设计,包括主程序流程图、各子程序流程图;
第四部分是仿真调试分析,包括Proteus软件介绍、系统调试、仿真结果与分析;
第五部分是总结了本设计特点和不足以及对未来的展望和启示。

2系统设计方案

2.1电路总体设计
我们用到检测温度的装置是DS18B20温度传感器,一般情况下,单片机的设计电路中都是用到传感器。DS18B20温度传感器有许多优点,它既可以快速又方便地检测出温度,还可以把检测的温度转换成电信号,完全达到了我们要求的标准。
图2.1是这种保温杯的温度测控系统的电路总设计方框图。把单片机STM32当作控制装置,DS18B20当作温度检测装置,然后用LCD1602液晶显示管来显示测量后的温度值。LCD1602显示电路、DB18B20温度传感器、单片机的接口电路、振荡电路、复位电路、电源电路和警报电路组成了硬件部分的电路。
2.2电路总原理图
原理图如下:

在这里插入图片描述

图2-2保温杯温度自动控制系统电路设计总体设计方框图
在图2.2,有三个独立的键用于调整保温杯温度自动测控系统的上限和下限报警设置。图里面的蜂鸣报警电路的作用是当温度没有在设定范围内的时候发出报警。主程序在这个时候发送指令使得LED数码管就不会显示出测量的温度值。这样是对警报装置的触发范围设置一个界限值。当温度没在测定范围内时,数码管上不出现测量值,这样报警装置就被限定了触发范围。
我们还设计了一个复位电路,目的是增加手动复位,变得更容易操作了。当我们要进行程序运行调试,只需要按一下按钮就可以了,不需要重启电源键。

3系统各部分硬件电路

3.1显示电路
我们用到的是LCD1602液晶数码显示器,这种工业字符液晶数码显示管能一次显示多个字符个数,可以达到32个,包括数据、字符、符号等等。
在这里插入图片描述

图3-1系统总体设计框图
引脚定义:
LCD1602一共有16个引脚,如下图。引脚功能见下表。
在这里插入图片描述

图3-2 LCD1602引脚示例
引脚定义:
LCD1602一共有16个引脚
表3.1 引脚功能表
序号 名称 描述
1 GND 接地
2 VCC 接+5V
3 VL 液晶显示器对比度调整端
4 RS 寄存器选择端
5 RW 读写控制端
6 EN 使能端
7-14 D0-D7 双向数据端
15 BL+ 背灯电源正极
16 BL- 背灯电源负极
指令介绍:
LCD1602液晶显示器的每条指令的定义和功能如下表所示,里面一共有11条指令。
表3.2 LCD1602指令表
序号 指令 RS R/W D7 D6 D5 D4 D3 D2 D1 D0
1 清显示 0 0 0 0 0 0 0 0 0 1
2 光标返回 0 0 0 0 0 0 0 0 1 *
3 置输入模式 0 0 0 0 0 0 0 1 I/D S
4 显示开/关控制 0 0 0 0 0 0 1 D C B
5 光标或字符移位 0 0 0 0 0 1 S/C R/L * *
6 置功能 0 0 0 0 1 DL N F * *
7 置字符发生存贮器地址 0 0 0 1 字符发生存贮器地址
8 置数据存贮器地址 0 0 1 显示数据存贮器地址
9 读忙标志或地址 0 1 BF 计数器地址
10 写数到CGRAM或DDRAM) 1 0 要写的数据内容
11 从CGRAM或DDRAM读数 1 1 读出的数据内容
显示自定义字符:
描述字符显示过程:
(1)首先我们把想要输出的字符输入到CGRAM中。
我们要逐行设定内存地址信息,一行5点,一行相对应一个CGRAM,一共8行。因为在LCD160内部的CGROM字符代码表中的00H~07H在内存地址中的信息并没有初始化。
(2)将设定完的字符传到随机存储器。
第一行输入地址,标准格式如下3.3表所示,然后在对图像定义中的信息初始化,如下表所示:
表3.3 行地址格式
RS R/W DB7 DB6 DB5-DB3 DB2-DB0
0 0 0 1 字符地址 行号
表3.4 设定CGRAM中的数据格式
RS R/W DB7-DB5 DB4-DB0
1 0 一般取‘000’ 每行5点的字模数据
显示电路如图3.3所示。
在这里插入图片描述

图3-3 显示电路
3.2温度传感器与单片机的接口电路
DS18B20温度检测芯片产自美国达拉斯,此芯片的体积微小、功能强大且多,是非常可靠且很好操作的,它支持“单线总线”的接口,是一款节省能源的微处理器。我们的第一步自定义的只读存储器中的命令,就是为了SD18B20方便实现它带有的通信功能。这样我们之前设定命令的作用是对它的运转时的功能进行限制。由于它是按照有顺序地读写并且处理的时候时间点是不同的。我们的存储设置会对命令做出操作,当它收到之前的自定义命令后。
当我们在利用载体提供装置所需要的电量,VDD终端通常都是连接地面的。所用到的三态发送接口也就是高阻态的,因为数据引脚驱动力受限,就必须要依靠某种外部上拉方式,才能够正确读取使用外部上拉形成的高电平。所以总线上出现个最大上拉时间是10us的超级强的上拉力度,这时每当传感器控制器在存储器里读写并操作,同时还要把所接触到的温度模拟信号转换成数字信号。
在这里插入图片描述

图3-4 DS18B20与单片机的接口电路

4软件部分设计

4.1主程序流程图
软件部分设计的整个系统除了主控程序之外还有三个模块,包括温度检测模块,信息转换传递模块和输出模块。
DS18B20具有强大的温度测量能力,并且所需要的时间非常短暂,每一秒钟可以进行一次测量包括信号转换、传输结果共用的时间。图数据处理程序结束后转到主程序的流程是可以一直显示温度在数码管上,这样可以在一开始使用的阶段知道要不要对上下限做出调整。流程图如下:
在这里插入图片描述

图4-1键盘显示系统电路图
4.2各子程序流程图
初始化程序一般是对系统进行检测看是否能正常运行以确保测控工作正常进行的,从最开始的预处理的缓冲,一步一步不间断地推送到下一步在循环往复,如同波浪一般。然后DS18B20会输出低电平引脚,它们的频率一般在480~960μs。之后把DQ端调整到高电平位置,然后对其进行检测,检测时DQ端的状态必须处于低电平。若不处于低电平则说明初始化失败,系统不能正常运行。如下图:

在这里插入图片描述

图4-2初始化程序




源代码:
#include <reg52.h>	         //调用单片机头文件
#define uchar unsigned char  //无符号字符型 宏定义	变量范围0~255
#define uint  unsigned int	 //无符号整型 宏定义	变量范围0~65535
#include <intrins.h>
sbit dq   = P1^5;	//18b20 IO口的定义
sbit fengshan = P1^4;   //风扇IO口定义
uint temperature ;  //
bit flag_300ms ;
bit flag_lj_en;		 //按键连加使能
bit flag_lj_3_en;	 //按键连3次连加后使能  加的数就越大了 
uchar key_time,key_value;      //用做连加的中间变量
bit key_500ms  ;


uchar code table_num[]="0123456789abcdefg";

sbit rs=P1^0;	 //寄存器选择信号 H:数据寄存器  	L:指令寄存器
sbit rw=P1^1;	 //寄存器选择信号 H:数据寄存器  	L:指令寄存器
sbit e =P1^2;	 //片选信号   下降沿触发


uchar menu_1;        //菜单设计的变量
uint t_high = 350,t_low = 100;
sbit relay1 = P1^6;  //温度报警继电器IO口定义
sbit relay2 = P1^3;  //湿度报警继电器IO口定义


/***********************1ms延时函数*****************************/
void delay_1ms(uint q)
{
	uint i,j;
	for(i=0;i<q;i++)
		for(j=0;j<110;j++);
}



/********************************************************************
* 名称 : delay_uint()
* 功能 : 小延时。
* 输入 : 无
* 输出 : 无
***********************************************************************/
void delay_uint(uint q)
{
	while(q--);
}

/********************************************************************
* 名称 : write_com(uchar com)
* 功能 : 1602命令函数
* 输入 : 输入的命令值
* 输出 : 无
***********************************************************************/
void write_com(uchar com)
{
	e=0;
	rs=0;
	rw=0;
	P0=com;
	delay_uint(25);
	e=1;
	delay_uint(100);
	e=0;
}

/********************************************************************
* 名称 : write_data(uchar dat)
* 功能 : 1602写数据函数
* 输入 : 需要写入1602的数据
* 输出 : 无
***********************************************************************/
void write_data(uchar dat)
{
	e=0;
	rs=1;
	rw=0;
	P0=dat;
	delay_uint(25);
	e=1;
	delay_uint(100);
	e=0;	
}

/********************************************************************
* 名称 : write_string(uchar hang,uchar add,uchar *p)
* 功能 : 改变液晶中某位的值,如果要让第一行,第五个字符开始显示"ab cd ef" ,调用该函数如下
	 	 write_string(1,5,"ab cd ef;")
* 输入 : 行,列,需要输入1602的数据
* 输出 : 无
***********************************************************************/
void write_string(uchar hang,uchar add,uchar *p)
{
	if(hang==1)   
		write_com(0x80+add);
	else
		write_com(0x80+0x40+add);
	while(1)
	{
		if(*p == '\0')  break;
		write_data(*p);
		p++;
	}	
}

/***********************lcd1602上显示特定的字符************************/
void write_zifu(uchar hang,uchar add,uchar date)
{
	if(hang==1)   
		write_com(0x80+add);
	else
		write_com(0x80+0x40+add);
	write_data(date);	
}

/***********************lcd1602上显示两位十进制数************************/
void write_sfm3_18B20(uchar hang,uchar add,uint date)
{
	if(hang==1)   
		write_com(0x80+add);
	else
		write_com(0x80+0x40+add);
	write_data(0x30+date/100%10);
	write_data(0x30+date/10%10);
	write_data('.');
	write_data(0x30+date%10);	
}

/***********************lcd1602初始化设置************************/
void init_1602()
{
	write_com(0x38);	//
	write_com(0x0c);
	write_com(0x06);
	delay_uint(1000);
	write_string(1,0,"   temp:  .        ");	
	write_string(2,0,"H:  .   L:  .      ");
	write_zifu(1,12,0xdf);  //显示度	
	write_zifu(2,6, 0xdf);  //显示度
	write_zifu(2,14,0xdf);  //显示度

}

/***********************18b20初始化函数*****************************/
void init_18b20()
{
	bit q;
	dq = 1;				//把总线拿高
	delay_uint(1);	    //15us
	dq = 0;				//给复位脉冲
	delay_uint(80);		//750us
	dq = 1;				//把总线拿高 等待
	delay_uint(10);		//110us
	q = dq;				//读取18b20初始化信号
	delay_uint(20);		//200us
	dq = 1;				//把总线拿高 释放总线
}

/*************写18b20内的数据***************/
void write_18b20(uchar dat)
{
	uchar i;
	for(i=0;i<8;i++)
	{					 //写数据是低位开始
		dq = 0;			 //把总线拿低写时间隙开始 
		dq = dat & 0x01; //向18b20总线写数据了
		delay_uint(5);	 // 60us
		dq = 1;			 //释放总线
		dat >>= 1;
	}	
}

/*************读取18b20内的数据***************/
uchar read_18b20()
{
	uchar i,value;
	for(i=0;i<8;i++)
	{
		dq = 0;			 //把总线拿低读时间隙开始 
		value >>= 1;	 //读数据是低位开始
		dq = 1;			 //释放总线
		if(dq == 1)		 //开始读写数据 
			value |= 0x80;
		delay_uint(5);	 //60us	读一个时间隙最少要保持60us的时间
	}
	return value;		 //返回数据
}

/*************读取温度的值 读出来的是小数***************/
uint read_temp()
{
	uint value;
	uchar low;			   //在读取温度的时候如果中断的太频繁了,就应该把中断给关了,否则会影响到18b20的时序
	init_18b20();		   //初始化18b20
	write_18b20(0xcc);	   //跳过64位ROM
	write_18b20(0x44);	   //启动一次温度转换命令
	delay_uint(50);		   //500us

	init_18b20();		   //初始化18b20
	write_18b20(0xcc);	   //跳过64位ROM
	write_18b20(0xbe);	   //发出读取暂存器命令

	low = read_18b20();	   //读温度低字节
	value = read_18b20();  //读温度高字节

	value <<= 8;		   //把温度的高位左移8位
	value |= low;		   //把读出的温度低位放到value的低八位中
	value *= 0.625;	       //转换到温度值 小数
	return value;		   //返回读出的温度 带小数
}

/*************定时器0初始化程序***************/
void time_init()	  
{
	EA   = 1;	 	  //开总中断
	TMOD = 0X01;	  //定时器0、定时器1工作方式1
	ET0  = 1;		  //开定时器0中断 
	TR0  = 1;		  //允许定时器0定时
}

/********************独立按键程序*****************/
uchar key_can;	 //按键值

void key()	     //独立按键程序
{
	static uchar key_new;
	key_can = 20;               //按键值还原
	P3 |= 0xf0;
	if(key_500ms == 1)	//连加
	{
		key_500ms = 0;
		key_new = 1;
	}
	if((P3 & 0xf0) != 0xf0)		//按键按下
	{
		delay_1ms(1);	     	//按键消抖动
		if(((P3 & 0xf0) != 0xf0) && (key_new == 1))
		{						//确认是按键按下
			key_new = 0;
			switch(P3 & 0xf0)
			{
				case 0xd0: key_can = 3; break;	   //得到k1键值
				case 0xb0: key_can = 2; break;	   //得到K2键值
				case 0x70: key_can = 1; break;	   //得到k3键值
			}
			flag_lj_en = 1;	 //连加使能
		}			
	}
	else 
	{
		if(key_new == 0)
		{
			key_new = 1;
			flag_lj_en = 0;		//关闭连加使能
			key_value = 0;		//清零
			key_time = 0;
		}
	}	
}

/****************按键显示函数***************/
void key_with()
{
	if(key_can == 1)	   //设置键
	{
		menu_1 ++;
		if(menu_1 >= 3)
		{
			menu_1 = 0;
		}
		if(menu_1 == 0)
		{
			write_com(0x0c);                //关闭光标
		}
	}
	if(menu_1 == 1)			//设置高温报警
	{
		if(key_can == 2)
		{
			if(flag_lj_3_en == 0)
				t_high ++ ;		//按键按下未松开自动加三次	
			else 
				t_high += 10;	//按键按下未松开自动加三次之后每次自动加10
			if(t_high > 990)
				t_high = 990;
		}
		if(key_can == 3)
		{
			if(flag_lj_3_en == 0)
				t_high -- ;		//按键按下未松开自动减三次	
			else 
				t_high -= 10;	//按键按下未松开自动减三次之后每次自动减10
			if(t_high <= t_low)
				t_high = t_low + 1;
		}		
		write_sfm3_18B20(2,2,t_high);
		write_com(0x80+0x40+2);             //将光标移动到秒个位
		write_com(0x0f);                    //显示光标并且闪烁	
	}	
	if(menu_1 == 2)			//设置低温报警
	{
		if(key_can == 2)
		{
			if(flag_lj_3_en == 0)
				t_low ++ ;			//按键按下未松开自动加三次	
			else 
				t_low += 10;		//按键按下未松开自动加三次之后每次自动加10
			if(t_low >= t_high)
				t_low = t_high - 1;
		}
		if(key_can == 3)
		{
			if(flag_lj_3_en == 0)
				t_low -- ;			//按键按下未松开自动减三次	
			else 
				t_low -= 10;		//按键按下未松开自动加三次之后每次自动加10
			if(t_low <= 10)
				t_low = 10;
		}
		write_sfm3_18B20(2,10,t_low);
		write_com(0x80+0x40+10);            //将光标移动到秒个位
		write_com(0x0f);                    //显示光标并且闪烁	
	}	
} 

/****************报警函数***************/
void clock_h_l()
{
	static uchar value;
	if((temperature <= t_low) || (temperature >= t_high))
	{
		value ++;  //消除实际距离在设定距离左右变化时的干扰
		if(value >= 2)
		{
			if(temperature <= t_low)
				relay1 = 0;    //打开继电器			
			if(temperature >= t_high)
				relay2 = 0;    //打开继电器			
		fengshan = 1;	
		}	
	}
	else
	{
			fengshan = 0; 	  //风扇转	
		value = 0;
		relay1 = 1;    //关闭继电器			
		relay2 = 1;    //关闭继电器			
	}	
			
}

/****************主函数***************/
void main()
{	
	init_1602();                    //1602初始化
	time_init();                    //初始化定时器 
	while(1)
	{
			
		if(flag_300ms == 1)	        //300ms 处理一次温度程序
		{	
			flag_300ms = 0;	
			temperature = read_temp();	//先读出温度的值
			clock_h_l();            //报警函数
			write_sfm3_18B20(1,8,temperature);
		}
		key();					//按键程序
		if(key_can < 10)
		{
			key_with();			    //设置报警温度	
		}
	}
}

/*************定时器0中断服务程序***************/
void time0_int() interrupt 1
{	
	static uchar value;
	TH0 = 0x3c;
	TL0 = 0xb0;     // 50ms
	value ++;	 
	if(value % 6 == 0)
	{
		flag_300ms = 1;	   //300ms
		value = 0;
	}
	if(flag_lj_en == 1)	   //按下按键使能
	{
		key_time ++;
		if(key_time >= 10) //500ms
		{
			key_value ++;
			if(key_value > 3)
			{
				key_value = 10;
				flag_lj_3_en = 1; //3次后1.5秒连加大些
			}						
		}
	}

5系统测试

5.1系统测试
Proteus软件介绍:
Proteus软件是由英国Labcenter Electronics公司发明的EDA工具软件,与其他软件相比,除了模拟功能外,还可以在模拟微控制器和外部硬件设备上运行。目前,它是最好的仿真微控制器,也是测试硬件的有效工具。然而,目前技术正在改进,许多对微控制器感兴趣的人不仅可以从视频网络中学习,还可以从微控制器研发等领域的人群的工作中学习,Proteus已成为世界上更具影响力的仿真工具,其中与微控制器相关的设计原理或代码调试可以与外部设备配合使用。进入PCB设计,实现概念设计、电路仿真软件、PCB设计软件和虚拟模仿软件的完美平台,处理器可以支持8051如HC11、DSPIC33、AVR、ARM、8086、MSP430等。Cortex和DSP系列在2010年连续发布。
系统调试:
数码管可以将当前环境中的用户规定的温度上限和下限值输出,当检测的温度超过了规定的上限值时,会触发警报,此时D4会闪亮,然后程序下达散热器打开的指令进行降温,当温度下降直至温度值低于设置的下限温度值,报警器也会响起,此时D3灯亮,系统下达指令打开加热器进行升温。本系统可以达到智能化测控温度。
仿真电路图如图5.1所示。
在这里插入图片描述

图5-1仿真电路图
5.2测试结果
单击“播放”按钮时,它处于模拟状态,如下面的图 4.3 所示。
(1)当检测温度为23.5°C时,温度在规定的上限和下限内,范围内的常温报警装置没有响应。
(2)在温度达到了42.5摄氏度的时候,就高过了设置的界限范围,在这种情况下,会触发警报装置,蜂鸣器响,并且温度过高报警设备亮起。

在这里插入图片描述

图5-2温度过高仿真图
(3)在温度值是8.5摄氏度的时候,可以看到还没有超过一个正常的接线范围,这种较低的温度,也会引发警报装置,会有对应检测温度过低的设备闪亮。

6结论

本项目的不足是保温杯温度测控系统的精度不是非常准确,而且仿真时结果存在误差。在电阻丝设计的过程中,由于对加热的原理不是非常明白,所以电阻丝的加热设计并没有按照实际情况设计,仅仅只是利用按键进行模拟加热,另外由于自身的编程能力有限,温度的精度问题存在误差,这是本文亟需改进的地方。
我在本次论文设计中运用到许多专业知识,如单片机技术,微机原理,传感器技术和PLC等专业课程的知识,这使我感到非常的有成就感,学到的知识终于可以学以致用了。并且加深了我对这些课程的认识,学会了提出问题,分析问题并尝试解决问题。还让我懂得了做学术一定要脚踏实地并勇于探索,不怕艰辛,坚持不懈。希望未来大家一起努力可以开发出更加精确的测温控制器和把这些技术运用到更广泛的领域。
本论文论证了设计方案确实可以得到证实,从系统硬件部分设计和软件部分设计,并完成了系统调试。运用了本专业的单片机技术,传感器技术和微机原理等专业课程并查阅控制理论,接口电路和检测装置等知识撰写完成。经过大量的调查、资料查阅以及仿真调试可以设计出我们的温度测控报警系统并用于保温杯,本文设计的保温杯温度测控报警系统能够准确,快速方便地测量温度,并在设定的温度以外的温度值使用蜂鸣器进行报警,起到了很好的水温报警作用,提高人们的饮水体验和生活质量。

致谢

在本论文的撰写过程中,老师治学严谨,学识渊博,专业精深,技能水平高超。开题的时候对我的项目逐字逐句研究、分析与考证,每个细微之处提出建议与想法,哪怕是一个标点,使我很感动。老师如此严谨认真使我获得了无比强劲的研究和实践的动力。在课题进行过程中,老师帮助我明确方向、确定方案,学会开展研究的方法和途径,学会了如何去做研究、去实践,如何写论文、有哪些研究的方法等。从题目的选择到最终完成,主要经历了以下几个过程:群阅网络、浏览知网、查新学习专业书籍、写文献综述,在有关技术网注册交流、完成设计框图和流程、配置实践需用的设备和器件、学习相关器件官网的数据手册、综合调试与改进等。在这些环节中,老师都始终给予我鼎力支持和无私帮助指导,正是由于他们全力支持、全程关注,本设计和本论文才得以完成。
感谢学校的教育,对所有教师致以诚挚的谢意,感谢所有的亲朋好友,是你们促使我掌握书上没有知识。今后我将坚持奋斗、努力学习,以自身行动回报你们对我的培养。

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值