功能介绍:
0.本系统采用STC89C52作为单片机
1.系统实时监测当前的有害气体状态/光强信息/火焰状态
2.当有害气体浓度超过阈值或检测到火焰时,蜂鸣器报警,并启动风扇进行通风
3.按键可设定阈值
4.采用DC002作为电源接口可直接输入5V给整个系统供电

原理图:

PCB :

主程序:


/*************************************************************智能环境监测系统补充说明:
***************************************************************/
#include "main.h"/*******************变量定义*********************/
enum _MODE_DF_ dispMode;
bit alarmFlag = 0; //报警标志
uchar setIndex = 0; //设置位置
uchar gasMax = 30; //煤气浓度阈值
char gas = 0; //煤气浓度
uchar light = 0;//光照强度bit dispFlag = 0;//显示标志
bit fireFlag = 0;//火焰标志char dis[16];/********************************************************
函数名称:void mian()
函数作用:主函数
参数说明:
********************************************************/
void main()
{BUZZER     = OFF;RELAY_FAN  = OFF;Timer0_Init(); //初始化定时器0LCD_Init();   //初始化液晶DelayMs(200); //延时有助于稳定LCD_DispStr(4, 0, "Welcome!");DelayS(1);LCD_Clear();  //清屏while (1) //死循环{if (dispFlag == 1) //显示标志{dispFlag = 0;if (dispMode == NORMAL){DispNormal();}}if (FIRE_PIN == 0) //检测到火焰{DelayMs(200);if (FIRE_PIN == 0) //确认检测到火焰{fireFlag = 1;alarmFlag = 1;}}if (gas > gasMax) //检测到浓度大于阈值{alarmFlag = 1; //报警标志}if (alarmFlag == 1){BUZZER = ON; //打开蜂鸣器RELAY_FAN = ON; //打开排气扇}else{BUZZER = OFF; //关闭蜂鸣器RELAY_FAN = OFF; //关闭排气扇}KeyProcess(); //按键检测及处理}
}/*------------------------------------------------定时器初始化子程序
------------------------------------------------*/
void Timer0_Init(void)
{TMOD |= 0x01; //使用模式1,16位定时器,使用"|"符号可以在使用多个定时器时不受影响TH0 = (65536 - 9216) / 256; //重新赋值 10msTL0 = (65536 - 9216) % 256;EA = 1;  //总中断打开ET0 = 1; //定时器中断打开TR0 = 1; //定时器开关打开
}
/*------------------------------------------------定时器中断子程序
------------------------------------------------*/
void Timer0_Interrupt(void) interrupt 1
{static unsigned int time10ms  = 0;TH0 = (65536 - 9216) / 256; //重新赋值 10msTL0 = (65536 - 9216) % 256;time10ms++;if (time10ms > 20){dispFlag = 1; //显示标志time10ms = 0;}}void DispNormal(void)
{int gasBuf;TR0 = 0;gasBuf = ReadADC(AIN0_GND);if (gasBuf <= 29){gasBuf = 29;}gas = (100 * (gasBuf-29)) / 227; //计算有害气体浓度百分比light = 100 - 100 * ReadADC(AIN1_GND) / 255; //计算光强百分比TR0 = 1;sprintf(dis, "Gas:%3d%%", (int)gas); //打印有害气体浓度百分比LCD_DispStr(0, 0, dis);if (fireFlag == 1){LCD_DispStr(9, 0, "Fire  "); //显示火焰}else{LCD_DispStr(9, 0, "Normal");}sprintf(dis, "Light:%3d%%", (int)light); //打印显示光强LCD_DispStr(0, 1, dis);}void DispSetGasLimit(unsigned char setIndex) //显示设定阈值
{LCD_DispStr(0, 0, "  Set GasLimit  ");sprintf(dis, "    Max:%3d%%    ", (int)gasMax);LCD_DispStr(0, 1, dis);switch (setIndex){case 1: LCD_SetCursor(10, 1, 1); break;default:;}
}

仿真演示视频:
https://www.bilibili.com/video/BV15A4y1Z7m9/

实物演示视频:
https://www.bilibili.com/video/BV1c34y1J7Uu/

基于51单片机的智能环境监测光强火焰有害气体检测proteus仿真原理图PCB相关推荐

  1. 基于51单片机的智能护眼台灯带闹钟功能proteus仿真原理图PCB

    功能介绍: 0.本系统采用STC89C52作为单片机 1.LCD1602液晶实时显示当前时间/工作模式/灯光亮度 2.具备闹钟功能,到达闹钟时间,蜂鸣器报警 3.自动模式下,有人灯亮,人离开后15s, ...

  2. 基于51单片机的智能太阳能充电器带自动断开功能proteus仿真原理图PCB

    功能介绍: 0.本系统采用STC89C52作为单片机 1.LCD1602液晶实时显示当前检测的充电电压 2.当电压超过设定阈值时,继电器断开,停止充电,同时蜂鸣器报警,提醒充电完成 3.按键可切换界面 ...

  3. 基于51单片机的智能停车场泊车车位系统LCD12864显示proteus仿真原理图PCB

    功能介绍: 0.本系统采用STC89C52作为单片机 1.LCD12864液晶实时显示当前车位状态 2.蓝牙串口间隔5秒发送一次当前车位状态 3.系统通过LCD12864大屏显示车位的状态 4.采用D ...

  4. 基于STM32单片机的智能家居窗户窗帘控制系统红外遥控proteus仿真原理图PCB

    功能: 0.本系统采用STM32F103RCT6作为单片机 1.LCD1602液晶实时显示当前时间/窗帘状态/光照强度 2.支持手动按键/定时/光强检测三种模式控制窗帘 3.'设置'键进入设置界面 4 ...

  5. 基于51单片机的太阳能板追光控制串口上报系统proteus仿真原理图PCB

    功能介绍: 0.本系统采用STC89C52作为单片机 1.支持手动/自动两种模式 2.自动模式下,系统实时监测当前各个方位的光强信息,并通过串口上报 3.自动模式下,通过判断各方位的光强,转动步进电机 ...

  6. 基于51单片机的宠物自动猫粮狗粮喂养机proteus仿真原理图PCB

    功能介绍: 0.本系统采用STC89C52作为单片机 功能简介: 1.LCD1602实时显示当前时间/温湿度/食物重量 2.当时间到达设定喂食时间,启动步进电机进行投喂,投喂量达到预先设定好的重量后停 ...

  7. 基于51单片机的语音控制GSM短信报警密码锁proteus仿真原理图PCB

    功能介绍: 0.本系统采用STC89C52作为单片机 1.输入密码正确,屏幕提示OK:输入密码错误,蜂鸣器LED声光报警 2.连续三次输入密码错误,屏幕提示LOCK锁住,并通过GSM发送报警短信 3. ...

  8. 基于51单片机的温度控制系统数码管显示蜂鸣器报警proteus仿真原理图PCB

    功能: 0.本系统采用STC89C52作为单片机 1.系统实时监测并显示当前温度,并通过四位数码管显示 2.超过设定阈值,蜂鸣器将报警,同时控制相应继电器实现降温或者加热 3.系统具备三个功能按键,可 ...

  9. 基于51单片机的火灾报警系统温度烟雾浓度阈值报警proteus仿真原理图PCB

    功能: 0.本系统采用STC89C52作为单片机 .LCD1602液晶实时显示当前温度和烟雾浓度 2.超过温度阈值和烟雾浓度阈值,蜂鸣器报警 3.按键可更改温度阈值和烟雾浓度阈值 4.采用DC002作 ...

最新文章

  1. python【蓝桥杯vip练习题库】ADV-187 勾股数
  2. Java程序员面试宝典--this
  3. Completed Subscribe to Platform Events
  4. ERROR: This virtual machine appears to be in use
  5. ts-node 学习笔记 - 如何解决在 Windows10 下不能直接运行 ts-node 的问题
  6. In fact, at this stage, neither the 65W
  7. 感知器算法超详细讲解实战【原理+手撸代码实现】+spark应用实践
  8. Spring Cloud Sleuth链路跟踪之使用RabbitMQ异步收集链路跟踪信息(学习总结)
  9. matlab7.0的序列号
  10. IntelliJ IDEA常见问题解决办法汇总
  11. laravel 下载使用
  12. html id 命名,html类,id规范命名
  13. 腾讯云服务器地域节点IP速度测试表
  14. 学习github的网站
  15. 算法第十九期——图论初入门
  16. matlab中有没有谱聚类,matlab – 谱聚类
  17. autojs 开发文档集合
  18. c语言函数定义时涉及的基本要素是什么,C语言基础:函数的定义与调用
  19. emmc和MMC的区别
  20. ansys添加力矩_ANSYS转矩施加三种方法

热门文章

  1. python zip()和zip(*)方法
  2. 男士身高180厘米,体重多少合适
  3. JVM配置、监控、调优
  4. 计算机应用技术专业介绍英文,计算机技术与应用专业英文简历模板
  5. selenium web端自动化测试框架环境搭建
  6. 从0到1 CTFer成功之路》XSS---学习笔记
  7. Word/WPS中页码从指定的页面开始插入方法
  8. 高频 实验一 正弦波振荡器
  9. [C++题目] 根据快递商品的重量计算应付运费用
  10. 16 C++ 学习记 小猪称体重案例