基于STC89C52RC单片机的大棚温湿度自动控制系统毕业设计(含源文件) - 图文 联系客服

发布时间 : 星期六 文章基于STC89C52RC单片机的大棚温湿度自动控制系统毕业设计(含源文件) - 图文更新完毕开始阅读570ce35d1ed9ad51f01df273

4 系统软件设计

系统的工作流程是,操作人员在计算机上输入需要设定的温湿度限定值,当设定的温湿度值与检测温湿度值不同时,单片机控制系统则会采取相应的调节动作。此程序流程包括五个部分,第一部分是主程序,其描述总体结构;第二部分是SHT10温度采集程序,其功能是通过SHT10传感器采集温湿度值,并进行修正;第三部分是LCD1602显示子程序,对LCD1602进行初始化,将温湿度进行显示;第四部分是输出控制子程序,对设定值和实际值进行判断以决定是否进行温湿度的调节;第五部分是按键输入电路,用来修改温湿度上下限值。

4.1 软件设计的总体结构

本次设计的大棚温湿度自动控制系统由一个主程序调用多个子程序,它们包括SHT10温湿度采集子程序、LCD1602液晶显示子程序、输出控制子程序、键盘扫描子程序,如下图所示:

SHT10 LCD1602 温湿度 采集子 程序

图4.1 程序总体结构

主程序输出控制子程序

键盘扫描子程序

液晶屏显示子程序

主程序主要就是调用各个子程序的C语言文件中定义的函数,实现SHT10、LCD1602初始化等操作,然后测量温湿度,调用函数对数据进行处理,最后进行显示并输出控制信号。

在Keil工程中编写程序的时候,为了让整个工程看起来条理清晰,要按照各个模

页 第 22

块分别新建C文件写子程序。某个C文件要调用其它C文件中的函数时,要在当前C语言文件中先进行声明,然后再调用,或者也可以把每个C文件中定义的函数都写到相同名字下的.h头文件中,其他C文件要调用该函数时要在前面加上#include <*.h>,将头文件包括进来。对于变量也是如此,如果某个变量也在其他C文件中使用,那么要在一个C文件总将它定义为全局变量,即在函数外面定义。其他C文件要使用该变量时,要先使用extern将全局变量的作用域扩展到本C语言文件。

页 第 23

4.2 主要模块的设计流程框图

4.2.1 主程序流程图

开始

SHT10复位 初始化LCD1602 测量温湿度 对温湿度数据进行修正 在液晶屏上显示温湿度 将温湿度与设定值比较 Yes 是否超限? No Yes 是否有按键? 进入键盘扫描子程启动温湿度调节设备 No 图4.2 主程序流程图

页 第 24

4.2.2 SHT10子程序流程图

图4.3 SHT10子程序流程图

开始 发送启动时序 发送控制字 测量结束? Yes 接收数据 No 接收校验位 结束 温湿度传感器SHT10使用类似于I2C总线的时序与单片机通信,由于51单片机没有I2C接口,所以需要编写程序,用单片机的某两个I/O口管脚模拟I2C总线的时序,从而与SHT10通信。

SHT10有4种时序:启动传输时序、写字节时序、读字节时序及复位时序。复位时序和启动传输时序可通过依次拉低或拉高时钟线和数据线,因而实现起来比较简单;而写时序和读时序就比较复杂。写时序用来发送控制字,即发送命令,测量结束后,发出读时序读回测量数据。向SHT10的8个数据位的写入,于第9个时钟周期之后,读

页 第 25