欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2370|回復: 2
打印 上一主題 下一主題
收起左側

基于STC89C52的溫濕度檢測

[復制鏈接]
跳轉到指定樓層
樓主
ID:387070 發表于 2021-4-14 08:22 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
基于STC89C52的溫濕度檢測,一個很經典的傳感器測試代碼,需要的朋友自己下載哦


//main.c
#include<reg52.h>
#include<intrins.h>
#include "HW_LCD1602.h"
#include "Sys_Define.h"

sbit TRH = P2^2;

int TH_temp,TL_temp,RH_temp,RL_temp,CK_temp,respond,com_data,temp;


void delay(unsigned int i)
{
    while(i--);
}


void delay_ms(unsigned int i)
{
    while(i--)
    delay(90);
}


void Delay18ms()                //@11.0592MHz
{
    unsigned char i, j, k;
   
    _nop_();
    _nop_();
    i = 1;
    j = 194;
    k = 159;
    do
    {
        do
        {
            while (--k);
        } while (--j);
    } while (--i);
}

void Delay10u()
{
    unsigned char i;
    _nop_();
    _nop_();
    _nop_();               
    i = 24;
    while (--i);
}


//-------dht11函數區---------
char DHT11_rec_byte()
{   
    char i;
    com_data=0;
    for(i=0;i<=7;i++)   
    {
        respond=2;
        while((!TRH)&&respond++);
        Delay10u();
            

        Delay10u();
                        

        Delay10u();
        if(TRH)
        {
            temp=1;
            respond=2;
            while((TRH)&&respond++);
        }
        else
        temp=0;
        com_data<<=1;
        com_data|=temp;   
    }
    return(com_data);  
}


/************************************************************

****************/
//濕度讀取子程序
//溫度高8位== TH_data
//溫度低8位== TL_data
//濕度高8位== RH_data
//濕度低8位== RL_data
//校驗 8位 == CK_data
//調用的程序有 delay();, Delay_5us();,RECEIVE();
/************************************************************

***************/
void DHT11_receive()
{
    //主機拉低18ms
    TRH=0;
    Delay18ms();
    TRH=1;
    //DATA總線由上拉電阻拉高 主機延時50us
                                    

    Delay10u();
                                             

    Delay10u();
    //delay_us();delay_us();delay_us();delay_us();
    //主機設為輸入 判斷從機響應信號
    TRH=1;
    //判斷DHT11是否有低電平響應信號 如不響應則跳出,

    //響應則向下運行   
    if(!TRH)   
    {
        respond=2;
        //判斷DHT11發出 80us 的低電平響應信號是否

        //結束
        while((!TRH)&& respond++);
        respond=2;
        //判斷從機是否發出 80us 的高電平,如發出則

        //進入數據接收狀態
        while(TRH && respond++);
        //數據接收狀態   
        RH_temp = DHT11_rec_byte();
        RL_temp = DHT11_rec_byte();
        TH_temp = DHT11_rec_byte();
        TL_temp = DHT11_rec_byte();
        CK_temp = DHT11_rec_byte();
        TRH=1;
    }                                                     

                  
}


void LCD_DisTemAndHum(u16 Tem,u16 Hum)
{
    u8 T_Decade=0,T_Digtal=0;
    u8 H_Decade=0,H_Digtal=0;

    T_Decade = Tem/10;
    T_Digtal = Tem%10;

    H_Decade = Hum/10;
    H_Digtal = Hum%10;
   
    Write_Com(0x80+5);
    Write_Date(0x30+T_Decade);
    Write_Date(0x30+T_Digtal);
   
    Write_Com(0x80+13);
    Write_Date(0x30+H_Decade);
    Write_Date(0x30+H_Digtal);   
}

void main(void)
{
    LCD_Init();
    Dis_Init();

    DHT11_receive();   //溫濕度讀取

    Delays(200);
    while(1)
    {
        LCD_DisTemAndHum(TH_temp,RH_temp);
        
        DHT11_receive();   //溫濕度讀取   
        Delays(100);   
    }         
}


溫濕度檢測.zip

56.18 KB, 下載次數: 23, 下載積分: 黑幣 -5

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:372579 發表于 2021-7-2 17:20 來自觸屏版 | 只看該作者
配上電路圖更好
回復

使用道具 舉報

板凳
ID:82944 發表于 2021-9-24 21:24 | 只看該作者
配上電路圖更好
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表