功能介绍:采用51单片机作为主控CPU,采用DHT11传感器采集温湿度,采用四个继电器分别模拟加热、加湿、散热、去湿动作,通过按键设置温湿度的上下限值,当实时温湿度超过或者低于设置值,蜂鸣器报警提醒,并且对应的继电器开启,LCD1602显示相关的数据,程序有中文注释,新手容易看懂,文末有资料分享:
下面是实物演示视频和相关实物图片
70-基于51单片机的智能温湿度控制器(程序+原理图+元器件清单全套资料)


下面是程序部分展示(程序有中文注释,新手容易看懂)
部分程序展示:bit DHT11_Read_Date(unsigned int *temp,unsigned int *humi) //读取温湿度{unsigned int i = 0,retry = 0;unsigned int buf[SIZE];DHT11_DQ = 0; //拉低数据线大于 18ms发送开始信号delay_ms(30); // 需大于 18 毫秒DHT11_DQ = 1; //释放数据线, 用于检测低电平的应答信号//延时20-40us,等待一段时间后检测应答信号, 应答信号是从机拉低数据线80usdelay_10us(3);if(DHT11_DQ != 0) // 检测应答信号, 应答信号是低电平{//没应答信号return ERROR;}else{//有应答信号while(DHT11_DQ == 0 && retry++ < NUMBER); // 等待应答信号结束if(retry >= NUMBER) //检测计数器是否超过了设定的范围{DHT11_DQ = 1;return ERROR; //读数据出错, 退出函数}retry = 0;DHT11_DQ = 1; //释放数据线//应答信号后会有一个 80us 的高电平,等待高电平结束while(DHT11_DQ != 0 && retry++ < NUMBER);if(retry >= NUMBER){DHT11_DQ = 1;return ERROR; //退出函数}//读出湿. 温度值for(i = 0; i < SIZE; i++) //读取40位数据{buf[i] = DHT11_Read_Byte();if(status == ERROR) //调用 DHT11_Read_Byte() 读数据出错会设定status 为ERROR{DHT11_DQ = 1;return ERROR;}}if((buf[0]+buf[1]+buf[2]+buf[3])==buf[4]) //校验正确{*humi = buf[0];*temp = buf[2];DHT11_DQ = 1;return OK; //正确的读出 dht11输出的数据}else //校验数据出错{return ERROR;}}}
程序打开办法:特别注意:下载资料包以后一定要先解压!!!(建议解压到桌面上,文件路径太深会导致程序打开异常),解压后再用keil5打开。

原理图采用【AD】altium designer打开,文件中有安装包


下面是资料包文件展示

本文详细介绍了一款基于51单片机的智能温湿度控制器,包括DHT11传感器的数据采集、继电器控制的加热/加湿等功能,附带中文注释的程序代码和ADAltiumDesigner原理图,适合新手学习参考。
3071

被折叠的 条评论
为什么被折叠?



