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

文章目录

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


一、功能简介

本项目使用Proteus8仿真51单片机控制器,使用声光报警模块、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/191492.html

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

相关文章

多媒体ffmpeg学习教程

多媒体ffmpeg 目前比较流行的音视频文件为:MP4 flv m3u8 ffmpeg ffmpeg ffplay ffprobe ffserverffmpeg -i INPUT -vf "split [main][tmp]; [tmp] cropiw:ih/2:0:0, vflip [flip];[main][flip] overlay0:H/2" OUTPUTffmpeg -i 2022.mp4 -vcodec mpeg4 -b:…

前端 js 之 promise( 第一版 23.11.18) 09

感觉自己好笨&#xff0c;知识点表达的不够明晰&#xff0c;也正是因为如此&#xff0c;说明有很大的进步空间&#xff0c;更要在此努力&#xff01; 文章目录 前言一、作用二、使用步骤三、promise 类四、promise 方法 前言 每一个新技术的出现&#xff0c;都是解决原有技术上…

SQL 文本函数

前言 SQL文本函数是SQL语言中非常有用的一类函数&#xff0c;它们用于处理和操作字符串数据。在实际应用中&#xff0c;我们经常需要对数据库中的文本数据进行各种操作&#xff0c;比如提取子串、替换子串、拼接字符串等等。而SQL文本函数可以帮助我们轻松地完成这些任务&#…

Python (十) 元组

元组 元组与列表类似&#xff0c;不同之处在于元组的元素不能修改。 元组使用小括号 ( )&#xff0c;列表使用方括号 [ ]。 元组创建只需要在括号中添加元素&#xff0c;并使用逗号隔开即可。 访问 tup1 (hello,Java,Python,123,456) print(type(tup1)) print(tup1[1])#输出 …

Sam Altman 被罢免细节曝光,投资 100+ 公司或成「话柄」?

2022 年 11 月&#xff0c;ChatGPT 发布掀起 AI 狂潮。时隔 1 年&#xff0c;2023 年 11 月&#xff0c;ChatGPT 之父、Sam Altman 的一项人事巨变&#xff0c;再次掀起了一场 AI 界的风暴&#xff0c;只是这次并不是技术革命&#xff0c;而是 OpenAI 巨头换帅——Sam Altman 被…

【解疑】ZIP压缩包的密码可以取消吗?

ZIP是工作中经常用到的文件压缩格式&#xff0c;它可以将多个文件压缩成一个文件&#xff0c;便于传输和存储。有时候&#xff0c;为了保护文件的私密性&#xff0c;很多人还会在压缩文件的同时设置密码保护。那问题来了&#xff0c;要是后续不需要保护了&#xff0c;ZIP压缩包…

Swagger示例

对于项目完成后不用写文档,好处还是蛮大的 不需要关注项目其他 只关注接口与实体类即可 SpringBoot项目 依赖 <!--Swagger依赖--> <dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger2</artifactId><version…

docker 安装mongodb 实现 数据,日志,配置文件外挂

docker 安装mongodb 实现数据&#xff0c;日志&#xff0c;配置文件外挂 1 背景 最近开发了一个评论系统之前用mysql来存储数据&#xff0c;但是考虑到后期业务增大访问量也会增大&#xff0c;为了兼容这种高并发的场景&#xff0c;因此经过多方面的考虑&#xff0c;我们最终…

一文搞懂设计模式之代理模式

大家好&#xff0c;我是晴天&#xff0c;本周我们又见面了。本周有点发烧感冒&#xff0c;更文有点慢了&#xff0c;请大家见谅。言归正传&#xff0c;本周我们继续一起学习一文搞懂设计模式系列文章之代理模式。 什么是代理模式 我们先来看看 GoF 对代理模式的定义&#xff1…

LaTeX 数学公式常见问题及解决方案

本文汇总了博主在使用 LaTeX 写文档过程中遇到的所有数学公式常见问题及对应的 LaTeX 解决方案 持续更新... 目录 1. 连等式2. 公式重新开始编号2.1 图片/表格重新编号 1. 连等式 在数学公式推导过程中常常会遇到如 Figure 1 所示的连等式&#xff0c;一般需要保证等号或者不等…

英伟达AI布局的新动向:H200 GPU开启生成式AI的新纪元

英伟达Nvidia是全球领先的AI计算平台和GPU制造商&#xff0c;近年来一直在不断推出创新的AI产品和解决方案&#xff0c;为各行各业的AI应用提供强大的支持。 最近&#xff0c;英伟达在GTC 2023大会上发布了一款专为训练和部署生成式AI模型的图形处理单元&#xff08;GPU&#…