1、1、设计目的温湿度控制系统早已经成为当今社会研究的热门领域之一,同时温湿度也是现今工农业生产生活中必须要首先考虑的重要因素之一。因此现今社会生产生活中就迫切需要一种价格便宜、容易操作而且精确度高的温湿度控制系统。本系统设计就是利用 AT89C52 单片机对温湿度参量进行检测进而实现对温湿度参量的控制。本系统设计通过使用 AT89C52 单片机、DHT11 传感器模块、LCD1602液晶显示屏模块以及 LED 闪烁和蜂鸣器报警模块。简单的系统设计就可以基本上满足本系统设计的系统设计要求。DHT11 数字温湿度传感器负责把采集到的温湿度信号传送给 AT89C52 单片机。温湿度经过 AT89C52
2、单片机处理,然后 AT89C52 准确地把温湿度信号发送到 LCD1602 液晶显示屏模块,温湿度数据就可以准确地显示到 LCD1602 液晶屏上面,同时我们可以分别对温度和湿度设置上下限,越限 LED 闪烁和蜂鸣器报警模块。2、设计要求和方案选择 LCD1602 能够实时、准确的显示 AT89C52 采样温度值和湿度值,显示设定报警的温度和风扇的状态。 DHT11 采集温度及湿度值,AT89C52 能够将 DHT11 输送过来的采集信息,准确的判断标准值与设定值之间的差异,及时的启动报警装置(LED 闪烁和蜂鸣器)进行报警。 根据采集温湿度的数据进行判断,控制继电器进行风扇的开闭传感器选择方
3、案 方案一:利用两个传感器分别检测温度和湿度值,温度检测模块选用DS18B20 温度传感器(+-0.5)。湿度检测模块选用 HS1101 电容式湿度传感器(+-5%RH)。这两款传感器都是我们大学实践电子设计中非常常见和常用的传感器。 方案二:检测温湿度数值选用 DHT11 传感器作为系统设计的温湿度检测模块。DHT11 传感器能够同时对温度和湿度数值进行检测,而且其精确度能过完全满足本课程设计的精度要求。湿度、温度测量误差:+-5%、+-2 度 经过上述分析,方案一虽然精度更精确。却稍显复杂。方案二虽然DHT11 传感器没怎么使用过,即便不能达到方案一那么高的精度要求,仍也能满足系统设计要求
4、,而且更加简单,更加容易实现,也更加稳定可靠。所以我选择方案二。DHT11 数字温湿度传感器是一款 4 针单排引脚封装的传感器模块。DHT11传感器主要应用于场所温湿度的检测,性能稳定可靠。DHT11 传感器主要由一个电阻式感湿元件和一个 NTC 测温元件组成,DHT11 传感器引脚可以直接与 AT89C52 直接相连接。该传感器连接十分方便,所以利用该传感器制作本系统设计可以使系统制作变得十分简单。一次完整的数据传输为 40bit,高位先出。数据格式:8bit 湿度整数数据+8bit 湿度小数数据+8bi 温度整数数据+8bit 温度小数数据+8bit 校验和数据传送正确时校验和数据等于“8
5、bit 湿度整数数据+8bit 湿度小数数据+8bi 温度整数数据+8bit 温度小数数据”8bit 湿度整数数据+8bit 湿度小数数据+8bi 温度整数数据+8bit 温度小数数据”所得结果的末 8 位。用户 MCU 发送一次开始信号后,DHT11 从低功耗模式转换到高速模式,等待主机开始信号结束后,DHT11 发送响应信号,送出 40bit 的数据,并触发一次信号采集,用户可选择读取部分数据.从模式下,DHT11 接收到开始信号触发一次温湿度采集,如果没有接收到主机发送开始信号,DHT11 不会主动进行温湿度采集.采集数据后转换到低速模式。通讯过程如图总线空闲状态为高电平,主机把总线拉低
6、等待 DHT11 响应,主机把总线拉低必须大于 18 毫秒,保证 DHT11 能检测到起始信号。DHT11 接收到主机的开始信号后,等待主机开始信号结束,然后发送 80us 低电平响应信号.主机发送开始信号结束后,延时等待 20-40us 后, 读取 DHT11 的响应信号,主机发送开始信号后,可以切换到输入模式,或者输出高电平均可, 总线由上拉电阻拉高。总线为低电平,说明 DHT11 发送响应信号,DHT11 发送响应信号后,再把总线拉高 80us,准备发送数据,每一 bit 数据都以 50us 低电平时隙开始,高电平的长短定了数据位是 0 还是 1.格式见下面图示.如果读取响应信号为高电平
7、,则 DHT11 没有响应,请检查线路是否连接正常.当最后一 bit 数据传送完毕后,DHT11 拉低总线 50us,随后总线由上拉电阻拉高进入空闲状态。数字 0 信号表示方法如图数字 1 信号表示方法DHT11 软件流程图显示器选择方案 方案一:采用 12864 液晶显示屏。12864 液晶显示模块自身内置 8192 个中文汉字、128 个字符及 64X256 点阵显示 RAM。可以显示汉字以及图案。 方案二:选择使用 LCD1602 液晶显示屏。LCD1602 能够显示 16 列 2 行,但是只能显示字母、数字和符号能显示 16*2 个字符,不能显示汉字。由于 LCD1602 寄存器不止
8、32 个,所以软件编写可以使字符一个个显示、字符从左到右或从右到左显示等等,显示效果比较简单。 经过上述分析,在编程使用方面,12864 液晶显示屏和 LCD1602 难度差不多,虽然 12864 液晶屏可以显示更多的字符,汉字,乃至图案,有更多 LCD1602 不具备的功能。但是 LCD1602 液晶屏也能实现系统设计的要求,而且 LCD1602 价格比较便宜,而 12864 液晶显示屏最至少四十块钱。综上所述,LCD1602 就是最好的选择。 LCD1602 能够同时显示 32 个字符(16 列 2 行)LCD1602 液晶模块里面的字符发生存储器已经存储了 160 个不同的字符图,但是没
9、有汉字,12864液晶模块可以显示汉字。我们是通过指令编程来实现 LCD1602 的读写操作、屏幕和光标的操作等操作的(1 为高电平,0 为低电平) 写操作时序读操作时序程序流程图3、硬件部分总电路图:DHT11 模块电路无源蜂鸣器电路LCD1602 电路继电器电路4、软件设计LCD1602 显示程序延时函数温湿度 DHT11主程序和按键5、调试及运行结果当湿度达到设定的范围的时候,显示风扇开当湿度低于设定的范围的时候,显示风扇关6、总结(感想和心得等)此次的课程设计做的是我最心塞的一次,因为队友实在是太不给力了,本来是打了一张板了,可是不知道什么原因 LCD1602 一直显示不出来,也没有在
10、检查,后来就只能用直接用开发板做了。这个温湿度采集控制系统,最最关键的就是温湿度模块DHT11。因为要根据 DHT11 的参考手册里面的时序来写,才能读取到 DHT11 传回来的数据,一开始怎么也不能读取到,最后还是万能的百度帮了忙,学到了一个 FOR 循环大概是 8us 才能准确的控制时间来读取数据。还有一个问题不能解决的是 LCD 的判断忙的程序不知道为什么不能用。一直处于忙的状态。和网上的写法是一样的,可是 LCD 就是一直是忙的状态。这个我也是不能解决。学会了键盘的更多功能。例如不用通过延时来消抖,按键长按的功能都是很使用的。由于开发板的 P3 是键盘和 LCD 相连接的,所以就不能说控制多个按键实现不同的功能。