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