基于单片机的智能家居控制系统的研究与设计毕业设计论文 下载本文

第4章 智能家居的软件系统设计

第4章 智能家居的软件系统设计

本章主要介绍畜禽舍监控系统的软件设计,整个控制系统软件采用结构化和模块化设计方法,单片机系统程序采用库函数语言在IAR环境下进行开发。

IAR Systems推出开发工具“STM8系列嵌入式设计工作台”(EWSTM8),支持8位微控制器市场主流的STM8(STM8A,STM8L,STM8S)系列产品。IAR EWSTM8嵌入式设计工作台提供一整套开发工具,包括一个项目管理器、编辑器和项目创建工具(C语言编译器和链接器)。该工作台还为开发人员提供调试功能,可以连接意法半导体价格低廉的在线调试器ST-LINK以及先进的高端仿真器STice。

库函数一般是指编译器提供的可在C源程序中调用的函数,C语言的库函数并不是C语言本身的一部分,它是由编译程序根据一般用户的需要编制并提供用户使用的一组程序。C的库函数极大地方便了用户,同时也补充了C语言本身的不足。事实上,在编写C语言程序时,应当尽可能多地使用库函数,这样既可以提高程序的运行效率,又可以提高编程的质量。

本设计整个单片机系统的程序主要分为主程序部分、数据采集部分、显示程序部分和通信部分。

4.1 主程序部分

主程序部分的作用主要是初始化系统,收集处理传感器发来的数据,并做出回应,即输出控制信号,驱动负载运作。

4.2 数据采集部分

4.2.1 DHT11传感器模块

DHT11传感器的数据输出脚DATA为单线双向的串行接口,DATA用于微处理器与DHT11之间的通讯和同步,采用单总线数据格式,一次通讯时间4ms左右,数据分小数部分和整数部分,操作流程如下:

一次完整的数据传输为40bit,高位先出;

35

燕山大学本科生毕业设计(论文)

数据格式:8bit湿度整数数据+8bit湿度小数数据+8bit温度整数数据+8bit温度小数数据+8bit校验和。

初始化时钟配置GPIO配置读传感器数据TM1638显示未超出与设定值范围比较超出输出控制信号驱动负载动作

图4-1 主程序流程图

数据传送正确时,校验和数据等于“8bit湿度整数数据+8bit湿度小数数据+8bit温度整数数据+8bit温度小数数据”所得结果的末8位。

用户MCU发送一次开始信号后,DHT11从低功耗模式转换到高速模式,等待主机开始信号结束后,DHT11发送响应信号,送出40bit的数据,并触发一次信号采集,用户可选择读取部分数据。从模式下,DHT11接收到开始信号触发一次温湿度数据采集,如果没有接收到主机发送开始信号,DHT11不会主动进行温湿度采集,采集数据后转换到低速模式。通讯过程如图4-2所示。

总线空闲状态为高电平,主机把总线拉低等待DHT11响应,主机把总线拉低必须大于18ms,保证DHT11能检测到起始信号。DHT11接收到主

36

第4章 智能家居的软件系统设计

机的开始信号后,等待主机开始信号结束,然后发送80us的低电平响应信号,主机发送开始信号后,可以切换到输入模式,或者输出高电平均可,总线由上拉电阻拉高。过程如图4-3。

主机发开始信号DHT响应输出数据“0”数据传送结束上拉电阻拉高总线VCCGND拉高并延时等待拉高延时准备输出数据“1”从机拉低主机信号从机信号

图4-2 DHT11通讯过程 主机拉高20-40usVCCGND主机至少拉低18msDHT响应信号80usDHT拉高80us开始传送数据主机信号DHT信号图4-3 主机与DHT问答过程

总线为低电平,说明DHT11发送响应信号,DHT11发送响应信号后,再把总线拉高80us,准备发送数据,每一bit数据都以50us低电平时隙开始,高电平的长短定了数据是0还是1,格式如图4-4、4-5所示。如果读取响应信号为高电平,则DHT11没有响应,可能线路有异常。当最后1 bit数据传送完毕后,DHT11拉低总线50us,随后总线由上拉电阻拉高进入空闲状态。

数字0信号和1信号表示方法:

37

燕山大学本科生毕业设计(论文)

26-28us表示“0”VCCGND1bit开始50us主机信号DHT信号下一bit开始

图4-4 数字0信号表示方法

70us表示“1”VCCGND1bit开始50us主机信号DHT信号

图4-5 数字1信号表示方法

下一bit开始以上即是DHT11数据传输的具体过程,由于其数据传输时对延时的精度要求较高,延时程序采用定时器来进行精确延时。其程序流程图不再画出。

4.2.2 MQ-2和MS1100传感器模块

MQ-2传感器模块和MS1100传感器模块的使用方法基本相同。它们都

有两个信号输出端,分别是TTL信号输出和模拟信号输出,为了实时监测了解环境中的有害气体浓度,本设计中使用它们的模拟信号输出端作为数据采集端,便于显示实时气体浓度。因此,这两个模块需要用到模数转换器,STM8S105S4T6内部自带两个ADC(ADC1和ADC2),只需要用程序完成转换即可。MQ-2和MS1100模块的程序流程图如图4-6所示。

4.3 LCD12864显示部分

液晶显示器显示各种图形的原理:

1、线段的显示:点阵图形式液晶由M×N个显示单元组成,假设LCD

38