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


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

    完成事项

    详情请私信!
    原理图工程文件
    原理图截图
    仿真工程文件
    源代码
    仿真截图
    答辩论文,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  //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义
    #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;i0;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 数据输出		/*为节省单片机引脚,简化电路所以输入输出连接在同一个引脚上
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106
    • 107
    • 108
    • 109
    • 110
    • 111
    • 112
    • 113
    • 114
    • 115
    • 116
    • 117
    • 118
    • 119
    • 120
    • 121
    • 122
    • 123
    • 124
    • 125
    • 126
    • 127
    • 128
    • 129
    • 130
    • 131
    • 132
    • 133
    • 134
    • 135
    • 136
    • 137
    • 138
    • 139
    • 140
    • 141
    • 142
    • 143
    • 144
    • 145
    • 146
    • 147
    • 148
    • 149
    • 150
    • 151
    • 152
    • 153
    • 154
    • 155
    • 156
    • 157
    • 158
    • 159
    • 160
    • 161
    • 162
    • 163
    • 164
    • 165
    • 166
    • 167
    • 168
    • 169
    • 170
    • 171
    • 172
  • 相关阅读:
    稳健更要合规,开利网络受邀参与深度服务客户合创健康项目上线发布会
    审计日志功能实现优化及测试记录(参照若依系统,以dolphinscheduler 2.0.5 为例,实现相关功能)
    Android字体大小dp,sp,px系统设置字体大小变化表现
    Angular安全专辑之四 —— 避免服务端可能的资源耗尽(NodeJS)
    易基因|TSD物种全基因组DNA甲基化模式对孵育性别和过去孵育温度的响应 | 性别决定
    YOLOv7+姿态估计Pose+tensort部署加速
    【多线程的线程安全问题(常见的四种线程安全问题)】【两种解决:synchronized、volatile】
    基础知识-super与继承方法详解
    【湖科大教书匠】计算机网络随堂笔记第6章(计算机网络应用层)
    PostgreSQL常用命令使用
  • 原文地址:https://blog.csdn.net/weixin_42341109/article/details/127946610