基于单片机的蔬菜大棚温湿度远程测报系统设计
点击链接下载资料:https://download.csdn.net/download/m0_51061483/92081514
1. 系统功能概述
本系统是一款基于AT89S51单片机的智能化蔬菜大棚温湿度远程测报系统,能够实现对大棚内部环境的实时监测、数据处理、远程传输与超限报警等功能。通过集成温湿度传感器、显示模块、通信模块及报警模块,系统能够对温湿度变化进行连续采样与显示,并在异常情况下实现自动报警,确保蔬菜生长环境的稳定性与安全性。
该系统主要实现以下六项功能:
- 温湿度采集功能:采用DS18B20温度传感器和HS1101湿度传感器实时采集大棚内的温湿度数据。
- 数据处理功能:将采集的数据输入至AT89S51单片机,通过A/D转换与数字计算实现数据的标准化与线性化处理。
- 数据显示功能:通过LED数码管动态显示当前温度与湿度数值,便于操作人员实时观察环境变化。
- 远程通信功能:通过RS-485通信接口与上位机进行数据交互,实现远程监测、历史记录与报警信息显示。
- 报警与控制功能:当温湿度超过设定的上下限值时,系统自动触发蜂鸣器报警,并可通过上位机接收报警信号。
- 参数设置功能:通过按键输入方式可设置温度与湿度的上、下限阈值,使系统具备灵活可调性。
该系统不仅适用于蔬菜大棚的环境监控,还可拓展应用于花卉培育、仓储环境控制、实验室恒温恒湿监测等领域,具有广泛的应用价值与教学示范意义。
2. 系统电路设计
本系统的电路设计主要由五个部分组成:单片机最小系统电路、温度采集电路、湿度采集电路、LED显示电路、通信电路和报警与按键控制电路。各模块之间通过总线进行数据传输与逻辑联动,结构紧凑、功能明确。
2.1 单片机最小系统电路
核心控制单元选用 AT89S51 单片机,该芯片具有较高的性价比,内部集成4KB Flash存储器、128字节RAM、32个I/O口、两个定时器以及一个全双工串行口。其稳定的运行性能和丰富的外设接口,使其非常适合本类环境监测系统。
- 电源电路:由7805稳压芯片提供+5V稳定电压,为单片机及外围器件供电。
- 复位电路:采用RC复位电路,在上电或按键复位时保证单片机初始化状态。
- 晶振电路:采用12MHz石英晶振,保证单片机时钟稳定运行,为温湿度采样与通信提供准确计时基础。
2.2 温度检测模块
温度检测部分采用 DS18B20 数字温度传感器。该器件具备单总线通信接口,能够直接输出数字温度数据,避免了传统模拟温度传感器的A/D转换误差。
DS18B20 的主要特性包括:
单片机通过单总线接口周期性地向DS18B20发送温度转换命令,并读取测量结果,存储在寄存器中进行处理。
2.3 湿度检测模块
湿度采集部分采用 HS1101 电容式湿度传感器。该传感器的输出信号为与湿度成比例的频率信号,需要通过频率-电压转换或计时测量方式转换为可读取的数字值。
系统中使用单片机的定时器对输出信号进行周期测量,通过测得的频率值计算湿度值。其工作原理如下:
- HS1101 的电容随环境湿度变化而变化;
- 该电容与振荡电路结合形成振荡频率输出;
- 单片机测量振荡频率,通过经验公式或标定表计算对应湿度值。
HS1101具有响应快、精度高、长期稳定性好的特点,非常适合用于农业环境监测。
2.4 LED显示模块
显示部分采用 四位共阳极LED数码管,用于分别显示温度与湿度值。通过P0口与P2口的段选与位选信号驱动,实现动态扫描显示。
单片机利用定时中断周期性刷新显示数据,通过查表方式获取对应的段码。显示内容包括:
- 温度值(例如“25℃”)
- 湿度值(例如“60%”)
- 当系统处于设置模式时,显示对应的上、下限参数。
2.5 RS-485通信模块
远程通信部分采用 MAX485 芯片 实现RS-485标准通信。该接口具有长距离传输能力(最长可达1200米),且具备良好的抗干扰性能。
通信模式采用半双工方式,通过DE/RE引脚控制数据发送与接收状态。系统中定义了通信协议格式,包括帧头、数据区、校验位等。PC上位机通过串口调试助手或专用软件可实时接收与显示温湿度数据,并在异常时记录报警日志。
2.6 报警与按键控制模块
报警部分 由蜂鸣器和红色LED指示灯组成。当温度或湿度超出设定阈值时,单片机输出高电平信号驱动三极管导通,从而点亮LED并启动蜂鸣器,实现声光报警提示。
按键部分 由三个独立按键构成,分别为:
- 设置键:进入阈值设置模式
- 增加键:在设置模式下调整上限或下限值
- 确认键:保存设置并返回主界面
按键采用独立接地结构,并加入硬件去抖电容,确保检测稳定。
3. 系统程序设计
系统软件设计基于模块化思想,采用 C语言 编写。主要包括主程序、温度采集程序、湿度采集程序、LED显示程序、RS-485通信程序、按键扫描程序及报警控制程序等。程序结构清晰,逻辑分明,易于维护与扩展。
3.1 主程序设计
主程序主要完成系统初始化、数据采集、数据显示、报警判断与通信等任务的调度。主循环采用查询加中断方式运行,确保系统实时响应。
主程序框架如下:
#include <reg51.h>
#include "ds18b20.h"
#include "display.h"
#include "rs485.h"
#include "key.h"
#include "alarm.h"
#include "hs1101.h"
void main() {
float temperature, humidity;
System_Init();
while(1) {
temperature = DS18B20_ReadTemp();
humidity = HS1101_ReadHumidity();
Display_Update(temperature, humidity);
RS485_SendData(temperature, humidity);
Key_Process();
Alarm_Check(temperature, humidity);
}
}
3.2 温度采集程序设计
温度采集函数调用DS18B20单总线协议,通过初始化、发命令、读寄存器等步骤获取当前温度值。
float DS18B20_ReadTemp() {
unsigned char low, high;
int temp;
DS18B20_Start();
DS18B20_WriteByte(0xCC);
DS18B20_WriteByte(0x44);
DelayMs(800);
DS18B20_Start();
DS18B20_WriteByte(0xCC);
DS18B20_WriteByte(0xBE);
low = DS18B20_ReadByte();
high = DS18B20_ReadByte();
temp = (high << 8) | low;
return temp * 0.0625;
}
3.3 湿度采集程序设计
湿度测量采用定时器捕获HS1101输出频率,利用周期测量公式计算相对湿度。
float HS1101_ReadHumidity() {
unsigned int count;
float humidity;
count = Timer_CountFrequency();
humidity = (count - 5000) / 25.0; // 标定公式
if (humidity < 0) humidity = 0;
if (humidity > 100) humidity = 100;
return humidity;
}
3.4 显示程序设计
显示程序通过动态扫描方式实现温湿度交替显示,采用查表法将数字转换为段码。
void Display_Update(float temp, float humi) {
unsigned char i, buf[4];
ConvertToDisplay(temp, humi, buf);
for(i=0; i<4; i++) {
P2 = 1 << i;
P0 = seg_code[buf[i]];
DelayMs(2);
}
}
3.5 通信程序设计
通信部分定义数据帧格式 [0xAA][温度][湿度][校验],通过串口中断方式实现数据发送与接收。
void RS485_SendData(float temp, float humi) {
unsigned char buf[6];
buf[0] = 0xAA;
buf[1] = (unsigned char)temp;
buf[2] = (unsigned char)humi;
buf[3] = buf[0] + buf[1] + buf[2];
for(int i=0; i<4; i++) {
SBUF = buf[i];
while(!TI);
TI = 0;
}
}
3.6 按键与报警程序设计
void Alarm_Check(float t, float h) {
if (t > T_High || t < T_Low || h > H_High || h < H_Low) {
BEEP = 1;
LED = 1;
} else {
BEEP = 0;
LED = 0;
}
}
按键程序通过轮询检测输入口状态,并利用状态机方式控制阈值设置流程。
4. 总结
本设计通过AT89S51单片机实现了蔬菜大棚温湿度的实时检测、数据显示、远程传输及智能报警功能。系统硬件结构简单、成本低廉、抗干扰能力强;软件设计逻辑清晰、功能模块化,具备良好的扩展性与实用性。未来可在此基础上增加GSM短信报警、WiFi远程监控或自动通风控制等功能,以进一步提升系统的智能化与实用价值。
1505