找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3029|回复: 0
收起左侧

STM32+dht11温度检测仿真加源代码

[复制链接]
ID:794307 发表于 2020-7-3 10:31 | 显示全部楼层 |阅读模式
123.jpg 51hei.png
主函数如下:
#include<stm32f10x.h>
#include"lcd.h"
#include"key.h"
#include"dht11.h"
static int i=1;
void main()
{
  char wen[]={'W','e','n','d','u',':','\0'};
    char shi[]={'s','h','i','d','u',':','\0'};
    lcd_start();
  KEY_Init();
    while(1)
    {
        dht11_start();
        if(key)
        {

           if(i==1)
           {
               lcd_pw(0x01);
           lcd0(wen,0);
               i=0;
           }

         lcd1(dht_gettem(),dht_temget(),6,dat[24]);

        }
        else
        {
           if(i==0)
           {
               i=1;
               lcd_pw(0x01);
               lcd0(shi,0);
           }
            lcd2(dht_getwet(),dht_wetget(),6,dat[8]);
        }
    }
}

DHT11函数如下:
#include<dht11.h>
void stt()
{
      dhtout;
      dhtreset;
     delayms(19);
      dhtset;            //拉高
}
voiddht11_start()
{           
        int i=0;
        dhtout;
        dhtreset;
       delayms(18);   //延时
       dhtin;   //拉高
        while(dhtre);  //等待响应信号
        while(!dhtre);  
       while(dhtre);  
        dhtout;
        dhtset;
        dhtin;
      for(;i<40;i++)       //循环读取四十位数
       {
         while(!dhtre);
         delayus(28);//延时检测信号是长信号还是短信号
         if(dhtre==1)
         {
          dat=1;
          while(dhtre);   //等待长信号结束
          continue;  
         }
         if(dhtre==0)
         {
          dat=0;      //立即准备接受下一个信号
         }
       }
      while(!dhtre);
         dhtout;
      dhtset;
         dhtin;
}
intdht_gettem()    //温度获取
{
    int dd=0;
    int i;
    for(i=16;i<24;i++)
    {
    dd=dd<<1|dat;
    }
    return dd;
}
intdht_temget()  //湿度获取
{
     int dc=0;
     inti;
     for(i=24;i<32;i++)
     {
     dc=dc<<1|dat;
     }
     dc=dc&0x7f;
     return dc;
}
intdht_getwet()   
{
    int dd=0;
    int i;
    for(i=0;i<8;i++)
    {
    dd=dd<<1|dat;
    }
    return dd;
}
intdht_wetget()  
{
     int dc=0;
     inti;
     for(i=8;i<16;i++)
     {
     dc=dc<<1|dat;
     }
     dc=dc&0x7f;
     return dc;
}

全部资料51hei下载地址:
代码仿真.7z (239.53 KB, 下载次数: 109)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表