资讯详情

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

1.基于51单片机和DHT11传感器温湿度监测系统;

2.传感器DHT11准确测量环境温湿度参数,单片机分析处理数据;

3.用户可根据需要独立调整温湿度上下限报警阀值;

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

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

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

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

SHT11和DHT11传感器可以测量温度和湿度,主要有两个区别:

(1)SHT内部核心部件为湿敏电容器,成本高,精度高;DHT内部核心部件为湿敏电阻,价格便宜,但精度较低;

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

常规温湿度测量,DHT11和SHT11可以满足使用要求。但从成本上看,DHT价格便宜,应用广泛。

基于51单片机和DHT11传感器的温湿度监测系统可以收集、处理、显示和报警当前的环境温湿度数据。

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

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

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

DHT11传感器上的三个红色小箭头用于模拟温湿度值的变化。前两个红色箭头用于增加或减少值,后一个红色箭头用于切换温度和湿度。

例如,我们调整DHT11传感器将温度升高到34℃,湿度降低到51%RH,效果如下。 按钮可设置温度和湿度的上下限报警阀值。点击调整按钮,系统进入上下限设置模式,LCD显示当前温湿度的上下限值。

如图所示,系统默认温度的上下限为:20~35℃,湿度上下限为40~85%RH。 此外,温度下限值光标闪烁,点击添加/减键设置;设置温度下限值后,单击调整键,温度上限值光标闪烁。

依次类比,当设置温湿度上下限值时,再次单击调整键退出设置模式,返回温湿度显示模式。

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

例如,我们将温度的上下限重置为:25~38℃,湿度上下限为40~65%RH,结果如下。 当系统监测温湿度不再设定范围时,发出声光报警,相应LED当环境温湿度恢复正常时,报警停止。

例如,我们点击DHT传感器上的红色箭头将温度降低到24℃,低于下限值25℃,此时,蓝色温度过低,报警指示灯亮起,蜂鸣器鸣叫。 综上所述,模拟运行效果满足设计要求,可实现规定的功能。

void main() { 
         uchar i;   LcdInit();       // 液晶功能的初始化   LcdShowInit();      // 液晶显示的初始化   AlarmTL=EEPROM_Read(0x2000); // 从EEPROM的0x读取2000地址温度的报警下限  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的温湿度监测系统设计是我的原创设计,获取全套资料,

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

标签: 怎样通过气敏传感器的自动报警易优控网络温湿度变送器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台