/******************************************************************************* * 函 数 名 :BeepControl * 函数功能 :蜂鸣器控制 , 每10ms调用一次 * 输 入 :无 * 输 出 :无 *******************************************************************************/ void BeepControl()//每10mS调用一次 { if (Beep_EN) { if (Beep.PWR_time) { PWR_CTRL=0;//供电 Beep.PWR_time--; } else { PWR_CTRL=1;//掉电,依靠电容放电实现和弦拖音 } if (Beep.FREQ_time) { Beep.FREQ_time--; TR0 = 1;//启动定时器发声 } else { TR0 = 0;//停止定时器发声 BeepSet(); PWR_CTRL=0;//发声完毕,打开电源给电容充电 } } else { BUZZER_IO=0; TR0 = 0;//停止定时器发声 } return; }
/* * 函数介绍:长按滤芯键3S,所有滤芯复位子程序: * 输入参数:无 * 输出参数:无 * 返回值:无 */ void FilterResetDeal(void) { // if(flag3&LIFE_OVER_VALUE) if(f_PP1_life_over||f_C1_life_over||f_PP2_life_over||f_RO_life_over||f_CUF_life_over) { //任意一级滤芯寿命到期,复位寿命。 PP1filterTime = 0; C1filterTime = 0; PP2filterTime = 0; ROfilterTime = 0; CUFfilterTime = 0; f_filter_reset_Ok = 1; BeepSet(1,20,0); f_PP1_life_over = 0; f_C1_life_over = 0; f_PP2_life_over = 0; f_RO_life_over = 0; f_CUF_life_over = 0; // if(ZjMode == 0) { SetWriteData(); } } }
/* * 函数介绍:按键处理程序 10MS调用一次 * 输入参数:无 * 输出参数:无 * 返回值:无 */ void Key(void) { if(f_zs_err) { //制水故障,整机失效。 return; } if(ZjMode != 0) { if(keyValue == C_LX_L_PRE) { // BeepSet(1,100,0); FilterResetDeal(); } return; } switch(keyValue) { case C_CX_PRE: //if(!f_first_10s) if(DisPowCount < 3) { //上电前10s按 break; } //SetWriteData(); BeepSet(1,20,0); if(SetMode) { life[SetMode-1] = 0; //将当前滤芯时间清零。 switch(SetMode) //将相应滤芯寿命到标志清零。 { case 1: f_PP1_life_over = 0; break; case 2: f_C1_life_over = 0; break; case 3: f_PP2_life_over = 0; break; case 4: f_RO_life_over = 0; break; case 5: f_CUF_life_over = 0; break; default: break; } SetMode ++; if(SetMode >= 6) { SetMode = 0; } SettingTime = 0; SetWriteData(); break; } if(f_cx_auto&&CxTime) { //当前为自动冲洗, f_cx_auto = 0; CxTime = C_CX_MANU_T; } else if(CxTime) { CxTime = 0; if(HiSwitchCheckT2 >= 250) //自动冲洗时间清零时,再一次检测看开关有没有闭合5S. { f_zs_on = 1; } HiSwitchCheckT2 = 0; } else { CxTime = C_CX_MANU_T; } f_cx_auto = 0; break; /* case C_CX_L_O: if(f_first_10s) { //上电10s后长按松开后无效。 break; } BeepSet(1,20,0); if(f_cx_auto&&CxTime) { //当前为自动冲洗, f_cx_auto = 0; CxTime = C_CX_MANU_T; } else if(CxTime) { CxTime = 0; } else { CxTime = C_CX_MANU_T; } f_cx_auto = 0; break; */ case C_CX_L_PRE: if(f_first_10s) { break; } BeepSet(1,20,0); ZjMode = 0x01; //进入快检模式。 SelfChekDis = 50; //快检前全屏显示1S DisPowCount = 4; //取消上电前的闪动显示。 break; case C_LX_PRE: if(SetMode) { BeepSet(1,20,0); SetMode ++; if(SetMode >= 6) { SetMode = 0; SettingTime = 0; } } else { BeepSet(1,20,0); } break; case C_LX_L_PRE: if(!f_first_10s) { //上电前10秒长按滤芯无效。 break; } FilterResetDeal(); break; case C_LX_LL_PRE: if(!f_first_10s) { //上电前10秒长按滤芯无效。 break; } if(f_filter_reset_Ok) { //当前长按5秒是由前面的长按3S且滤芯已全部复位而来,不处理, break; } if(SetMode == 0) { BeepSet(1,20,0); SetMode = 1; SettingTime = 0; } break; default: break; } if(++SettingTime >= 1000) { SettingTime = 0; SetMode = 0; } }
/* * 函数介绍:时间更新 500MS执行一次。 * 输入参数:无 * 输出参数:无 * 返回值:无 */ void TimeUpData(void) { uint8 i; if(!f_first_10s) { TimePower ++; if(TimePower >= 20) { f_first_10s = 1; } } //滤芯计时: lifehour ++; if(ZjMode) { PP1filterTime += 180; if(PP1filterTime >= C_PP1filter_life) { PP1filterTime = C_PP1filter_life; f_PP1_life_over = 1; } C1filterTime += 180; if(C1filterTime >= C_C1filter_life) { C1filterTime = C_C1filter_life; f_C1_life_over = 1; } PP2filterTime += 180; if(PP2filterTime >= C_PP2filter_life) { PP2filterTime = C_PP2filter_life; f_PP2_life_over = 1; } ROfilterTime += 180; if(ROfilterTime >= C_ROfilter_life) { ROfilterTime = C_ROfilter_life; f_RO_life_over = 1; } CUFfilterTime += 180; if(CUFfilterTime >= C_CUFfilter_life) { CUFfilterTime = C_CUFfilter_life; f_CUF_life_over = 1; } //将滤芯时间存储起来: //WriteFilterData(); //SetWriteData(); } else { #if C_DEBUG if(lifehour >= 1) { i = 1; lifehour = 0; PP1filterTime ++; if(PP1filterTime == C_PP1_life_1_3) { SetWriteData(); } else if(PP1filterTime == C_PP1_life_2_3) { SetWriteData(); } else if(PP1filterTime == C_PP1_life_2_3_2) { SetWriteData(); } else if(PP1filterTime == C_PP1filter_life) { SetWriteData(); } if(PP1filterTime >= C_PP1filter_life) { PP1filterTime = C_PP1filter_life +1; f_PP1_life_over = 1; } C1filterTime ++; if(C1filterTime == C_C1_life_1_3) { SetWriteData(); } else if(C1filterTime == C_C1_life_2_3) { SetWriteData(); } else if(C1filterTime == C_C1_life_2_3_2) { SetWriteData(); } else if(C1filterTime == C_C1filter_life) { SetWriteData(); } if(C1filterTime >= C_C1filter_life) { C1filterTime = C_C1filter_life +1; f_C1_life_over = 1; } PP2filterTime ++; if(PP2filterTime == C_PP2_life_1_3) { SetWriteData(); } else if(PP2filterTime == C_PP2_life_2_3) { SetWriteData(); } else if(PP2filterTime == C_PP2_life_2_3_2) { SetWriteData(); } else if(PP2filterTime == C_PP2filter_life) { SetWriteData(); } if(PP2filterTime >= C_PP2filter_life) { PP2filterTime = C_PP2filter_life +1; f_PP2_life_over = 1; } ROfilterTime ++; if(ROfilterTime == C_RO_life_1_3) { SetWriteData(); } else if(ROfilterTime == C_RO_life_2_3) { SetWriteData(); } else if(ROfilterTime == C_RO_life_2_3_2) { SetWriteData(); } else if(ROfilterTime == C_ROfilter_life) { SetWriteData(); } if(ROfilterTime >= C_ROfilter_life) { ROfilterTime = C_ROfilter_life +1; f_RO_life_over = 1; } CUFfilterTime ++; if(CUFfilterTime == C_CUF_life_1_3) { SetWriteData(); } else if(CUFfilterTime == C_CUF_life_2_3) { SetWriteData(); } else if(CUFfilterTime == C_CUF_life_2_3_2) { SetWriteData(); } else if(CUFfilterTime == C_CUFfilter_life) { SetWriteData(); } if(CUFfilterTime >= C_CUFfilter_life) { CUFfilterTime = C_CUFfilter_life +1; f_CUF_life_over = 1; } } #else if(lifehour >= 7200) { lifehour = 0; PP1filterTime ++; if(PP1filterTime >= C_PP1filter_life) { PP1filterTime = C_PP1filter_life; f_PP1_life_over = 1; } C1filterTime ++; if(C1filterTime >= C_C1filter_life) { C1filterTime = C_C1filter_life; f_C1_life_over = 1; } PP2filterTime ++; if(PP2filterTime >= C_PP2filter_life) { PP2filterTime = C_PP2filter_life; f_PP2_life_over = 1; } ROfilterTime ++; if(ROfilterTime >= C_ROfilter_life) { ROfilterTime = C_ROfilter_life; f_RO_life_over = 1; } CUFfilterTime ++; if(CUFfilterTime >= C_CUFfilter_life) { CUFfilterTime = C_CUFfilter_life; f_CUF_life_over = 1; } //将滤芯时间存储起来: //WriteFilterData(); SetWriteData(); } #endif } //连续制水计时: if(f_zs_on) { ZsContiTimer ++; if(ZsContiTimer >= C_ZsContiTimer) { ZsContiTimer = 0; f_zs_err = 1; BeepSet(30,25,25); //报警30下, } } else { ZsContiTimer = 0; } }