单片机+DHT11+1602显示屏+Proteus仿真+JDY-31 SPP蓝牙模块资料

附件
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
在这里插入图片描述

单片机源程序如下:
/*********************************************************************************
本实验仅限学习交流 AT89C52 12Mhz DHT11 LCD1602
接线如下
DHT11_DQ = P2^0
LCD1602_E= P2^7
LCD1602_RW=P2^5
LCD1602_RS=P2^6
D0—D7接到P0口
本实验没有用到DHT的校验位Check_Init,想使用校验位,定义一个变量t,t=HUMI_Buffer_Int+HUMI_Low_Int+TEM_Buffer_Int+TEM_Low_Int;
判断t与Check_Init是否相等。
本实验只显示了整数部分,小数部分没显示,小数部分显示和整数部分显示一样,类别进行。
*********************************************************************************/
#include"dht11.h"
#include"reg52.h"
#include"lcd.h"
unsigned char dis[]=“RH:”; //湿度字符串
unsigned char dis1[]=“TEMP:”; //温度字符串
unsigned char i;
int main()
{ LcdInit(); //1602初始化
DHT11_Init(); //DHT11初始化
while(1)
{
DHT11_Read(); //DHT11数值读取
LcdWriteCom(0x80);//第一列第一个字符
for(i=0;i<3;i++)
{
LcdWriteData(dis[i]); //显示“RH:”
}
LcdWriteData(HUMI_Buffer_Int/10+0x30); //显示湿度的十位
LcdWriteData(HUMI_Buffer_Int%10+0x30); //显示湿度的个位
LcdWriteData(0x25); //显示字符“%”
LcdWriteCom(0x80+0x40); //第二行第一个
for(i=0;i<5;i++)
{
LcdWriteData(dis1[i]); //显示字符“TEMP”
}
LcdWriteData(TEM_Buffer_Int/10+0x30); //显示温度的十位
LcdWriteData(TEM_Buffer_Int%10+0x30); //显示温度的个位
LcdWriteData(0xDF);
LcdWriteData(0x43); //显示字符“%”
}

}

#include “DHT11.h”

//定义变量
unsigned char HUMI_Buffer_Int = 0; //湿度高位
unsigned char HUMI_Low_Int=0; //湿度低位
unsigned char TEM_Buffer_Int = 0; //温度高位
unsigned char TEM_Low_Int=0; //温度低位
unsigned char Check_Init=0; //检验位
//****************************************************
//MS延时函数(12M晶振下测试)
//****************************************************
void DHT11_delay_ms(unsigned int n)
{
unsigned int i,j;
for(i=n;i>0;i–)
{
for(j=112;j>0;j–);
}
}
//****************************************************
//延时函数
//****************************************************
void DHT11_Delay( unsigned int n )
{
unsigned int i;
for(i = 0 ; i < n ; i++ );
}

//****************************************************
//初始化DHT11
//****************************************************
bit DHT11_Init()
{
bit Flag_DHT11 = 1;
DHT11_DQ = 0;
DHT11_delay_ms(25); //延时>18ms

    DHT11_DQ = 1;
    DHT11_Delay(2);                                //延时20~40us

    DHT11_Delay(2);                                
    Flag_DHT11 = DHT11_DQ;                
    DHT11_Delay(2);                                //DHT11响应总时间80us

    DHT11_Delay(4);                                //DHT11拉高信号80us

    return Flag_DHT11;                

}

//****************************************************
//读一个字节DHT11数据
//****************************************************
unsigned char DHT11_Read_Byte()
{
unsigned char i,dat,j;
while( DHT11_DQ == 1 );
for( i = 0 ; i < 8 ; i++ )
{
while( DHT11_DQ == 0 );
dat <<= 1;
for( j = 0 ; DHT11_DQ == 1 ; j++);
if( j < 10 )
dat &= 0xfe; //低位清零
else
dat |= 0x01; //低位置一
}
return dat;
}

//****************************************************
//读取温湿度值,存放在TEM_Buffer和HUMI_Buffer
//****************************************************
void DHT11_Read()
{
if( DHT11_Init() == 0 )
{
HUMI_Buffer_Int = DHT11_Read_Byte(); //读取湿度的整数值
HUMI_Low_Int=DHT11_Read_Byte(); //读取湿度的小数值
TEM_Buffer_Int = DHT11_Read_Byte(); //读取温度的整数值
TEM_Low_Int=DHT11_Read_Byte(); //读取温度的小数值
Check_Init=DHT11_Read_Byte(); //读取校验和
DHT11_Delay(3); //DHT11拉低总线50us

            DHT11_DQ = 1;                                        //释放总线                        
    }        

}

  • 1
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
DHT11是一种数字温湿度传感器,通常与STC89C52单片机一起使用。STC89C52是一种常见的单片机型号,常用于嵌入式系统开发。它可以通过读取DHT11传感器的数据来监测室内的温度和湿度。DHT11传感器的数据可以通过串口或其他通信方式传输给单片机,然后单片机可以将这些数据显示在液晶屏1602上,或者通过其他方式传输到手机上进行显示。这样的系统可以用于温湿度监测和控制应用,例如室内温湿度自动调控系统。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [DHT11温湿度检测系统的52单片机简易实现](https://blog.csdn.net/shuangyonlu/article/details/106629996)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [C52单片机+DHT11+1602显示屏+Proteus仿真+JDY-31 SPP蓝牙模块资料](https://download.csdn.net/download/weixin_47641435/13613329)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [STC89C52单片机+DHT11构成的数字温度、湿度计程序_dht11和stc89c52_dht11与stc89c52_DHT](https://download.csdn.net/download/weixin_42668301/26175586)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值