|
本帖最后由 Zzboy 于 2020-6-26 11:52 編輯
#include <reg52.h>
#include "1602.h"
#include "dht.h"
#include "2402.h"
sbit buzzer=P2^0;
//定義LED燈
sbit Led=P1^6; //除濕燈
sbit fan=P1^5;
sbit Key_HH1 = P3^4;
sbit Key_HH2 = P3^5;
//定義標識
volatile bit FlagStartRH = 0; //開始溫濕度轉換標志
volatile bit FlagKeyPress = 0; //有鍵按下
//定義溫濕度傳感器用外部變量
extern U8 U8FLAG,k;
extern U8 U8count,U8temp;
extern U8 U8T_data_H,U8T_data_L,U8RH_data_H,U8RH_data_L,U8checkdata;
extern U8 U8T_data_H_temp,U8T_data_L_temp,U8RH_data_H_temp,U8RH_data_L_temp,U8checkdata_temp;
extern U8 U8comdata;
extern U8 count, count_r;
U16 temp;
S16 humidity;
S16 idata HH; //濕度上限
char * pSave;
//定義變量
U16 RHCounter;
//數據初始化
void Data_Init() {
RHCounter = 0;
Led = 1;
HH = 85;
}
//定時器0初始化
void Timer0_Init() {
ET0 = 1; //允許定時器0中斷
TMOD = 1; //定時器工作方式選擇
TL0 = 0x06;
TH0 = 0xf8; //定時器賦予初值
TR0 = 1; //啟動定時器
}
//定時器0中斷
void Timer0_ISR (void) interrupt 1 using 0 {
TL0 = 0x06;
TH0 = 0xf8; //定時器賦予初值
//每2秒鐘啟動一次溫濕度轉換
RHCounter ++;
if (RHCounter >= 1000) {
FlagStartRH = 1;
RHCounter = 0;
}
}
//存入設定值、
void Save_Setting() {
pSave = (char *)&HH;
wrteeprom(2, *pSave); //存濕度上限值RH低8位
DELAY(500);
pSave ++;
wrteeprom(3, *pSave); //存濕度上限值RH高8位
DELAY(500);
}
//載入設定值、
void Load_Setting() {
pSave = (char *)&HH;
*pSave++ = rdeeprom(2);
*pSave = rdeeprom(3);
if ((HH>99)||(HH<0)) HH = 85;
}
/********************************************************************
* 名稱 : Main()
* 功能 : 主函數
***********************************************************************/
void main() {
U16 i, j, testnum;
EA = 0;
Timer0_Init(); //定時器0初始化
Data_Init();
EA = 1;
L1602_init();
// L1602_string(1,1," Welcome to H ");
//延時
for (i=0; i<500; i++)
for (j=0; j<1000; j++)
{;}
//清屏
L1602_string(1,1,"Hum: % H: % ");
//載入濕度上限設定值
Load_Setting();
L1602_char(1, 13, HH/10+48);
L1602_char(1, 14, HH%10+48);
while(1) {
//溫濕度轉換標志檢查
if (FlagStartRH == 1) { //定時器
TR0 = 0;
testnum = RH();
FlagStartRH = 0;
//讀出濕度,只取整數部分
TR0 = 1;
humidity = U8RH_data_H;
//顯示濕度
L1602_int(1,2,humidity);
}
if (!Key_HH1) { //上下限處理
DELAY(5000);
DELAY(5000);
DELAY(5000);
DELAY(5000);
DELAY(5000);
DELAY(5000);
if (!Key_HH1) {
if(HH>0)
HH--;
else HH=0;
L1602_char(1, 13, HH/10+48);
L1602_char(1, 14, HH%10+48);
Save_Setting();
}
}
if (!Key_HH2) {
DELAY(5000);
DELAY(5000);
DELAY(5000);
DELAY(5000);
DELAY(5000);
DELAY(5000);
if (!Key_HH2) {
if(HH>99)
HH=99;
else HH++;
L1602_char(1, 13, HH/10+48);
L1602_char(1, 14, HH%10+48);
Save_Setting();
}
}
if (humidity > HH) {
fan=0;
Led = 0; //燈打開
buzzer=0;
DELAY(5000);
Led = 1; //濕度燈關
buzzer=1;
DELAY(5000);
} else {
fan=1;
}
}
}
@VHB6W_CU2IPO8IS`QSDK~O.png (49.25 KB, 下載次數: 13)
下載附件
2020-6-26 11:50 上傳
|
-
-
濕度控制.zip
2020-6-26 11:52 上傳
點擊文件名下載附件
69.92 KB, 下載次數: 5
|