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

標題: 有沒有大佬能幫我把這個單片機程序多加點注釋,看不懂 [打印本頁]

作者: 1826928931    時間: 2020-9-14 17:28
標題: 有沒有大佬能幫我把這個單片機程序多加點注釋,看不懂
#include "STC12C5A60S2.h"
#include"HW_Printf.h"
#include "BH1750.h"
#include"Sys_Setting.h"
#include "HW_iic.h"
#include <intrins.h>
#include <math.h>
#include<stdio.h>


void delaytime(u16 ms)
{
    u16 i=0;
    u16 j=0;
    for(i=0;i<ms;i++)
    {
        for(j=0;j<110;j++);
    }
}

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


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

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);
}

sbit TRH = P2^0;//溫濕度傳感器DHT11數據接入
int TH_temp,TL_temp,RH_temp,RL_temp,CK_temp,respond,com_data,temp;

//-------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 main()
{
    u16 Rec_Val = 0;
    Uart1_Init();
    Init_BH1750();      
    delaytime(100);
    DHT11_receive();   //溫濕度讀取
    while(1)
    {
        Single_Write_BH1750(0x01);   // power on
        Single_Write_BH1750(0x10);   // H- resolution mode
        delay(500);
        Rec_Val = Multiple_read_BH1750();
        DHT11_receive();   //溫濕度讀取
        delay(100);

        printf("**************************\n");        
        printf("The light value is %d \n",Rec_Val);
        delaytime(2000);

        printf("The tempature is:%d\n",(int)TH_temp);
        delaytime(2000);

        printf("The humdity is:%d\n",(int)RH_temp);   
        delaytime(2000);
        printf("**************************\n");
        
        delaytime(8000);                             
    }

}

作者: 打畫大餅的lowB    時間: 2020-9-16 15:05
雖然我也看不懂,但是我猜是一個單片機控制的溫濕度計




歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1