水温加热控制系统学年论文大学论文.docx
- 文档编号:5955521
- 上传时间:2023-01-02
- 格式:DOCX
- 页数:21
- 大小:146.76KB
水温加热控制系统学年论文大学论文.docx
《水温加热控制系统学年论文大学论文.docx》由会员分享,可在线阅读,更多相关《水温加热控制系统学年论文大学论文.docx(21页珍藏版)》请在冰豆网上搜索。
水温加热控制系统学年论文大学论文
学年论文
题 目:
水温加热控制系统
作 者:
所在学院:
专业年级:
指导教师:
职 称:
2016年12月23日
课程论文(设计)、学年论文评分表
题目
作者
专业年级
指导教师
指导教师评语及
评分建议
指导教师:
年月日
院
(部)
或
教
研
室
意
见
学院或教研室主任:
年月日
目录
1.前言....................................................................................5
2.要求....................................................................................6
2.1功能....................................................................................6
2.2要求....................................................................................6
3.实现思路...................................................................................7
3.1方案分析....................................................................................7
3.2元件简介....................................................................................7
3.2.1STC89C51....................................................................7
3.2.2最小系统....................................................................8
3.2..3八段LED数码管.........................................................9
3.3硬件连接..................................................................................10
3.4.加热控制模块框图.................................................................11
4.结论..................................................................................13
4.1问题总结.................................................................................13
4.2体会................................................................................13
附录..................................................................................14
摘要
本次设计的主要目的是实现对温度的控制,其主要思路是通过温度传感器感应物体温度,送到单片机处理,再由单片机一方面控制LED显示出来,另一方面控制加热的通断。
本次设计分2个功能模式进行,功能1为键盘设定温度,然后水温通过加热棒升温,达到设定温度,并通终维持在设定温度左右。
功能2为键盘设定加热时间,然后启动定时器,水温通过加热棒升温,直到定时器完成计时。
1.前言
随着社会的发展和科技的进步以及测温仪器在各个领域的应用,智能化是现代温控系统发展的主流方向,特别是今年来,温度控制系统已应用到生活的各个方面。
针对这种实际情况,设计一个温度控制系统,具有广泛的应用前景和实际意义。
温度是科学技术中最基本的物理量之一。
物理、化学、生物等学科都离不开温度,在工业生产等许多领域,温度常常是表征对象和过渡状态的重要物理量。
各行各业对温度的要求越来越高,可见温度的测量和控制是非常重要的。
单片机在电子产品中的应用已经越来越广泛,在很多的电子产品中也用到了温度检测和温度控制。
随着温度控制器应用越来越广泛,各种试用于不同场和的温度控制器应运而生。
2.要求
一、功能
设计并制作一个水温自动控制系统,控制水温的范围在0—100摄氏度内,能实现在控制范围内对温度的自动控制,并保持设定的温度基本保持不变;也可以设定定时加热。
二、要求
(1)可键盘设定控制温度值,设定最小分辨率为1℃;
(2)实时测量并显示实际温度。
温度测量误差在±0.5℃内;
(3)水温控制系统具有全量程(0℃~100℃)内的升温功能;
(4)任意设定一个温度值,控制系统可以实现该给定温度的恒值自动控制。
(5)可键入加热时长,实现定时加热,完成加热自动控制。
3.实现思路
3.1硬件分析
本次设计主要版块分为温度感应模块,温度显示模块,键盘设定模块,定时模块和加热控制模块。
1.温度感应模块
使用温度传感器18B20感应温度,由于该温度传感器内含AD转换器,因此连接简单,应用方便
2.温度显示模块
使用动态显示,通过数码管显示被测温度和设定温度。
硬件上连接简单,所需元件少。
3.键盘设定模块
使用键盘扫描法,通过矩阵键盘,求出设定的数值,由于该方案具有扫描功能,因此在不使用中断的情况下,使用键盘扫描程序是十分恰当的,本次设计采用的是键盘扫描程序。
3.2原件简介
3.2.1STC89C51
STC89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—Flash
Programmable and Erasable Read Only Memory)的低电压,高性能CMOS处理器,俗称单片机。
AT89C2051是一种带2K字节闪烁可编程可擦除只读存储器的单片机。
单片机的可擦除只读存储器可以反复擦除100次。
该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,STC89C2051是它的一种精简版本。
STC89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
主要特性:
·与MCS-51 兼容
·4K字节可编程闪烁存储器
·全静态工作:
0Hz-24Hz
·三级程序存储器锁定
·128*8位内部RAM32可编程I/O线
·两个16位定时器/计数器
·5个中断源
·可编程串行通道
·低功耗的闲置和掉电模式
3.2.2最小系统
最小系统构成的基本条件是
1.电源
STC89C51单片机的电压为4.0V-5.5V。
我们采用电脑的USB进行供电,电脑以及手机充电器一般输出电压为5V,可以为单片机正常供电。
2.晶振
晶振结合单片机内部的电路,产生单片机所必须的时钟频率,单片机的一切指令的执行都是建立在这个基础上的,晶振的提供的时钟频率越高,那单片机的运行速度也就越快。
本系统主要采用的是11.05926M晶振,配合2个30pF的电容构成晶体振荡电路。
3复位
为确保微机系统中电路稳定可靠工作,复位电路是必不可少的一部分,复位电路的第一功能是上电复位,复位电路通过电容加给RST端一个短暂的高电平信号,此高电平信号随着Vcc对电容的充电过程而逐渐回落,即RST端的高电平持续时间取决于电容的充电时间。
另外,在复位期间,端口引脚处于随机状态,复位后,系统将端口置为全“l”态。
最小系统连接图
3.2.2八段LED数码管
显示电路主要采用4位共阳8段数码管,采用动态扫描方式显示。
其原理图如下所示。
数码管主要有共阳、和共阴两种类型。
在这里我们先用的是共阳数码管,主要是由于单片机I/0的驱动能力有限,无法直接驱动4位8段数码管,所以必须采用共阳的数码管,并接上四个三极极管8550。
八段数码管连接图
3.3.硬件连接
硬件总体框图为:
本次设计硬件用到了单片机STC89C52、温度传感器DS18B20、加热棒、四位LED数码管、独立键盘、SSR固态继电器等。
单片机STC89C52是常用的单片机之一,单片机上有32个P口,其中P0、P1、P2、P3各8个。
温度传感器DS18B20接到单片机的一个P口上,本次设计是P2.1,因为温度传感器DS18B20可以直接将数据传输给单片机,因此可直接连接。
四位LED能显示两位整数,两位小数,用来显示温度够用。
五个独立键盘,分别表示加,减,开始,暂停,定时。
通过将5个出线端接到P3.3-P3.7口上,然后通过P3口控制键盘,键盘的按下将P3口对应位电压拉低,从而被单片机检测到。
固态继电器SSR是一种动作时间比较快的继电器,有4个接口,2端接5V电压,2端接加热棒。
3.3.加热控制模块框图
4.结论
4.1问题总结
本次设计的功能板块分为四块,分别是温度传感器感应模块、键盘输入模块、LED显示模块、控制温度模块。
调试过程中,出现过不少问题,诸如:
1.发现温度传感器的温度并不能有效地显示在LED上
原因:
温度传感器的程序有问题,延时没有用好。
解决方法:
修改DS18B20中的延时程序。
2.发现键盘的数字按下后,数码管没有显示。
原因:
程序中键盘的扫描程序没有显示函数,按下键时,程序在键盘函数中停留。
解决方法:
在键盘读取函数的延时中加显示函数。
4.2体会
本次设计的题目是水温加热控制系统,其主要思想是将水温控制在某一个设定的温度左右,误差不超过1度。
本次设计历时4周左右,花费了大量的精力和时间,可以说其中包含了诸多的汗水和付出。
通过网上查找资料和不停地写程序调试,既增长了知识,又增加了经验。
其过程中有苦有甜。
最后感谢学院提供的实验条件和老师的辛苦指导。
参考文献
[1]汪烈军,贾振红,冯龛等.单片机原理与应用西安:
西安交通大学出版社.2012
[2]徐惠民,安德宁.单片微型计算机原理接口与应用.第1版[M]北京:
北京邮电大学出版社,1996
[3]夏继强.单片机实验与实践教程.北京:
北京航空航天大学出版社,2001
附录程序
#include
#defineucharunsignedchar
unsignedchartable[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
charvalue=1,count=1,time_0=0;
charsecond=59;
voiddelay2(unsignedchart);//带显示延时
voiddisplay_time();
voiddisplay();
sbitDQ=P2^0;//数据传输线接单片机的相应的引脚
sbitP21=P2^1;//继电器
sbitcnt1=P3^7;//按键定时加1
sbitcnt0=P3^6;//按键定时减1
sbitstart=P3^5;//按键开始
sbitstop=P3^4;//按键暂停
sbittime=P3^3;//定时设置
voiddelay(unsignedchart)//延时函数
{
while(t-->0);
}
voiddelay2(unsignedchart)//按键时带显示温度延时
{
while(t-->0)
display();
}
voiddelay3(unsignedchart)//按键时带显示定时延时
{
while(t-->0)
display_time();
}
/***********************************************
********************各类函数模块****************/
voidkeyboard()//状态按键---start,stop,time
{
if(start==0)
{
delay2(200);
if(start==0)
value=0;
}
if(stop==0)
{
delay2(200);
if(stop==0)
value=1;
}
if(time==0)
{
delay2(200);
if(time==0)
value=2;
}
}
voidkeyboard_cnt()//温度设置按键
{
if(cnt1==0)
{
delay2(200);
if(cnt1==0)
if(count<99)
++count;
elsecount=0;
}
if(cnt0==0)
{
delay2(200);
if(cnt0==0)
if(count>1)
--count;
elsecount=99;
}
}
voidkeyboard_time()//定时设置按键
{
if(cnt1==0)
{
delay3(200);
if(cnt1==0)
if(time_0<59)
++time_0;
elsetime_0=0;
}
if(cnt0==0)
{
delay3(200);
if(cnt0==0)
if(time_0>1)
--time_0;
elsetime_0=59;
}
}
voiddisplay()//键盘输入的温度显示--温度为正整数
{
P1=0xfd;
P0=table[count%10];
delay(50);
P1=0xfe;
P0=table[count/10];
delay(50);
}
voiddisplay_time()//键盘输入的时间显示--时间为整分钟
{
P1=0xfd;
P0=table[time_0%10];
delay(50);
P1=0xfe;
P0=table[time_0/10];
delay(50);
}
/*************************************************
******************DS18B20模块程序*****************/
#defineucharunsignedchar
unsignedcharseg7code[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//不带小数点的共阳数码管段码
unsignedcharseg7codeB[]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10};//带小数点的共阳数码管段码
unsignedchartempL=0,tempH=0,sdata,xiaoshu1;xiaoshu2;
voiddelay1(uchari)//嵌套循环延时函数
{
ucharj,k;
for(j=i;j>0;j--)
for(k=125;k>0;k--);
}
voidInit_DS18B20(void)//DS18B20的初始化
{
unsignedcharx=0;
DQ=0;//发送复位脉冲
delay(80);//延时(>480us)
DQ=1;//拉高数据线
delay(5);//等待(15~60us)
while(DQ==1);
while(DQ==0);
delay(20);
}
//读一个字节
ReadOneChar()//主机数据线先从高拉至低电平1us以上,产生读时隙,15us内使数据线升为高电平,从而产生读信号
{
unsignedchari=0;//每个读周期最短的持续时间为60us,各个读周期之间必须有1us以上的高电平恢复期
unsignedchardat=0;
for(i=8;i>0;i--)//一个字节有8位
{
DQ=1;
delay
(1);//把数据线从高电平拉至低电平
DQ=0;dat>>=1;
DQ=1;if(DQ)
dat|=0x80;delay(4);
}
return(dat);
}
//写一个字节
voidWriteOneChar(unsignedchardat)
{
unsignedchari=0;//数据线从高电平拉至低电平,产生写起始信号。
15us之内将所需写的位送到数据线上,
for(i=8;i>0;i--)//在15~60us之间对数据线进行采样,如果是高电平就写1,低写0发生。
{
DQ=0;//在开始另一个写周期前必须有1us以上的高电平恢复期。
DQ=dat&0x01;
delay(5);
DQ=1;
dat>>=1;
}
delay(4);
}
//读温度值(低位放tempL;高位放tempH;)
voidReadTemperature()
{
Init_DS18B20();//初始化
WriteOneChar(0xcc);//跳过读序列号的操作,写入0XCC跳过ROM命令
WriteOneChar(0x44);//启动温度转换,写入0X44为温度转换命令
delay(125);//转换需要一点时间,延时
Init_DS18B20();//初始化
WriteOneChar(0xcc);//跳过读序列号的操作
WriteOneChar(0xbe);//读温度寄存器(头两个值分别为温度的低位和高位)写入0XBE为读暂存器命令
tempL=ReadOneChar();//读出温度的低位LSB
tempH=ReadOneChar();//读出温度的高位MSB
//对读取的温度进行处理,tempL的低四位为小数,2的负指数次;tempH的高五位为符号位,正温度为0,负温度为1;
sdata=tempL/16+tempH*16;//整数部分
xiaoshu1=(tempL&0x0f)*10/16;//小数第一位
xiaoshu2=(tempL&0x0f)*100/16%10;//小数第二位
}
//温度处理的范围为1-99摄氏度,由于是水温加热,温度为负数和超过100度不予考虑
//温度显示函数
voidLed(unsignedintdate)
{
P1=0xfe;//P1.0=0,选通第一位
P0=seg7code[date/10];
delay1(5);
P0=0xff;
P1=0xfd;//P1.1=0,选通第二位,个位数
P0=seg7codeB[date%10];
delay1(5);
P0=0xff;
P1=0xfb;//P1.3=0,选通第三位,小数点第一位
P0=seg7code[xiaoshu1];
delay1(5);
P0=0xff;
P1=0xf7;//P1.3=0,选通第四位,小数点第二位
P0=seg7code[xiaoshu2];
delay1(5);
P0=0xff;
}
/*************************************************
******************定时模块************************/
voidtimer(charminute)//定时器函数
{
unsignedintt=0;P21=0;
while(value==2)
{
if(--second<1)//最大定时为59分钟
{
second=59;
if(--minute<0)//定时的分钟为-1时,关闭继电器,改变value的值,跳出函数
{
P21=0;value=3;
}
}
TMOD=0x20;//8位自动重装定时器,每200us溢出一次
TH1=0x38;
TL1=0x38;
TR1=1;
do{//溢出一次显示一位时间,4次显示约0.8ms,既do_while语句每1ms判断一次条件
keyboard();
P1=0xff;P0=0xff;
while(TF1==0)
{
P1=0xf7;P0=table[second%10];
}
TF1=0;
P1=0xff;P0=0xff;
while(TF1==0)
{
P1=0xfb;P0=table[second/10];
}
TF1=0;
P1=0xff;P0=0xff;
while(TF1==0)
{
P1=0xfd;P0=seg7codeB[minute%10];//点小数点的显示
}
TF1=0;
P1=0xff;P0=0xff;
while(TF1==0)
{
P1=0xfe;P0=table[minute/10];
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 水温 加热 控制系统 学年 论文 大学