目录
引言……………………………………………………………………………3
设计任务书……………………………………………………………………3
前言……………………………………………………………………………4
第2节系统硬件模块化设计………………………………………………………5
2.1系统硬件结构…………………………………………………………………5
2.2信号采集模块………………………………………………………………6
2.3显示模块………………………………………………………………6
2.4键盘模块……………………………………………………………6
2.5转换模块……………………………………………………………………7
第3节系统的软件设计………………………………………………………………
3.1系统控制流程图………………………………………………………………7
3.2温度控制系统程序……………………………………………………………8
第4节结束语…………………………………………………………………………12
第5节参考文献……………………………………………………………12
设计题目:基于单片机的温室温度控制系统
一、设计实验条件
自动化实验室各实验系统
二、设计任务
查找资料,确定蔬菜大棚温室在植物生长的不同阶段所需的温度范围与控制精度,并以此为依据设计以单片机为核心的温度控制系统。要求:
1.写出温度控制过程,绘制控制系统组成框图
2.选择性能、价格合适的器件,给出温度检测与控制电路
3、编写温度检测与控制程序框图
三、设计说明书的内容
设计题目与设计任务(设计任务书)
前言(绪论)(设计的目的、意义等)
主体设计部分
结束语
参考文献
前言
蔬菜是人民生活中不可缺少的副食品,人们要求周年不断供应新鲜、多样的蔬菜产品,仅靠露地栽培是很难达到目的的,尤其是我国北方地区无霜期短,而长江流域地区虽然冬季露地能生产一些耐寒蔬菜,但种类单调,且若遇冬季寒潮或夏秋暴雨,连绵阴雨等灾害性天气,则早春育苗和秋冬蔬菜生产都可能会受到较大的损失,影响蔬菜的供应。
大棚栽培蔬菜可促进早熟、丰产和延长供应期,是人类征服自然、扩大蔬菜生产、实现周年供应的一种有效途径,是发展"三高"农业、振兴农村经济的组成部分,是现代农业的标志之一。而利用大棚进行蔬菜栽培可利用保护设备在冬、春、秋进行蔬菜生产,以获得多样化的蔬菜产品,可提早和延迟蔬菜的供应期,能对调节蔬菜周年均衡供应,满足人们的需要起重要作用,随着人们生活条件的不断改善,人们更关注自身的健康,绿色蔬菜尤其受到重视。大棚种植充分满足了人们的需求,但对于和农作物生长密切相关的大棚温度的控制,对大部分没有专业知识的农民来说着实是一件头疼的事。
基于单片机的大棚种植的温度控制系统,能顺利解决长期以来困扰农民的问题,它不仅便于农民操作,更重要的是,在无形之中提高了作物的产量,增加了农民的收入,满足了人们对大棚蔬菜的需求。
大棚蔬菜满足了人民能一年四季吃到新鲜蔬菜的愿望,为提供更多量、更有营养价值的蔬菜,智能的大棚温度控制系统已成为农民的迫切需要。以89S52单片机为主的温度控制系统可对大棚内部的温度和蔬菜所需的正常温度进行比较,以人性化的方式向大棚管理人员提供温度调节的信息,帮助农民提高农作物的产量,减少农民的工作量。
温度控制系统采用89S52单片机为核心。大棚温度经温度传感器采样后变换为模拟电压信号,经低通滤波滤掉干扰信号后送放大器,信号放大后送模/数转换器转换为数字信号送单片机,单片机根据输入的温度得出结果,片提醒农民作出适当的温度调节。该系统成本低,操作方便,设计人性化,具有良好的推广价值。
第2节系统硬件模块化设计
2.1系统硬件结构
2.2信号采集模块
信号发生采用的是直接从电源上得到可变的电压.”可变”体现在滑动变阻器上.滑动变阻器一端接地,另一端接高电平,滑动滑动变阻器,可输出渐变的电压,作为模拟电压信号.运用于蔬菜大棚的温度控制系统,不需要信号发生装置,可采用温度检测器检测实际大棚内温度.
将模拟电压信号转换为数字信号,送入单片机,完成信号采集单元.模/数转换器采用TLC549,它是8位串行A/D转换芯片.可与通用微处理器、控制器通过CLK、CS、DATAOUT三条口线进行串行接口。具有4MHz片内系统时钟和软、硬件控制电路,转换时间最长17μs,TLC549允许最高转换速率为40000次/s。总失调误差最大为±0.5LSB,典型功耗值为6mW。采用差分参考电压高阻输入,抗干扰,可按比例量程校准转换范围,VREF-接地,VREF+-VREF-≥1V,可用于较小信号的采样。TLC549芯片如下图所示.
2.3显示模块
将AT89S52接到排阻上,然后接到74LS374上,最后连接到数码管显示器上。
(1)RESPACK8一般接在89S52单片机的P0口,因为P0口内部没有上拉电阻,不能输出高电平,所以要接上拉电阻。排阻就是好多电阻连载一起,他们有一个公共端。
(2)74LS374具有三态输出的边沿触发器,374输出端O0……O7可直接与总线相连,当三态允许控制端OE为低电平,O0……O7为正常逻辑状态,可用来驱动负载总线。OE为高电平,O0……O7高阻态,不驱动总线负载。当时钟端脉冲上升没作用下,O随数据D而变。
本次试验,采用两个74LS374芯片,一个用作段选U3,控制八位数码管的各段显示管,另一个用作片选U4。
(3)数码管显示电路。
2.4键盘模块
将键盘与AT89S52连接到一起,如硬件连接图连接方式连接电路。键盘作为可输入设定值,在之后的模块中与检测到的温度值作比较。
2.5转换模块
当SW接于高电平时,选择数码显示模块,当SW接于低电平时,选择键盘设定值模块。
硬件设施很简单,在AT89S52的P1.7口引出一条线,让它控制选择个模块。
第3节系统的软件设计
3.1系统控制流程图
3.2温度控制系统程序
#include
#include"intrins.h"
#defineucharunsignedchar
#defineuintunsignedint
#defineflfloat
ucharout0=0x7f;//赋初值
ucharbuf[3]={0,0,0};//全局数组
ucharpr[]={0x57,0x6E,0x5E,0x3E,0x6D,0x5D,0x3D,0x6B,0x5B,0x3B};
uchardiscode[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
uintAD; //转换结果,十六进制
uintuuu,sc=0; //带小数部分数据处理结果
intInt_result,float_result;//Int_result整数部分,float_result小数部分
sbitDataout=P1^0; //数据线
sbitcs=P1^1; //片选
sbitsclk=P1^2; //io口时钟
sbitdx=P1^3; //段码显示控制锁存
sbitwx=P1^4; //位控控制锁存
sbitsw=P1^7;
sbitPWM=P1^5;
voiddelay1ms(ucharT) //单位时间1ms延时
{
uchartime;
while(T--)
for(time=0;time<120;time++);
}
/显示程序/
voiddisplay(uintnum)
{
ucharqian,bai,shi,ge;
qian=num/1000; //千,百,十,个处理
bai=num/100%10;
shi=num/10%10;
ge=num%10;
wx=0;
P0=0xf7;
wx=1;
dx=0;
P0=discode[ge];//显示个位
dx=1;
delay1ms(1);
if(num>0)
{
wx=0;
P0=0xfb;
wx=1;
dx=0;
P0=discode[shi]|0x80;//显示十位
dx=1;
delay1ms(1);
wx=0;
P0=0xfd;
wx=1;
dx=0;
P0=discode[bai];//显示百位,带小数点
dx=1;
delay1ms(1);
}
}
/AD转换程序/
AD_val() //TLC549处理
{
uchari,temp=0;
cs=1; //初始化,启动
sclk=0;
cs=0;
_nop_();
for(i=0;i<8;i++) //读取采集数据,读取的是上一次采集数据
{
sclk=1;
temp=temp<<1;
if(Dataout)temp|=0x01;
sclk=0;
}
cs=1;
AD=temp;
for(i=0;i<5;i++) //延时17us以上,进行复位
_nop_();
Int_result=AD5/256; //处理整数
float_result=AD5%256100/256;//处理小数部分
uuu=((Int_result100)+(float_result));//整数部分和小数部分合成
returnuuu;}
/键盘扫描程序/
voidKB_Scan1()
{ uchartmp,line,i,j,flag,press;
line=0x7E;
for(i=1;i<=4;i++)
{
P3=line;
tmp=P3;
tmp&=0x70;
if(tmp!=0x70)
{tmp=P3;flag=1;break;}
elseline=(line<<1)|0x01;
}
if(i==5){tmp=0xFF;flag=0; }
for(j=0;j<10;j++)
{if(tmp==pr[j])
press=j;}
if(flag==1)
{
buf[2]=buf[1];
delay1ms(100);
buf[1]=buf[0];
delay1ms(100);
buf[0]=press;
delay1ms(100);
sc=buf[2]100+buf[1]10+buf[0];
}
}
/PID服务程序/
voidPID()
{fle0,e1,e2;
uchardu,out1;
ucharkp=16,kd=0,ki=0;//ts=1;
e0=e1;e1=e2;e2=(sc-uuu)/10;//设定值-采集量
if(e2>=0)
{if(e2>=10)//测得偏差值与设定偏差值进行比较,若不在设定范围内则满功率加热。
{TR0=0;PWM=1;}
else
{du=25e2;//(e2-e1)+kie2+kd(e2-2e1+e0);//PID算法
out1=du;//+out0;
TR0=1;//若到达设定范围则调用PID程序,进行有效功率加热.
}
}
else//测得值与设定值比较,测得值大于设定值,关闭加热设备,停止加热。
{TR0=0;PWM=0;}
out0=out1;
}
/PWM输出程序/
//
//定时器0中断服务程序.
//
voidtimer0()interrupt1
{
TR0=0;
TH0=0xff;
TL0=0x66;
TH1=0xff-out0;
TR1=1;
PWM=1;//启动输出
}
//
//定时器1中断服务程序
//
voidtimer1()interrupt3
{
TR1=0;
PWM=0;//结束输出
TR0=1;
}
/主函数/
main() //主程序
{
TMOD=0x21;
TH0=0xfc;//1ms延时常数12M
TL0=0x18;//频率调节
TH1=0x7f;//脉宽调节
TL1=0;
EA=1;
ET0=1;
ET1=1;
while(1)
{AD_val();//调用TCL549采集处理
if(sw==1)
{display(uuu);} //显示最终结果
else{if(P3^4==0||P3^5==0||P3^6==0)
{KB_scan1();
display(sc);}
else
{display(sc);}}
PID();
}
}
结束语
本次课程设计,我们小组完成了基于单片机的温度控制系统,了解了大棚内温度控制系统的重要意义和控制原理,大棚种植不仅提高了产量,也丰富了每个季节的果蔬品种,提高了农业生产总值,提高了农民的收入,是利国利民的好事,应该在全国范围内推广普及!基于80c51单片机的温度控制系统通过采集现场温度和设定温度进行比较,采用PID控制温度,若采集温度超过设定温度则报警,否则加热,温度相差越大加热功率越高。在两个星期时间内,我们小组成功完成了仿真实验。在设计过程中我们变得更耐心,更严谨,更科学,更懂得团队合作!此次课程设计让我们印象深刻!
参考文献
《模拟电子技术》,《数字电子技术》,《单片机原理》,《自动控制系统》。
D
C
B
A
PULLUP
R1
FMMTH10
Q1
LED-RED
开始
D1
BUZZER
BUZ1
SW-SPDT
SW1
D
C
B
A
3
2
1
#
0
9
8
7
6
5
4
3
2
1
数据采集部分
RV1(3)
1k
RV1
16%
v
5
+
RESPACK-8
RP1
1
9
8
7
6
5
4
3
2
74LS374
U4
1
1
K
L
C
1
E
O
9
1
7
Q
8
1
7
D
6
1
6
Q
7
1
6
D
5
1
5
Q
4
1
5
D
2
1
4
Q
3
1
4
D
9
3
Q
8
3
D
6
2
Q
7
2
D
5
1
Q
4
1
D
2
0
Q
3
0
D
74LS374
U3
1
1
K
L
C
1
E
O
9
1
7
Q
8
1
7
D
6
1
6
Q
7
1
6
D
5
1
5
Q
4
1
5
D
2
1
4
Q
3
1
4
D
9
3
Q
8
3
D
6
2
Q
7
2
D
5
1
Q
4
1
D
2
0
Q
3
0
D
+5v
TLC549
U2
7
SCLK
5
CS
6
SDO
3
REF-
1
REF+
2
AIN
80C51
U1
15
P3.5/T1
16
P3.6/WR
17
P3.7/RD
14
P3.4/T0
13
P3.3/INT1
12
P3.2/INT0
11
P3.1/TXD
10
P3.0/RXD
8
P1.7
7
P1.6
6
P1.5
5
P1.4
4
P1.3
3
P1.2
2
P1.1
1
P1.0
27
P2.6/A14
26
P2.5/A13
25
P2.4/A12
24
P2.3/A11
23
P2.2/A10
22
P2.1/A9
21
P2.0/A8
28
P2.7/A15
32
P0.7/AD7
33
P0.6/AD6
34
P0.5/AD5
35
P0.4/AD4
36
P0.3/AD3
37
P0.2/AD2
38
P0.1/AD1
39
P0.0/AD0
9
RST
29
PSEN
31
EA
30
ALE
19
XTAL1
18
XTAL2
l3
l2
l1
r4
r3
r2
r1
r4
r3
r2
r1
3
l
2
l
1
l
4
1
P
P14
P13
3
1
P
P12
P11
P10
P12
P11
P10
系统初始化
键盘设定温度值
显示温度
采集模拟温度
模拟量<设定值?
声音报警
PWM控制加热功率
A/D转换
|
|