|
- #include<reg52.h>
- #include<intrins.h>
- #define uchar unsigned char
- #define uint unsigned int
- sbit Data=P1^0;
- uchar rec_dat[13]="123695669999";
- extern void InitLcd1602();
- uchar showset[16]="12369566999999";
- int wendu=0;
- int shidu=0;
- sbit shezhi=P2^0; //定義按鍵引腳
- sbit jia=P2^1;
- sbit jian=P2^2;
- sbit beep=P3^7; //定義蜂鳴器引腳
- int wendul=5; //溫度下限值
- int wenduh=30; //溫度上限值
- int shidul=30; //濕度下限值
- int shiduh=60; //濕度上限值
- int change=0;
- uchar key_can; //按鍵值
- extern void LcdShowStr(unsigned char x, unsigned char y, unsigned char *str);
- 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函數(shù)*********/
- void DHT11_start()
- {
- Data=1;
- DHT11_delay_us(2);
- Data=0;
- DHT11_delay_ms(20);
- Data=1;
- DHT11_delay_us(30);
- }
- uchar DHT11_rec_byte()
- {
- uchar i,dat=0;
- for(i=0;i<8;i++)
- {
- while(!Data);
- DHT11_delay_us(8);
- dat<<=1;
- if(Data==1)
- dat+=1;
- while(Data);
- }
- return dat;
- }
- void DHT11_receive()
- {
- uchar R_H,R_L,T_H,T_L,RH,RL,TH,TL,revise;
- DHT11_start();
- if(Data==0)
- {
- while(Data==0); //等待數(shù)據(jù)
- 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(); //獲取數(shù)據(jù)
- 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;
- }
- /*數(shù)據(jù)分解*0-9*/
-
- // rec_dat[0]='0'+(RH/10);
- // rec_dat[1]='0'+(RH%10);
- // rec_dat[2]='R';
- // rec_dat[3]='H';
- // rec_dat[4]=' ';
- // rec_dat[5]=' ';
- // rec_dat[6]='0'+(TH/10);
- // rec_dat[7]='0'+(TH%10);
- // rec_dat[8]='C';
- shidu=RH;
- wendu=TH;
- rec_dat[0]='H';
- rec_dat[1]=':';
- rec_dat[2]='0'+(RH/10);
- rec_dat[3]='0'+(RH%10);
- rec_dat[4]='R';
- rec_dat[5]='H';
- rec_dat[6]=' ';
- rec_dat[7]=' ';
-
- rec_dat[8]='T';
- rec_dat[9]=':';
- rec_dat[10]='0'+(TH/10);
- rec_dat[11]='0'+(TH%10);
- rec_dat[12]='C';
- }
- }
- /**********主函數(shù)***********/
- void main()
- {
- InitLcd1602(); //1602初始化
- while(1)
- {
- DHT11_delay_ms(500); //DHT11初始1S延時1500
- DHT11_receive();
-
- if(shezhi==0)
- {
- DHT11_delay_ms(2);
- if(shezhi==0)
- {
- change++;
- if(change>3)
- {
- change=0;
-
- }
-
- }
- }
-
- if(change==0)
- {
- if(jia==0)
- {
- DHT11_delay_ms(2);
- if(jia==0)
- {
- shidul++;
- if(shidul>99)
- {
- shidul=99;
-
- }
-
- }
- }
-
- if(jian==0)
- {
- DHT11_delay_ms(2);
- if(jian==0)
- {
- shidul--;
- if(shidul<0)
- {
- shidul=0;
-
- }
-
- }
- }
- }
-
- if(change==1)
- {
- if(jia==0)
- {
- DHT11_delay_ms(2);
- if(jia==0)
- {
- shiduh++;
- if(shiduh>99)
- {
- shiduh=99;
-
- }
-
- }
- }
-
- if(jian==0)
- {
- DHT11_delay_ms(2);
- if(jian==0)
- {
- shiduh--;
- if(shiduh<0)
- {
- shiduh=0;
-
- }
-
- }
- }
- }
-
-
-
- if(change==2)
- {
- if(jia==0)
- {
- DHT11_delay_ms(2);
- if(jia==0)
- {
- wendul++;
- if(wendul>99)
- {
- wendul=99;
-
- }
-
- }
- }
-
- if(jian==0)
- {
- DHT11_delay_ms(2);
- if(jian==0)
- {
- wendul--;
- if(wendul<0)
- {
- wendul=0;
-
- }
-
- }
- }
- }
-
- if(change==3)
- {
- if(jia==0)
- {
- DHT11_delay_ms(2);
- if(jia==0)
- {
- wenduh++;
- if(wenduh>99)
- {
- wenduh=99;
-
- }
-
- }
- }
-
- if(jian==0)
- {
- DHT11_delay_ms(2);
- if(jian==0)
- {
- wenduh--;
- if(wenduh<0)
- {
- wenduh=0;
-
- }
-
- }
- }
- }
-
- showset[0]='L';
- showset[1]=':';
- showset[2]='0'+(shidul/10);
- showset[3]='0'+(shidul%10);
-
- showset[4]='H';
- showset[5]=':';
- showset[6]='0'+(shiduh/10);
- showset[7]='0'+(shiduh%10);
-
- showset[8]='L';
- showset[9]=':';
- showset[10]='0'+(wendul/10);
- showset[11]='0'+(wendul%10);
- showset[12]='L';
- showset[13]=':';
- showset[14]='0'+(wenduh/10);
- showset[15]='0'+(wenduh%10);
-
- if((shidu< shidul )|| (shidu>shiduh))
- {
- beep=0;
-
- }
- else if((wendu< wendul )|| (wendu>wenduh))
- {
- beep=0;
- }
- else
- {
- beep=1;
- }
- LcdShowStr(0,1,showset); //顯示溫濕度設(shè)置
- LcdShowStr(0,0,rec_dat); //顯示溫濕度
- }
- }
復(fù)制代碼
|
-
-
DHT11(程序 電路圖).rar
2020-11-22 10:10 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
65.45 KB, 下載次數(shù): 13, 下載積分: 黑幣 -5
|