基于51单片机的1602温湿度报警系统

1、简介
一种基于51单片机的LCD1602温湿度报警系统。该设计使用STC89C52单片机、DHT11传感器模块、LCD1602液晶显示屏模块以及报警模块,简单明了的实现可提要求。DHT11数字温湿度传感器把采集到的温湿度数据传给单片机,经过单片机的处理,准确的显示到液晶屏上。同时,手动设置温湿度的上下限值,当实时温湿度超出阈值时,对应的工作指示灯亮,蜂鸣器报警。

2、主要功能
a.通过LCD1602显示当前温湿度值,温度测量范围:0-99摄氏度。

b.通过独立按键设置温湿度上下限值,按加减键就可以修改对应值。

c.当温湿度低于下限或高于上限时,蜂鸣器和LED灯同时报警。

3、环境搭建
资料清单:C程序+仿真+设计报告+使用说明+元件清单+操作视频
仿真版本:Proteus8.6及以上版本
编译平台:Keil C51
编程语言:C语言

4、源程序
使用keil C51软件(内附安装包)实现程序编写与编译。

#include "common.h"
#include "lcd1602.h"
#include "dht.h"
extern unsigned char U8RH_data_H;
extern unsigned char U8T_data_H;
sbit key1 = P1^0;//设置键
sbit key2 = P1^1;//加键
sbit key3 = P1^2;//减键
sbit relay1 = P1^6;//加热继电器
sbit relay2 = P1^7;//降温继电器
sbit relay3 = P3^6;//加湿继电器
sbit relay4 = P3^7;//除湿继电器
sbit beep = P2^0;//蜂鸣器
unsigned char tl = 20,th = 30,hl = 30,hh = 60;//温湿度上下限初始值
unsigned char setn = 0;//设置标志
void display_alarm()//显示报警值
{
 	 lcd_write_char(4,0,tl/10+0x30);
	 lcd_write_char(5,0,tl%10+0x30);
	 lcd_write_char(13,0,th/10+0x30);
	 lcd_write_char(14,0,th%10+0x30);

	 lcd_write_char(4,1,hl/10+0x30);
	 lcd_write_char(5,1,hl%10+0x30);
	 lcd_write_char(13,1,hh/10+0x30);
	 lcd_write_char(14,1,hh%10+0x30);
}
void keyscan()
{
 	if(key1 == 0)//设置键按下
	{
	 	delay_ms(10);
		if(key1 == 0)
		{
			beep = 0;
			delay_ms(100);
			beep = 1;
		 	while(key1 == 0);//等待按键松开
			setn++;
			if(setn > 4)//按下次数超过4次,退出设置
			{
			 	setn = 0;
				lcd_write_com(0x0c);//关闭光标
				lcd_write_str(0,0,"Tem:  C  Hum:  %");
	  		lcd_write_str(0,1,"                ");
			}
			if(setn == 1)//设置温度下限
			{
			 	lcd_write_str(0,0,"Tml:  C  Tmh:  C");
	  		lcd_write_str(0,1,"Hml:  %  Hmh:  %");

				display_alarm();
				lcd_write_com(0x80+5);
				lcd_write_com(0x0f);
			}
			if(setn == 2)//温度上限
			{
				lcd_write_com(0x80+14);
				lcd_write_com(0x0f);
			}
			if(setn == 3)//湿度下限
			{
				lcd_write_com(0x80+0x40+5);
				lcd_write_com(0x0f);
			}
			if(setn == 4)//湿度上限
			{
				lcd_write_com(0x80+0x40+14);
				lcd_write_com(0x0f);
			}
		}
	}
	if(key2 == 0)//加键按下
	{
	 	delay_ms(10);
		if(key2 == 0)
		{
			beep = 0;
			delay_ms(100);
			beep = 1;
		 	while(key2 == 0);
		    if(setn == 1)
			{
			 	if(th - tl > 1)//上限必须大于下限,下限才能加
				tl ++;

				display_alarm();
				lcd_write_com(0x80+5);
				lcd_write_com(0x0f);
			}
			if(setn == 2)
			{
			    if(th < 99)//最大到99
				th++;
				display_alarm();
				lcd_write_com(0x80+14);
				lcd_write_com(0x0f);
			}
			if(setn == 3)
			{
			    if(hh - hl > 1)//上限必须大于下限,下限才能加
				hl++;
				display_alarm();
				lcd_write_com(0x80+0x40+5);
				lcd_write_com(0x0f);
			}
			if(setn == 4)
			{
			    if(hh < 99)//最大到99
				hh++;
				display_alarm();
				lcd_write_com(0x80+0x40+14);
				lcd_write_com(0x0f);
			}
		}
	}

5、proteus8.6仿真
采用proteus8.6软件(内附安装包)实现仿真设计,如下图所示。proteus软件一般存在高低版本兼容问题,该仿真是通过proteus8.6导出的,所以请尽量使用proteus8.6打开文件,低于proteus8.6的版本不能够正常使用,高于proteus8.6的版本除了proteus8.8/8.9理论上可以正常使用。
当前温湿度:
在这里插入图片描述
设置温湿度上下限:
在这里插入图片描述
当温度高于上限时,蜂鸣器和LED灯报警:
在这里插入图片描述
当温度低于下限时,蜂鸣器和LED灯报警:
在这里插入图片描述
当湿度高于上限时,蜂鸣器和LED灯报警:
在这里插入图片描述
当湿度低于下限时,蜂鸣器和LED灯报警:
在这里插入图片描述

6、设计资料清单
设计资料主要包括C程序+仿真+设计报告+使用说明+元件清单+操作视频等,设计报告主要包括硬件电路、软件设计、仿真调试等等,仅供参考。由于不定期更新,最新的资料包不一定与下面图片完全一致,但主要资料都有。
在这里插入图片描述
在这里插入图片描述

7、资料获取方式
FF01下载链接1:百度网盘(推荐)
FF01下载链接2:优快云免积分
有偿,非诚勿扰🙏

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值