资源描述
学年论文
题 目: 水温加热控制系统
作 者:
所在学院:
专业年级:
指导教师:
职 称:
2016 年 12 月 23日
课程论文(设计)、学年论文评分表
题 目
作 者
专业年级
指导教师
指导教师评语及
评分建议
指导教师:
年 月 日
院
(部)
或
教
研
室
意
见
学院或教研室主任:
年 月 日
目录
1. 前言 .................................................................................... 5
2. 要求 .................................................................................... 6
2.1功能 .................................................................................... 6
2.2要求 .................................................................................... 6
3. 实现思路 ................................................................................... 7
3.1方案分析.................................................................................... 7
3.2 元件简介....................................................................................7
3.2.1 STC89C51.................................................................... 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.1 STC89C51
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.硬件连接
硬件总体框图为:
LED显示屏
温度传感器
1 8B20
单片机
继电器
五个独立键盘
加热棒
加热水
本次设计硬件用到了单片机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.加热控制模块框图
开始
检测value
若value=2
若value=1
若value=0
显示定时
扫描键盘
比较温度
控制继电器
键盘输入设定温度值
若value=1
键盘输入定时
扫描键盘
显示温度
扫描键盘
显示键值
令value=3
检测value的值
4.结论
4.1问题总结
本次设计的功能板块分为四块,分别是温度传感器感应模块、键盘输入模块、LED显示模块、控制温度模块。
调试过程中,出现过不少问题,诸如:
1. 发现温度传感器的温度并不能有效地显示在LED上
原因:温度传感器的程序有问题,延时没有用好。
解决方法:修改DS18B20中的延时程序。
2. 发现键盘的数字按下后,数码管没有显示。
原因:程序中键盘的扫描程序没有显示函数,按下键时,程序在键盘函数中停留。
解决方法:在键盘读取函数的延时中加显示函数。
4.2体会
本次设计的题目是水温加热控制系统,其主要思想是将水温控制在某一个设定的温度左右,误差不超过1度。
本次设计历时4周左右,花费了大量的精力和时间,可以说其中包含了诸多的汗水和付出。通过网上查找资料和不停地写程序调试,既增长了知识,又增加了经验。其过程中有苦有甜。最后感谢学院提供的实验条件和老师的辛苦指导。
参考文献
[1] 汪烈军,贾振红,冯龛等.单片机原理与应用 西安:西安交通大学出版社.2012
[2] 徐惠民,安德宁.单片微型计算机原理接口与应用.第1版[M] 北京:
北京邮电大学出版社,1996
[3]夏继强. 单片机实验与实践教程. 北京:北京航空航天大学出版社, 2001
附录程序
#include <reg51.h>
#define uchar unsigned char
unsigned char table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
char value=1,count=1,time_0=0;
char second=59;
void delay2(unsigned char t); //带显示延时
void display_time();
void display();
sbit DQ=P2^0; //数据传输线接单片机的相应的引脚
sbit P21=P2^1; //继电器
sbit cnt1=P3^7; //按键定时加1
sbit cnt0=P3^6; //按键定时减1
sbit start=P3^5; //按键开始
sbit stop=P3^4; //按键暂停
sbit time=P3^3; //定时设置
void delay(unsigned char t) //延时函数
{
while(t-->0) ;
}
void delay2(unsigned char t) //按键时带显示温度延时
{
while(t-->0)
display();
}
void delay3(unsigned char t) //按键时带显示定时延时
{
while(t-->0)
display_time();
}
/***********************************************
********************各类函数模块****************/
void keyboard() //状态按键--- 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;
}
}
void keyboard_cnt() //温度设置按键
{
if(cnt1==0)
{
delay2(200);
if(cnt1==0)
if(count<99)
++count;
else count=0;
}
if(cnt0==0)
{
delay2(200);
if(cnt0==0)
if(count>1)
--count;
else count=99;
}
}
void keyboard_time() //定时设置按键
{
if(cnt1==0)
{
delay3(200);
if(cnt1==0)
if(time_0<59)
++time_0;
else time_0=0;
}
if(cnt0==0)
{
delay3(200);
if(cnt0==0)
if(time_0>1)
--time_0;
else time_0=59;
}
}
void display() //键盘输入的温度显示 --温度为正整数
{
P1=0xfd;
P0=table[count%10];
delay(50);
P1=0xfe;
P0=table[count/10];
delay(50);
}
void display_time() //键盘输入的时间显示--时间为整分钟
{
P1=0xfd;
P0=table[time_0%10];
delay(50);
P1=0xfe;
P0=table[time_0/10];
delay(50);
}
/*************************************************
******************DS18B20模块程序*****************/
#define uchar unsigned char
unsigned char seg7code[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //不带小数点的共阳数码管段码
unsigned char seg7codeB[]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10}; //带小数点的共阳数码管段码
unsigned char tempL=0,tempH=0,sdata,xiaoshu1;xiaoshu2;
void delay1(uchar i) //嵌套循环延时函数
{
uchar j,k;
for(j=i;j>0;j--)
for(k=125;k>0;k--);
}
void Init_DS18B20(void) //DS18B20 的初始化
{
unsigned char x=0;
DQ=0; //发送复位脉冲
delay(80); //延时(>480us)
DQ=1; //拉高数据线
delay(5); //等待(15~60us)
while(DQ==1);
while(DQ==0);
delay(20);
}
//读一个字节
ReadOneChar() //主机数据线先从高拉至低电平1us以上,产生读时隙,15us内使数据线升为高电平,从而产生读信号
{
unsigned char i=0; //每个读周期最短的持续时间为60us,各个读周期之间必须有1us以上的高电平恢复期
unsigned char dat=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);
}
//写一个字节
void WriteOneChar(unsigned char dat)
{
unsigned char i=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;)
void ReadTemperature()
{
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度不予考虑
//温度显示函数
void Led(unsigned int date)
{
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;
}
/*************************************************
******************定时模块************************/
void timer(char minute) //定时器函数
{
unsigned int t=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];
}
TF1=0;
P1=0xff; P0=0xff;
}while(++t<1000||(value==1)); //当按下暂停键或计时一秒跳出循环
}
}
/*****************************************************
****************主函数模块***************************/
void main()
{
char n;
P21=1; //初始状态关闭继电器
while(1)
{
keyboard(); //读取状态控制键盘的值——start,stop,time的按键情况
while(value==0)
{
while(((count/sdata)==1)&&(value==0)) //如果设置温度count大于读取温
度stada且start有效时
{ //开启继电器,读取温度,显示温度,扫描键盘
P21=0; ReadTemperature();Led(sdata); keyboard();
}
P21=1;//否则关闭继电器--当温度达到时,不会跳出循环,继续读取温度,显示温度,扫描键盘
ReadTemperature();
Led(sdata);
keyboard();
second=59; //每次按下start时将second置成59,启用定时时有用
}
while(value==1) //按下stop 键,暂停继电器,显示温度键盘输入,扫描状态键盘输入和温度设置键盘输入
{
P21=1;
display();//显示输入的温度
keyboard();
keyboard_cnt();//扫描温度加减控制
}
while(value==2) //定时按键
{
do{
keyboard_time(); //扫描定时加减控制
keyboard();
display_time(); //显示输入的定时时间
}while(value!=0);//等待开始键按下,在开始键按下前用户输入定时时间
value=2;
n=time_0-1;
timer(n); //调用定时函数
}
while(value==3) //当计时完成时,关闭加热,显示当时水温
{
P21=1;
ReadTemperature();
Led(sdata);
keyboard();
}
}
}
目 录
第一章 总 论 1
一、项目提要 1
二、可行性研究报告编制依据 2
三、综合评价和论证结论 3
四、存在问题与建议 4
第二章 项目背景及必要性 5
一、项目建设背景 5
二、项目区农业产业化经营发展现状 11
三、项目建设的必要性及目的意义 12
第三章 建设条件 15
一、项目区概况 15
二、项目实施的有利条件 17
第四章 建设单位基本情况 19
一、建设单位概况 19
二、研发能力 20
三、财务状况 20
第五章 市场分析与销售方案 21
一、市场分析 21
二、产品生产及销售方案 22
三、销售策略及营销模式 22
四、销售队伍和销售网络建设 23
第六章 项目建设方案 24
一、建设任务和规模 24
二、项目规划和布局 24
三、生产技术方案与工艺流程 25
四、项目建设标准和具体建设内容 26
五、项目实施进度安排 27
第七章 投资估算和资金筹措 28
一、投资估算依据 28
二、项目建设投资估算 28
三、资金来源 29
四、年度投资与资金偿还计划 29
第八章 财务评价 30
一、财务评价的原则 30
二、主要参数的选择 30
三、财务估算 31
四、盈利能力分析 32
五、不确定性分析 33
六、财务评价结论 34
第九章 环境影响评价 35
一、环境影响 35
二、环境保护与治理措施 35
三、环保部门意见 36
第十章 农业产业化经营与农民增收效果评价 37
一、产业化经营 37
二、农民增收 38
三、其它社会影响 38
第十一章 项目组织与管理 40
一、组织机构与职能划分 40
二、项目经营管理模式 42
三、技术培训 42
四、劳动保护与安全卫生 43
第十二章 可行性研究结论与建议 46
一、可行性研究结论 46
二、建议 47
25
展开阅读全文