1.1基于stc89c51系例单片机的空气温湿度检测报警系统

基于STC89C51系列单片机的空气温湿度检测报警系统

概述

今天我将向大家介绍一个基于STC89C51系列单片机的空气温湿度检测报警系统。该项目结合了单片机、DHT11温湿度模块、LCD1602显示模块、按键以及蜂鸣器等元件,用于实时监测环境的温度和湿度,并在超过设定阈值时触发报警。让我们深入探究这个项目的开发过程、硬件设计、软件实现以及产品介绍。

项目背景

在现代生活中,人们越来越关注室内环境的舒适性和健康性。尤其是在季节交替或潮湿多雨的气候下,环境温湿度的监测尤为重要。为了满足人们对室内环境的需求,我们决定开发一个便捷实用的空气温湿度检测报警系统。该系统旨在帮助用户了解环境温湿度状况,并在温湿度异常时发出报警信号。

硬件设计

1. STC89C51单片机

STC89C51是一款性价比极高的8位单片机,拥有强大的功能和稳定性,适用于各种应用场景。我们选择它作为控制核心,以便于处理数据和控制外设。

2. DHT11温湿度模块

DHT11是一种数字式温湿度传感器,具有成本低、使用简单的特点。它通过单线串行接口与STC89C51单片机通信,并能够准确地测量环境的温度和湿度。

3. LCD1602显示模块

为了方便用户直观地观察温湿度数据,我们采用了LCD1602显示模块。这是一种16x2字符液晶显示屏,通过并行接口与STC89C51单片机相连,能够显示温度、湿度等信息。

4. 人机交互模块

为了增强系统的交互性,我们设计了三个按键,分别是模式切换键、阈值加键和阈值减键。用户可以通过按键来切换系统的工作模式,以及调整温湿度报警阈值。同时,我们还增加了蜂鸣器作为报警装置。

5. 电源模块

为了保证系统的稳定运行,我们设计了合适的电源模块,提供稳定的电压和电流给系统中的各个模块。

软件设计

1. 硬件初始化

在软件设计的初期,我们进行了硬件的初始化设置,包括配置STC89C51的I/O口、定时器和串口通信等。

	F1602_init();
  	F1602_clear();
	timer0_init();
	DHT11_start();
	uart_init()	;
	TI = 1;
	SendString("welcome to temp sys");
	TI = 0;
	P22 = 0;

2. DHT11数据读取

为了从DHT11传感器读取温湿度数据,我们编写了相应的函数。DHT11传感器使用单线串行通信协议,因此我们需要正确地发送指令,并解析传感器返回的数据。

void DHT11_receive()      
{
    
    
    uchar R_H,R_L,T_H,T_L,revise; 
    DHT11_start();
    if(Data==0)
    {
    
    
        while(Data==0);    
        DHT11_delay_us(40); 
        R_H=DHT11_rec_byte();   
        R_L=DHT11_rec_byte();   
        T_H=DHT11_rec_byte();      
        T_L=DHT11_rec_byte();    
        revise=DHT11_rec_byte(); 

        DHT11_delay_us(25);    

        if((R_H+R_L+T_H+T_L)==revise)      
        {
    
    
            RH=R_H;
            RL=R_L;
            TH=T_H;
            TL=T_L;
        } 

    }
}

3. 数据显示

读取到的温湿度数据需要在LCD1602显示模块上进行显示。我们编写了函数,将数据格式化后显示在液晶屏上,使用户可以直观地观察环境信息。

void display0()
{
    
    
		if(mode == 0)
		{
    
    
			gotoxy(1,0);			
			display_string("TH:");
			display_num(TH_set);	
			gotoxy(2,0);
			display_string("temp:");
			display_num(TH);	
			display_string(".");
			display_num(TL);	
		}
		if(mode == 1)
		{
    
    
			gotoxy(1,0);
			display_string("temp high:");					
			gotoxy(2,0);
			display_num(TH_set);			
		}
}

4. 报警逻辑

为了实现报警功能,我们设计了相应的报警逻辑。当温湿度超过设定阈值时,蜂鸣器会发出警报信号,提醒用户环境异常。

		if(TH >= TH_set) P22 = 1;
		else P22 = 0;

5. 按键功能

为了实现按键功能,我们编写了按键扫描函数。通过检测按键状态和处理按键事件,实现模式切换和阈值调整功能。


void key0()
{
    
    
	if(k1 == 0)
	{
    
    
		while(k1 == 0);
		F1602_clear();
		mode++;
		if(mode >= 2)mode = 0;
	}
	if(k2 == 0)
	{
    
    
				while(k2 == 0);
		if(mode == 1)TH_set++;
		if(TH_set >= 100)TH_set = 100;
//		if(mode == 2)TL_set++;
//		if(TL_set >= TH_set)TL_set=TH_set;
	}
	

	if(k3 == 0)
	{
    
    
		while(k3 == 0);
		if(mode == 1)TH_set--;		
//		if( TH_set<= TL_set)TH_set= TL_set;	
//				if(mode == 2)TL_set--;

		if(TH_set <= 0)TH_set = 0;
		
		
		
	}	
}

6.蓝牙功能

为了实现蓝牙功能,我们编写了串口发送函数。将数据格式化后显示在手机上,使用户可以直观地观察环境信息。

void SendData(unsigned char dat)
{
    
    
		SBUF = dat;				
		while(!TI);				
		TI = 0;					
}
void SendString(unsigned char *s)
{
    
    
    while (*s)                  
    {
    
    
        SendData(*s++);         
    }
}

在这里插入图片描述

功能拓展

1. 数据记录和存储

为了更好地了解环境的变化趋势,我们可以考虑增加数据记录和存储功能。通过添加存储器模块,将温湿度数据定期记录并保存,可以绘制曲线图或制作统计报表,帮助用户更直观地观察温湿度变化情况。

2. 数据上传与远程监控

如果有网络连接的条件,我们可以考虑将数据上传至云平台,实现远程监控和管理。用户可以通过手机或电脑查看环境数据,甚至设定远程报警功能,让系统更加智能化和便捷。

3. 温湿度补偿

为了提高系统的测量精度,我们可以考虑添加温湿度补偿功能。通过校准传感器数据和温湿度的非线性补偿,使系统的测量结果更加准确可靠。

仿真

在这里插入图片描述

原理图

在这里插入图片描述

产品介绍

1. 外观设计

我们设计了一个简约而实用的外壳,将STC89C51单片机、DHT11传感器、LCD1602显示模块、按键和蜂鸣器等元件装入其中。外壳采用环保塑料材料,表面采用哑光处理,手感舒适,同时能有效防止指纹和污垢。

2. 使用场景

空气温湿度检测报警系统适用于家庭、办公室、实验室等各种场所。用户可以放置在桌面或墙壁上,方便实时监测环境的温湿度状况。

3. 使用说明

使用该系统非常简单。当用户首次使用时,系统会进行初始化设置,包括校准和设定报警阈值。之后,系统会自动监测环境温湿度,并在液晶屏上显示数据。用户可以通过按键进行模式切换和阈值调整。当温湿度超过设定阈值时,蜂鸣器会发出报警信号,提醒用户环境异常。

4. 安全与稳定性

为了确保用户使用的安全性,我们对产品进行了多重安全测试,包括过压保护、温度保护和电流保护等。同时,我们对系统进行了长时间稳定性测试,保证产品的可靠性和持久性。

经验总结

在项目开发的过程中,我们遇到了一些挑战和难题。例如,DHT11传感器的校准和精度处理、按键的消抖和多次触发问题等。通过认真的调试和不断尝试,我们最终克服了这些问题,并实现了稳定可靠的系统。

故障处理

在实际应用中,可能会出现一些故障。例如,显示不稳定、传感器数据不准确等问题。我们可以通过检查硬件连接、调整软件算法和增加异常处理机制来解决这些问题。

总结

通过本项目,我们深入了解了STC89C51系列单片机的使用方法和基本原理,学习了如何与外围模块进行通信和数据交换。空气温湿度检测报警系统为我们提供了一个很好的学习平台,让我们更深入地了解嵌入式系统和物联网技术的应用。

感谢您阅读本篇博客!如果您对基于STC89C51的空气温湿度检测报警系统感兴趣,可以尝试制作自己的系统,并进一步拓展功能。嵌入式系统开发是一个无限创意的领域,期待您的更多精彩创作!

可以通过检查硬件连接、调整软件算法和增加异常处理机制来解决这些问题。

总结

通过本项目,我们深入了解了STC89C51系列单片机的使用方法和基本原理,学习了如何与外围模块进行通信和数据交换。空气温湿度检测报警系统为我们提供了一个很好的学习平台,让我们更深入地了解嵌入式系统和物联网技术的应用。

感谢您阅读本篇博客!如果您对基于STC89C51的空气温湿度检测报警系统感兴趣,可以尝试制作自己的系统,并进一步拓展功能。嵌入式系统开发是一个无限创意的领域,期待您的更多精彩创作!

猜你喜欢

转载自blog.csdn.net/qq_42704442/article/details/131755986