基于单片机的温室大棚温度控制系统设计本科毕业论文

更新时间:2024-05-15 08:48:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

基于单片机温室大棚温度控制设计

摘要:本系统以AT89C51单片机为控制核心,利用温度传感器AD590对蔬菜大棚内的温度进行实时采集与控制,实现温室温度的自动控制。本系统由单片机小系统模块、温度采集模块、加热模块、降温模块、按键以及显示模块六个部分组成。可以通过按键设定温室的温度值,采集的温度和设定的温度通过LED数码管显示。当所设定的温度值比采集的温度大时,通过加热器加热,以达到设定值;反之,开启降温风扇,以快速达到降温效果。通过该系统,对蔬菜大棚内的温度进行有效、可靠地检测与控制。从而保证大棚内作物在最佳的温度条件下生长,提高质量和产量。

关键词:单片机、温室大棚、温度控制

一、 硬件设计

(一)设计目标

本系统要控制的对象为这样一个规模的温室。温室结构的参数为:屋脊高5.2m,檐高3m,单跨度6.5m,长为20m,地面面积为130平方米。要实现的目标是,使薄膜温室的温度保持在20℃——30℃之间,在这个区域内温度值是可设定的。 (二)设计思路

系统原理框图如图1所示。本系统由单片机小系统模块、温度采集模块、WP型温室加热器、降温模块、按键以及显示模块六个部分组成。通过按键设定温度值,设定的温度值和采集的温度值都可以通过LED数码管显示。当所设定的温度值比采集的温度大时,通过加热器加热,以达到设定值;反之,开启降温风扇,以快速达到降温效果。该系统对温度的控制范围在20℃——30℃,温度控制的误差小于等于0.5℃。通过使用该系统,对蔬菜大棚内的温度进行有效、可靠地检测与控制,保证大棚内作物在最佳的温度条件下生长,提高质量和产量。

键盘扫描 AT89C51控制系统 温度采集

显示 降温模块

WP型温室加热器

图1系统原理框图

该系统分为六个模块,分别是单片机小系统模块、温度采集模块、显示模块、键盘扫描模块、加热模块和降温模块。 (三)基于AT89C51的单片机小系统

本系统采用Atmel公司所生产的AT89C51单片机。AT89C51单片机小系统如图2所示:

图2 单片机小系统

这个小系统由时钟脉冲和复位电路组成, AT89C51内部已具备振荡电路,只要在接地引脚上面的两个引脚(即19、18脚)连接简单的石英晶体即可。AT89C51的时钟频率为12MHz。AT89C51的复位引脚为第9脚,当此引脚连接高电平超过2个机器周期(一个机器周期为6个时钟脉冲),即可产生复位的动作。以12MHz的时钟脉冲为例,每个时钟脉冲1μs,两个机器周期为12μs,因此,在

第9脚上连接一个12μs以上的高电平脉冲,即可产生复位的动作。对于上电复位,复位引脚上串接了一个电容,当复位引脚接 +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℃。

温度值 0℃ 10℃ 20℃ 30℃ 40℃ 50℃ 60℃ 70℃ 80℃ 90℃ 100℃ OPA1 2.732V 2.832V 2.932V 3.032V 3.132V 3.232V 3.332V 3.432V 3.532V 3.632V 3.732V OPA2 0V -0.1V -0.2V -0.3V -0.4V -0.5V -0.6V -0.7V -0.8V -0.9V -1V OPA3 0V 0.5V 1V 1.5V 2V 2.5V 3V 3.5V 4V 4.5V 5V ADC VIN 0V 0.5V 1V 1.5V 2V 2.5V 3V 3.5V 4V 4.5V 5V ADC输出值 00H 19H 32H 4BH 64H 7DH 96H AFH C8H E1H FAH 表1 各温度与3个OPA及ADC0804的输入与输出关系

图4 ADC0804

如图4,A/D转换器就是模拟/数字转换器,是将输入的模拟信号转换成数字信号。信号输入端的信号可以是传感器或是转换器的输出,而ADC输出的数字信号可以提供给微处理器,以便更广泛地应用。

ADC0804电压输入与数字输出关系如下表2所示:

十六进制 二进制码 与满刻度的比率 相对电压值VREF=2.56伏 高四位字节 低四位字节 高四位字节电压 低四位字节电压 F E D C B 1111 1110 1101 1100 1011 15/16 14/16 13/16 12/16 11/16 15/256 14/256 13/256 12/256 11/256 4.800 4.480 4.060 3.840 3.520 0.300 0.280 0.260 0.240 0.220

A 9 8 7 6 5 4 3 2 1 0 1010 1001 1000 0111 0110 0101 0100 0011 0010 0001 0000 10/16 9/16 8/16 7/16 6/16 5/16 4/16 3/16 2/16 1/16 10/256 9/256 8/256 7/256 6/256 5/256 4/256 3/256 2/256 1/256 3.200 2.880 2.560 2.240 1.920 1.600 1.280 0.960 0.640 0.320 0 0.200 0.180 0.160 0.140 0.120 0.100 0.080 0.060 0.040 0.020 0 表2 ADC0804电压输入与数字输出关系

例如:VIN=3V,由上表可知2.880+0.120=3V,为10010110B=96H。 AD590产生的电流与绝对温度成正比,它可接收的工作电压为4V——30V,检测的温度范围为-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 7447

D、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的X1——X3和Y1——Y4输入。

X1 X2 X3

1 2 3

5 6 4 Y1 Y2 Y3 Y4 7 * 8 0 图8 电话式键盘

9 # 鉴于键盘扫描IC为4*4形式,以下键盘编码每行后面都有0FFH,以配合硬件使用。

按键 1 2 3 4 5 6 对应编码 01H 02H 03H 04H 05H 06H 按键 7 8 9 * 0 # 对应编码 07H 08H 09H 0AH 00H OBH 表3 键盘编码

键盘扫描IC74922的工作过程:X1—X3接键盘的行,Y1——Y4接键盘的列,按键信息由这几个口输入,由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的描述,它的功能是将实际温度和设定的温度比较,再作出相应的动作;第三部分是键盘扫描部分;第四部分是显示部分,用于显示温度值。 (一) 主程序

开始 系统初始化 A/D转换 Y 判断有无按键? A/D转换完成否? 按键程序 N N Y 显示 图9 主程序

本温度控制系统的总体设计思路见图9的主程序流程图,系统采用温度传感器AD590采集温度数据,再由ADC0804模数转换器将温度转化为单片机可以处理的数据。本系统将温度总体控制在20℃到30℃之间,并且可以通过键盘输入要设定的温度值,并通过7段数码管显示出来。在整个系统的运行期间,有一个定时器T0中断每隔20ms扫描一次,用于当前温度与设定温度的比较,然后发出加温或降温的命令。 程序代码如下:

ORG 00H

JMP START ORG 0BH

JMP TIM0 START: MOV TMOD,#01H MOV TH0,#60 MOV TL0,#76 SETB TR0 MOV IE,#82H MOV R4,#09H MOV R0,#30H CLEAR: 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,#0FFH START0: MOVX @R0,A WAIT: JB P3.4,KEYIN JB P2.0,ADC JMP WAIT ADC: MOVX A,@R0 MOV 37H,A CLR C SUBB A,36H JC TDOWN TUP: MOV A,37H CLR C SUBB A,34H JNC POFF JMP LOOP PON: CLR P2.1 JMP START0 POFF: SETB P2.1 JMP LOOP TDOWN: MOV A,37H CLR C SUBB A,35H JC PON JMP LOOP LOOP: MOV 36H,37H CLR A MOV R4,#0FFH DJNZ R4,$ CALL L1

MOV 21H,#10H NOV R1,#30H DISP1: CALL DISP DJNZ 21H,DISP1 JMP START0 (二) 定时器T0中断

定位 装入初值 N 比较的十位相同? Y N 设定温度>测定温度? N Y Y 比较的个位相同? 加热器停止工作 图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.1 RETURN: POP PSW POP ACC RETI OFF: SETB P2.1 JMP RETURN DELAY: MOV R7,#06 D1: MOV R6,#248 DJNZ R6,$ DJNZ R7,D1 RET

(三) 显示模块

显示子程序流程图如图11所示:(说明:30H用于暂时存放要显示温度的高四位,31H用于暂时存放要显示温度的低四位,38H用于存放最终要显示在7段数码管上的温度值;D1、D2分别表示两个7段数码管的存储地址。)

DISP 取(30H)高四位为D1 取(31H)低四位为D2 将(30H)、(31H)合成为(38H) 将(38H)的值送P1 延时 返回 图11 显示子程序

系统提供温度的显示功能,将温度用两个7段数码管显示出来。程序如下: DISP: 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 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,4FH D4: MOV R7,#0FFH D3: MOV R6,#0FFH D2: JB P3.4,KEYIN1 DJNZ R6,D2 DJNZ R7,D3 DJNZ R5,D4 JMP START0 KEYIN1: 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 (五) 源程序

程序要完成的功能是将总体温度控制在20℃——30℃之间,在这个范围内,可以设定任一温度值,并使之达到恒温效果;如果超出这个范围,则程序自动控制继电器工作使温度稳定在这个范围之间。 程序中各寄存器说明如下: 30H、31H:所测得的实际温度 32H、33H:键盘设定的温度 34H:系统的上限温度值(30℃) 35H:系统的下限温度值(20℃) 36H:旧温度值的存放地址 源程序如下:

ORG 00H

JMP START ORG 0BH JMP TIM0 START: MOV TMOD,#01H MOV TH0,#60 MOV TL0,#76 SETB TR0 MOV IE,#82H MOV R4,#09H MOV R0,#30H CLEAR: 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,#0FFH START0: MOVX @R0,A WAIT: JB P3.4,KEYIN JB P2.0,ADC JMP WAIT ADC: MOVX A,@R0 MOV 37H,A CLR C SUBB A,36H JC TDOWN TUP: MOV A,37H CLR C SUBB A,34H JNC POFF JMP LOOP PON: CLR P2.1 JMP START0 POFF: SETB P2.1 JMP LOOP TDOWN: MOV A,37H

CLR C SUBB A,35H JC PON JMP LOOP LOOP: MOV 36H,37H CLR A

MOV R4,#0FFH DJNZ R4,$ CALL L1 MOV 21H,#10H NOV R1,#30H DISP1: CALL DISP DJNZ 21H,DISP1 JMP START0 L1: 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,NEXT L2: MOV A,30H ADD A,30H DA A MOV 30H,A MOV A,31H ADDC A,31H DA A MOV 31H,A RET

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,4FH D4: MOV R7,#0FFH D3: MOV R6,#0FFH D2: JB P3.4,KEYIN1 DJNZ R6,D2 DJNZ R7,D3 DJNZ R5,D4 JMP START0 KEYIN1: 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 WAIT1: MOV R1,#32H CALL DISP JB P3.4,KEYIN1 JMP WAIT1 X1: JMP START0 DISP: 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

RET 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.1 RETURN: POP PSW POP ACC RETI OFF: SETB P2.1 JMP RETURN DELAY: MOV R7,#06 D1: MOV R6,#248 DJNZ R6,$ DJNZ R7,D1 RET

TABLE: DB 01H,02H,03H,0FFH DB 04H,05H,06H,0FFH DB 07H,08H,09H,0FFH DB 0AH,00H,0BH,0FFH TABLE1 : DB 4BH DB 32H END

本文来源:https://www.bwwdw.com/article/mb07.html

Top