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

基于单片机的温湿度检测判断系统

目录

一、主要功能

二、硬件资源

三、程序编程

四、实现现象


一、主要功能

基于STC89C52单片机,采用dht11温湿度传感器检测温湿度,
通过lcd1602显示屏各个参数,四个按键分别可以增加温湿度的阈值,
如果超过阈值,则电机启动打开风扇

二、硬件资源

基于KEIL5编写C++代码,PROTEUS8.15进行仿真,全部资源在页尾,提供安装包。

三、程序编程

#include <REGX52.H>
#include<intrins.h>
#include<stdio.h>
#include "Delay.h"
#include "LCD1602.h"#define uchar unsigned char
#define uint unsigned  intsbit beep=P3^4;
sbit key1=P3^6; // 
sbit key2=P3^5; // 减少
sbit key3=P1^0; // 增加
sbit key4=P1^1; // 增加sbit jdq = P3^3;//继电器
sbit Temp_data=P2^6;  //DHT11unsigned char rec_dat_lcd0[6];
unsigned char rec_dat_lcd1[6];
unsigned char rec_dat_lcd2[6];
unsigned char rec_dat_lcd3[6];
unsigned int rec_dat[4];static uchar wd,sd;
static int wdyz=40,sdyz=80;void DHT11_delay_us(unsigned char n);
void DHT11_delay_ms(unsigned int z);
void DHT11_start();
unsigned char DHT11_rec_byte();
void DHT11_receive();
void beep_warning();
void cshq();
void xxpxs();
void ajjc();//延时ms
void DHT11_delay_ms(unsigned int z)
{unsigned int i,j;for(i=z; i>0; i--)for(j=110; j>0; j--);
}//延时us   --2*n+5us
void DHT11_delay_us(unsigned char n)
{while(--n);
}//DHT11起始信号
void DHT11_start()
{Temp_data=1;DHT11_delay_us(10);Temp_data=0;DHT11_delay_ms(50);//这个延时不能过短,18ms以上,实际在仿真当中要想读到数据延时要在延时参数要在40以上才能出数据Temp_data=1;DHT11_delay_us(30);//这个延时不能过短}//接收一个字节unsigned char DHT11_rec_byte()
{unsigned char i,dat=0;for(i=0; i<8; i++){while(!Temp_data);DHT11_delay_us(8);dat <<=1;if(Temp_data==1){dat +=1;}while(Temp_data);}return dat;
}//接收温湿度数据
void DHT11_receive()
{unsigned int R_H,R_L,T_H,T_L;unsigned char RH,RL,TH,TL,revise;DHT11_start();Temp_data=1;if(Temp_data==0){while(Temp_data==0);   //等待拉高DHT11_delay_us(40);  //拉高后延时80usR_H=DHT11_rec_byte();    //接收湿度高八位R_L=DHT11_rec_byte();    //接收湿度低八位T_H=DHT11_rec_byte();    //接收温度高八位T_L=DHT11_rec_byte();    //接收温度低八位revise=DHT11_rec_byte(); //接收校正位DHT11_delay_us(25);    //结束if((R_H+R_L+T_H+T_L)==revise)      //校正{RH=R_H;RL=R_L;TH=T_H;TL=T_L;}/*数据处理,方便显示*/rec_dat[0]=RH;rec_dat[1]=RL;rec_dat[2]=TH;rec_dat[3]=TL;}}void dht11()
{DHT11_delay_ms(150);DHT11_receive();sprintf(rec_dat_lcd0,"%d",rec_dat[0]);sprintf(rec_dat_lcd1,"%d",rec_dat[1]);sprintf(rec_dat_lcd2,"%d",rec_dat[2]);sprintf(rec_dat_lcd3,"%d",rec_dat[3]);DHT11_delay_ms(100);wd = rec_dat[3]*10 + rec_dat[2];sd = rec_dat[1]*10 + rec_dat[0];}void beep_warning()//蜂鸣器警报并且电机转动
{if(wd>wdyz){beep = 1;jdq  = 0;}		if(sd>sdyz){beep = 1;jdq  = 0;}if(wd<=wdyz && sd<=sdyz  )	{beep = 0;jdq  = 1;}
}void main()					  //主函数
{	LCD_Init();         //显示屏初始化beep = 0;jdq = 1;do{dht11(); //温湿度获取ajjc();   //按键检测xxpxs();  //显示屏显示beep_warning();    //状态判断}  while(1);
}
void ajjc()  //按键检测
{if(!key1){wdyz++;while(!key1);}if(!key2){wdyz--;while(!key2);}if(!key3){sdyz++;while(!key3);}if(!key4){sdyz--;while(!key4);}
}
void xxpxs()  //显示屏显示
{LCD_ShowString(1,1,"wd:");	LCD_ShowString(1,8,"sd:");	LCD_ShowNum(1,4,wdyz,3); //LCD_ShowNum(1,11,sdyz,3);//LCD_ShowString(2,1,"wd:");LCD_ShowNum(2,4,wd,3);//LCD_ShowString(2,8,"sd:");	LCD_ShowNum(2,11,sd,3);//}

四、实现现象

具体动态效果看B站演示视频:

基于单片机的温湿度检测判断系统

全部资料(源程序、仿真文件、安装包、演示视频):

百度网盘资料下载icon-default.png?t=O83Ahttps://pan.baidu.com/s/18PGaT3zZnxxZ4rCKRd5m-w?pwd=ue8b

相关文章:

  • 无监督算法目标识别-工业异常检测模型Padim+PatchCore的C++_libtorch实现
  • 【Android】浅析六大设计原则
  • 拓扑结构的理解
  • NVIDIA G-Assist 项目:您的游戏和应用程序AI助手
  • 使用docker搭建zk集群
  • 【新闻转载】Storm-0501:勒索软件攻击扩展到混合云环境
  • 【源码+文档+调试讲解】交通信息管理系统
  • 用Python实现运筹学——Day 8: 对偶理论的经济解释
  • 论文阅读【时间序列】ModerTCN (ICLR2024)
  • 堆【数据结构C语言版】【 详解】
  • 打点 - 泛微 E-Cology WorkflowServiceXml
  • 记录|Modbus-TCP产品使用记录【德克威尔】
  • Docker面试-24年
  • Simplygon 使用笔记2
  • 华为OD机试 - 超级玛丽通过吊桥的走法 - 动态规划(Python/JS/C/C++ 2024 E卷 200分)
  • [分享]iOS开发-关于在xcode中引用文件夹右边出现问号的解决办法
  • __proto__ 和 prototype的关系
  • 2018以太坊智能合约编程语言solidity的最佳IDEs
  • Date型的使用
  • express.js的介绍及使用
  • Go 语言编译器的 //go: 详解
  • If…else
  • Javascript基础之Array数组API
  • java正则表式的使用
  • JS字符串转数字方法总结
  • MYSQL如何对数据进行自动化升级--以如果某数据表存在并且某字段不存在时则执行更新操作为例...
  • Node.js 新计划:使用 V8 snapshot 将启动速度提升 8 倍
  • Shadow DOM 内部构造及如何构建独立组件
  • webgl (原生)基础入门指南【一】
  • XForms - 更强大的Form
  • 从0实现一个tiny react(三)生命周期
  • 每天一个设计模式之命令模式
  • 七牛云 DV OV EV SSL 证书上线,限时折扣低至 6.75 折!
  • 实现简单的正则表达式引擎
  • 使用API自动生成工具优化前端工作流
  • 移动端 h5开发相关内容总结(三)
  • 用Python写一份独特的元宵节祝福
  • 云栖大讲堂Java基础入门(三)- 阿里巴巴Java开发手册介绍
  • MiKTeX could not find the script engine ‘perl.exe‘ which is required to execute ‘latexmk‘.
  • [Shell 脚本] 备份网站文件至OSS服务(纯shell脚本无sdk) ...
  • python最赚钱的4个方向,你最心动的是哪个?
  • Redis4.x新特性 -- 萌萌的MEMORY DOCTOR
  • 组复制官方翻译九、Group Replication Technical Details
  • ​无人机石油管道巡检方案新亮点:灵活准确又高效
  • # 深度解析 Socket 与 WebSocket:原理、区别与应用
  • ###51单片机学习(1)-----单片机烧录软件的使用,以及如何建立一个工程项目
  • #gStore-weekly | gStore最新版本1.0之三角形计数函数的使用
  • #Js篇:单线程模式同步任务异步任务任务队列事件循环setTimeout() setInterval()
  • (C语言)fgets与fputs函数详解
  • (SERIES10)DM逻辑备份还原
  • (STM32笔记)九、RCC时钟树与时钟 第二部分
  • (二)Linux——Linux常用指令
  • (附源码)spring boot基于Java的电影院售票与管理系统毕业设计 011449
  • (附源码)spring boot基于小程序酒店疫情系统 毕业设计 091931
  • (附源码)spring boot智能服药提醒app 毕业设计 102151