【毕业设计】30-基于单片机矿井瓦斯_气体浓度_烟雾浓度报警设计(原理图+源代码+仿真+答辩论文+答辩PPT)

news/2024/3/28 22:12:53/文章来源:https://blog.csdn.net/qq_22592979/article/details/128090930

【毕业设计】30-基于单片机矿井瓦斯/气体浓度/烟雾浓度报警设计(原理图+源代码+仿真+答辩论文+答辩PPT)

文章目录

  • 【毕业设计】30-基于单片机矿井瓦斯/气体浓度/烟雾浓度报警设计(原理图+源代码+仿真+答辩论文+答辩PPT)
    • 任务书
    • 设计说明书
      • 摘要
      • 设计框架架构
      • 设计说明书及设计文件
      • 源码展示

任务书

研究内容:
瓦斯等可燃危险气体的浓度检测是保证煤矿安全生产的重要前提。利用单片机智能控制技术设计一种瓦斯检测系统对矿井瓦斯浓度自动进行实时监测,并在超过安全值时报警。
研究方法:
本次矿井瓦斯浓度检测系统设计以单片机为控制核心,由气体传感器电路、显示电路、报警电路等电路模块组成硬件电路,编制相关控制软件,实现矿井瓦斯气体的浓度进行实时监测,并在超过安全值时报警。
要求:
1、对矿井瓦斯浓度检测系统进行系统结构总体设计;
2、设计瓦斯浓度检测系统的硬件电路;
3、编写瓦斯浓度检测的软件实现程序,并对电路进行仿真研究。
资料链接
1.原理图
2.仿真工程
3.源代码
4.原理图截图
5.仿真截图
6.答辩论文
7.答辩PPT

设计说明书

摘要

本设计第一章主要讲述了矿井瓦斯气体浓度检测系统设计的现状、通过对于目前社会中使用的气体检测系统的使用调查、功能介绍、以及对于当前气体检测的看法、气体使用过程中遇到的问题。针对与目前对于气体检测系统的使用场景分析。第二章主要讲述了矿井瓦斯气体浓度检测系统设计的设计与实现方案分析,是否可以满足目前设计的要求,根据设计要求来对元器件选型,驱动电路选择。绘制出大概的设计框架。第三章主要讲述了矿井瓦斯气体浓度检测系统设计的硬件设计,分别对单片机的最小系统;按键模块、报警模块、LCD1602显示模块、蜂鸣器模块、ADC采集模块、LED显示模块电路原理讲解、析,最后并对整个电路进行了总结。第四章主要讲述了矿井瓦斯气体浓度检测系统设计的软件设计,编程软件Keil进行了详细的介绍,编写单个模块的程序流程,通过流程图来对程序编写,按键模块、报警模块、LCD1602显示模块、蜂鸣器模块、ADC采集模块、LED显示模块程序。第五章主要讲述了矿井瓦斯气体浓度检测系统设计的仿真实现,通过Proteus软件对系统仿真,并验证所设计的功能是否满足要求。

设计框架架构

在这里插入图片描述前 言 1
第一章 绪论 2
第一节 研究背景 2
第二节 研究意义 3
第三节 研究现状 3
第四节 本文的主要研究内容 4
第五节 本章小结 4
第二章 矿井瓦斯气体浓度检测系统设计方案分析 6
第一节 气体传感器介绍 6
一、气体传感器原理 6
二、气体传感器分类 6
第二节 系统设计方案需求 7
第三节 系统结构总框图 8
第四节 本章小结 9
第三章 矿井瓦斯气体浓度检测系统设计硬件电路设计 10
第一节 单片机最小系统模块设计 10
一、单片机的简介 10
二、复位电路设计 11
三、晶振电路设计 11
第二节 气体传感器电路设计 12
第三节 按键电路设计 13
第四节 LED显示电路设计 13
第五节 LCD液晶显示电路设计 14
第六节 蜂鸣器报警电路设计 15
第七节 系统总电路图 16
第八节 本章小结 16
第四章 矿井瓦斯气体浓度检测系统设计的软件设计 18
第一节 Keil软件介绍 18
第二节 软件总设计 18
第三节 按键模块程序设计 19
第四节 LED显示及蜂鸣器模块程序设计 20
第五节 LCD液晶显示模块程序设计 21
第六节 气体传感器模块程序设计 22
第七节 本章小结 23
第五章 瓦斯气体浓度检测系统的仿真 24
第一节 仿真软件介绍 24
第二节 功能仿真并分析 24
一、仿真总电路 24
二、系统功能仿真 25
第三节 本章小结 30
结 论 32
致 谢 33
参考文献 34
附 录 36
一、英文原文 36
二、英文翻译 38
三、工程图纸 40
四、源程序 41

设计说明书及设计文件

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

源码展示

在这里插入图片描述

#include <reg52.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义
#include "intrins.h"											   
#define     u8  			unsigned char
#define     u16   		unsigned int
#define     uchar  			unsigned char
#define     uint   		unsigned int
uchar yushe_yanwu=100;				//瓦斯预设值
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_yanwu,temp)
{//显示预设温度//显示预设瓦斯LCD_Write_Char(0,13,yushe_yanwu,3) ;//时时瓦斯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 数据输出		/*为节省单片机引脚,简化电路所以输入输出连接在同一个引脚上
//========================================================================
// 函数: unsigned int Adc0832(unsigned char channel)
// 应用: 		temp=Adc0832(0);
// 描述: 读取0通道的AD值
// 参数: channel:通道0和通道1选择
// 返回: 选取通道的AD值
// 版本: VER1.0
// 日期: 2015-05-29
// 备注: 
//========================================================================
unsigned int Adc0832(unsigned char channel)
{uchar i=0;uchar j;uint dat=0;uchar ndat=0;uchar  Vot=0;if(channel==0)channel=2;if(channel==1)channel=3;ADDI=1;_nop_();_nop_();ADCS=0;//拉低CS端_nop_();_nop_();ADCLK=1;//拉高CLK端_nop_();_nop_();ADCLK=0;//拉低CLK端,形成下降沿1_nop_();_nop_();ADCLK=1;//拉高CLK端ADDI=channel&0x1;_nop_();_nop_();ADCLK=0;//拉低CLK端,形成下降沿2_nop_();_nop_();ADCLK=1;//拉高CLK端ADDI=(channel>>1)&0x1;_nop_();_nop_();ADCLK=0;//拉低CLK端,形成下降沿3ADDI=1;//控制命令结束_nop_();_nop_();dat=0;for(i=0;i<8;i++){dat|=ADDO;//收数据ADCLK=1;_nop_();_nop_();ADCLK=0;//形成一次时钟脉冲_nop_();_nop_();dat<<=1;if(i==7)dat|=ADDO;}for(i=0;i<8;i++){j=0;j=j|ADDO;//收数据ADCLK=1;_nop_();_nop_();ADCLK=0;//形成一次时钟脉冲_nop_();_nop_();j=j<<7;ndat=ndat|j;if(i<7)ndat>>=1;}ADCS=1;//拉低CS端ADCLK=0;//拉低CLK端ADDO=1;//拉高数据端,回到初始状态dat<<=8;dat|=ndat;return(dat);            //return ad data
}

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

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

相关文章

网络套接字编程(UDP协议)

文章目录预备知识socket&#xff08;网络套接字&#xff09;编程接口简单的UDP网络程序增加多用户可以互相通信预备知识 网络字节序 大端存储&#xff1a;数据的高字节内容保存在内存的低地址处&#xff0c;数据的低字节内容保存在内存的高地址处 小端存储&#xff1a;数据的高…

global关键字、python实现ATM简单功能

目录 一.局部变量、全局变量 二.global关键字 演示 三.编写ATM程序 要求 详细步骤 存在问题 改进 完整代码 一.局部变量、全局变量 1.什么是局部变量 作用范围在函数内部&#xff0c;在函数外部无法使用 2.什么是全局变量 在函数内部和外部均可使用 3.如何将函数内定…

[附源码]SSM计算机毕业设计校园自行车租售管理系统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…

高等数学(第七版)同济大学 习题10-3 (前9题)个人解答

高等数学&#xff08;第七版&#xff09;同济大学 习题10-3&#xff08;前9题&#xff09; 函数作图软件&#xff1a;Mathematica 1.化三重积分I∭Ωf(x,y,z)dxdydz为三次积分&#xff0c;其中积分区域Ω分别是\begin{aligned}&1. \ 化三重积分I\iiint_{\Omega}f(x, \ y, …

【C++】类型转换

目录 一、C语言风格类型转换 二、C风格类型转换 1.static_case 2.reinterpret_case 3、const_case 4、dynamic_case 三、RTTI 总结 一、C语言风格类型转换 在C语言中&#xff0c;如果赋值运算符左右两侧类型不同&#xff0c;或者形参与实参类型不匹配&#xff0c;或者返…

【正点原子FPGA连载】 第二十章 LCD触摸屏实验摘自【正点原子】DFZU2EG/4EV MPSoC 之FPGA开发指南V1.0

1&#xff09;实验平台&#xff1a;正点原子MPSoC开发板 2&#xff09;平台购买地址&#xff1a;https://detail.tmall.com/item.htm?id692450874670 3&#xff09;全套实验源码手册视频下载地址&#xff1a; http://www.openedv.com/thread-340252-1-1.html 第二十章 LCD触摸…

Vue.js 加入高德地图的实现方法

一、功能需求 1.根据输入内容进行模糊查询&#xff0c;选择地址后在地图上插上标记&#xff0c;并更新经纬度坐标显示 2.在地图点击后&#xff0c;根据回传的左边更新地址信息和坐标显示 二、准备 1.申请高德地图账号&#xff0c;创建应用 2.在应用管理中 获得key 和安全密…

[附源码]Python计算机毕业设计Django常见Web漏洞对应POC应用系统

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

Python学习:json对象与string相互转换教程

首先要明确&#xff0c;python里有json这个库&#xff0c;但并没有json这个类&#xff0c;所以所谓的json对象本质上就是一个dict&#xff1b;而json这个库&#xff0c;用于实现dict到string、string到dict的互转。 更具体一点&#xff0c;json对象&#xff08;dict&#xff0…

Linux网络编程——IO多路复用

文章目录1&#xff0c;I/O模型2&#xff0c;阻塞I/O 模式2.1&#xff0c;读阻塞&#xff08;以read函数为例&#xff09;2.2&#xff0c;写阻塞3&#xff0c;非阻塞I/O模式3.1&#xff0c;非阻塞I/O模式的实现&#xff08;fcntl()函数、ioctl() 函数&#xff09;3.1.1&#xff…

leetcode 343. 整数拆分(动态规划)

题目链接&#xff1a;343. 整数拆分 动态规划 (1) 确定 dpdpdp 数组下标含义&#xff1a; dp[i]dp[i]dp[i]: 将 iii 拆分为至少两个正整数之后的最大乘积&#xff1b; (2) 确定递推公式&#xff1a; 当 i≥2i \ge 2i≥2 时, 设 jjj 是 iii 拆分出来的第一个正整数&#xff0c…

关于uni-app小程序接入微信登录

https://uniapp.dcloud.net.cn/api/plugins/login.html#login 官网上有关于uni.login()的说明&#xff0c;如果是要微信登录&#xff0c;则需要wx.login()。 小程序登录 | 微信开放文档 如下图&#xff0c;在小程序管理平台生成AppSecret&#xff0c;同时将AppId在HubilderX中…

swift @State @Published @ObservedObject sink

State struct ContentView: View {State private var isRain truevar body: some View {VStack {Image(systemName: isRain ? "cloud.rain.fill" : "sun.max.fill").resizable().frame(width: 100, height: 100)Text(isRain ? "我們淋著大雨不知何…

【PS-7】移动工具

目录 移动工具快捷键【v】&#xff08;英文状态&#xff09; 多文件间拖拽图层对象 快捷键【ALT】复制图层 【ALTSHIFT】只能垂直/水平/45角地去复制图层 4个方向键可以微调图层的位置 变换控件 对齐分布 【题外话】设置参考线颜色 【题外话】快捷键【F12】让已经动过…

实验三-----数据库

一、实验目的 1.掌握SQL Server Management Studio中SQL 查询操作&#xff1b; 2.掌握SQL 的单表查询命令&#xff1b; 3.掌握SQL 的连接查询操作&#xff1b; 4.掌握SQL 的嵌套查询操作&#xff1b; 5.掌握SQL 的集合查询操作。 二、实验环境 1&#xff0e;实验室名称&…

[附源码]计算机毕业设计springboot海南琼旅旅游网

项目运行 环境配置&#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…

前端单元测试,更进一步

前端测试2022 如果从 2014 年 Jest 的第一个版本发布开始计算&#xff0c;前端开发领域工程化的单元测试能力已经发展了八年有余。Jest 集成了 Jasmine 等以往各种被证明有效的单元测试框架和断言等工具&#xff0c;也可以用来完成包含外部接口服务的集成测试等。最近几年热门的…

xxl-job安装部署

一、简介 XXL-JOB是一个分布式任务调度平台&#xff0c;其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线&#xff0c;开箱即用。 中文文档English Documentation 二、安装 xxl-job需要的提前安装好以下环境&#xff1a;jdk、m…

INTERSPEECH 2022|CALM: 基于对比学习的表现力语音合成跨模态说话风格建模【语音之家】

本文由清华大学与腾讯科技有限公司和香港中文大学合作&#xff0c;并 在腾讯公司落地应用 。 说话风格建模对于表现力语音合成具有重要作用。 现有基于参考音频提取风格表征的方法通常利用文本的语义相似度进行参考音频选择&#xff0c;忽略了语义信息和说话风格的差异性。 本文…

大厂都在用MyBatis,跳槽的时候MyBatis更是面试必问的内容,那你对于MyBatis又掌握了多少呢?这份MyBatis源码解析值得拥有!

MyBatis作为一个流行的半自动ORM框架&#xff0c;里面融合了许多优秀的设计理念&#xff0c;分析其源码骨架能够帮你建立良好的项目设计经验。由于其比较复杂&#xff0c;我会分成几篇来讲&#xff0c;一起踏上征服的旅程吧&#xff01; 首先把MyBatis源码包导入到idea&#x…