《智能控制系统》大作业报告
设计题目
基于 STM32 的农业大棚智能控制系统
小组成员
任课教师
完成日期
大连理工大学软件学院
大连理工大学软件学院本科生课程设计报告
目录
1 系统需求 ................................................................................................................................ 1
1.1 功能需求 .................................................................................................................. 1
1.2 运用的元器件 ............................................................................................................. 1
2 系统原理图设计 ................................................................................................................. 1
3 系统程序设计 ......................................................................................................................... 2
3.1 程序设计过程 ............................................................................................................. 2
3.2 源代码 ......................................................................................................................... 2
3.3 运行效果 ................................................................................................................... 14
4 设计总结 ........................................................................................................................... 14
大连理工大学软件学院本科生课程设计报告
1
1 系统需求
1.1 功能需求
1、监测功能:监测温室的当前状态,包括空气温度、空气湿度、光照度、土壤湿度、
等参数等的信息采集以及各个设备的开关状态。
2、设定功能:可以设定各个温室的运行参数,温室内的土壤湿度、时间等参数来自动
控制水泵等的目标值,通过空气温度、空气湿度、光照、等参数来自动控制风机、延长
光照设备等的目标值和设备的开启/关闭等等。
3、手动控制:可以实现强制手动控制温室内的设备的开关状态。
1.2 运用的元器件
1. TFT-LCD,薄膜晶体管液晶显示器。用于显示各种参数
2.土壤湿度检测器。用于检测土壤的湿度
3.三色灯。用于表示水泵,风扇的设备的工作状态
4.温度/湿度检测器。用于检测空气温度/湿度
5.光照强度检测。用于检测光照强度
6.蜂鸣器。用于报警
2 系统原理图设计
电路原理图如图所示:
图 1 电路原理图
大连理工大学软件学院本科生课程设计报告
2
图中三个按钮分别连接到 PA01-PA03 这三个引脚上,用于控制 LCD 屏幕的页面切换
以及改变一些阈值。LCD 连接到 PA06-PA08、PA14-PA15、PB0-PB15 这些引脚上,通过这
些引脚来控制 LCD 显示。光照强度检测器连接到 PC5 引脚上,用来接收其传入的数据。
温湿度检测器连接到 PC0 引脚上,用来接收其检测的数据。三色灯连接到 PC1-PC3 引脚
上,通过控制不同颜色的灯来表示水泵、风扇等设备的运行。土壤湿度采集器连接到
PC6-PC8 引脚上,来接收采集到的数据。
3 系统程序设计
3.1 程序设计过程
程序设计流程图如下:
图 2 程序设计流程图
3.2 源代码
Start.c 文件:
#include "gpio.h"
#include "stdio.h"
#include "key.h"
#include "lcd.h"
#include "window.h"
#include "update.h"
大连理工大学软件学院本科生课程设计报告
3
#include "get_data.h"
#include "start.h"
struct threshold defa,alter;
struct Status{
uint8_t Light_status,Water_status,Ven_status;
}status;
int flag_threshold = 0,flag_status = 0,save_threshold = 0;
uint8_t key_1,key_2,key_3;
void init(void)
{
LCD_Init();
defa.temp_h = 50,defa.humi_h=100,defa.soil_h=30,defa.light_h=500;
defa.temp_l = 0,defa.humi_l=0,defa.soil_l=0,defa.light_l=0;
status.Light_status = 0,status.Water_status = 0,status.Ven_status = 0;
}
void check_BEEP()
{
uint8_t temp,humi;
double soil;
uint32_t light;
get_temp_humi(&temp,&humi);
get_soil(&soil);