基于单片机DHT11湿度测量与控制-CO2-光照报警系统程序和仿真

一、系统方案
1、本设计采用这51单片机作为主控器。
2、DHT11温湿度、CO2、光照强度送到液晶1602显示。
3、按键设置报警值。
4、蜂鸣器报警。
在这里插入图片描述

二、硬件设计
原理图如下:
在这里插入图片描述

三、单片机软件设计
1、首先是系统初始化
//初始化LCD************************************************************
void LCD_Initial()
{
E=0;
LCD_Write(LCD_COMMAND,0x38); //8位数据端口,2行显示,57点阵
LCD_Write(LCD_COMMAND,0x38);
LCD_SetDisplay(LCD_SHOW|LCD_NO_CURSOR); //开启显示, 无光标
LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN); //清屏
LCD_SetInput(LCD_AC_UP|LCD_NO_MOVE); //AC递增, 画面不动
}
2、液晶显示程序
//1602程序
//内部等待函数
************************************************************
unsigned char LCD_Wait(void)
{
RS=0;
RW=1; nop();
E=1; nop();
E=0;
return DBPort;
}
//向LCD写入命令或数据********************************************************
#define LCD_COMMAND 0 // Command
#define LCD_DATA 1 // Data
#define LCD_CLEAR_SCREEN 0x01 // 清屏
#define LCD_HOMING 0x02 // 光标返回原点
void LCD_Write(bit style, unsigned char input)
{
E=0;
RS=style;
RW=0; nop();
DBPort=input; nop();//注意顺序
E=1; nop();//注意顺序
E=0; nop();
LCD_Wait();
}
3、按键程序
void key()
{
uchar m;
if (k10) //调整按键检测
{
delay(10);
if (k1
0)
{
LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN); //清屏
presskeynum++;
if(presskeynum==8)
{
presskeynum=0;

			 }while(k1==0);}

}
if(presskeynum1)//温度上限设置
{
if(k2
0)// 加
{
delay(300);
temp_high++;
if (temp_high>99)
temp_high=0;
if (temp_high<0)
temp_high=99;
while(k20); //加上此句必须松按键才处理
}
if(k3
0)//减
{
delay(300);
temp_high–;
if (temp_high>99)
temp_high=0;
if (temp_high<0)
temp_high=99;
while(k30); //加上此句必须松按键才处理
}
}
if(presskeynum
2)//温度下限设置
{
if(k20)// 加
{
delay(300);
temp_low++;
if (temp_low>99)
temp_low=0;
if (temp_low<0)
temp_low=99;
while(k2
0);
}
if(k30)
{
delay(300);
temp_low–;
if (temp_low>99)
temp_low=0;
if (temp_low<0)
temp_low=99;
while(k3
0);
}
}
if(presskeynum3)//湿度上限设置
{
if(k2
0)// 加
{
delay(300);
humi_high++;
if (humi_high>99)
humi_high=0;
if (humi_high<0)
humi_high=99;
while(k20);
}
if(k3
0)
{
delay(300);
humi_high–;
if (humi_high>99)
humi_high=0;
if (humi_high<0)
humi_high=99;
while(k30);
}
}
if(presskeynum
4)//湿度下限设置
{
if(k20)//加
{
delay(300);
humi_low++;
if (humi_low>99)
humi_low=0;
if (humi_low<0)
humi_low=99;
while(k2
0);
}
if(k30)// 减
{
delay(300);
humi_low–;
if (humi_low>99)
humi_low=0;
if (humi_low<0)
humi_low=99;
while(k3
0);
}
}
if(presskeynum5)//湿度下限设置
{
if(k2
0)//加
{
delay(300);
gh++;
if (gh>99)
gh=0;

      while(k2==0);}if(k3==0)// 减{delay(300);gh--;gh=99;while(k3==0);}

}
if(presskeynum6)//湿度下限设置
{
if(k2
0)//加
{
delay(300);
gl++;
if (gl>99)
gl=0;

      humi_low=99;while(k2==0);}if(k3==0)// 减{delay(300);gl--;if (gl<0)gl=99;while(k3==0);}

}
if(presskeynum7)//湿度下限设置
{
if(k2
0)//加
{
delay(300);
CO2++;
if (CO2>99)
CO2=0;

      while(k2==0);}if(k3==0)// 减{delay(300);CO2--;if (CO2<0)CO2=99;while(k3==0);}

}

if(k40)// 退出键
{
delay(10);
if(k4
0)
{
while(k4==0);
LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN); //清屏
presskeynum=0;
temp_humi_cache[0]=temp_high;

      temp_humi_cache[1]=temp_low;temp_humi_cache[2]=humi_high;temp_humi_cache[3]=humi_low;temp_humi_cache[4]=gh;temp_humi_cache[5]=gl;temp_humi_cache[6]=CO2;for(m=0;m<=6;m++){  WriteIIC(W_cmd,0x00+m,temp_humi_cache[m]);      	//设定值写入24c02}}}

}
4、核心算法程序
unsigned char adc0832(unsigned char CH)
{
unsigned char i,test,adval;
adval = 0x00;
test = 0x00;
Clk = 0;
DATI = 1;
nop();
CS = 0;
nop();
Clk = 1;
nop();
if ( CH == 0x00 )
{
Clk = 0;
DATI = 1;
nop();
Clk = 1;
nop();
Clk = 0;
DATI = 0;
nop();
Clk = 1;
nop();
}
else
{
Clk = 0;
DATI = 1;
nop();
Clk = 1;
nop();
Clk = 0;
DATI = 1;
nop();
Clk = 1;
nop();
}
Clk = 0;
DATI = 1;
for( i = 0;i < 8;i++ )
{
nop();
adval <<= 1;
Clk = 1;
nop();
Clk = 0;
if (DATO)
adval |= 0x01;
else
adval |= 0x00;
}
for (i = 0; i < 8; i++)
{
test >>= 1;
if (DATO)
test |= 0x80;
else
test |= 0x00;
nop();
Clk = 1;
nop();
Clk = 0;
}
if (adval == test)
dat = test;
nop();
CS = 1;
DATO = 1;
Clk = 1;
return dat;
}

四、 proteus仿真设计
Proteus软件是一款应用比较广泛的工具,它可以在没有硬件平台的基础上通过自身的软件仿真出硬件平台的运行情况,这样就可以通过软件仿真来验证我们设计的方案有没有问题,如果有问题,可以重新选择器件,连接器件,直到达到我们设定的目的,避免我们搭建实物的时候,如果当初选择的方案有问题,我们器件都已经焊接好了,再去卸载下去,再去焊接新的方案的器件,测试,这样会浪费人力和物力,也给开发者带来一定困惑,Proteus仿真软件就很好的解决这个问题,我们在设计之初,就使用该软件进行模拟仿真,测试,选择满足我们设计的最优方案。最后根据测试没问题的仿真图纸,焊接实物,调试,最终完成本设计的作品。
在这里插入图片描述

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

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

相关文章

LCR 047. 二叉树剪枝 和 leetCode 1110. 删点成林 + 递归 + 图解

给定一个二叉树 根节点 root &#xff0c;树的每个节点的值要么是 0&#xff0c;要么是 1。请剪除该二叉树中所有节点的值为 0 的子树。节点 node 的子树为 node 本身&#xff0c;以及所有 node 的后代。 示例 1: 输入: [1,null,0,0,1] 输出: [1,null,0,null,1] 解释: 只有红…

Nvidia VPI 双目相机生成深度图

nVidia VPI&#xff08;Vision Programming Interface&#xff09;提供了多种后端&#xff0c;用于执行图像处理和计算机视觉操作。不同的后端针对不同的硬件和用例进行了优化。这些后端包括&#xff1a; 1. CPU: 这是最通用的后端&#xff0c;它运行在标准的中央处理器&#…

【深度学习笔记】04 概率论基础

04 概率论基础 概率论公理联合概率条件概率贝叶斯定理边际化独立性期望和方差模拟投掷骰子的概率随投掷次数增加的变化 概率论公理 概率&#xff08;probability&#xff09;可以被认为是将集合映射到真实值的函数。 在给定的样本空间 S \mathcal{S} S中&#xff0c;事件 A \m…

Intellij Idea 断点小圆变成灰色怎么处理

场景1&#xff1a;变成了灰色实心圆 原因 断点变成灰色通常表示该断点处于失效状态。这可能是由于无意中点击了debug调试下方的“mute breakpoints”按钮导致的。 解决方案 依次点击设置小图标->View Options->Mute BreakPoints. 点击后 Mute BrakPoints左侧显示✔ 符号…

python之pyqt专栏5-信号与槽1

在上一篇文章&#xff0c;我们了解到如果想要用代码改变QLabel的文本内容&#xff0c;可以调用QLabel类的text()函数。 但是现在有个这样的需求&#xff0c;界面中有一个Button与一个Label&#xff0c;当点击Button时&#xff0c;将Label的内容改变为“Hello world&#xff01;…

【兔子王赠书第9期】ChatGPT进阶:提示工程入门

文章目录 写在前面ChatGPT推荐图书关键点编辑推荐内容简介推荐理由 粉丝福利写在后面 写在前面 人类一直在寻找、制造并使用工具&#xff0c;以扩展我们的能力&#xff0c;适应我们的环境&#xff0c;甚至超越我们的生物限制。现在&#xff0c;我们正站在一个历史性的分水岭之…

Jetpack Compose中适应性布局的新API

Jetpack Compose中适应性布局的新API 针对大屏幕优化的新组合件。 使用新的Material适应性布局&#xff0c;为手机、可折叠设备和平板电脑构建应用程序变得更加简单&#xff01;市场上各种不同尺寸的Android设备的存在挑战了构建应用程序时对屏幕尺寸的通常假设。开发者不应该…

c4d三维动画制作推荐 Cinema 4D 2024 中文for mac

功能介绍 场景管理器 Cinema 4D新内核的强大功能让您可以使用灵活的基于节点的资产来实现程序化的几何体创建、克隆等。 烟火 从Cinema 4D的任何物体或样条发射火焰、烟 雾和爆炸-加热&#xff01; 建模 引入用于重新拓扑的 ZRemesher、新的交互式建模工具、高级样条节点、对…

03_歌词滚动效果

03_歌词滚动效果 文章目录 03_歌词滚动效果效果一、数据准备①&#xff1a;歌词②&#xff1a;音频等 二、代码实现①&#xff1a;首页②&#xff1a;样式③&#xff1a;js逻辑④&#xff1a;测试 效果 一、数据准备 ①&#xff1a;歌词 var lrc [00:00.95]夜微凉 - 徐珊 [0…

Glare or Gloom, I Can Still See You – End-to-End Multi-Modal Object Detection

SENSOR-AWARE MULTI-MODAL FUSION G-log(-log(U))&#xff0c;U&#xff5e;Uniform[0,1] 辅助信息 作者未提供代码

【解决方案】安科瑞智能照明系统在福建二建大厦项目上的研究与应用

【摘要】&#xff1a;智能化已经成为当今建筑发展的主流技术、涵盖从空调系统、消防系统到安全防范系统以及完善的计算机网络和通信系统。但是长期以来、智能照明在国内一直被忽视、大多数建筑物仍然沿用传统的照明控制方式、部分智能大厦采用楼宇自控&#xff08;BA&#xff0…

Java 8新特性Optional的使用以及判空案例

Java 8新特性&#xff1a;Optional的使用及判空案例 在Java 8中&#xff0c;引入了一个重要的类Optional&#xff0c;它是为了解决空指针异常&#xff08;NullPointerException&#xff09;而设计的。Optional可以作为一个容器&#xff0c;可以包含一个非空的值或者为空。 Opti…

锂电池污水如何处理

锂电池是目前应用广泛的重要电池类型&#xff0c;然而其生产过程和废弃处理中产生的污水对环境造成了不可忽视的影响。本文将探讨锂电池污水的处理方法&#xff0c;以期为环境保护和可持续发展作出贡献。 首先&#xff0c;了解锂电池污水的组成是解决问题的关键。锂电池污水通…

防雷接地电阻和接地网的区别及其应用

接地是电气工程中的一种重要的安全措施&#xff0c;它可以保护电气设备和人员免受雷击和过电压的危害&#xff0c;也可以提高电气系统的运行稳定性和可靠性。接地的基本原理是将电气设备或人体与大地连接成同一电位&#xff0c;从而消除或减小危险电压。 地凯科技接地的实现方式…

上海亚商投顾:北证50指数大涨 逾百只北交所个股涨超10%

上海亚商投顾前言&#xff1a;无惧大盘涨跌&#xff0c;解密龙虎榜资金&#xff0c;跟踪一线游资和机构资金动向&#xff0c;识别短期热点和强势个股。 一.市场情绪 沪指11月24日震荡调整&#xff0c;深成指、创业板指盘中跌超1%。北证50指数大涨超6%&#xff0c;北交所个股持…

BGP路由的选路综合实验

题目要求 1.使用PreVal策略&#xff0c;确保R1通过R3到达192.168.10.0/24 2.使用AS_Path策略&#xff0c;确保R1通过R3到达192.168.11.0/24 3.配置MED策略&#xff0c;确保R1通过R3到达192.168.12.0/24 4.使用Local Preference策略&#xff0c;确保R4通过R2到达192.168.1.0/24…

git-2

1.分离头指针情况下的注意事项 分离头指针指的是变更没有基于某个branch去做&#xff0c;所以当进行分支切换的时候&#xff0c;在分离头指针上产生的commit&#xff0c;很可能会被git当作垃圾清理掉&#xff0c;如果你认为是重要的内容&#xff0c;切记需要绑定分支 2.进一步…

2023机器人灵巧手的分类与商业化应用及未来市场规模分析报告

今天分享的是机器人系列深度研究报告&#xff1a;《2023机器人灵巧手的分类与商业化应用及未来市场规模分析报告》。 &#xff08;报告出品方&#xff1a;深度行业分析研究&#xff09; 报告共计&#xff1a;26页 1 灵巧手是人形机器人重要的运控交互部件&#xff0c;近年来海…

MyBatis-Plus条件构造器

说明 Wrapper&#xff1a;条件构造抽象类&#xff0c;最顶端父类AbstractWrapper&#xff1a;用于查询条件封装&#xff0c;生成sql的where条件QueryWrapper&#xff1a;查询条件封装UpdateWrapper&#xff1a;更新条件封装AbstractLambdaWrapper&#xff1a;使用Lambda语法La…

BI报表用多了,就再看不了其他报表

BI报表有魔力&#xff0c;一旦用多了&#xff0c;就再也接受不了其他的报表。为什么&#xff1f;我这就来总结说说。 1、分析的效率 一般报表&#xff1a;要做报表&#xff0c;先找IT取数&#xff0c;然后开发&#xff0c;分析过程中有新需求&#xff0c;不好意思&#xff0c…