【Proteus仿真】【51单片机】基于单片机的环境监测系统

您所在的位置:网站首页 51单片机软件开发环境 【Proteus仿真】【51单片机】基于单片机的环境监测系统

【Proteus仿真】【51单片机】基于单片机的环境监测系统

2023-06-21 05:46| 来源: 网络整理| 查看: 265

文章目录 一、功能简介二、软件设计三、实验现象联系作者

一、功能简介

本项目使用Proteus8仿真51单片机控制器,使用LCD1604液晶、DHT11温湿度传感器、声光报警、按键模块、CO\CO2\烟雾传感器、继电器控制模块等。

主要功能: 系统运行后,LCD1604显示温湿度、CO、CO2和烟雾浓度; 可通过按键K5选择自动/手动模式,当处于手动模式时, K1用于控制加热散热,K2用于控制加湿除湿,K3用于控制 风扇开关,K4用于手动关闭所有设备;当处于自动模式时, 检测温度高于上限,风扇开启,低于下限,加热开启,阈值范围内关闭加热和散热;检测湿度高于上限,除湿开启,低于下限,加湿开启,阈值范围内关闭加湿和除湿;检测CO/CO2/烟雾浓度高于上限,开启风扇,低于阈值关闭风扇。超限时声光报警。

二、软件设计 /* 作者:嗨小易(QQ:3443792007) */ //系统数据设置 void sys_data_set(void) { u8 key=0; static u8 jsrflag=0; static u8 jcsflag=0; static u8 fsflag=0; key=key_scan(0); //模式设置 if(key==KEY3_PRESS) { //自动模式 if(sys_ctrl.auto_flag==0) { sys_ctrl.mode++; if(sys_ctrl.mode>7)sys_ctrl.mode=1; } //手动模式 else { FS_PIN=!FS_PIN; } } //在设置模式下,加 else if(key==KEY1_PRESS) { //自动模式 if(sys_ctrl.auto_flag==0) { switch(sys_ctrl.mode) { case 1://温度下限 sys_ctrl.templ++; if(sys_ctrl.templ>99)sys_ctrl.templ=0; break; case 2://温度上限 sys_ctrl.temph++; if(sys_ctrl.temph>99)sys_ctrl.temph=0; break; case 3://湿度下限 sys_ctrl.humil++; if(sys_ctrl.humil>99)sys_ctrl.humil=0; break; case 4://湿度上限 sys_ctrl.humih++; if(sys_ctrl.humih>99)sys_ctrl.humih=0; break; case 5://CO浓度上限 sys_ctrl.coh++; if(sys_ctrl.coh>99)sys_ctrl.coh=0; break; case 6://CO2浓度上限 sys_ctrl.co2h++; if(sys_ctrl.co2h>99)sys_ctrl.co2h=0; break; case 7://烟雾浓度上限 sys_ctrl.gash++; if(sys_ctrl.gash>99)sys_ctrl.gash=0; break; } } //手动模式 else { jsrflag=!jsrflag; if(jsrflag==1)//加热 { JR_PIN=0;SR_PIN=1; } else//散热 { JR_PIN=1;SR_PIN=0; } } } //在设置模式下,减 else if(key==KEY2_PRESS) { //自动模式 if(sys_ctrl.auto_flag==0) { switch(sys_ctrl.mode) { case 1://温度下限 sys_ctrl.templ--; if(sys_ctrl.templ JS_PIN=0;CS_PIN=1; } else//除湿 { JS_PIN=1;CS_PIN=0; } } } //确定 else if(key==KEY4_PRESS) { //自动模式 if(sys_ctrl.auto_flag==0) sys_ctrl.mode=0; //手动模式 else { JR_PIN=1;SR_PIN=1; JS_PIN=1;CS_PIN=1; FS_PIN=1; } } //自动/手动 else if(key==KEY5_PRESS) { sys_ctrl.auto_flag=!sys_ctrl.auto_flag; if(sys_ctrl.auto_flag==0) { JR_PIN=1;SR_PIN=1; JS_PIN=1;CS_PIN=1; FS_PIN=1; } } } //系统功能控制 void sys_fun_ctrl(void) { //自动模式 if(sys_ctrl.auto_flag==0) { //正常模式下 if(sys_ctrl.mode==0) { //如果温度高于上限,报警,打开散热 if(sys_ctrl.temp>sys_ctrl.temph) { JR_PIN=1;SR_PIN=0; beep_alarm(1,10000); } //如果温度低于下限,报警,打开加热 else if(sys_ctrl.temp JR_PIN=1;SR_PIN=1; } //如果湿度高于上限,报警,打开除湿 if(sys_ctrl.humi>sys_ctrl.humih) { JS_PIN=1;CS_PIN=0; beep_alarm(1,10000); } //如果湿度低于下限,报警,打开加湿 else if(sys_ctrl.humi JS_PIN=1;CS_PIN=1; } //如果CO/CO2/烟雾体浓度高于上限,报警,打开风扇 if(sys_ctrl.co>sys_ctrl.coh || sys_ctrl.co2>sys_ctrl.co2h || sys_ctrl.gas>sys_ctrl.gash) { FS_PIN=0; beep_alarm(1,10000); } else FS_PIN=1; } } } //应用控制系统 void appdemo_show(void) { u8 i=2; sys_parm_init();//系统参数初始化 lcd1604_init(); DHT11_Init(); //读取数据,等待稳定 while(i--) { sys_data_get(); delay_ms(100); } sys_open_show();//系统开机界面显示 while(1) { sys_data_get();//系统数据获取 sys_data_show();//系统数据显示 sys_data_set();//系统数据设置 sys_fun_ctrl();//系统功能控制 } } 三、实验现象

B站演示视频:https://space.bilibili.com/444388619

在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

联系作者

专注于51单片机、STM32、国产32、DSP、Proteus、ardunio、ESP32、物联网软件开发,PCB设计,视频分享,技术交流。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3