参考程序
ALARM_LED=OFF;//指示灯熄灭 PUMP_LED=OFF; MANUAL_LED=OFF; AUTO_LED=OFF;
BUZZER=OFF;//关蜂鸣器 PUMP=OFF;//关水泵
LcdInit(); // 初始化液晶 LcdShowStr(0,0, "-Auto watering- "); // 显示系统自检 LcdShowStr(1,1, "system testing"); // ConfigTimer0(10); // 配置T0 定时10ms EA=0;// 关中断 } /**************************************** 函数功能:系统自动运行,故障报警 入口参数:无 *****************************************/ void AutoWork() { if(staSystem==E_AUTO) { Humidity(); AUTO_LED=ON; MANUAL_LED=OFF; if(TestVal>96||TestVal<5) { staSystem=E_ALARM; cnt=30; EA=1; }//故障 elseif(TestVal<SetVal) { PUMP=ON; PUMP_LED=ON; } elseif(TestVal>(SetVal+OFFSET)) { PUMP=OFF;PUMP_LED=OFF; } } ShowLcd1602();//更新显示 } /**************************************** 函数功能:系统自检,故障报警 入口参数:无 *****************************************/ void SelfCheck() { unsignedchar i,k,n; unsignedchar temp; for(i=0;i<3;i++) { ALARM_LED=ON; PUMP_LED=ON;//抽水指示 MANUAL_LED=ON;//手动指示 AUTO_LED=ON;//自动指示 delayms(500); ALARM_LED=OFF; PUMP_LED=OFF;//抽水指示 MANUAL_LED=OFF;//手动指示 AUTO_LED=OFF;//自动指示 delayms(500); } BUZZER=ON; delayms(500); BUZZER=OFF;
LcdClearScreen(); LcdShowStr(0,0,"Test Results:"); for(i=0;i<4;i++)//读取3次测量结果,过高故障报警 { temp=GetADCValue(3);//直接读取0通道 if(temp>240||temp<10)k++; } if(k>2)//自检故障 { EA=0;//关中断 while(1) { ALARM_LED=ON; LcdShowStr(1,10,"ERROR!"); delayms(550); LcdShowStr(1,10," "); ALARM_LED=OFF; delayms(250); if(n++<3)BUZZER=!BUZZER; elseBUZZER=OFF; } } LcdClearScreen(); |
Powered by Discuz! X3.4
© 2001-2023 Discuz! Team.