基于单片机的温室大棚温度控制系统设计本科毕业论文文档格式.docx
《基于单片机的温室大棚温度控制系统设计本科毕业论文文档格式.docx》由会员分享,可在线阅读,更多相关《基于单片机的温室大棚温度控制系统设计本科毕业论文文档格式.docx(22页珍藏版)》请在冰豆网上搜索。
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℃。
温度值
OPA1
OPA2
OPA3
ADCVIN
ADC输出值
0℃
2.732V
0V
00H
10℃
2.832V
-0.1V
0.5V
19H
20℃
2.932V
-0.2V
1V
32H
30℃
3.032V
-0.3V
1.5V
4BH
40℃
3.132V
-0.4V
2V
64H
50℃
3.232V
-0.5V
2.5V
7DH
60℃
3.332V
-0.6V
3V
96H
70℃
3.432V
-0.7V
3.5V
AFH
80℃
3.532V
-0.8V
4V
C8H
90℃
3.632V
-0.9V
4.5V
E1H
100℃
3.732V
-1V
5V
FAH
表1各温度与3个OPA及ADC0804的输入与输出关系
图4ADC0804
如图4,A/D转换器就是模拟/数字转换器,是将输入的模拟信号转换成数字信号。
信号输入端的信号可以是传感器或是转换器的输出,而ADC输出的数字信号可以提供给微处理器,以便更广泛地应用。
厦礴恳蹒骈時盡继價骚。
ADC0804电压输入与数字输出关系如下表2所示:
十六进制
二进制码二
与满刻度的比率
相对电压值VREF=2.56伏
高四位字节
低四位字节
高四位字节电压
低四位字节电压
F
1111
15/16
15/256
4.800
0.300
E
1110
14/16
14/256
4.480
0.280
D
1101
13/16
13/256
4.060
0.260
C
1100
12/16
12/256
3.840
0.240
B
1011
11/16
11/256
3.520
0.220
A
1010
10/16
10/256
3.200
0.200
9
1001
9/16
9/256
2.880
0.180
8
1000
8/16
8/256
2.560
0.160
7
0111
7/16
7/256
2.240
0.140
6
0110
6/16
6/256
1.920
0.120
5
0101
5/16
5/256
1.600
0.100
4
0100
4/16
4/256
1.280
0.080
3
0011
3/16
3/256
0.960
0.060
2
0010
2/16
2/256
0.640
0.040
1
0001
1/16
1/256
0.320
0.020
0000
表2ADC0804电压输入与数字输出关系
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译码IC7447
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。
键盘扫描电路的原理是,将键盘接在一个键盘扫描IC74922上,当在键盘上按下键时,相关的键码将通过74922的A、B、C、D口线传递给AT89C51单片机。
擁締凤袜备訊顎轮烂蔷。
键盘采用电话式键盘,结构如图8所示。
键盘是接在键盘扫描IC74922(上图6所示)上面的,键盘的输入通过74922的X1——X3和Y1——Y4输入。
贓熱俣阃歲匱阊邺镓騷。
X1X2X3
*
#
Y1
Y2
Y3
Y4
图8电话式键盘
鉴于键盘扫描IC为4*4形式,以下键盘编码每行后面都有0FFH,以配合硬件使用。
按键
对应编码
01H
02H
03H
04H
05H
06H
07H
08H
09H
0AH
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的描述,它的功能是将实际温度和设定的温度比较,再作出相应的动作;
第三部分是键盘扫描部分;
第四部分是显示部分,用于显示温度值。
綾镝鯛駕櫬鹕踪韦辚糴。
(一)主程序
Y
N
按键程序
A/D转换完成否?
判断有无按键?
A/D转换
系统初始化
开始
图9主程序
本温度控制系统的总体设计思路见图9的主程序流程图,系统采用温度传感器AD590采集温度数据,再由ADC0804模数转换器将温度转化为单片机可以处理的数据。
本系统将温度总体控制在20℃到30℃之间,并且可以通过键盘输入要设定的温度值,并通过7段数码管显示出来。
在整个系统的运行期间,有一个定时器T0中断每隔20ms扫描一次,用于当前温度与设定温度的比较,然后发出加温或降温的命令。
驅踬髏彦浃绥譎饴憂锦。
程序代码如下:
ORG00H
JMPSTART
ORG0BH
JMPTIM0
START:
MOVTMOD,#01H
MOVTH0,#60
MOVTL0,#76
SETBTR0
MOVIE,#82H
MOVR4,#09H
MOVR0,#30H
CLEAR:
MOV@R0,#00H
DJNZR4,CLEAR
MOVA,#00H
MOVDPTR,#TABLE1
MOVCA,@A+DPTR
MOV34H,A
MOVA,#01H
MOV35H,A
MOV36H,#0FFH
START0:
MOVX@R0,A
WAIT:
JBP3.4,KEYIN
JBP2.0,ADC
JMPWAIT
ADC:
MOVXA,@R0
MOV37H,A
CLRC
SUBBA,36H
JCTDOWN
TUP:
MOVA,37H
SUBBA,34H
JNCPOFF
JMPLOOP
PON:
CLRP2.1
JMPSTART0
POFF:
SETBP2.1
TDOWN:
SUBBA,35H
JCPON
LOOP:
MOV36H,37H
CLRA
MOVR4,#0FFH
DJNZR4,$
CALLL1
MOV21H,#10H
NOVR1,#30H
DISP1:
CALLDISP
DJNZ21H,DISP1
(二)定时器T0中断
加热器停止工作
猫虿驢绘燈鮒诛髅貺庑。
图10定时器T0中断子程序
定时器T0中断的工作流程如图10所示。
当定时器T0发生中断时,就将按键输入的设定的温度值与当前的温度值比较。
当输入的温度值大于当前测定的温度值,单片机就控制加热器加热;
当设定的温度值小于当前测定的温度值,就开启降温风扇。
锹籁饗迳琐筆襖鸥娅薔。
TIM0:
PUSHACC
PUSHPSW
MOVA,33H
CJNEA,31H,T
MOVA,32H
CJNEA,30H,T
JMPOFF
T:
JCOFF
RETURN:
POPPSW
POPACC
RETI
OFF:
JMPRETURN
DELAY:
MOVR7,#06
D1:
MOVR6,#248
DJNZR6,$
DJNZR7,D1
RET
(三)显示模块
显示子程序流程图如图11所示:
(说明:
30H用于暂时存放要显示温度的高四位,31H用于暂时存放要显示温度的低四位,38H用于存放最终要显示在7段数码管上的温度值;
D1、D2分别表示两个7段数码管的存储地址。
)構氽頑黉碩饨荠龈话骛。
DISP
輒峄陽檉簖疖網儂號泶。
图11显示子程序
系统提供温度的显示功能,将温度用两个7段数码管显示出来。
程序如下:
DISP:
MOVA,@R1
ANLA,#0F0H
SWAPA
MOV38H,A
INCR1
ANLA,#0FH
ORLA,38H
MOVP1,A
CALLDELAY
(四)按键扫描
将键盘接在一个键盘扫描IC74922上,所按键将被此芯片处理后传送给单片机处理。
工作流程如图9所示。
如果要设定新的温度值,操作流程为:
按“*”→要设定的温度值→按“*”,这样就完成了温度的设定。
尧侧閆繭絳闕绚勵蜆贅。
KEYIN:
JBP3.4,$
MOVA,P3
MOVDPTR,#TABLE
XRLA,#0AH
JNZSTART0
JBP3.4,KEYIN1
MOVR1,#32H
MOVR5,4FH
D4:
MOVR7,#0FFH
D3:
MOVR6,#0FFH
D2:
JBP3.4,KEYIN1
DJNZR6,D2
DJNZR7,D3
DJNZR5,D4
KEYIN1:
JBP3.4,$
MOVA,P3
MOV20H,A
JZX1
MOVA,20H
XRLA,#0BH
JZWAIT1
XCHA,32H
XCHA,33H
(五)源程序
程序要完成的功能是将总体温度控制在20℃——30℃之间,在这个范围内,可以设定任一温度值,并使之达到恒温效果;
如果超出这个范围,则程序自动控制继电器工作使温度稳定在这个范围之间。
识饒鎂錕缢灩筧嚌俨淒。
程序中各寄存器说明如下:
30H、31H:
所测得的实际温度
32H、33H:
键盘设定的温度
34H:
系统的上限温度值(30℃)
35H:
系统的下限温度值(20℃)
36H:
旧温度值的存放地址
源程序如下:
JMPSTART
ORG0BH
MOV@R0,#00H
MOV34H,A
JBP3.4,KEYIN
SUBBA,34H
JNCPOFF
SUBBA,35H
JCPON
MOVR4,#0FFH
CALLL1
L1:
MOV30H,#00H
MOV31H,#00H
MOVR3,#08H
NEXT:
RLCA
MOVR2,A
MOVA,30H
ADDCA,30H
DAA
MOV30H,A
MOVA,31H
ADDCA,31H
DAA
MOV31H,A
MOVA,R2
DJNZR3,NEXT
L2:
MOVA,30H
ADDA,30H
MOV30H,A
MOVA,31H
MOVA,P3
ANLA,#0FH
MOVDPTR,#TABLE
MOVR1,#32H
CALLDISP
MOVR7,#0FFH
JZX1
XRLA,#0BH
MOVA,20H
XCHA,32H
WAIT1:
JMPWAIT1
X1:
ANLA,#0F0H
ORLA,38H
PUSHPSW
T:
CLRP2.1
SETBP2.1
TABLE:
DB01H,02H,03H,0FFH
DB04H,05H,06H,0FFH
DB07H,08H,09H,0FFH
DB0AH,00H,0BH,0FFH
TABLE1:
DB4BH
DB