熱門: 51單片機(jī) | 24小時(shí)必答區(qū) | 單片機(jī)教程 | 單片機(jī)DIY制作 | STM32 | Cortex M3 | 模數(shù)電子 | 電子DIY制作 | 音響/功放 | 拆機(jī)樂(lè)園 | Arduino | 嵌入式OS | 程序設(shè)計(jì)
![]() |
發(fā)布時(shí)間: 2022-2-28 15:03
正文摘要:各位黑友,現(xiàn)在程序是第一行讀取的DHT11溫濕度如果高于第二行設(shè)置的標(biāo)準(zhǔn),左邊的燈就會(huì)相應(yīng)溫濕度分別亮。 我應(yīng)該修改哪里的代碼,可以在程序內(nèi)部設(shè)置一個(gè)最低溫濕度的限制,默認(rèn)讀取的DHT11溫濕度低于這個(gè)值就會(huì)相 ... |
if(閾值>溫濕度) |
這是main的c文件 #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=75; 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); } |
Powered by 單片機(jī)教程網(wǎng)