https://www.bilibili.com/video/BV1Wz411v7Ks
b站視頻演示
單片機源程序如下:
- #include "reg51.h"
- #include "lcd1602.h"
- #include "dht11.h"
- #include "delay.h"
- #include <stdlib.h>
- #include <stdio.h>
- #include <string.h>
- #include "keyscanner.h"
- sbit led1=P0^1;
- sbit led2=P0^2;
- unsigned char DHT[5];
- int RH,T,key_num;
- int set_T=25,set_RH=80;
- extern char str_key[10];
- char str_RH[10],str_T[10],str_key_num[10];
- char str_RH_set[10],str_T_set[10];
- void GET_VAR(int num);
- void SET_VAR(int num);//num:0為濕度,num:1為溫度
- void display_all();
- void main()
- {
- LCD_init();
- DHT_Start();
- delay_ms(1);
- while(1)
- {
- display_all();
- key_num=key_scan();
- if(key_num==12)
- {
- LCD_write_command(0x01);
- set_T=set_T+1;
- //SET_VAR(2);
-
- }
- else if(key_num==16)
- {
- LCD_write_command(0x01);
- set_T=set_T-1;
- }
- if(key_num==4)
- {
- LCD_write_command(0x01);
- set_RH=set_RH+1;
- //SET_VAR(2);
-
- }
- else if(key_num==8)
- {
- LCD_write_command(0x01);
- set_RH=set_RH-1;
- }
- if(set_T<T)
- {
- led1=0;
- }
- else
- {
- led1=1;
- }
- if(set_RH<RH)
- {
- led2=0;
- }
- else
- {
- led2=1;
- }
- }
- }
- void GET_VAR(int num)//num:0為濕度,num:2為溫度
- {
- DHT_Start();
- DHT_ByteRead(DHT);
- if(num==0)
- {
- RH=DHT[0];//rh:濕度
- sprintf(str_RH,"RH:%d%%",RH);
- LCD_dsp_string(1,1,str_RH);//濕度
- }
- else if(num==2)
- {
- DHT_Start();
- DHT_ByteRead(DHT);
- T=DHT[2];//T
- sprintf(str_T," T:%dC",T);
- LCD_dsp_string(7,1,str_T);//溫度
- }
- }
- void SET_VAR(int num)//num:0為濕度,num:1為溫度
- {
- if(num==0)
- {
- sprintf(str_RH_set,"RH:%d%%",set_RH);
- LCD_dsp_string(1,2,str_RH_set);//濕度
- }
- else if(num==2)
- {
- sprintf(str_T_set," T:%dC",set_T);
- LCD_dsp_string(7,2,str_T_set);//溫度
- }
- }
- void display_all()
- {
- GET_VAR(0);
- GET_VAR(2);
- SET_VAR(0);
- SET_VAR(2);
- }
復制代碼
所有資料51hei提供下載:
基于AT89C51的溫濕度檢測系統設計與實現.zip
(118.54 KB, 下載次數: 53)
2020-7-27 03:15 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|