基于单片机的大棚温度控制系统
- 格式:doc
- 大小:115.50 KB
- 文档页数:13
目 录
前 言„„„„„„„„„„„„„„„„„„„„„„„„„„ 3
1 温度控制系统概述„„„„„„„„„„„„„„„„„„„„3
2 系统硬件设计„„„„„„„„„„„„„„„„„„„„„ 4
2.1 系统硬件结构图„„„„„„„„„„„„„„„„„„4
2.2 系统原理图„„„„„„„„„„„„„„„„„„„„4
2.3 系统框图„„„„„„„„„„„„„„„„„„„„„5
3 系统功能设计„„„„„„„„„„„„„„„„„„„„„„5
3.1 信号采集模块„„„„„„„„„„„„„„„„„„„ 5
3.2 显示模块„„„„„„„„„„„„„„„„„„„„„ 5
3.3 键盘模块„„„„„„„„„„„„„„„„„„„„„„6
3.4 设置功能转换模块„„„„„„„„„„„„„„„„„„6
3.5 89S52芯片介绍„„„„„„„„„„„„„„„„„„„6
4 系统软件设计„„„„„„„„„„„„„„„„„„„„„„6
4.1 系统程序流程图„„„„„„„„„„„„„„„„„„„7
4.2 系统源程序„„„„„„„„„„„„„„„„„„„„„7
5 结束语„„„„„„„„„„„„„„„„„„„„„„„„„13
6 参考文献„„„„„„„„„„„„„„„„„„„„„„„„14
1 前言
随着生活条件的不断改善,人们更关注自身的健康,绿色蔬菜尤其受到重视。大棚种植充分满足了人们的需求,但对于和农作物生长密切相关的大棚温度的控制。对于大棚种植而言,良好的物种、本地适合种植的物种及土地酸碱度都是可以通过农民长期的种植经验获得的。但是温度是农民不能轻易解决的问题,而且温度的变化幅度大,不易人工控制,对于农民来说时刻关注作物的生长温度是个庞大的工作量。“白天太阳很好,阳光充足,外面的温度零下5度如果大棚的薄膜没有破,里面照样产生有25度以上的温度,从而地温也可以得到提升至15度左右。漆黑大风的夜晚棚内的温度会大幅度降低,能降低到零下5度以下,停止刮风可以恢复到较地温少低点为止。”这些专业知识对于常年种植的农民也未必了解。
应用于大棚种植的温度控制系统解决了长期以来困扰农民的问题,它的制作成本低廉,应用广泛,对农民自身的素质要求不高,便于农民操作。更重要的是,它不仅帮助农民节约了大量,还在无形之中提高了作物的产量,增加了农民的收入,满足了人们对大棚蔬菜的需求。基于单片机的大棚温度控制系统是个小型的软硬件结合的产品,它针对个体农民的需要设计,适于中小面积的大棚种植。
1. 系统概述
大棚蔬菜满足了人民能一年四季吃到新鲜蔬菜的愿望,为提供更多量、更有营养价值的蔬菜,智能的大棚温度控制系统已成为农民的迫切需要。以89S52单片机为主的温度控制系统可对大棚内部的温度进行模拟和蔬菜所需的正常温度进行比较,以人性化的方式向大棚管理人员提供温度调节的信息,帮助农民提高农作物的产量,减少农民的工作量。
温度控制系统采用89S52单片机为核心。大棚温度采用连续可变的电压信号进行模拟,采集到的模拟信号经TLC549模/数转换芯片转换为数字信号送单片机,单片机根据输入的温度得出结果,通过仿真示波器来显示结果,蜂鸣器报警提醒农民作出适当的温度调节。该系统成本低,操作方便,设计人性化,具有良好的推广价值。
此温度控制系统只是建立在模拟仿真的基础之上,大棚内温度采用连续可调的电压模拟,控制策略采用的是应用的广泛的PID控制,输出模块使用PWM模拟 2 输出,并用仿真示波器动态显示。
2.系统硬件设计
2.1系统硬件结构图
图1 系统结构图
2.2系统原理图
P10P11P12P10P11P12P13P13P14P14l1l2l3r1r2r3r4r1r2r3r4l1l2l3XTAL218XTAL119ALE30EA31PSEN29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR16P3.5/T115U180C51AIN2REF+1REF-3SDO6CS5SCLK7U2TLC549+5vD03Q02D14Q15D27Q26D38Q39D413Q412D514Q515D617Q616D718Q719OE1CLK11U374LS374D03Q02D14Q15D27Q26D38Q39D413Q412D514Q515D617Q616D718Q719OE1CLK11U474LS374234567891RP1RESPACK-8+5v41%RV11kRV1(3)数据采集部分1234567890#123ABCDSW1SW-SPDTBUZ1BUZZERD1LED-REDQ1FMMTH10R1PULLUPABCD
P1口
AT89S52 A/D转换器 模拟信号发生装置
报警电路 数码管显示
键盘输入 3 图2 系统原理图
2.3系统框图
图3 系统原理框图
3.系统功能设计
3.1信号采集模块
信号发生采用的是直接从电源上得到可变的电压.”可变”体现在滑动变阻器上.滑动变阻器一端接地,另一端接高电平,滑动滑动变阻器,可输出渐变的电压,作为模拟电压信号.运用于蔬菜大棚的温度控制系统,不需要信号发生装置,可采用温度检测器检测实际大棚内温度.
将模拟电压信号转换为数字信号,送入单片机,完成信号采集单元.模/数转换器采用TLC549,它是8位串行A/D转换芯片.可与通用微处理器、控制器通过CLK、CS、DATA OUT三条口线进行串行接口。具有4MHz片内系统时钟和软、硬件控制电路,转换时间最长17μs,TLC549允许最高转换速率为40 000次/s。总失调误差最大为±0.5LSB,典型功耗值为6mW。采用差分参考电压高阻输入,抗干扰,可按比例量程校准转换范围,VREF-接地,VREF+-VREF-≥1V,可用于较小信号的采样。TLC549芯片如下图4所示.
图4 TLC549芯片
3.2显示模块
将AT89S52接到排阻上,然后接到74LS374上,最后连接到数码管显示器上。
(1)RESPACK8一般接在89S52单片机的P0口,因为P0口内部没有上拉电阻,控制器 执行器 4 不能输出高电平,所以要接上拉电阻。排阻就是好多电阻连载一起,他们有一个公共端。
(2)74LS374具有三态输出的边沿触发器,374输出端O0„„O7可直接与总线相连,当三态允许控制端OE为低电平,O0„„O7为正常逻辑状态,可用来驱动负载总线。OE为高电平,O0„„O7高阻态,不驱动总线负载。当时钟端脉冲上升没作用下,O随数据D而变。
本次试验,采用两个74LS374芯片,一个用作段选U3,控制八位数码管的各段显示管,另一个用作片选U4。
(3)数码管显示电路。
3.3 键盘模块
将键盘与AT89S52连接到一起,如硬件连接图连接方式连接电路。键盘作为可输入设定值,在之后的模块中与检测到的温度值作比较。
3.4设置功能转换模块
当SW 接于高电平时,选择数码显示模块,当SW接于低电平时,选择键盘设定值模块。
硬件实现很简单,在AT89S52的P1.7口引出一条线,让它控制选择个模块。
3.5 89S52芯片介绍
AT89S52是一种低功耗、高性能CMOS8位微控制器,具有8K 在系统可编程Flash 存储器。使用Atmel 公司高密度非易失性存储器技术制造,与工业80C51 产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。AT89S52具有以下标准功能:8k字节Flash,256字节RAM,32 位I/O 口线,看门狗定时器,2 个数据指针,三个16 位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。另外,AT89S52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。
4 系统软件设计 5 4.1主程序流程图
4.2 系统源程序
#include
#include "intrins.h"
#define uchar unsigned char
#define uint unsigned int
#define fl float
uchar out0=0x7f ; //赋初值 开始
系统初始化
键盘设定温度值
显示设定值
是否功能转换
采集模拟温度
A/D转换
采样值>?设定值
报警 PWM控制加热 Y N Y N 6 uchar buf[3]={0,0,0};//全局数组
uchar pr[]={0x57,0x6E,0x5E,0x3E,0x6D,0x5D,0x3D,0x6B,0x5B,0x3B};
uchar discode[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
uint AD; //转换结果,十六进制
uint uuu,sc=0; //带小数部分数据处理结果
int Int_result,float_result;//Int_result整数部分,float_result小数部分
sbit Dataout=P1^0; //数据线
sbit cs=P1^1; //片选
sbit sclk=P1^2; //io口时钟
sbit dx=P1^3; //断码显示控制锁存
sbit wx=P1^4; //位控控制锁存
sbit sw=P1^7;
sbit PWM=P1^5;
sbit beep=P1^6;
void delay1ms(uchar T) //单位时间1ms延时
{
uchar time;
while(T--)
for(time=0;time<120;time++);
}
/***********显示程序*************/
void display(uint num)
{
uchar qian,bai,shi,ge;
qian=num/1000; //千,百,十,个处理
bai=num/100%10;
shi=num/10%10;
ge=num%10;
wx=0;
P0=0xf7;