【毕业设计】37-基于单片机智能楼宇消防监控系统设计(原理图工程+仿真工程+源代码+答辩论文+答辩PPT)

news2024/10/7 10:13:35

【毕业设计】37-基于单片机智能楼宇消防监控系统设计(原理图工程+仿真工程+源代码+答辩论文+答辩PPT)

文章目录

  • 【毕业设计】37-基于单片机智能楼宇消防监控系统设计(原理图工程+仿真工程+源代码+答辩论文+答辩PPT)
    • 资料下载链接
    • 任务书
    • 设计说明书
      • 摘要
      • 设计框架架构
      • 设计说明书及设计文件
      • 源码展示

资料下载链接

资料下载链接
资料链接:https://www.cirmall.com/circuit/29931/
包含此题目毕业设计全套资料:(已答辩)

原理图工程文件
原理图截图
仿真工程文件
源代码
仿真截图
答辩论文,29335字
答辩PPT

任务书

一、主要研究内容:
1、 掌握智能楼宇消防监控系统的工作原理;
2、 智能楼宇消防监控系统的单片机编程实现。

二、方法和要求:
1、 阅读大量智能楼宇消防监控系统的相关文献资料,掌握其技术的原理和电路的结构,理解程序实现的核心思想;
2、 积累相关资料确定论文的主体内容,重点进行研究;
3、 每一周进行一次论文进度的汇报,指导老师解答遇到的问题;把握好论文的进度,按照学校的要求完成各个阶段目标。

设计说明书

摘要

本次系统主要有硬件和软件两个部分组成。硬件部分由STC89C52单片机最小系统单元,单片机最小系统,温度检测,烟雾浓度检测,声学光学报警,显示单元组成,在设计上硬件需要考虑到系统的稳定性以及可靠性。软件部分通过对系统软件总流程图绘制,并绘制各个子控制驱动再对驱动程序编写完成系统程序的设计。在硬件与软件的设计上选择按照功能性分区设计,使设计有条理运行可靠。系统设计没有制作实物而是通过仿真方式调试完成。使用仿真软件Proteus来搭建系统硬件电路,调试测试。最后完成了烟雾检测,温度检测,并可以调节阈值实现对系统的报警自定义设置防止误报,通过模拟仿真出实际的楼宇消防系统。

设计框架架构

前 言 1
第一章 消防监控系统概述 2
第一节 研究背景及意义 2
第二节 国内外研究情况 3
第三节 本文的主要研究内容 4
第四节 本章小结 5
第二章 系统方案设计 6
第一节 总体方案设计 6
第二节 主要元器件介绍 6
一、LCD1602液晶显示屏 6
二、DS18B20温度传感器 7
三、气体传感器 8
第三节 本章小结 10
第三章 系统硬件设计 11
第一节 单片机最小系统电路设计 11
一、单片机介绍 11
二、最小系统电路设计 13
第二节 温度检测电路设计 14
第三节 烟雾报警电路设计 15
第四节 显示器电路设计 16
第五节 按键电路设计 16
第六节 报警电路设计 17
一、声学报警电路设计 17
二、光学报警电路设计 18
第七节 系统总电路设计 18
第八节 本章小结 19
第四章 系统软件设计 20
第一节 开发工具介绍 20
第二节 系统软件总流程设计 21
第三节 温度检测程序设计流程 22
第四节 烟雾检测程序设计流程 23
第五节 报警驱动程序设计流程 24
第六节 显示器驱动程序设计流程 25
第七节 本章小结 26
第五章 系统的仿真实现 27
第一节 仿真软件介绍 27
第二节 仿真电路搭建 27
第三节 仿真测试 29
一、温度检测、报警功能测试 29
二、气体浓度检测、报警功能测试 31
三、报警阈值调节功能测试 33
四、综合测试 34
第四节 本章小结 35
结 论 36
致 谢 37
参考文献 38
附 录 40
一、英文原文 40
二、英文翻译 44
三、工程图纸 48
四、源代码 49

设计说明书及设计文件

在这里插入图片描述

在这里插入图片描述在这里插入图片描述 答辩论文,29335字
在这里插入图片描述

源码展示

在这里插入图片描述

#include <reg52.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义
#include "intrins.h"											   
#define     u8  			unsigned char
#define     u16   		unsigned int
#define     uchar  			unsigned char
#define     uint   		unsigned int
uchar yushe_wendu=50;				//温度预设值
uchar yushe_yanwu=100;				//烟雾预设值
uint wendu; 								//温度值全局变量
uchar yanwu;					 			//用于读取ADC数据
//运行模式  
uchar Mode=0;				 				//=1是设置温度阀值  =2是设置烟雾阀值	=0是正常监控模式
//管脚声明
sbit Led_Reg		 =P2^2;				 //红灯
sbit Led_Yellow  =P2^4;				 //黄灯
sbit Buzzer    	 =P2^0;				 //蜂鸣器
sbit Fan    	 	 =P3^3;				 //
/********************************************************************
* 名称 : delay_1ms()
* 功能 : 延时1ms函数
* 输入 : q
* 输出 : 无
***********************************************************************/
void delay_ms(uint q)
{
	uint i,j;
	for(i=0;i<q;i++)
		for(j=0;j<110;j++);
}
/***********************************************************************************************************
LCD1602相关函数
***********************************************************************************************************/
//LCD管脚声明 (RW引脚实物直接接地,因为本设计只用到液晶的写操作,RW引脚一直是低电平)
sbit LCDRS = P2^7;
sbit LCDEN = P2^6;
sbit D0		 = P0^0;
sbit D1		 = P0^1;
sbit D2		 = P0^2;
sbit D3		 = P0^3;
sbit D4		 = P0^4;
sbit D5		 = P0^5;
sbit D6		 = P0^6;
sbit D7		 = P0^7;



//LCD延时
void LCDdelay(uint z)		  //该延时大约100us(不精确,液晶操作的延时不要求很精确)
{
  uint x,y;
  for(x=z;x>0;x--)
    for(y=10;y>0;y--);
}
void LCD_WriteData(u8 dat)	  
{
	if(dat&0x01)D0=1;else D0=0;
	if(dat&0x02)D1=1;else D1=0;
	if(dat&0x04)D2=1;else D2=0;
	if(dat&0x08)D3=1;else D3=0;
	if(dat&0x10)D4=1;else D4=0;
	if(dat&0x20)D5=1;else D5=0;
	if(dat&0x40)D6=1;else D6=0;
	if(dat&0x80)D7=1;else D7=0;
}
//写命令
void write_com(uchar com)
{
  LCDRS=0;				  
	LCD_WriteData(com);
//  DAT=com;
  LCDdelay(5);
  LCDEN=1;
  LCDdelay(5);
  LCDEN=0;
}
//写数据
void write_data(uchar date)
{
  LCDRS=1;
	LCD_WriteData(date);
//  DAT=date;
  LCDdelay(5);
  LCDEN=1;
  LCDdelay(5);
  LCDEN=0;
}
/*------------------------------------------------
              选择写入位置
------------------------------------------------*/
void SelectPosition(unsigned char x,unsigned char y) 
{     
	if (x == 0) 
	{     
		write_com(0x80 + y);     //表示第一行
	}
	else 
	{      
		write_com(0xC0 + y);      //表示第二行
	}        
}
/*------------------------------------------------
              写入字符串函数
------------------------------------------------*/
void LCD_Write_String(unsigned char x,unsigned char y,unsigned char *s) 
{     
	SelectPosition(x,y) ;
	while (*s) 
	{     
		write_data( *s);     
		s ++;     
	}
}
//========================================================================
// 函数: void LCD_Write_Char(u8 x,u8 y,u16 s,u8 l)
// 应用: LCD_Write_Char(0,1,366,4) ;
// 描述: 在第0行第一个字节位置显示366的后4位,显示结果为 0366
// 参数: x:行,y:列,s:要显示的字,l:显示的位数
// 返回: none.
// 版本: VER1.0
// 日期: 2013-4-1
// 备注: 最大显示65535
//========================================================================
void LCD_Write_Char(u8 x,u8 y,u16 s,u8 l) 
{     
	SelectPosition(x,y) ;
	if(l>=5)
		write_data(0x30+s/10000%10);	//万位
	if(l>=4)
		write_data(0x30+s/1000%10);		//千位
	if(l>=3)
		write_data(0x30+s/100%10);		//百位
	if(l>=2)
		write_data(0x30+s/10%10);			//十位
	if(l>=1)
		write_data(0x30+s%10);		//个位
}
/*1602指令简介
  write_com(0x38);//屏幕初始化
  write_com(0x0c);//打开显示 无光标 无光标闪烁
  write_com(0x0d);//打开显示 阴影闪烁
  write_com(0x0d);//打开显示 阴影闪烁
*/
//1602初始化
void Init1602()
{
  uchar i=0;
  write_com(0x38);//屏幕初始化
  write_com(0x0c);//打开显示 无光标 无光标闪烁
  write_com(0x06);//当读或写一个字符是指针后一一位
  write_com(0x01);//清屏	
}
void Display_1602(yushe_wendu,yushe_yanwu,c,temp)
{
	//显示预设温度
	LCD_Write_Char(0,6,yushe_wendu,2) ;	
	//显示预设烟雾
	LCD_Write_Char(0,13,yushe_yanwu,3) ;	
	//时时温度
	LCD_Write_Char(1,6,c/10,2) ;
	write_data('.');
	LCD_Write_Char(1,9,c%10,1) ;
	
	//时时烟雾
	LCD_Write_Char(1,13,temp,3) ;
}
/***********************************************************************************************************
ADC0832相关函数
sbit ADCS 	=P1^5; //ADC0832 片选
sbit ADCLK  =P1^2; //ADC0832 时钟
sbit ADDI 	=P1^3; //ADC0832 数据输入		/*因为单片机的管脚是双向的,且ADC0832的数据输入输出不同时进行,
sbit ADDO 	=P1^3; //ADC0832 数据输出		/*为节省单片机引脚,简化电路所以输入输出连接在同一个引脚上

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

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

相关文章

Redis集群(Cluster)

Redis集群(Cluster) 单台redis容量限制&#xff0c;如何进行扩容&#xff1f;继续加内存、加硬件么&#xff1f;单台redis并发写量太大有性能瓶颈&#xff0c;如何解决&#xff1f;redis3.0中提供了集群可以解决这些问题。 redis集群是对redis的水平扩容&#xff0c;即启动N个…

静态后台管理(9页)

⛵ 源码获取 文末联系 ✈ Web前端开发技术 描述 网页设计题材&#xff0c;DIVCSS 布局制作,HTMLCSS网页设计期末课程大作业 |学生管理系统网页设计 | OA管理系统 | 后台管理模板 | 智能停车系统 | 等网站的设计与制作 | HTML期末大学生网页设计作业&#xff0c;Web大学生网页 H…

C++ Visual Studio 2022 中的改进、行为更改和错误修复

目录 Visual Studio 2022 版本 17.4 中的一致性改进 作用域的基础类型没有固定类型enum 定义中没有固定基础类型的枚举器类型enum Visual Studio 2022 版本 17.3 中的一致性改进 改进了指针之间的修饰符兼容性检查 Visual Studio 2022 版本 17.2 中的一致性改进 未终止的双向…

【分隔结构】定从分离

形式 先行词 其他定语 定语从句先行词 状语 定语从句作主语的先行词 谓语 定语从句 练习一 他们从一部分人来说&#xff0c;是受到了 1998 年才获得的 DNA 证据的启发&#xff0c;这份 DNA 证据&#xff0c;几乎肯定的证明了 Thomas Jefferson 和 他的奴隶 Sally Hemin…

力扣(LeetCode)16. 最接近的三数之和(C++)

双指针 快排使 numsnumsnums 正序。 设置三个指针 iii 指向 numsnumsnums 第一个数&#xff0c;从前往后枚举 nums[i]nums[i]nums[i] &#xff0c; lll 从 nums[i1]nums[i1]nums[i1] 往后&#xff0c;指向第二个数&#xff0c;rrr 从 nums.size()−1nums.size()-1nums.size()…

【博客539】使用openssl手动为k8s集群签发证书

使用openssl手动为k8s集群签发证书 创建ca私钥和ca证书 1、生成ca私钥&#xff1a;生成一个 2048 位的 ca.key 文件 openssl genrsa -out ca.key 2048 2、基于ca私钥&#xff0c;生成根(root)证书&#xff1a;在 ca.key 文件的基础上&#xff0c;生成 ca.crt 文件 openssl re…

[MQ] 交换机与队列的介绍

✨✨个人主页:沫洺的主页 &#x1f4da;&#x1f4da;系列专栏: &#x1f4d6; JavaWeb专栏&#x1f4d6; JavaSE专栏 &#x1f4d6; Java基础专栏&#x1f4d6;vue3专栏 &#x1f4d6;MyBatis专栏&#x1f4d6;Spring专栏&#x1f4d6;SpringMVC专栏&#x1f4d6;SpringBoot专…

[Spring Cloud] Open Feign 使用

✨✨个人主页:沫洺的主页 &#x1f4da;&#x1f4da;系列专栏: &#x1f4d6; JavaWeb专栏&#x1f4d6; JavaSE专栏 &#x1f4d6; Java基础专栏&#x1f4d6;vue3专栏 &#x1f4d6;MyBatis专栏&#x1f4d6;Spring专栏&#x1f4d6;SpringMVC专栏&#x1f4d6;SpringBoot专…

机械设计基础试题3

一、判断题&#xff08;请在后面的括号中&#xff0c;正确的填√&#xff0c;错误的填&#xff09; &#xff08;20分&#xff09; 1. 如果机构的自由度F&#xff1d;2&#xff0c;则机构无确定性运动。 &#xff08; &#xff09; 2. 作相对运动的三个构件的三个瞬心不一定在一…

JavaEE 进阶:Spring 的创建和使用

文章目录前言一、创建 Spring 项⽬1、创建⼀个 Maven 项⽬2、添加 Spring 框架⽀持3、添加启动类二、存储 Bean 对象1、创建 Bean2、将 Bean 注册到容器三、获取并使⽤ Bean 对象1、创建 Spring 上下⽂① ApplicationContextⅠ 注意事项② BeanFactory③ ApplicationContext VS…

【浅学Java】Bean的作用域和生命周期

Bean的作用域和生命周期1. Bean的作用域1.1 什么是Bean的作用域1.2 Bean的6种作用域singleton——单例作用域prototype——多例作用域request——请求作用域session——会话作用域application——全局作用域(了解)websoccket——HTTP WebSocket作用域(了解)1.3 设置作用域2. Be…

计算机毕业设计node.js+vue+Element企业员工信息管理系统

项目介绍 随着Internet的发展,人们的日常生活已经离不开网络。未来人们的生活与工作将变得越来越数字化、网络化和电子化。本文以实际运用为开发背景,运用软件工程原理和开发方法,它主要是采用node框架和node来完成对系统的设计。整个开发过程首先对企业员工管理系统进行需求分…

LVS-NAT模式部署

目录 一、环境准备 1、准备三台centos服务器 2、实验拓扑 3、NAT模式介绍 二、LVS-NAT模式部署 1、给lvs服务器安装LVS 2、新建LVS集群 3、添加Real Server服务器节点 4、开启路由转发 5、给后端web服务器配置网关 6、效果测试 一、环境准备 1、准备三台centos服务器…

ctfhub-web-warmup

打开题目链接 是一张图 查看源代码 提示source.php 访问这个文件 得到源码 <?phphighlight_file(__FILE__);class emmm{public static function checkFile(&$page){$whitelist ["source">"source.php","hint">"hint.php…

Java毕业设计项目_企业级实战全栈项目中信CRM

【教程、代码】文章底部 1.学习目标视频教程目录【教程、代码】文章底部2.CRM 系统概念与项目开发流程2.1. CRM基本概念 圈内存在这么一句话&#xff1a;“世上本来没有CRM&#xff0c;大家的生意越来越难做了&#xff0c;才有了CRM。”在同质化竞争时代&#xff0c;顾客资产尤…

[附源码]java毕业设计社区医院管理系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

RabbitMQ初步到精通-第六章-RabbitMQ之死信队列

目录 第六章-RabbitMQ之死信队列 1. 死信概念 2. 死信架构 3. 死信来源 3.1 消息 TTL 过期 3.2 队列达到最大长度&#xff08;队列满了&#xff0c;无法再添加数据到 mq 中&#xff09; 3.3 消息被拒绝&#xff08;basic.reject 或 basic.nack&#xff09;并且 requeuefa…

基于stm32单片机的智能恒温箱游泳池

资料编号&#xff1a;104 下面是相关功能视频演示&#xff1a; 104-基于stm32单片机的智能恒温箱游泳池控制系统Proteus仿真&#xff08;源码仿真全套资料&#xff09;功能介绍&#xff1a; 采用stm32单片机&#xff0c;程序可以设置最高值和最低值&#xff0c;当温度超过最高…

[笔记]vue从入门到入坟《五》vue-cli构建vue webpack项目

参考&#xff1a; 用vue-cli搭建vue项目 vue-cli 项目结构目录简介 文章目录前言一、Vue-cli介绍二、开始2.0 下载安装npm 以及gitnpm安装git安装2.1 全局安装 vue-cli2.2 创建项目目录介绍三、常见问题总结前言 一、Vue-cli介绍 官网 简单地说就是构建vue项目的工具包&#…

SpringBoot SpringBoot 开发实用篇 5 整合第三方技术 5.1 缓存的作用

SpringBoot 【黑马程序员SpringBoot2全套视频教程&#xff0c;springboot零基础到项目实战&#xff08;spring boot2完整版&#xff09;】 SpringBoot 开发实用篇 文章目录SpringBootSpringBoot 开发实用篇5 整合第三方技术5.1 缓存的作用5.1.1 缓存介绍5.1.2 小结5 整合第三…