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

目录

一、主要功能

二、硬件资源

三、程序编程

四、实现现象


一、主要功能

基于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();//延时msvoid 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+5usvoid 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);  //拉高后延时80us

        R\_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站演示视频:

B站演示视频

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

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

百度网盘资料下载https://pan.baidu.com/s/18PGaT3zZnxxZ4rCKRd5m-w?pwd=ue8b

相关推荐
憧憬一下23 分钟前
Linux内核早期打印机制与RS485通信技术
arm开发·嵌入式硬件·嵌入式·linux驱动开发
电子工程师UP学堂1 小时前
电子应用设计方案-37:智能鼠标系统方案设计
人工智能·单片机·嵌入式硬件·计算机外设
Q23553688721 小时前
100V降压恒流芯片SL2516D 内置MOS管 支持15W功率输出 电动车照明
单片机·嵌入式硬件
石板小湫1 小时前
46 基于单片机的烧水壶系统设计
单片机·嵌入式硬件
lucy1530275107911 小时前
【青牛科技】BISS0001高性能的传感信号处理集成电路芯片,广泛用于安防、自控等领域能
科技·单片机·智能家居·信号处理·安防·工控主板
电子设计师12 小时前
45 基于单片机的信号选择与温度变化
单片机·嵌入式硬件
zcb84964437112 小时前
27 基于51单片机的方向盘模拟系统
嵌入式硬件·51单片机·proteus·方向盘
test猿12 小时前
电与计算机的关系
单片机·嵌入式硬件·物联网
编程圈子14 小时前
STM32 HAL库开发学习3.STM32启动浅析
stm32·嵌入式硬件·学习