- 1、本文档共8页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
第4章基于stm32太阳能滴灌系统软件设计
4.1软件系统概述
本系统的软件设计满足在第二章总设计方案中对温室大棚的设计要求,同
时,软件开发满足对各个电路模块的驱动调节作用。软件开发与元器件的设计相
类似,均采取模块化的设计,软件开发采用主程序调用不同模块的程序,以此来
实现系统功能。
4.2开发环境
操作系统:Windows10
开发软件:Keil5
Keil5是一款强大的C语言软件开发系统,他简洁直观的界面让软件开发变
得更加便捷。除此之外Keil5还具有以下功能:[12]
1.完美支持Cortex-M3系列器件;
2.具有先进的ARMC/C++编译工具链;
3.μVision5IDE集成开发环境、调试器和仿真环境;
4.ULINKpro可以实时分析正在运行中的程序,并且记录Cortex-M3每次指
令;
5.符合Cortex微控制器软件接口标准;
6.具备编译器、安装包以及调试跟踪功能。
4.3软件设计流程图
软件设计的总体思路如下流程图所示,流程图的绘制是整个软件设计的方
向,同时也是对每个模块分别进行编程开发的必要指导。软件设计流程图如图
4-1所示。
如图,当系统上电时,首先进行各个模块的初始化,其中针对于DHT11模块
的初始化的成功与否,在OLED显示屏上会出现信息提示,若其初始化成功,则
显示其他各个采集模块收集上来的环境数据,若其初始化失败,则在OLED屏幕
上出现相关错误信息。对于系统内的采集模块,只负责对环境数据进行采集,由
MCU分析、处理、比对收集的数据与预设值的关系,从而确定是否需要开启相应
的调节单元。若MCU比对结果需要进行调节时,会同时出发声光的报警。用户在
系统上电并且初始化完成后可以对系统比对的环境预设值根据实际需求进行相
应的设置,以此完成人机交互的功能。
图4-3软件流程图
4.4温湿度传感器模块驱动程序设计
DHT11温湿度传感器模块软件部分如下所示,以下为部分关键代码。
上述代码为将端口设置为输入/输出的方式。由于DHT11温湿度传感器采用
单总线通信方式,使用单总线需要I/O端口既向外发送数据也要接收传感器发出
的数据,其通信过程如下图所示。
图4-4DHT11通信过程时序图
4.5光敏电阻驱动程序设计
光敏电阻是其电阻值随光照强度而变化的元器件。由于GPIO端口是逻辑电
平输入,即只能读到高、低电平(0/1),而光敏电阻的阻值是随着光照强度进行
线性变化的,也就是电压随着关照强度进行线性变化。所以光敏电阻需要模数转
换器输入,模数转换器即ADC可以读出0-3.3V之间任意一点的电压值。STM32
系列MCU中有两个模数转换器,每个ADC均可以进行数据传送DMA操作,DMA可
以在不使用软件干预的情况下,将ADC采集的数据直接存入相应的寄存器中。其
中光敏电阻阻值随光照强度变化如下图所示。
图4-5光敏电阻值变化
对于光照强度这一环境变量的读取,主要为光敏电阻的电阻值或电压值的读
取,由于GPIO端口无法读取线性变化的电压值,故需使用ADC进行读取操作,
对于DMA的设置如下所示。
对于所使用的GPIO端口,将端口模式设置为模拟输入并使能DMA时钟即可。
对于ADC的设置如下所示。
4.6报警模块驱动程序设计
报警模块使用声光两种方式。
上述代码为红、绿两个LED指示灯的初始化程序。
上述代码为蜂鸣器的初始化程序。
4.7继电器驱动程序设计
本设计中继电器驱动调节装置进行工作,实现这一功能的配置代码如下所
示。
4.8显示模块驱动程序设计
OLED显示模块代码如下所示,OLED驱动程序中,引入了I2C的配置。
上述程序中调用了ASCII字库程序文件。OLED为128*64像素,为更好的显
示字符,将128*64的像素划分成了8*8的小区快,共计16*8个小区块,如下图
4-8-1所示。
图4-8-1OLED显示区块划分示意
文档评论(0)