基于单片机的温室大棚的温度测控系统设计毕业设计.docx
《基于单片机的温室大棚的温度测控系统设计毕业设计.docx》由会员分享,可在线阅读,更多相关《基于单片机的温室大棚的温度测控系统设计毕业设计.docx(36页珍藏版)》请在冰点文库上搜索。
基于单片机的温室大棚的温度测控系统设计毕业设计
毕业论文
题目:
基于单片机的温室大棚的温度测控系统设计
系:
电子信息系
专业:
电子信息工程技术
毕业设计(论文)中文摘要
基于单片机的温室大棚温度测控系统
摘要本文从硬件和软件两方面来讲述温室大棚温度系统的设计过程。
系统以单片机AT89C52为核心控制部件,通过10KNTC温度传感器采集环境温度,并通过数码显示管显示实时温度。
硬件上从温度检测电路、信号放大电路、A/D转换电路、输出控制电路、键盘及LED显示电路的设计等几个方面出发,详细研究和设计了基于单片机的温室大棚温度测控系统的各个部分内容,采用了LTC1860、LM358、74HC245、LED显示器等器件。
软件方面采用汇编语言来进行单片机及其外围电路的程序设计,使指令的执行速度快,节省存储空间。
系统模拟实现了蔬菜大棚温度控制的功能,并达到0.2度的温控精度要求,使大棚温度可控范围达到0℃-50℃。
关键词单片机系统,温度传感器,数据采集
目次
1.1课题的来源3
1.2课题的意义3
1.3课题研究的主要内容3
2设备方案设计与理论基础4
2.1温室大棚温度测控系统的方案设计4
2.2设计理论基础4
2.2.1AT89C52单片机介绍5
2.2.2LTC1860A/D模数转换器7
2.2.3运算放大器LM3587
2.2.4总线收发器74HC2458
2.2.5数码显示管LED8
2.2.6NTC温度传感器9
3硬件电路设计7
3.1单片机控制单元8
3.2温度采样部分8
3.3LED显示部分8
3.4按键输入部分9
4软件设计9
4.1软件设计介绍9
4.2主程序流程图10
4.3子程序模块11
4.3.1A/D转换子程序11
4.3.2LED显示子程序11
4.3.3按键输入子程序12
4.3.4主程序12
结论16
致谢17
参考文献18
附录19
附录图1系统结构图19
附录图2PCB版图19
附录3源程序20
1绪论
1.1课题的来源
温室又称暖房,能透光、保温,用来栽培植物的设施。
在不适宜植物生长的季节,能增加产量和提供生育期。
因此,温室技术在世界范围内应用十分广泛。
温室结构应密封保温,但又应便于通风降温。
现代化温室中具有控制温湿度、光照等条件的设备,用电脑自动控制创造植物所需的最佳环境条件[1]。
温室是设施农业重要的组成部分,国外温室种植业的实践经验表明,提高温室的自动控制和管理水平可以充分发挥温室农业的高效性。
大棚种植的温度控制系统解决了长期以来困扰农民的问题,它的应用广泛,制作成本低廉。
随着传感技术,计算机技术及通讯技术的迅猛发展,现代化温室信息自动采集及智能控制系统的开发已成为目前设施农业的一个研究热点。
1.2课题的意义
本文从国内目前温控技术的薄弱环节进行分析,找出问题的存因及改善困难,结合相关新技术及改良设想,在51单片机的基础上,有效解决温室大棚的温度自动控制,运用多个方案进行有效分析,提高温室大棚的种植培育能力。
在可行性的基础上,经过准确计算及比对,降低程序开发保证项目的有效运作。
1.3课题研究的主要内容
本课题主要采用51单片机系统,对蔬菜大棚中温度、进行采集、检测和控制。
本文从软件和硬件两方面来讲述温室大棚温度控制系统的设计过程。
软件方面采用汇编语言来进行单片机及其外围电路的程序设计,节省存储空间,使指令的执行速度快。
为了便于扩展和更改,软件的设计采用模块化结构,使程序设计的逻辑关系更加简洁明了,使硬件在软件的控制下协调运作。
硬件上从A/D转换电路、温度检测电路、信号放大电路、输出控制电路等几个方面出发,详细研究和设计了基于单片机的温室大棚温度测控系统的各个部分内容。
在控制过程中主要应用AT89C52、LM358、74HC245、LTC1860、LED显示器,而主要通过10KNTC温度传感器采集环境温度,以单片机为核心控制部件,并通过数码显示管显示实时温度。
系统的过程主要是:
首先,通过键盘输入,设定所需要达到的温度值,并且用数码管显示这个温度值。
然后,在运行过程中将温度传感器采样的温度模拟量经过信号放大后送入A/D转换器中进行模拟-数字转换,再将转换后的数字量用数码管显示,最后由单片机来判定,与设定的温度不符合则发出警报。
2设备方案设计与理论基础
2.1温室大棚温度测控系统的方案设计
图2-1温室大棚温度测控系统结构图
首先,通过键盘输入,设定所需要达到的温度值,并且用数码管显示这个温度值。
然后,在运行过程中将温度传感器采样的温度模拟量经过信号放大后送入A/D转换器中进行模拟-数字转换,再将转换后的数字量用数码管显示,最后由单片机来判定,与设定的温度不符合则发出警报。
2.2设计理论基础
2.2.1AT89C52单片机介绍
AT89C52是51系列单片机的一个型号,它是ATMEL公司生产的。
AT89C52是一个低电压,高性能CMOS8位单片机,片内含8kbytes的可反复擦写的Flash只读程序存储器和256bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,AT89C52单片机在电子行业中有着广泛的应用。
其主要功能特点包括:
1、兼容MCS51的指令系统;2、8k可反复擦写FlashROM;3、32个双向I/O口;4、256x8bit内部RAM;5、3个16位可编程定时/计数器中断;6、时钟频率0-24MHz;7、2个串行中断,可编程UART串行通道;8、2个外部中断源,共8个中断源;9、2个读写中断口线,3级加密位;10、低功耗空闲和掉电模式,软件设置睡眠和唤醒功能;11、有PDIP、PQFP、TQFP及PLCC等几种封装形式,以适应不同产品的需求。
图2-2AT89C52引脚图
AT89C52P为40脚双列直插封装的8位通用微处理器,采用工业标准的C51内核,在内部功能及管脚排布上与通用的8xc52相同,其主要用于会聚调整时的功能控制。
功能包括对会聚主IC内部寄存器、数据RAM及外部接口等功能部件的初始化,会聚调整控制,会聚测试图控制,红外遥控信号IR的接收解码及与主板CPU通信等。
主要管脚有:
XTAL1(19脚)和XTAL2(18脚)为振荡器输入输出端口,外接12MHz晶振。
RST/Vpd(9脚)为复位输入端口,外接电阻电容组成的复位电路。
VCC(40脚)和VSS(20脚)为供电端口,分别接+5V电源的正负端。
P0~P3为可编程通用I/O脚,其功能用途由软件定义,在本设计中,P0端口(32~39脚)被定义为N1功能控制端口,分别与N1的相应功能管脚相连接,13脚定义为IR输入端,10脚和11脚定义为I2C总线控制端口,分别连接N1的SDAS(18脚)和SCLS(19脚)端口,12脚、27脚及28脚定义为握手信号功能端口,连接主板CPU的相应功能端,用于当前制式的检测及会聚调整状态进入的控制功能。
2.2.2LTC1860A/D模数转换器
LTC1860是采用MSOP和SO-8封装的12位A/D转换器,采用单5V工作电源。
在250ksps采样速率条件下,电源电流仅为850μA。
在较低的速度下,电源电流将减小,原因是LTC1860在转换操作之间将自动断电至一个1nA的典型电源电流。
这些12位开关电容器逐次逼近型ADC包括采样及保持电路。
LTC1860具有一个差分模拟输入和一个可调基准引脚。
LTC1860ADC可在比例式应用中使用,或与外部基准一起使用。
高阻抗模拟输入以及可在缩减的电压范围内(低至1V全标度)运作的能力使得它们在许多应用中可与信号源直接相连,从而免除了增设外部增益级的需要[13]。
2.2.3运算放大器LM358
LM358是有两个高增益、独立的、内部频率补偿的双运算放大器,一般作为电源电压范围很宽的单电源使用,也适用于双电源工作模式,在适当的工作条件下,电源电流与电源电压无关。
它的可用于包括传感放大器、直流增益模块和其他所有可用单电源供电的使用运算放大器的场合。
图2-3LM358引脚图
2.2.4总线收发器74HC245
74HC245为总线驱动器,典型的TTL型三态缓冲门电路。
由于单片机的数据/地址/控制总线端口都有一定的负载能力,如果负载超过其负载能力,一般应加驱动器。
而74HC245正好起到了这个作用。
本课题中74HC245被用于驱动LED显示器的作用[15]。
图2-474HC245B1R引脚图
2.2.5NTC温度传感器
NTC是NegativeTemperatureCoefficient的缩写,是指随温度上升电阻呈指数关系减小、具有负温度系数的热敏电阻现象和材料。
它的主要材料是锰、镍和铜等金属氧化物,采用陶瓷工艺制造而成的。
这些金属氧化物材料都具有半导体性质,在导电方式上完全类似锗、硅等半导体材料。
随着温度的升高,载流子数目增加,所以电阻值降低;当温度低时,这些氧化物材料的载流子(电子和孔穴)数目少,所以其电阻值较高。
NTC热敏电阻器在室温下的电阻变化范围一般在100~1000000欧姆,温度系数为-2%~-6.5%。
NTC热敏电阻器广泛应用于温度补偿、温度测量、抑制浪涌电流、温度补偿等方面[12]。
3硬件电路设计
3.1单片机控制单元
图3-1单片机控制单元图
单片机控制包括主体AT89C52芯片,一个上电复位电路,一个晶振电路,10K上拉电阻。
此为整个设计的核心部分。
它不仅要计算通过键盘输入的高低电平,控制数码管显示相应的温度值,还要实时将经过LTC1860数模转换后的电压值显示为相应的温度值。
并且通过判定温度值来确定是否发出警报。
3.2温度采样部分
图3-2温度采集单元图
1TL431的简介
德州仪器公司(TI)生产的TL431是一是一个有良好的热稳定性能的三端可调分流基准源。
它的输出电压用两个电阻就可以任意地设置s到从Vref(2.5V)到36V范围内的任何值(如图2)。
该器件的典型动态阻抗为0.2Ω,在很多应用中可以用它代替齐纳二极管,例如,数字电压表,运放电路、可调压电源,开关电源等等。
左图是该器件的符号。
3个引脚分别为:
阴极(CATHODE)、阳极(ANODE)和参考端(REF)。
TL431的具体功能可以用如图1的功能模块示意。
由图可以看到,VI是一个内部的2.5V基准源,接在运放的反相输入端。
由运放的特性可知,只有当REF端(同相端)的电压非常接近VI(2.5V)时,三极管中才会有一个稳定的非饱和电流通过,而且随着REF端电压的微小变化,通过三极管图1的电流将从1到100mA变化。
当然,该图绝不是TL431的实际内部结构,所以不能简单地用这种组合来代替它。
但如果在设计、分析应用TL431的电路时,这个模块图对开启思路,理解电路都是很有帮助的,本文的一些分析也将基于此模块而展开。
5V电源输入。
NTC温度传感器,温度越高,它的阻值就会越小,常温下即25度时,它的阻值大概为10K欧,然后通过10mA恒流源电路,它可以达到0.1V,经过放大电路放大10倍后,电压为1V。
通过AD芯片LTC1860测得电压值,因为电压随温度的变化而线性变化。
3.3LED显示部分
图3-3LED显示器图
通过74HC245芯片将51单片机处理的温度信息显示在LED数码管上,图为温度测控系统的的单片机显示部分。
显示部分在整个设计中起到非常大的作用,它不仅显示了我们输入的标准温度同时也实时显示了温室大棚的环境温度。
3.4输入输出部分
图3-4按键输入及报警输出
按键用来设置报警温度,通过INC、DEC、OK这三个按键来实现人机对话,人为的设定需要达到的温度。
INC为设置上限温度,DEC为设置下限温度,OK为确认设定键。
报警采用蜂鸣器,当温度未达到设定温度内时,蜂鸣器鸣叫。
4软件设计
4.1软件设计介绍
软件的编程设计是单片机系统设计的核心部分,也是能否实现预定功能的关键。
单片机编程常用的语言是C语言和汇编语言,最终都要转为IntelHEX格式或二进制格式(Binary)文件拷入单片机芯片内。
这里我们使用的是C语言进行编程设计。
编程前,必须将地址、数据以及控制信号设置好。
原理图设计及PCB设计采用了protel99SE。
它提供了对高密度封装(如BGA)的交互布线,精确移动器件,总线布线等功能。
系统设计中所用到的AD芯片LTC1860为s0-8封装,贴片;74HC245为DIP20封装;单片机89C52为DIP40封装;蜂鸣器:
5V;轻触开关:
6*6;三极管9013为直插式;稳压器TL431为三脚直插;无源晶振:
12M;运放LM358为8脚直插。
4.2主程序流程图
图4-1系统流程图
4.3子程序模块
4.3.1A/D转换子程序
AD转换程序,需要根据LTC1860的读时序图,对照时序来看。
其结果为串行输出的,所以需要一根数据线,一根时钟线,还有一根是转换控制线。
以下是A/D转换的部分子程序:
uintult1860()//AD转换子程序
{
uchari;
uintoutput=0;
CONV=1;
CONV=0;
for(i=12;i>0;i--)
{
SCK=0;
SCK=1;
output|=DATA;
output<<=1;
}
CONV=1;
return(output);
}
4.3.2LED显示子程序
为简化硬件电路,通常将所有LED动态显示。
显示程序,因为显示是三位数,所以需要把结果转成,百位、十位、和个位数。
然后把转换的结果,对照显示码显示出来。
比如显示1,并不是输出1就行,而是要输出1的七段码才行。
P0是输出数据,P1用来选择显示的数码管
以下是设置LED液晶显示的部分子程序:
voidDisplay(uintdat)
V[2]=dat/100;
V[1]=(dat%100)/10;
V[0]=dat%10;
for(i=3;i>0;i--)
{
P0=dig_num[V[i-1]];
if(i==2)
P0|=0x80;
P1=~(0x4>>(i-1));
delay
(1);
P1=0xff;
}
}
4.3.3按键输入子程序
此程序是本毕业设计中最为重要的一个部分,它对输入部分进行一个判断来区分各个按键起到的作用。
以下是路灯开关控制部分程序:
ucharpresskey1(void)
{
if(K1==0)
return1;
else
return0;
}
ucharpresskey2(void)
{
if(K2==0)
return1;
else
return0;
}
ucharpresskey3(void)
{
if(K3==0)
return1;
else
return0;
}
4.3.4主程序
#include
#include
#defineuintunsignedint
#defineucharunsignedchar
sbitDATA=P2^5;
sbitSCK=P2^4;
sbitCONV=P2^6;
sbitK1=P2^0;
sbitK2=P2^1;
sbitK3=P2^2;
sbitSOUND=P2^3;
voiddelay(unsignedint);
ucharcodedig_num[10]=
{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
/*共阴级数码管的段选码*/
ucharV[3];
bitsoundbit=0;
uintuplimit=200;
uintdownlimit=100;
ucharsetflag=0;
//延时函数
voiddelay(uintdt)
{
ucharbt;
for(;dt;dt--)
for(bt=0;bt<10;bt++);
}
voidmain()
{
TMOD=0x01;
TH0=0xF8;
TL0=0x30;
ET0=1;
EA=1;
TR0=1;
while
(1)
{
if(presskey1())
{setflag=2;
while(K1==0);
uplimit+=2;
if(uplimit==400)uplimit=0;
}
if(presskey2())
{setflag=1;
while(K2==0);
downlimit-=2;
if(downlimit==0)downlimit=400;
}
if(presskey3())
{
while(K3==0);
setflag=0;
}
if(soundbit)
{
SOUND=1;
}
Else
{SOUND=0;}
}
}
//////////显示屏扫描(定时器T0中断)函数
voidleddisplay(void)interrupt1
{
uinttemp,i;
TH0=0xF8;
TL0=0x30;
temp=ult1860();
for(i=3;i>0;i--)
{
V[i-1]=temp/1638;
temp=temp%1638*10;
}
WD=V[2]*100+V[1]*10+V[0];
if(setflag==2)
{Display(uplimit);}
elseif(setflag==1)
{Display(downlimit);}
Else
{Display(WD);}
if(WD>uplimit||WD{soundbit=1;}
Else
{soundbit=0;}
}
结论
4个月的毕业设计即将结束,这也意味着我们的大学生活也要结束了,但是我们对于学习却永远不会结束。
在本次设计中,我不仅学到了新的知识,也对四年来大学所学的理论知识加以实践。
这不但增强了我的动手能力,也提高了我对于知识的综合运用水平,为以后的学习和工作打下了扎实的基础。
本文以AT89C51系列单片机为核心,用AT89C52单片机作为控制器件,温度信号通过温度传感器和稳压器转变成电压信号,接着通过放大器放大,再由LTC1860转换成数字信号。
温度测定采用恒流源电路,温度设定通过按键来完成,输出为警报器鸣铃。
软件算法采用设定值和测量值想比较的算法。
在单片机应用基础上,实现了一种用带EPROM的AT89C52单片机控制传感器的自动化温度测控系统。
致谢
本课题是在导师张老师的悉心指导下完成的,从论文的选题、系统设计、到修改定稿都没有离开张老师的帮助,通过本次设计,本人在张老师的指引下学到了许多有用的知识,这些是在平时的学习中得不到的知识,他严谨的治学态度和悉心的指导使我受益非浅。
在此,向张老师表以崇高的敬意和由衷的感谢!
还要感谢各位评阅老师,经过你们的认真评阅和指正,将会使我的设计的系统更加的完整。
在此,我向你们致以最诚挚的谢意!
在平时严谨的治学和勤恳的教育,让我在平时打下坚实的基础,才能顺利完成本次设计,可以说没有你们的教诲和指导,我们也不会取得今天的成绩。
我想对他们说一声:
感谢你们的教导和关心,您们辛苦了!
本次课程设计的完成还离不开我身边同学和一些老师的帮忙,在系统软件设计方面同学给了我很大的帮助,因为期间我一直在外实习工作,许多事都要麻烦在校的老师和同学帮忙,在此,向他们表示感谢!
另外由于本人学识所限在,再加上第一次做,难免有所错漏望导师批评指正。
参考文献
[1]马祥兴电子技术及应用,2010(8).
[2]缪晓中电子CAD,2010(3)
[3]朱永金成友才单片机应用技术,2011(11)
[4]刘刚王立香任鲁涌Multisim&Ultiboard10原理图与PCD设计,2009
[5]阿力木·甫拉提.温室大棚温度的调控[N].农业科技,2010(8).
[6]胡真明.基于单片机控制的温室环境测控装置的研究[D].西北农林科技大学,2007年.
[7]张国清,陈淑坤.简单实用的温控电器[J].仪器与未来,1998(3)22.
[8]郑炳坤.简单的温控箱温控电路[J].仪器与未来,1991(7)22.
[9]鲍可进.PID参数自整定的温度控制[J].江苏理工大学学报,1995(6)74.
[10]柴钰.单片机原理及应用[M].北京:
西安电子科技大学出版社,2009.
[11]吴建平.传感器原理及应用[M].北京:
机械工业出版社,2009.
[12]刘畅生.传感器简明手册及应用电路[M].西安:
西安电子科技大学出版社,2005.
[13]史军勇,冀捐灶,杨宝强.基于AT89C205l的温湿度控制仪[J].电子技术,2004,
(1):
21-23
[14]夏方林.一种基于单片机AT89C51的温湿度控制仪的设计[J].工业仪表与自动化装置,1999,
(1):
32-34
[15]胡汉才.单片机原理及接口技术[M].北京:
清华大学出版社,2003.
附录
附录图1系统原理图
附录图2PCB图
源程序
#include
#include
#defineuintunsignedint
#defineucharunsignedchar
sbitDATA=P2^5;
sbitSCK=P2^4;
sbitCONV=P2^6;
sbitK1=P2^0;
sbitK2=P2^1;
sbitK3=P2^2;
sbitSOUND=P2^3;
voiddelay(unsignedint);//延时函数
ucharcodedig_num[10]=
{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
/*共阴级数码管的段选码*/
ucharV[3];//显示缓存
bitsoundbit=0;//报警标志位
uintuplimit=200;//温度上限
uintdownlimit=100;//温度下限
ucharsetflag=0;//切换显示标志
//温度值
//延时函数
voiddelay(uintdt)
{
ucharbt;
for(;dt;dt--)
for(bt=0;bt<10;bt++);
}
uintult1860()//AD转换子程序
{
uchari;
uintoutput=0;
CONV=1;
CONV=0;
for(i=12;i>0;i--)
{
SCK=0;
SCK=1;
output|=DATA;
output<<=1;