基于单片机的温室大棚温度控制系统设计_本科毕业论文.doc_第1页
基于单片机的温室大棚温度控制系统设计_本科毕业论文.doc_第2页
基于单片机的温室大棚温度控制系统设计_本科毕业论文.doc_第3页
基于单片机的温室大棚温度控制系统设计_本科毕业论文.doc_第4页
基于单片机的温室大棚温度控制系统设计_本科毕业论文.doc_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于单片机温室大棚温度控制设计摘要:本系统以at89c51单片机为控制核心,利用温度传感器ad590对蔬菜大棚内的温度进行实时采集与控制,实现温室温度的自动控制。本系统由单片机小系统模块、温度采集模块、加热模块、降温模块、按键以及显示模块六个部分组成。可以通过按键设定温室的温度值,采集的温度和设定的温度通过led数码管显示。当所设定的温度值比采集的温度大时,通过加热器加热,以达到设定值;反之,开启降温风扇,以快速达到降温效果。通过该系统,对蔬菜大棚内的温度进行有效、可靠地检测与控制。从而保证大棚内作物在最佳的温度条件下生长,提高质量和产量。关键词:单片机、温室大棚、温度控制一、 硬件设计(一)设计目标 本系统要控制的对象为这样一个规模的温室。温室结构的参数为:屋脊高5.2m,檐高3m,单跨度6.5m,长为20m,地面面积为130平方米。要实现的目标是,使薄膜温室的温度保持在2030之间,在这个区域内温度值是可设定的。(二)设计思路系统原理框图如图1所示。本系统由单片机小系统模块、温度采集模块、wp型温室加热器、降温模块、按键以及显示模块六个部分组成。通过按键设定温度值,设定的温度值和采集的温度值都可以通过led数码管显示。当所设定的温度值比采集的温度大时,通过加热器加热,以达到设定值;反之,开启降温风扇,以快速达到降温效果。该系统对温度的控制范围在2030,温度控制的误差小于等于0.5。通过使用该系统,对蔬菜大棚内的温度进行有效、可靠地检测与控制,保证大棚内作物在最佳的温度条件下生长,提高质量和产量。at89c51控制系统温度采集键盘扫描wp型温室加热器显示降温模块图1系统原理框图 该系统分为六个模块,分别是单片机小系统模块、温度采集模块、显示模块、键盘扫描模块、加热模块和降温模块。(三)基于at89c51的单片机小系统本系统采用atmel公司所生产的at89c51单片机。at89c51单片机小系统如图2所示:图2 单片机小系统这个小系统由时钟脉冲和复位电路组成, at89c51内部已具备振荡电路,只要在接地引脚上面的两个引脚(即19、18脚)连接简单的石英晶体即可。at89c51的时钟频率为12mhz。at89c51的复位引脚为第9脚,当此引脚连接高电平超过2个机器周期(一个机器周期为6个时钟脉冲),即可产生复位的动作。以12mhz的时钟脉冲为例,每个时钟脉冲1s,两个机器周期为12s,因此,在第9脚上连接一个12s以上的高电平脉冲,即可产生复位的动作。对于上电复位,复位引脚上串接了一个电容,当复位引脚接 +5v电压时,电容相当于短路,经过一段时间(在这段时间内完成复位)后,电容处于充电状态,相当于断开。还有一种是手动复位,它的接法是在at89c51复位引脚所串连的电容上并联接一个按钮开关。当按钮没按下时,电容处于充电状态;当按钮按下时,电容对复位引脚放电,从而在这个引脚上产生高电平,达到复位的目的。(四)温度采集模块 本系统的温度采集和转换电路原理图如图3所示,它的工作过程为:系统通过ad590采集外界的温度参数,并通过三个放大器的作用将温度转化为电流模拟量;此模拟量通过adc0804的转化变成数字量,以便单片机辨认接收。图3 ad590温度传感器工作的系统结构电路图根据电路图,说明各个器件的功能如下:opa1:以0为标准,调节可变电阻r10使其输出电压为2.73伏特。opa2:减2.73伏特,并反相。opa3:放大5倍并反相。例如:ad590输出电压为1.5伏特,则其温度为:1.5/5(opa3)+2.732(opa2)=3.302伏特;3.302/10k=303.2微安培;303.2-273.2=30微安培30。温度值opa1opa2opa3adc vinadc输出值02.732v0v0v0v00h102.832v-0.1v0.5v0.5v19h202.932v-0.2v1v1v32h303.032v-0.3v1.5v1.5v4bh403.132v-0.4v2v2v64h503.232v-0.5v2.5v2.5v7dh603.332v-0.6v3v3v96h703.432v-0.7v3.5v3.5vafh803.532v-0.8v4v4vc8h903.632v-0.9v4.5v4.5ve1h1003.732v-1v5v5vfah表1 各温度与3个opa及adc0804的输入与输出关系图4 adc0804 如图4,a/d转换器就是模拟/数字转换器,是将输入的模拟信号转换成数字信号。信号输入端的信号可以是传感器或是转换器的输出,而adc输出的数字信号可以提供给微处理器,以便更广泛地应用。 adc0804电压输入与数字输出关系如下表2所示:十六进制二进制码 二与满刻度的比率相对电压值vref=2.56伏高四位字节低四位字节高四位字节电压低四位字节电压f111115/1615/2564.8000.300e111014/1614/2564.4800.280d110113/1613/2564.0600.260c110012/1612/2563.8400.240b101111/1611/2563.5200.220a101010/1610/2563.2000.200910019/169/2562.8800.180810008/168/2562.5600.160701117/167/2562.2400.140601106/166/2561.9200.120501015/165/2561.6000.100401004/164/2561.2800.080300113/163/2560.9600.060200102/162/2560.6400.040100011/161/2560.3200.0200000000表2 adc0804电压输入与数字输出关系例如:vin=3v,由上表可知2.880+0.120=3v,为10010110b=96h。 ad590产生的电流与绝对温度成正比,它可接收的工作电压为4v30v,检测的温度范围为-55+150,它有非常好的线性输出性能,温度每增加1,其电流增加1微安培。当摄氏温度为0时,ad590的电流为273.2微安培,经10千欧姆电阻后其电压为2.732伏特。余者依上述方法类推。 利用ad590以及接口电路把温度转换成模拟电压,经由adc0804转换成数字信号后传送给at89c51处理。 温度采集和ad590温度传感器工作的系统结构电路图为图3。(五)显示模块译码ic及温度显示的电路图如图5所示。显示部分的工作原理是,它将温度转换的数字量,即温度值,经由at89c51的p1口由两个译码ic输出并分别送入两个七段数码管显示,这两个led都是共阳极的。图5 译码ic及温度显示bcd码转换成7段led数码管的译码驱动ic,如图6所示,首推7447系列,包括7446、7449、74ls49。其中的7446及7447输出低电平驱动的显示码,用以推动共阳极7段led数码管;而7448及74ls49输出高电平驱动显示码,用以推动共阴极7段led数码管,7446、7447与7448的引脚相同(双并排16pins)。图6 译码ic 7447d、c、b、a:bcd码输入引脚。a、b、c、g:7段数码管输出引脚。lt:本引脚为测试引脚,当接高电平时,所连接的7段led数码管全亮。正常显示下应接低电平。rbi:本引脚为涟波淹没输入引脚,正常显示下应接低电平。bi和rbo:本引脚为淹没输入或涟波淹没输出引脚,正常显示下应接低电平。7段led数码管是利用7个led组合而成的显示设备,可以显示0到9共10个数字。当要显示多个数码管,可分别驱动每个数码管;当要利用人类的视觉暂留现象,则可以采用快速扫描的方式,只要一组驱动电路即可达到显示多个数码管的目的。一般来说,7段led数码管可分为共阳极和共阴极两种,共阳极就是把所有led的阳极连接到共同的接点com,而每个led的阴极分别为a、b、c、d、e、f、g及dp(小数点);同样的,共阴极就是把所有led的阴极连接到共同的接点com,而每个led的阳极分别为a、b、c、d、e、f、g及dp(小数点)。(六) 键盘扫描图7 键盘扫描电路图7是键盘扫描的电路图,其中74922是键盘扫描ic。键盘扫描电路的原理是,将键盘接在一个键盘扫描ic 74922上,当在键盘上按下键时,相关的键码将通过74922的a、b、c、d口线传递给at89c51单片机。键盘采用电话式键盘,结构如图8所示。键盘是接在键盘扫描ic 74922(上图6所示)上面的,键盘的输入通过74922的x1x3和y1y4输入。 x1 x2 x3123456789*0#y1 y2 y3 y4 图8 电话式键盘 鉴于键盘扫描ic为4*4形式,以下键盘编码每行后面都有0ffh,以配合硬件使用。按键123456对应编码01h02h03h04h05h06h按键789*0#对应编码07h08h09h0ah00hobh表3 键盘编码 键盘扫描ic74922的工作过程:x1x3接键盘的行,y1y4接键盘的列,按键信息由这几个口输入,由a、b、c、d四个口输出到p3口的低四位,再通过p1口经过译码ic显示在led上。键盘扫描芯片不断查询是否有按键输入,当查询到有按键时,da置1,同时执行相应的程序,比较温度是否超出上、下限,进而决定是加热还是降温。(七) wp型温室加热器 如图7所示,在at89c51的p2.1口上接一个继电器,将加热器接在此继电器上。需要提高温度时,单片机控制p2.1口,使之置1,进而控制加热器加热。(八) 降温模块 如图7所示,在at89c51的p2.2口上接一个继电器,将降温风扇接在此继电器上。需要降温时,单片机控制p2.2口,使之置1,进而控制降温风扇降温。二、 软件设计本系统的工作流程是,操作人员可以从键盘上输入要设定的温度值。当此温度值与当前温度不同时,单片机控制系统采取调节的动作。当设定温度大于测定温度时,则使加热器工作;当设定温度小于测定温度时,则开启降温风扇。此程序流程包括4个部分。第一部分是主程序,它描述的是程序的总体结构;第二部分是定时器t0的描述,它的功能是将实际温度和设定的温度比较,再作出相应的动作;第三部分是键盘扫描部分;第四部分是显示部分,用于显示温度值。(一) 主程序yn按键程序显示a/d转换完成否?判断有无按键?a/d转换系统初始化开始ny图9 主程序本温度控制系统的总体设计思路见图9的主程序流程图,系统采用温度传感器ad590采集温度数据,再由adc0804模数转换器将温度转化为单片机可以处理的数据。本系统将温度总体控制在20到30之间,并且可以通过键盘输入要设定的温度值,并通过7段数码管显示出来。在整个系统的运行期间,有一个定时器t0中断每隔20ms扫描一次,用于当前温度与设定温度的比较,然后发出加温或降温的命令。程序代码如下:org 00h jmp start org 0bh jmp tim0start: mov tmod,#01h mov th0,#60 mov tl0,#76 setb tr0 mov ie,#82h mov r4,#09h mov r0,#30hclear: mov r0,#00h djnz r4,clear mov a,#00h mov dptr,#table1 movc a,a+dptr mov 34h,a mov a,#01h mov dptr,#table1 movc a,a+dptr mov 35h,a mov 36h,#0ffhstart0: movx r0,await: jb p3.4,keyin jb p2.0,adc jmp waitadc: movx a,r0 mov 37h,a clr c subb a,36h jc tdowntup: mov a,37h clr c subb a,34h jnc poff jmp looppon: clr p2.1 jmp start0poff: setb p2.1 jmp looptdown: mov a,37h clr c subb a,35h jc pon jmp looploop: mov 36h,37h clr a mov r4,#0ffh djnz r4,$ call l1 mov 21h,#10h nov r1,#30hdisp1: call disp djnz 21h,disp1 jmp start0(二) 定时器t0中断定位装入初值比较的十位相同?比较的个位相同?开启降温风扇返回加热器工作设定温度测定温度?加热器停止工作ynynny图10 定时器t0中断子程序 定时器t0中断的工作流程如图10所示。当定时器t0发生中断时,就将按键输入的设定的温度值与当前的温度值比较。当输入的温度值大于当前测定的温度值,单片机就控制加热器加热;当设定的温度值小于当前测定的温度值,就开启降温风扇。程序代码如下:tim0: push acc push psw mov th0,#60 mov tl0,#76 mov a,33h cjne a,31h,t mov a,32h cjne a,30h,t jmp off t: jc off clr p2.1return: pop psw pop acc retioff: setb p2.1 jmp returndelay: mov r7,#06d1: mov r6,#248 djnz r6,$ djnz r7,d1 ret(三) 显示模块显示子程序流程图如图11所示:(说明:30h用于暂时存放要显示温度的高四位,31h用于暂时存放要显示温度的低四位,38h用于存放最终要显示在7段数码管上的温度值;d1、d2分别表示两个7段数码管的存储地址。)取(30h)高四位为d1取(31h)低四位为d2返回将(38h)的值送p1将(30h)、(31h)合成为(38h)延时disp图11 显示子程序系统提供温度的显示功能,将温度用两个7段数码管显示出来。程序如下:disp: mov a,r1 anl a,#0f0h swap a mov 38h,a inc r1 mov a,r1 anl a,#0fh swap aorl a,38h mov p1,a call delay ret(四) 按键扫描将键盘接在一个键盘扫描ic 74922上,所按键将被此芯片处理后传送给单片机处理。工作流程如图9所示。如果要设定新的温度值,操作流程为:按“*”要设定的温度值按“*”,这样就完成了温度的设定。程序代码如下:keyin: jb p3.4,$ mov a,p3 anl a,#0fh mov dptr,#table movc a,a+dptr xrl a,#0ah jnz start0 jb p3.4,keyin1 mov r1,#32h call disp mov r5,4fhd4: mov r7,#0ffh d3: mov r6,#0ffhd2: jb p3.4,keyin1 djnz r6,d2 djnz r7,d3 djnz r5,d4 jmp start0keyin1: jb p3.4,$ mov a,p3 anl a,#0fh mov dptr,#table movc a,a+dptr mov 20h,a xrl a,#0ah jz x1 mov a,20h xrl a,#0bh jz wait1 mov a,20h xch a,32h xch a,33h(五) 源程序 程序要完成的功能是将总体温度控制在2030之间,在这个范围内,可以设定任一温度值,并使之达到恒温效果;如果超出这个范围,则程序自动控制继电器工作使温度稳定在这个范围之间。程序中各寄存器说明如下:30h、31h:所测得的实际温度32h、33h:键盘设定的温度34h:系统的上限温度值(30)35h:系统的下限温度值(20)36h:旧温度值的存放地址源程序如下:org 00h jmp start org 0bh jmp tim0start: mov tmod,#01h mov th0,#60 mov tl0,#76 setb tr0 mov ie,#82h mov r4,#09h mov r0,#30hclear: mov r0,#00h djnz r4,clear mov a,#00h mov dptr,#table1 movc a,a+dptr mov 34h,a mov a,#01h mov dptr,#table1 movc a,a+dptr mov 35h,a mov 36h,#0ffhstart0: movx r0,await: jb p3.4,keyin jb p2.0,adc jmp waitadc: movx a,r0 mov 37h,a clr c subb a,36h jc tdowntup: mov a,37h clr c subb a,34h jnc poff jmp looppon: clr p2.1 jmp start0poff: setb p2.1 jmp looptdown: mov a,37h clr c subb a,35h jc pon jmp looploop: mov 36h,37h clr a mov r4,#0ffh djnz r4,$ call l1 mov 21h,#10h nov r1,#30hdisp1: call disp djnz 21h,disp1 jmp start0l1: clr c mov 30h,#00h mov 31h,#00h mov r3,#08h next: rlc a mov r2,a mov a,30h addc a,30h da a mov 30h,a mov a,31h addc a,31h da a mov 31h,a mov a,r2 djnz r3,nextl2: mov a,30h add a,30h da a mov 30h,a mov a,31h addc a,31h da a mov 31h,a retkeyin: jb p3.4,$ mov a,p3 anl a,#0fh mov dptr,#table movc a,a+dptr xrl a,#0ah jnz start0 jb p3.4,keyin1 mov r1,#32h call disp mov r5,4fhd4: mov r7,#0ffhd3: mov r6,#0ffhd2: jb p3.4,keyin1 djnz r6,d2 djnz r7,d3 djnz r5,d4 jmp start0keyin1: jb p3.4,$ mov a,p3 anl a,#0fh mov dptr,#table movc a,a+dptr mov 20h,a xrl a,#0ah jz x1 mov a,20h xrl a,#0bh jz wait1 mov a,20h xch a,32h xch a,33hwait1: mov r1,#32h call disp jb p3.4,keyin1 jmp wait1x1: jmp start0disp: mov a,r1 anl a,#0f0h swap a mov 38h,a inc r1 mov a,r1 anl a,#0fh swap a orl a,38h mov p1,a call delay rettim0: push acc push psw mov th0,#60 mov tl0,#76 mov a,33h cjne a,31h,t mov a,32h cjne a,30h,t jmp offt: jc off clr p2.1 return: pop psw pop acc retioff: setb p2.1 jmp returndelay: mov r7,#06d1: mov r6,#248 djnz r6,$ djnz r7,d1 rettable: db 01h,02h,03h,0ffh db 04h,05h,06h,0ffh db 07h,08h,09h,0ffh db 0ah,00h,0bh,0ffhtable1 : db 4bh db 32h end (六) 系统电路图 图12 系统电路图参考文献2 吴金戍,沈庆阳,郭庭吉. 8051单片机实践与应用 北京:清华大学出版社,2006,6882.3 陈明荧. 8051单片机课程设计实训教材 北京:清华大

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论