分享心得,你我共同进步:
上一次介绍完了所有的子函数,这次来给大家介绍介绍主函数的功能。
主函数除了有初始化部分,还有分有两个功能模式。其主要功能请看下图。

进入开机界面后,会有两个功能菜单选择,一个是正常模式,一个是设置模式,开机界面后默认进入正常模式,按“KY1”键可以再正常模式和设置模式之间进行切换。在两种功能模式下,均是以while循环来实现的,以确保各种模式的稳定运行及互不干扰。
在正常模式下会进行三种异常状况的检查,以及温度的实时刷新显示,还有控制继电器的输出。异常状况有三种,分别是传感器断开、传感器短路和温度超出量程范围等,当出现这三种异常状况时,将会启动蜂鸣器报警和红色LED指示灯报警,如果是传感器异常,数码管界面还将显示错误提示符“Err1”,如果是温度超出量程,将显示错误提示符“Err2”,提示符信息主要是方便用户检查系统错误,并及时排查错误,当错误排除后,系统将自动恢复。如果无任何异常,数码管界面将正常显示温度值,同时也将实测温度值与设定的温度值比较,实现温度控制。具体代码请看一下程序清单。
/*
* 正常模式下,只显示实时温度值,并检查键值进行模式切换;
* 检查各种异常状况,随时发出报警;控制继电器输出。
*/
#if MODE1_TEST
while (uiMenuMode == MENU_NORMAL) {
if (GuiCurKey == KY1) {
GuiCurKey = 0; /* 键值清零 */
uiMenuMode = MENU_SET; /* 进入初始菜单设置 */
uiModeState = MODE_SET_CURR; /* 起始默认为运行值设置 */
showClear();
indiCharShow("SC"); /* 运行值设置状态显示 */
break;
}
/*
* 非正常状态判断
*/
if (GuiCurVol > 3000 ) {
uiErrFlag = 1;
indiCharShow("Err1"); /* 显示错误代码,传感器断开 */
buzzerON(); /* 蜂鸣器报警 */
ledrON(); /* 指示灯报警 */
} else if (GuiCurVol < 100) {
uiErrFlag = 1;
indiCharShow("Err1"); /* 显示错误代码,传感器短路 */
buzzerON(); /* 蜂鸣器报警 */
ledrON(); /* 指示灯报警 */
} else if ((GuiCurVol < 413) || (GuiCurVol > 2873)) {
uiErrFlag = 1;
indiCharShow("Err2"); /* 显示错误代码,超出测量量程 */
buzzerON(); /* 蜂鸣器报警 */
ledrON(); /* 指示灯报警 */
} else {
uiErrFlag = 0;
buzzerOFF();
ledrOFF();
}
/*
* 正常状态下显示
*/
if (uiErrFlag == 0) { /* 无错误状态 */
decTosegShow(GuiCurTemp, PV); /* 实时显示温度值 */
decTosegShow(uiSetTempCurr * 10, SV); /* 当前温度设定值,*10补小数位 */
}
/*
* 输出控制
*/
if ((GuiCurTemp / 10) < (uiSetTempCurr - uiSetTempMove)) {
relayON(); /* 继电器闭合 */
ledgON(); /* 输出指示灯亮 */
} else {
relayOFF(); /* 继电器断开 */
ledgOFF(); /* 输出指示灯灭 */
}
}
#endif
我要赚赏金
