找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 1372|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

基于52的溫度濕度傳感器LCD顯示

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:523577 發(fā)表于 2019-5-29 14:52 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
#include <reg52.h>
#include <intrins.h>
#include <math.h>
#include <lcd1602.h>
#define uchar unsigned char
#define uint unsigned int

unsigned char table1[]="2019/5/29    Wed";//Mon(一) Tues(二) Wed(三) Thur(四) Fri(五) Sat(六) Sun(日)

sbit Data = P3^7;//定義數(shù)據(jù)線
unsigned char table2[]="SD:00RH  WD:00C";
unsigned char code ASCII[15]={'0','1','2','3','4','5','6','7','8','9','.','-','M'};
unsigned char disbuff[9]={0,0,0,0,0,0,0,0,0};
/*--------------------------------------DHT11延時(shí)函數(shù)------------------------------------------*/
void DHT11_delay_us(uchar n)
{
    while(--n);
}
void DHT11_delay_ms(uint z)
{
   uint i,j;
   for(i=z;i>0;i--)
      for(j=110;j>0;j--);
}
/*---------------------------------------DHT11開始信號(hào)--------------------------------------------*/
void DHT11_start()
{
   Data=1;
   DHT11_delay_us(2);
   Data=0;
   DHT11_delay_ms(20);   //延時(shí)18ms以上
   Data=1;
   DHT11_delay_us(30);
}
uchar DHT11_rec_byte()      //接收一個(gè)字節(jié)
{
   uchar i,dat=0;
  for(i=0;i<8;i++)    //從高到低依次接收8位數(shù)據(jù)
   {         
      while(!Data);   ////等待50us低電平過去
      DHT11_delay_us(8);     //延時(shí)60us,如果還為高則數(shù)據(jù)為1,否則為0
      dat<<=1;           //移位使正確接收8位數(shù)據(jù),數(shù)據(jù)為0時(shí)直接移位
      if(Data==1)    //數(shù)據(jù)為1時(shí),使dat加1來接收數(shù)據(jù)1
         dat+=1;
      while(Data);  //等待數(shù)據(jù)線拉低   
    }  
    return dat;
}
void DHT11_receive()      //接收40位的數(shù)據(jù)
{
    uchar R_H,R_L,T_H,T_L,RH,RL,TH,TL,revise;
    DHT11_start();
    if(Data==0)
    {
        while(Data==0);   //等待拉高     
        DHT11_delay_us(40);  //拉高后延時(shí)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);    //結(jié)束
        if((R_H+R_L+T_H+T_L)==revise)      //校正
        {
            RH=R_H;
            RL=R_L;
            TH=T_H;
            TL=T_L;
        }
    LcdShowStr(0,1,table2);
    LcdShowStr(0,0,table1);
    DisplayOneChar(15,1,0xdf);
    disbuff[5]=RH/10;
    disbuff[6]=RH%10;
    disbuff[7]=TH/10;
    disbuff[8]=TH%10;
       DisplayOneChar(3, 1, ASCII[disbuff[5]]);
    DisplayOneChar(4, 1, ASCII[disbuff[6]]);
    DisplayOneChar(12, 1, ASCII[disbuff[7]]);
    DisplayOneChar(13, 1, ASCII[disbuff[8]]);
    }
}
/*--------------------------------------主函數(shù)-----------------------------------------------*/
void main(void)
{
InitLcd1602();
while (1)
  {
    DHT11_receive();
  }
}

溫度.7z

19.99 KB, 下載次數(shù): 22, 下載積分: 黑幣 -5

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

使用道具 舉報(bào)

沙發(fā)
ID:601620 發(fā)表于 2020-3-31 11:06 | 只看該作者
此帖僅作者可見

使用道具 舉報(bào)

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表