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

news2025/2/3 18:51:03

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

文章目录

  • 基于STC89C51系列单片机的空气温湿度检测报警系统
    • 概述
    • 项目背景
    • 硬件设计
      • 1. STC89C51单片机
      • 2. DHT11温湿度模块
      • 3. LCD1602显示模块
      • 4. 人机交互模块
      • 5. 电源模块
    • 软件设计
      • 1. 硬件初始化
      • 2. DHT11数据读取
      • 3. 数据显示
      • 4. 报警逻辑
      • 5. 按键功能
      • 6.蓝牙功能
    • 功能拓展
      • 1. 数据记录和存储
      • 2. 数据上传与远程监控
      • 3. 温湿度补偿
    • 仿真
    • 原理图
    • 产品介绍
      • 1. 外观设计
      • 2. 使用场景
      • 3. 使用说明
      • 4. 安全与稳定性
    • 经验总结
    • 故障处理
    • 总结
    • 总结

概述

今天我将向大家介绍一个基于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的空气温湿度检测报警系统感兴趣,可以尝试制作自己的系统,并进一步拓展功能。嵌入式系统开发是一个无限创意的领域,期待您的更多精彩创作!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/762121.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

浅读-《深入浅出Nodejs》

这次算是重读 深入浅出Nodejs&#xff0c;了解到很多之前忽略的细节&#xff0c;收获蛮多&#xff0c;这次顺便将其记录分享&#xff0c;对学习和了解Nodejs有及其大的帮助。 1.Nodejs 事件驱动、非阻塞IO&#xff0c;一个开源和跨平台的 JavaScript 运行时环境&#xff1b;异…

手机直播app源码部署搭建:带货潮流,商城功能!

随着互联网时代的迅猛发展&#xff0c;手机直播app源码平台早已成为了人们获取资讯、娱乐放松等方式的主要载体&#xff0c;手机直播app源码平台的日益火爆&#xff0c;也让商人们有了一个新兴的想法出现&#xff1a;直播app平台如此火爆&#xff0c;平台的用户也如此庞大&…

perl输出中文乱码【win10】

perl输出中文乱码 运行的时候输出的内容变成了中文乱码&#xff0c;原因首先来查找一下自己的perl的模块里面是否有Encode-CN。请运行打开你的cmd并输入perldoc -l Encode::CN 如果出现了地址 则就是有&#xff0c;如果没有需要进行该模块的安装。 安装方式有很多种&#xff0…

Three.js——十二、MeshPhysicalMaterial清漆层、粗糙度、物理材质透光率以及折射率(结尾附代码)

环境贴图作用测试 MeshPhysicalMaterial清漆层 MeshPhysicalMaterial和MeshStandarMaterial都是拥有金属度metalness、粗糙度roughness属性的PBR材质&#xff0c;MeshPhysicalMaterial是MeshStandarMaterial的子集&#xff0c;除了继承了他的这些属性以外&#xff0c;还新增了…

NDK OpenGL实现美颜功能

NDK​系列之OpenGL实现美颜特效&#xff0c;本节主要是在上一节大眼萌的特效视上增加美颜特效。 OpenGL视频特效系列&#xff1a; NDK OpenGL渲染画面效果 NDK OpenGL离屏渲染与工程代码整合 NDK OpenGL仿抖音极快极慢录制特效视频 NDK OpenGL与OpenCV实现大眼萌特效 NDK…

java并发编程 11:JUC之ReentrantLock使用与原理

目录 使用可重入可打断锁超时公平锁条件变量 原理非公平锁实现原理源码流程 锁重入原理可打断原理与不可打断原理公平锁原理条件变量原理await流程signal流程 使用 ReentrantLock是可冲入锁&#xff0c;与 synchronized 一样&#xff0c;都支持可重入。但是相对于 synchronize…

kafka第三课-可视化工具、生产环境问题总结以及性能优化

一、可视化工具 https://pan.baidu.com/s/1qYifoa4 密码&#xff1a;el4o 下载解压之后&#xff0c;编辑该文件&#xff0c;修改zookeeper地址&#xff0c;也就是kafka注册的zookeeper的地址&#xff0c;如果是zookeeper集群&#xff0c;以逗号分开 vi conf/application.conf 启…

如何刻录光盘

如何刻录光盘 1 、将光盘放入光驱&#xff0c;选择“用于CD/DVD播放机” &#xff0c;该模式下&#xff0c;刻录在光盘的文件无法进行编辑和删除 2 、将需要刻录的文件拷贝至光盘内&#xff0c;则会在“准备好写入光盘中的文件”下显示拷贝进去的文件&#xff0c;此时文件还没…

EDI 工作流操作指南

一个完整的EDI工作流中&#xff0c;起始端为通常为文件传输端口&#xff1a;如AS2、OFTP等&#xff0c;末端为数据库端口。此前的文章中我们对AS2端口以及数据库端口已做了详细介绍&#xff0c;本文主要介绍 EDI 文件的格式转换以及映射。 如下图所示&#xff0c;工作流界面中…

安装blissOS重启后无法进入图形化界面

重启blissOS 重启时&#xff0c;按e键两下 进入 上图是一个可编辑页面&#xff0c;不要删除修改前面的内容&#xff0c;移动光标前往quiet&#xff0c;然后删除quiet输入“ nomodeset xforceseva ”&#xff0c;然后按下回车 然后按回车&#xff0c;按b键进入系统 在set-…

class组件constructor方法

class组件constructor方法 https://blog.csdn.net/m0_37557930/article/details/116228217 https://blog.csdn.net/qq_39207948/article/details/113143131 ​ 为何我们使用子类继承父类&#xff0c;就必须在 constructor( ) 方法中调用 super( ) 方法&#xff0c;否则新建实…

【C】文件操作详解

这里写目录标题 文件操作什么是文件文件名文件类型文本文件二进制文件 文件缓冲区文件指针文件的打开和关闭fopenfclose 文件的顺序读写fgetcfputcfgetsfputcfscanffprintffwritefread比较scanf/fscanf/sscanfsscanf 比较printf/fprintf/sprintfsprintf 文件的随机读写fseekfte…

周考一之重做

输入一个学生的成绩&#xff0c;如果学习成绩>90分的同学用A表示&#xff0c;60-89分之间用B表示&#xff0c;60分以下的用C表示(10) public static void main(String[] args){ Scanner scanner new Scanner(System.in); System.out.println(“请输入学生成绩&#xff1a;…

linux图形界面总结---X、Xorg、WM、QT、GTK、KDE、GNOME的区别与联系

文章目录 一、 linux图形界面二、X协议三、Xfree86 Xorg四、WM(window manager:窗口管理器)五、X协议的Client端实现六、KDE、GNOME、QT和GTK直接关系七、参考&#xff1a; 一、 linux图形界面 linux本身没有图形界面&#xff0c;linux现在的图形界面的实现只是linux下的应用程…

值类型与引用类型

常见的值类型&#xff1a;int&#xff0c;long&#xff0c; short&#xff0c; float&#xff0c; double&#xff0c; byte&#xff0c; char&#xff0c; enum&#xff0c; struct...... 常见的引用类型&#xff1a;字符串&#xff0c; 数组&#xff0c; 类...... 区别&…

附录10-3.JS正则常见案例

目录 1 某一个字符串重复出现两次 2 多行字符串转变为数组套对象 3 多个正则表达式匹配一个字符 4 在指定的字符前加一些什么东西 1 某一个字符串重复出现两次 match的方式如果你使用小括号分组&#xff0c;第一个结果是符合正则的结果&#xff0c;也就是我查出来了 l…

Excel表格怎么样转换成PDF?分享这3个方法免费转换!

在日常办公和学习中&#xff0c;我们常常需要将Excel表格转换为PDF格式以便分享、打印或存档。本文将介绍三种简便的免费方法。方法一介绍了记灵在线工具&#xff0c;方法二使用办公软件&#xff08;WPS或Office&#xff09;&#xff0c;方法三则使用Adobe软件。 方法一&#…

大二毕设.2-自研Spring框架

目录 项目描述&#xff1a; 基本演示 提取标记类 IOC容器的装载 IOC容器的操作 DI依赖注入 Aspect排序 AOP MVC 功能实现讲解 项目描述&#xff1a; 为了更好地学习 Spring 的核心&#xff0c;参考 Spring 源码实现的一个简易框架当前已实现 IOC&#xff0c;DI依赖注…

交叉编译gRPC初实践

快速开始 一、创建android编译目录&#xff0c;在grpc源码根目录下运行&#xff1a; mkdir -p cmake/build_android && cd cmake/build_android 二、cmkae生成对应Makefile等编译所需的文件 cmake -DCMAKE_TOOLCHAIN_FILE/zhuyazhou/DDS/tools_dds/android-ndk-r25/b…

Python(Conda)环境迁移(从win10到macos12.5)笔记

文章目录 背景环境 1、通过conda迁移2、通过python迁移3、最后&#xff08;逐一安装&#xff09; 背景环境 win10是以前安装的conda和py。目前需要导出的环境的版本为py3.10.4。macos是重新安装的conda&#xff0c;目前有的环境是py3.11.4。我是先进conda用刚安装好的base创建…