当前位置: 首页 > news >正文

仿真设计|基于51单片机的温度与烟雾报警系统

目录

具体实现功能

设计介绍

51单片机简介

资料内容

仿真实现(protues8.7)

程序(Keil5)

全部内容

资料获取


具体实现功能

(1)LCD1602实时监测及显示温度值和烟雾浓度值;
(2)可通过三个按键设置烟雾报警值和温度报警值;
(3)可实现手动紧急报警和手动取消报警功能;
(4)温度或烟雾超过阈值时,蜂鸣器响,黄灯亮;
(5)烟物测量范围:0—9等级;温度测量范围:0—99℃。

仿真演示视频:

50-基于51单片机的温度与烟雾报警系统-仿真视频

设计介绍

51单片机简介

51单片是一种低功耗、高性能CMOS-8位微控制器,拥有灵巧的8位CPU和可编程Flash,使得51单片机为众多嵌入式控制应用系统提供灵活、高效的解决方案。

本设计所使用的芯片可兼容以下所有的51系列单片机(包括AT系列和STC系列)。

资料内容

仿真实现(protues8.7)

本设计利用protues8.7软件实现仿真设计,具体如图。

程序(Keil5)

本设计利用KEIL5软件实现程序设计。

主函数如下:

///
void main (void)
{u8 key;u8 SmokeFlag = false;u8 TempFlag = false;u8 IntrudeFlag = false;wendu=check_wendu();		  //初始化时调用温度读取函数 防止开机85°CInit1602();			  				//调用初始化显示函数LCD_Write_String(0,0,"SET T:00   E:000");  //开机界面LCD_Write_String(1,0,"NOW T:00   E:000");  delay_ms(1000);wendu=check_wendu();		  //初始化时调用温度读取函数 防止开机85°CMode=0;while (1)        					//主循环{	key=Key_Scan();					//按键扫描yanwu=Get_ADC0832();				//读取烟雾值yanwu=yanwu/25;					// 缩小CO检测结果(在0-99)if(yanwu>99){yanwu=99;}wendu=check_wendu();	  //读取温度值if(Key1==0){delay_ms(10);//去抖动if(Key1==0){Mode++;}while(!Key1);}switch(Mode)						//判断模式的值{case 0:								//监控模式{write_com(0x38);//屏幕初始化write_com(0x0c);//打开显示 无光标 无光标闪烁Display_1602(yushe_wendu,yushe_yanwu,wendu,yanwu);  //显示预设温度,预设烟雾,温度值,烟雾值if((yanwu>=yushe_yanwu)||(wendu>=(yushe_wendu*10) && wendu<=800))	  //烟雾值或温度值大于等于预设值时{Buzzer=0;			  		//蜂鸣器报警}else					  					//烟雾值小于预设值时{Buzzer=1;			  		 //蜂鸣器报警}break;	}case 1://预设温度模式{SelectPosition(0,7) ;					//指定位置write_com(0x0d);							//阴影闪烁if(key==KEY_ADD)							//加键按下{yushe_wendu++;					    //预设温度值(阀值)加1if(yushe_wendu>=99)			 		//当阀值加到大于等于99时yushe_wendu=99;					 		//阀值固定为99LCD_Write_Char(0,6,yushe_wendu,2) ;//显示预设温度}if(key==KEY_MINUS)				 		//减键按下{if(yushe_wendu<=1)					//当温度上限值减小到1时yushe_wendu=1;          		//固定为1yushe_wendu--;							//预设温度值减一,最小为0LCD_Write_Char(0,6,yushe_wendu,2) ;//显示预设温度}break;			  								//执行后跳出switch}case 2:				//预设烟雾模式{SelectPosition(0,15) ;				//指定位置	write_com(0x0d);							//打开显示 无光标 光标闪烁if(key==KEY_ADD)							//加键按下{if(yushe_yanwu>=255)        //当阀值加到大于等于255时yushe_yanwu=254;            //阀值固定为254yushe_yanwu++;					    //预设烟雾值(阀值)加1,最大为255LCD_Write_Char(0,13,yushe_yanwu,3) ;//显示预设烟雾}if(key==KEY_MINUS)						//减键按下{if(yushe_yanwu<=1)					//当烟雾上限值减小到1时yushe_yanwu=1;          	//固定为1yushe_yanwu--;							//预设温度值减一,最小为0	  LCD_Write_Char(0,13,yushe_yanwu,3) ;//显示预设烟雾}break;}default	:	{write_com(0x38);//屏幕初始化write_com(0x0c);//打开显示 无光标 无光标闪烁Mode=0;			//恢复正常模式break;}}if(s1==0)//手动启动火灾报警{Buzzer=0;}}
} 

程序运行结果如图:

全部内容

全部资料包括程序(keil5)、protues仿真(protues8.7)、开发资料、资料使用介绍、仿真视频、程序讲解视频、仿真讲解视频、最小系统介绍视频等。

资料获取

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

http://www.lryc.cn/news/529537.html

相关文章:

  • 文件读写操作
  • 【后端开发】字节跳动青训营Cloudwego脚手架
  • SQL UCASE() 函数详解
  • 99.23 金融难点通俗解释:小卖部经营比喻PPI(生产者物价指数)vsCPI(消费者物价指数)
  • 【Elasticsearch】match_bool_prefix 查询 vs match_phrase_prefix 查询
  • H. Mad City
  • 【图床配置】PicGO+Gitee方案
  • 《程序人生》工作2年感悟
  • 当当网近30日热销图书的数据采集与可视化分析(scrapy+openpyxl+matplotlib)
  • unity学习25:用 transform 进行旋转和移动,简单的太阳地球月亮模型,以及父子级关系
  • 【项目集成Husky】
  • 基于Spring Security 6的OAuth2 系列之七 - 授权服务器--自定义数据库客户端信息
  • 【Matlab高端绘图SCI绘图模板】第006期 对比绘柱状图 (只需替换数据)
  • Java 大视界 -- Java 大数据在生物信息学中的应用与挑战(67)
  • .NET Core 中依赖注入的使用
  • deepseek 潜在变量Z的计算;变分自编码器(VAE); 高斯混合模型(GMM)
  • rsync安装与使用-linux015
  • CAP 定理的 P 是什么
  • 【multi-agent-system】ubuntu24.04 安装uv python包管理器及安装依赖
  • JavaScript原型链与继承:优化与扩展的深度探索
  • 5 长度和距离计算模块(length.rs)
  • ollama改模型的存盘目录解决下载大模型报c:盘空间不足的问题
  • OSCP:常见文件传输方法
  • B站吴恩达机器学习笔记
  • Java 性能优化与新特性
  • 【计算机网络】host文件
  • 【C语言】在Windows上为可执行文件.exe添加自定义图标
  • 爬虫基础(五)爬虫基本原理
  • 力扣【1049. 最后一块石头的重量 II】Java题解(背包问题)
  • FFmpeg rtmp推流直播