基于51单片机烟雾报警器数码管显示( proteus仿真+程序+设计报告+讲解视频)

news2024/11/18 9:45:08

基于51单片机烟雾报警器数码管显示( proteus仿真+程序+设计报告+讲解视频)

仿真图proteus7.8及以上

程序编译器:keil 4/keil 5

编程语言:C语言

设计编号:S0067

1. 主要功能:

基于51单片机的烟雾报警器proteus仿真设计

1.LED数码管显示烟雾报警值和检测到的烟雾值;

2.可以通过按键调整烟雾报警浓度值;

3.烟雾浓度低于报警值工作指示灯绿灯亮。

烟雾浓度高于阈值蜂鸣器报警,工作指示灯红灯亮;

4.通过ADC0832采集滑动变阻器模拟MQ-2电压变化。

需注意仿真中51单片机芯片是兼容的,AT89C51,AT89C52是51单片机的具体型号,内核是一样的。相同的原理图里,无论stc还是at都一样,引脚功能都是一样的,程序是兼容的,芯片可以替换为STC89C52/STC89C51/AT89C52/AT89C51等51单片机芯片。

2. 讲解视频:

讲解视频包含仿真运行讲解和代码讲解

3. 仿真

打开仿真工程,双击proteus中的单片机,选择hex文件路径,然后开始仿真。

imgimgimg

4. 程序代码

使用keil4或者keil5编译,代码有注释,可以结合报告理解代码含义。

img

完整代码见文章下载链接
#include "reg51.h"
#include "intrins.h"
sbit CLK=	P1^1;//时钟,初始状态为0
sbit DI=	P1^2;//数据输入
sbit DO=	P1^3; // 数据输出
sbit CS=	P1^0;
sbit LED_RED=P3^4;	 //红灯
sbit LED_GREEN=P3^5; //绿灯
sbit beep=P3^0;//蜂鸣器
unsigned char code smgduan[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
unsigned int num=0;//烟雾
unsigned int limit=1500;//阀值
unsigned char beepflag;
unsigned int cnt=0;
/*********************************************
读取ADC
**********************************************/
unsigned char ADC()//通道ch0
{
	unsigned char temp0,temp1,i;
	CS=0;
	temp0=0;
	temp1=0;
	_nop_();
	_nop_();
	DI=1;//开始位
	_nop_();
	_nop_();
	CLK=1;
	_nop_();
	_nop_();
	CLK=0;
	_nop_();
	_nop_();
	DI=0;
	_nop_();
	_nop_();
//选择通道0
	DI=1;
	_nop_();
	CLK=1;//上升沿DI=1
	_nop_();
	CLK=0;//1个下降沿DI=1
	_nop_();
	DI=0;
	_nop_();
	CLK=1;
	_nop_();
	CLK=0;//第3个上升沿DI=0
	_nop_();
 	DI=1;
//********通道选择结束开始读取转换后的二进制数****
//下降沿读数,一下进行判断和处理,共8次
for(i=0;i<8;i++)
   {
	temp0=temp0<<1;
	CLK=1;
    if(DO)
   	temp0++;
   	_nop_();
   	CLK=0;
   }
for(i=0;i<8;i++)
   {
	temp1=temp1>>1;
	CLK=1;
    if(DO)
   	temp1=temp1 +0x80;
   	_nop_();
   	CLK=0;
   }
	 CS=1;
   return temp0;
}
void delay(unsigned int i)//延时
{
	while(i--);
}

void main()
{


	TMOD|=0X01;
	TH0=0X3C;
	TL0=0XB0;	
	EX0=1;//打开外部中断0
	EX1=1;//打开外部中断1
	IT0=1;//下降沿触发
	IT1=1;//下降沿触发
	ET0=1;//打开定时器0中断允许
	EA=1;//打开总中断
	TR0=1;//打开定时器
	beepflag = 0;
	while(1)
	{
		P0=smgduan[num/1000];//显示烟雾度
		P2=0xfe;
		delay(100);
		P2=0xff;
		P0=smgduan[num%1000/100];//显示烟雾度
		P2=0xfd;
		delay(100);
		P2=0xff;
		P0=smgduan[num%100/10];//显示烟雾度
//		 	P0 =P0|0x80; //加小数点
		P2=0xfb;
		delay(100);
		P2=0xff;
		P0=smgduan[num%10];//显示烟雾度
		P2=0xf7;
		delay(100);
		P2=0xff;
		P0=smgduan[limit/1000];//显示烟雾度阀值
		P2=0xef;
		delay(100);
		P2=0xff;							 
		P0=smgduan[limit%1000/100];//显示烟雾度阀值
		P2=0xdf;
		delay(100);
		P2=0xff;
		P0=smgduan[limit%100/10];//显示烟雾度阀值
		P2=0xbf;
		delay(100);
		P2=0xff;
		P0=smgduan[limit%10];//显示烟雾度阀值
		P2=0x7f;
		delay(100);
		P2=0xff;  
	}
}
void Timer0() interrupt 1//定时器中断
{
	TH0=0X3C; //50ms中断
	TL0=0XB0;
	if(cnt==20){//1秒一次
		cnt = 0;
//		if(num>limit){//报警
//			if(beepflag<10)beepflag++;//10秒计数
//		}else{
//			beep=1;
//			beepflag = 0;
//		}
//		
//		if(beepflag<10&&num>limit*10){//响10秒
//			beep=0;
//		}else{
//			beep=1;
//		}
		if(num>limit){//报警
			 beep=0;
			 LED_RED=0;	 //红色报警灯 亮
			 LED_GREEN=1;  //绿色报警灯 灭
		}else{
			 beep=1;
			 LED_RED=1;	    //红色报警灯  灭
			 LED_GREEN=0;  //绿色报警灯  亮
		}
	}	
	cnt++;


}	

void jia() interrupt 0//按键 外部中断0处理函数
{
    if(limit<2500)
        limit=limit+10;
    else
        limit=0;
}
void jian() interrupt 2//按键 外部中断1处理函数
{
    if(limit>0)
        limit=limit-10;
    else
        limit=2500;
}

5. 设计报告

4947字设计报告,内容包括硬件设计、软件设计、软硬件框图、调试、结论等

img

6. 设计资料内容清单&&下载链接

资料设计资料包括仿真,程序代码、讲解视频、功能要求、设计报告、软硬件设计框图等。

0、常见使用问题及解决方法–必读!!!!

1、仿真图

2、程序源码

3、功能要求

4、开题报告

5、设计报告

6、软硬件流程框图

7、讲解视频

Altium Designer 安装破解

KEIL+proteus 单片机仿真设计教程

KEIL安装破解

Proteus元器件查找

Proteus安装

Proteus简易使用教程

单片机学习资料

相关数据手册

答辩技巧

设计报告常用描述

鼠标双击打开查找嘉盛单片机51 STM32单片机课程毕业设计.url

img

资料下载链接(可点击):

https://docs.qq.com/doc/DS1VFWmlRSVRCR3Rl

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

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

相关文章

AxureCloud配置文件详细介绍

AxureCloud配置文件详细介绍 原文地址&#xff1a;https://docs.axure.com/axure-cloud/business/custom-settings-json/ 通过修改 customsettings.json 可以修改AxureCloud私有部署的域名、端口、HTTPS、存储目录、是否开启插件等, 默认安装的路径为: C:\Program Files\Axure…

milvus Upsert api数据结构源码分析

Upsert api数据结构 该方法将实体更新插入到 Milvus 中。如果集合中已存在指定字段&#xff0c;则该操作将覆盖现有实体&#xff1b;如果指定值尚不存在&#xff0c;则插入新实体。 实现:先insert再delete&#xff0c;并限制不能修改主键列。 限制:主键的autoid必须是false。…

【JS逆向学习】猿人学 第三题 罗生门

逆向目标 网址&#xff1a; 目标&#xff1a;session请求 逆向分析 首先分析网络请求&#xff0c;我们发现每次的翻页请求都会有一个jssm请求 从启动器进去跟栈进去 现在观察一下cookie是否有变化&#xff0c;经观察没有发生变化&#xff0c;参数也没有加密&#xff0c;所…

Python打发无聊时光:10.用flask创造按键控制的网页小游戏

第一步&#xff1a;装flask库 在终端输入: pip install flask 第二步&#xff1a;完整代码 为了方便大家移植&#xff0c;我将HTML、CSS和JavaScript直接嵌到一个py文件中。 from flask import Flask, render_template_stringapp Flask(__name__)app.route(/) def game()…

智能水表预付费管理系统

智能水表预付费管理系统是当前智能水表技术的重要应用之一&#xff0c;结合了智能化管理和预付费功能&#xff0c;为水务公司和用户提供了便捷、高效的用水管理解决方案。该系统利用先进的科技手段&#xff0c;实现了水表抄表、计费和管理的自动化&#xff0c;为用户带来更便捷…

如何删除右键菜单中的WPS与百度网盘

WPS 打开"开始菜单" &#xff0c;搜索WPS&#xff0c;打开文件位置双击 WPS Office 工具选择配置工具 百度网盘 同时按住 Win键 和 R键 在运行中输入 regedit 打开注册表 复制粘贴&#xff0c;转到下面两个文件&#xff0c;直接删除即可 计算机\HKEY_CLASSES…

nginx实现http反向代理及负载均衡

目录 一、代理概述 1、代理概念 1.1 正向代理&#xff08;Forward Proxy&#xff09; 1.2 反向代理&#xff08;Reverse Proxy&#xff09; 1.3 正向代理与反向代理的区别 2、同构代理与异构代理 2.1 同构代理 2.2 异构代理 2.3 同构代理与异构代理的区别 二、四层代…

设计模式(五)-观察者模式

前言 实际业务开发过程中&#xff0c;业务逻辑可能非常复杂&#xff0c;核心业务 N 个子业务。如果都放到一块儿去做&#xff0c;代码可能会很长&#xff0c;耦合度不断攀升&#xff0c;维护起来也麻烦&#xff0c;甚至头疼。还有一些业务场景不需要在一次请求中同步完成&…

计讯物联5G RedCap网关TG463化繁为简,推动5G赋能千行百业

5G RedCap&#xff0c;全称为Reduced Capability&#xff0c;即在5G的基础上&#xff0c;对部分功能进行化繁为简后形成的新技术标准&#xff0c;故又称轻量化5G。作为高性价比下的精简技术&#xff0c;5G RedCap技术具备成本低、低功耗、兼顾5G等特点&#xff0c;能够在确保应…

小程序--组件通信

一、父传子 与vue利用props类似&#xff0c;小程序是利用自定义属性&#xff1a;properties // components/my-nav/my-nav.js Component({// 小程序组件默认样式是隔离&#xff0c;addGlobalClass设置为true可允许外部修改样式options: {addGlobalClass: true,// 只要使用到具…

express+mysql+vue,从零搭建一个商城管理系统4--mysql数据库链接

提示&#xff1a;学习express&#xff0c;搭建管理系统 文章目录 前言一、创建express_service数据库二、安装mysql三、新建config文件夹四、新建config/db.js五、index.js引入db.js文件六、启动项目预览总结 前言 需求&#xff1a;主要学习express&#xff0c;所以先写service…

MarkDown实用技巧:MarkDown中如何实现换行?

MarkDown实用技巧&#xff1a;MarkDown中如何实现换行&#xff1f; &#x1f308; 个人主页&#xff1a;高斯小哥 &#x1f525; 高质量专栏&#xff1a;Matplotlib之旅&#xff1a;零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教程 &#x1f448; 希望…

YOLOv8改进 | 独家创新篇 | 结合SOTA思想利用双主干网络改进YOLOv8(全网独家创新,最重磅的更新)

一、本文介绍 本文给大家带来的改进机制是结合目前SOTAYOLOv9的思想利用双主干网络来改进YOLOv8(本专栏目前发布以来改进最大的内容,同时本文内容为我个人一手整理全网独家首发 | 就连V9官方不支持的模型宽度和深度修改我都均已提供,本文内容支持YOLOv8全系列模型从n到x均可…

达梦数据库把日志数据按天统计不同状态的数据,实现字段行转列与根据id分组

1、这是日志表记录的数据&#xff0c;现在需要统计出每个app_id各个警告类型alarm_type的总数 2、先实现行转列&#xff0c;把三个alarm_type值转成列字段 SQL select app_id,count(CASE WHEN alarm_typeconcurrency THEN 1 ELSE null END) AS currentCount,count(CASE WHEN …

嵌入式学习第二十二天!(继续学习线程)

线程相关函数接口&#xff1a; 1. 线程分离属性&#xff1a; 线程结束后&#xff0c;自动回收线程空间 1. pthread_attr_init&#xff1a; int pthread_attr_init(pthread_attr_t *attr); 功能&#xff1a;线程属性初始化 2. pthread_attr_destroy&#xff1a; int pthread_…

【Linux】进程优先级以及Linux内核进程调度队列的简要介绍

进程优先级 基本概念查看系统进程修改进程的优先级Linux2.6内核进程调度队列的简要介绍和进程优先级有关的概念进程切换 基本概念 为什么会存在进程优先级&#xff1f;   进程优先级用于确定在资源竞争的情况下&#xff0c;哪个进程将被操作系统调度为下一个运行的进程。进程…

MFC 皮肤库配置

1.创建MFC 对话框 2.添加皮肤资源 添加资源 添加头文件 关闭SDL检测 添加静态库文件 修改字符集 添加头文件 将皮肤中的ssk文件加载到初始化实例中 > 运行即可

十三、Qt多线程与线程安全

一、多线程程序 QThread类提供了管理线程的方法&#xff1a;一个对象管理一个线程一般从QThread继承一个自定义类&#xff0c;重载run函数 1、实现程序 &#xff08;1&#xff09;创建项目&#xff0c;基于QDialog &#xff08;2&#xff09;添加类&#xff0c;修改基于QThr…

计算机网络-网络互连和互联网(四)

1.TCP协议&#xff1a; 传输控制协议&#xff0c;面向字节流按顺序连接&#xff0c;可靠&#xff0c;全双工&#xff0c;可变滑动窗口&#xff0c;缓冲累积传送。协议号为6。下面是TCP段&#xff08;段头&#xff09;&#xff0c;TCP头&#xff08;传输头&#xff09;&#xf…

数学建模【神经网络】

一、神经网络简介 机器学习与神经网络 机器学习是一类实现人工智能的方法总称&#xff0c;让计算机模拟或实现人类的学习行为神经网络是实现机器学习的一种模型实现机器学习的模型还有支持向量机&#xff0c;决策树&#xff0c;朴素贝叶斯分类器等 神经网络能用来做什么 已…