• 方案介绍
  • 相关推荐
申请入驻 产业图谱

基于单片机的蔬菜大棚温湿度远程测报系统设计

10/15 09:04
1505
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

基于单片机的蔬菜大棚温湿度远程测报系统设计

点击链接下载资料:https://download.csdn.net/download/m0_51061483/92081514


1. 系统功能概述

本系统是一款基于AT89S51单片机智能化蔬菜大棚温湿度远程测报系统,能够实现对大棚内部环境的实时监测、数据处理、远程传输与超限报警等功能。通过集成温湿度传感器、显示模块、通信模块及报警模块,系统能够对温湿度变化进行连续采样与显示,并在异常情况下实现自动报警,确保蔬菜生长环境的稳定性与安全性。

该系统主要实现以下六项功能:

  1. 温湿度采集功能:采用DS18B20温度传感器和HS1101湿度传感器实时采集大棚内的温湿度数据。
  2. 数据处理功能:将采集的数据输入至AT89S51单片机,通过A/D转换与数字计算实现数据的标准化与线性化处理。
  3. 数据显示功能:通过LED数码管动态显示当前温度与湿度数值,便于操作人员实时观察环境变化。
  4. 远程通信功能:通过RS-485通信接口上位机进行数据交互,实现远程监测、历史记录与报警信息显示。
  5. 报警与控制功能:当温湿度超过设定的上下限值时,系统自动触发蜂鸣器报警,并可通过上位机接收报警信号。
  6. 参数设置功能:通过按键输入方式可设置温度与湿度的上、下限阈值,使系统具备灵活可调性。

该系统不仅适用于蔬菜大棚的环境监控,还可拓展应用于花卉培育、仓储环境控制、实验室恒温恒湿监测等领域,具有广泛的应用价值与教学示范意义。


2. 系统电路设计

本系统的电路设计主要由五个部分组成:单片机最小系统电路、温度采集电路、湿度采集电路、LED显示电路、通信电路和报警与按键控制电路。各模块之间通过总线进行数据传输与逻辑联动,结构紧凑、功能明确。


2.1 单片机最小系统电路

核心控制单元选用 AT89S51 单片机,该芯片具有较高的性价比,内部集成4KB Flash存储器、128字节RAM、32个I/O口、两个定时器以及一个全双工串行口。其稳定的运行性能和丰富的外设接口,使其非常适合本类环境监测系统。

单片机最小系统包括电源电路复位电路晶振电路

  • 电源电路:由7805稳压芯片提供+5V稳定电压,为单片机及外围器件供电。
  • 复位电路:采用RC复位电路,在上电或按键复位时保证单片机初始化状态。
  • 晶振电路:采用12MHz石英晶振,保证单片机时钟稳定运行,为温湿度采样与通信提供准确计时基础。

2.2 温度检测模块

温度检测部分采用 DS18B20 数字温度传感器。该器件具备单总线通信接口,能够直接输出数字温度数据,避免了传统模拟温度传感器的A/D转换误差。

DS18B20 的主要特性包括:

  • 测量范围:-55℃~+125℃
  • 测量精度:±0.5℃(-10℃~+85℃)
  • 单总线通信协议,简化硬件连接
  • 内部校准与CRC校验,保证数据传输可靠

单片机通过单总线接口周期性地向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远程监控或自动通风控制等功能,以进一步提升系统的智能化与实用价值。

相关推荐