单片机+DHT11的温湿度采集监测系统,LCD1602显示,带报警功能,C代码、原理图和Proteus仿真

设计要求
1.设计一个基于51单片机和DHT11传感器的温湿度监测系统;

2.传感器DHT11实现对环境温湿度参数的准确测量,单片机对数据进行分析和处理;

3.用户可根据需要,通过按键自主调节温湿度上下限报警阀值;

4.当环境温湿度不在设定范围内时,LED灯和蜂鸣器发出声光报警;

5.环境温湿度值和上下限报警阀值采用LCD1602液晶显示;

设计说明
Proteus7版本的仿真软件只有SHT11温湿度传感器元件,没有DHT11传感器元件。Proteus8版本经过升级更新后,元件库已添加了DHT11传感器元件。

因此,本设计采用Proteus8.6版本的仿真软件进行开发。

SHT11和DHT11传感器均能实现温湿度的测量,它们的主要区别有两点:

(1)SHT11内部核心部件为湿敏电容,成本高,精度高;DHT11内部核心部件为湿敏电阻,价格便宜,但精度低一点;

(2)两者通信方式不同。DHT11为单总线串行通信,只有数据线DATA接口;SHT11为二线制串行通信,有时钟线SCK和数据线DATA 两个接口。在编程上,两者区别较大。

在常规温湿度测量上,DHT11和SHT11均能满足使用。但从成本考虑,DHT11价格便宜,其应用更为广泛。

系统概述
本文设计了一种基于51单片机和DHT11传感器的温湿度监测系统,能够实现对当前环境温湿度数据的采集、处理、显示和报警等功能。

系统硬件主要由单片机最小系统、DHT11温湿度传感器模块、LCD1602显示模块、按键模块和声光报警模块组成,系统框架如下所示。
在这里插入图片描述
传感器DHT11不间断检测当前环境下的温湿度,并将数据发送到单片机,由单片机对数据进行分析和处理后,通过LCD1602实时显示温湿度值和上下限报警阀值。

按键模块用于设置温湿度上下限报警阀值。当环境温度或湿度不在上下限范围内时,系统自动报警,对应的LED指示灯点亮,蜂鸣器发声,以提醒用户采取措施。

仿真电路图
在这里插入图片描述
原理图
在这里插入图片描述
仿真分析
打开名为DHT11温湿度监测.pdsprj的仿真文件,双击单片机,在弹出的对话窗口中点击黄色小文件夹图标,加载DHT11.hex文件(位于C程序文件夹内),运行仿真,结果如下。
在这里插入图片描述
由图可知,LCD显示当前环境的温度T为27℃,湿度H为55%RH。LCD显示结果与DHT11传感器上的数值一致,表明温湿度数据读取正确。

DHT11传感器上3个红色小箭头用来模拟温湿度值的改变。前两个红色箭头用于数值的增减,后一个红色箭头用于切换温度和湿度。

例如,我们调整DHT11传感器,使温度上升到34℃,湿度降低至51%RH,效果如下。
在这里插入图片描述
按键可以设置温湿度的上下限报警阀值。点击调整键,系统进入上下限设置模式,LCD显示当前温湿度上下限值。

如图所示,系统默认温度上下限范围为:20~35℃,湿度上下限范围为:40~85%RH。
在这里插入图片描述
此外,温度下限值光标闪烁,点击加/减键就可进行设置;温度下限值设置完成后,点击调整键,温度上限值光标闪烁,就可进行温度上限值设置。

依次类推,当温湿度上下限值均设置完成后,再次点击调整键即可退出设置模式,回到温湿度显示模式。

如果某个温湿度阀值用户不想进行更改,点击调整键跳过即可。

例如,我们重新设置温度上下限范围为:25~38℃,湿度上下限范围为:40~65%RH,结果如下。
在这里插入图片描述
当系统监测到温湿度不再设定范围内时,发出声光报警,对应的LED指示灯被点亮,蜂鸣器鸣叫;当环境温湿度恢复正常后,报警停止。

例如,我们点击DHT11传感器上的红色箭头,使温度降低至24℃,低于下限值25℃,此时蓝色温度过低报警指示灯点亮,蜂鸣器鸣叫。
在这里插入图片描述
在这里插入图片描述
综上所述,仿真运行效果满足设计要求,能够实现规定的功能。

部分代码

void main()
{
	uchar i;

	LcdInit();							// 液晶功能的初始化			
	LcdShowInit(); 					// 液晶显示的初始化

	AlarmTL=EEPROM_Read(0x2000);	// 从EEPROM的0x2000这个地址读取温度的报警下限
	AlarmTH=EEPROM_Read(0x2001);	// 从EEPROM的0x2001这个地址读取温度的报警上限
	AlarmHL=EEPROM_Read(0x2002);	// 从EEPROM的0x2002这个地址读取湿度的报警下限	
	AlarmHH=EEPROM_Read(0x2003);	// 从EEPROM的0x2003这个地址读取湿度的报警上限

	if((AlarmTL==0)||(AlarmTL>100))	// 如果温度下限报警值读出来异常(等于0或大于100),则重新赋值
		AlarmTL=20;
	if((AlarmTH==0)||(AlarmTH>100))	// 如果温度上限报警值读出来异常(等于0或大于100),则重新赋值
		AlarmTH=35;
	if((AlarmHL==0)||(AlarmHL>100))	// 如果温度下限报警值读出来异常(等于0或大于100),则重新赋值
		AlarmHL=40;
	if((AlarmHH==0)||(AlarmHH>100))	// 如果温度上限报警值读出来异常(等于0或大于100),则重新赋值
		AlarmHH=85;
		
	
	while(1)
	{
		ReadDhtData(); 				// 检测温湿度数据

		LcdGotoXY(1,2);	 			// 定位到要显示温度的地方
		LcdPrintNum(temp);		// 显示温度值
		LcdGotoXY(1,11);			// 定位到要显示湿度的地方
		LcdPrintNum(humi);		// 显示湿度值
		
		AlarmJudge();					// 判断并根据需要报警

		for(i=0;i<25;i++)
		{
			KeyScanf();					// 按键扫描
			DelayMs(20);				// 延时	
		}
	}
}

资料内容
(1)基于51单片机和DHT11的温湿度监测系统设计论文;
(2)Proteus8.6仿真文件;
(3)C程序;
(4)原理图;
(5)Visio流程图;
(6)参考资料;
(7)元器件清单;

资料图
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
重要的事情说一遍!!!

由于基于51单片机和DHT11的温湿度监测系统设计是我的原创设计,获取全套资料,

请搜索查看我的【公】(众*)“号”:交院小智

  • 6
    点赞
  • 125
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值