|
#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;//定義數據線
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延時函數------------------------------------------*/
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開始信號--------------------------------------------*/
void DHT11_start()
{
Data=1;
DHT11_delay_us(2);
Data=0;
DHT11_delay_ms(20); //延時18ms以上
Data=1;
DHT11_delay_us(30);
}
uchar DHT11_rec_byte() //接收一個字節
{
uchar i,dat=0;
for(i=0;i<8;i++) //從高到低依次接收8位數據
{
while(!Data); ////等待50us低電平過去
DHT11_delay_us(8); //延時60us,如果還為高則數據為1,否則為0
dat<<=1; //移位使正確接收8位數據,數據為0時直接移位
if(Data==1) //數據為1時,使dat加1來接收數據1
dat+=1;
while(Data); //等待數據線拉低
}
return dat;
}
void DHT11_receive() //接收40位的數據
{
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); //拉高后延時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); //結束
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]]);
}
}
/*--------------------------------------主函數-----------------------------------------------*/
void main(void)
{
InitLcd1602();
while (1)
{
DHT11_receive();
}
}
|
-
-
溫度.7z
2019-5-29 14:52 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
19.99 KB, 下載次數: 22, 下載積分: 黑幣 -5
|