【Proteus仿真】【STM32单片机】防火防盗GSM智能家居设计

文章目录

  • 一、功能简介
  • 二、软件设计
  • 三、实验现象
  • 联系作者


一、功能简介

本项目使用Proteus8仿真STM32单片机控制器,使用声光报警模块、LCD1602显示模块、DS18B20温度、烟雾传感器模块、按键模块、PCF8591 ADC模块、红外检测模块等。

主要功能:
系统运行后,LCD1602显示温度和MQ2烟雾传感器检测的温度及烟雾浓度;当检测温度或烟雾浓度高于设置的温度或烟雾阈值,则声光报警。可通过按键K3进入阈值设置模式,K1和K2进行加减调节,K4确定。在正常模式下,K1键开启布防,K2键关闭布防,当系统处于布防状态时,红外检测有人则声光报警,且LCD显示对应YES表示有人,否则取消报警,LCD显示No表示无人。若在布防状态下检测有人声光报警,也可通过K2键撤防取消报警。当有报警时,可将报警信息通过GSM传输手机显示。


二、软件设计

/*
作者:嗨小易(QQ:3443792007)*///系统数据显示
void sys_data_show(void)
{while(1){//温度显示lcd1602_show_nums(3,0,sys_ctrl.temp,2,0);//烟雾浓度显示lcd1602_show_nums(3,1,sys_ctrl.smoke,2,0);//温度阈值显示lcd1602_show_nums(10,0,sys_ctrl.temph,2,0);//烟雾浓度阈值显示lcd1602_show_nums(10,1,sys_ctrl.smokeh,2,0);//布防撤防显示if(sys_ctrl.fortify==1)lcd1602_show_string(14,0,"BF");else lcd1602_show_string(14,0,"CF");	//阈值设定,数据位置闪烁switch(sys_ctrl.mode){case 1://温度lcd1602_show_string(10,0,"  ");delay_ms(100);lcd1602_show_nums(10,0,sys_ctrl.temph,2,0);break;case 2://烟雾浓度lcd1602_show_string(10,1,"  ");delay_ms(100);lcd1602_show_nums(10,1,sys_ctrl.smokeh,2,0);break;	}//有人显示if(sys_ctrl.man==1)lcd1602_show_string(13,1,"Yes");else lcd1602_show_string(13,1," No");break;			}
}//系统数据设置
void sys_data_set(void)
{u8 key=0;key=key_scan(0);//模式设置if(key==KEY3_PRESS){sys_ctrl.mode++;if(sys_ctrl.mode>=3)sys_ctrl.mode=1;}//在设置模式下,加else if(key==KEY1_PRESS){	switch(sys_ctrl.mode){case 0://设防sys_ctrl.fortify=1;break;case 1://温度阈值 sys_ctrl.temph++;if(sys_ctrl.temph>99)sys_ctrl.temph=0;break;case 2://烟雾浓度阈值 sys_ctrl.smokeh++;if(sys_ctrl.smokeh>99)sys_ctrl.smokeh=0;break;}				}//在设置模式下,减else if(key==KEY2_PRESS){switch(sys_ctrl.mode){case 0://撤防sys_ctrl.fortify=0;break;case 1://温度阈值 sys_ctrl.temph--;if(sys_ctrl.temph<0)sys_ctrl.temph=99;break;case 2://烟雾浓度阈值 sys_ctrl.smokeh--;if(sys_ctrl.smokeh<0)sys_ctrl.smokeh=99;break;}}//确定else if(key==KEY4_PRESS){sys_ctrl.mode=0;		}
}//系统功能控制
void sys_fun_ctrl(void)
{static u8 i=0;static u8 tponeflag=0; static u8 ywoneflag=0;static u8 rqoneflag=0;//正常工作模式下if(sys_ctrl.mode==0){//不管是否布防或撤防,只要监测到温度或烟雾浓度高于阈值则开启声光报警if(sys_ctrl.temp>sys_ctrl.temph || sys_ctrl.smoke>sys_ctrl.smokeh)beep_alarm(1,1000);if(sys_ctrl.temp>sys_ctrl.temph)//温度超限{LED_WD=0;i++;if(i%10==0)UART_SendString("\r\n注意...温度高\r\n");tponeflag=1;		}else {LED_WD=1;if(tponeflag==1){tponeflag=0;UART_SendString("\r\n温度在范围内\r\n");}		}//烟雾超限if(sys_ctrl.smoke>sys_ctrl.smokeh){LED_YW=0;i++;if(i%10==0)UART_SendString("\r\n注意...烟雾高\r\n");ywoneflag=1;}else {LED_YW=1;if(ywoneflag==1){ywoneflag=0;UART_SendString("\r\n烟雾在范围内\r\n");}	}			//如果布防if(sys_ctrl.fortify==1)	{//检测到有人,声光报警if(sys_ctrl.man==1){LED_RQ=0;beep_alarm(1,1000);i++;if(i%10==0)UART_SendString("\r\n注意...有人闯入!\r\n");rqoneflag=1;}//没有检测到有人,取消声光报警else{BEEP=1;LED_RQ=1;if(rqoneflag==1){rqoneflag=0;UART_SendString("\r\n无人\r\n");}}}//如果撤防,不管有无人检测,均不声光报警else{BEEP=1;LED_RQ=1;		}					}		
}

三、实验现象

B站演示视频:https://space.bilibili.com/444388619

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

联系作者

视频地址:https://space.bilibili.com/444388619/video
专注于51单片机、STM32、国产32、DSP、Proteus、arduino、ESP32、物联网软件开发,PCB设计,视频分享,技术交流。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring学习②__IOC分析

目录 IOC控制反转IOCIOC理论案例IOC的思想&#xff08;注入&#xff09;IOC底层什么是 IOCIOC 底层原理 总结 IOC 控制反转IOC ①控制反转&#xff0c;把对象创建和对象之间的调用过程&#xff0c;交给Spring进行 ②使用IOC目的&#xff1a;为了耦合度降低 IOC理论案例 控制…

聊聊氮化硅(SiNx)在芯片中的重要性

在芯片制造中&#xff0c;有一种材料扮演着至关重要的角色&#xff0c;那就是氮化硅&#xff08;SiNx&#xff09;。尽管它可能并未获得和其他更为熟知的半导体材料&#xff0c;如硅&#xff08;Si&#xff09;、砷化镓&#xff08;GaAs&#xff09;或氮化镓&#xff08;GaN&am…

Failed to execute org.scala-tools:maven-scala-plugin:2.15.2解决

原因也不是很清楚&#xff0c;查看一个博主文章(net.alchim31.maven:scala-maven-plugin&#xff1a;maven依赖无法下载或无法编译)得到的解决方案&#xff1a; 在idea的terminal执行以下语句即可实现maven对scala代码的编译&#xff1a; mvn clean scala:compile compile pac…

4、FFmpeg命令行操作8

生成测试文件 找三个不同的视频每个视频截取10秒内容 ffmpeg -i 沙海02.mp4 -ss 00:05:00 -t 10 -codec copy 1.mp4 ffmpeg -i 复仇者联盟3.mp4 -ss 00:05:00 -t 10 -codec copy 2.mp4 ffmpeg -i 红海行动.mp4 -ss 00:05:00 -t 10 -codec copy 3.mp4 如果音视…

【C++】类与对象 III 【 深入浅出理解 类与对象 】

文章内容 前言 &#xff1a;新关键字explicit 的引入一、explicit关键字二、static成员&#xff08;一&#xff09;概念&#xff08;二&#xff09;特性 三、匿名对象四、友元前言&#xff1a;友元的引入&#xff08;一&#xff09;友元的概念友元分为&#xff1a;友元函数 和 …

java的包装类

目录 1. 包装类 1.1 基本数据类型和对应的包装类 1.2 装箱和拆箱 1.3 自动装箱和自动拆箱 1. 包装类 在Java中&#xff0c;由于基本类型不是继承自Object&#xff0c;为了在泛型代码中可以支持基本类型&#xff0c;Java给每个基本类型都对应了 一个包装类型。 若想了解…

[内存泄漏][PyTorch](create_graph=True)

PyTorch保存计算图导致内存泄漏 1. 内存泄漏定义2. 问题发现背景3. pytorch中关于这个问题的讨论 1. 内存泄漏定义 内存泄漏&#xff08;Memory Leak&#xff09;是指程序中已动态分配的堆内存由于某种原因程序未释放或无法释放&#xff0c;造成系统内存的浪费&#xff0c;导致…

element表格头部加入图标

首先看看效果 下面是代码 <el-table-column prop"integralBalance"><template slot"header" slot-scope"scope"><div style"display: flex;justify-content: center;align-items: center;">积分余额<i class&qu…

代码随想录算法训练营Day 54 || 392.判断子序列、115.不同的子序列

392.判断子序列 力扣题目链接(opens new window) 给定字符串 s 和 t &#xff0c;判断 s 是否为 t 的子序列。 字符串的一个子序列是原始字符串删除一些&#xff08;也可以不删除&#xff09;字符而不改变剩余字符相对位置形成的新字符串。&#xff08;例如&#xff0c;&quo…

二叉树的遍历(非递归版)

文章目录 二叉树的前序遍历二叉树的中序遍历二叉树的后序遍历 正文开始前给大家推荐个网站&#xff0c;前些天发现了一个巨牛的 人工智能学习网站&#xff0c; 通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。 点击跳转到网站。 二叉树的前序遍历 用递归实…

ROSCon 2023 大会回顾

系列文章目录 文章目录 系列文章目录前言一、会议内容二、其他活动 前言 我们与 ROSCon 2023 全体 700 多名与会者的合影。 视频回放链接 一、会议内容 ROSCon 2023 是我们第十二届年度 ROS 开发者大会&#xff0c;于 2023 年 10 月 18 日至 20 日在路易斯安那州新奥尔良举行。…