📄 main.c
字号:
UP_MOTOR_UNABLE ; //上水停止
TimeDelay(2) ;
UPDOWN_VAR_UNABLE ; //关闭上水阀们
return ;
}
}
}
if(up_water_flag=='U')
{//时间到,停止上水
up_water_time = 0 ;
up_water_flag = 0 ;
state = 0 ;
UP_MOTOR_UNABLE ; //上水停止
TimeDelay(2) ;
UPDOWN_VAR_UNABLE ; //关闭上水阀们
heat_common_bit = 0 ; //上水后,默认加热按键
alarm_flag = 'A' ;
alarm_time = 10 ;
alarm_cnt = BASE_ALARM_CNT ;
up_alarm_flag = 'U' ;
up_alarm_time = 1 ;
PWR_LED_IO = 0 ;
NORMAL_LED_IO = 0 ;
return ;
}
}
/******************************************************************************
退水
******************************************************************************/
void DownWater(void)
{
if(down_water_flag=='D')
{//时间到,停止上水
down_water_flag = 0 ;
state = 0 ;
DOWN_WATER_UNABLE ; //退水停止
DownDelay(2) ;
UPDOWN_VAR_UNABLE ; //关闭上水阀们
no_body_time = 0;
no_water_time = 0 ;
return ;
}
}
/******************************************************************************
加热
******************************************************************************/
void HeatWater(void)
{
no_body_time = BASE_NO_BODY_TIME ; //无人值守定时
no_water_time = 0 ;
if((avr>=WATER_TEMP)||(!W_LOW_CHECK_IO))
{//温度到,停止加热
state = 0 ;
HEAT_WATER_UNABLE ; //加热温度到,关闭继电器,停止加热
heat_led_flag = 0 ; //加热温度到,LED停止闪烁,变为LED灭
HEAT_LED_IO = 0 ;
NORMAL_LED_IO = 1 ; //常温灯亮
alarm_time = 6 ; //报警次数
alarm_cnt = BASE_ALARM_CNT ; //
alarm_flag = 'A' ;
return ;
}
if((heat_water_flag=='H')||(!W_LOW_CHECK_IO))
{//定时时间到,停止加热
heat_water_flag = 0 ;
state = 0 ;
HEAT_WATER_UNABLE ; //加热时间到,关闭继电器,停止加热
heat_led_flag = 0 ; //加热时间到,LED停止闪烁,变为LED常灭
HEAT_LED_IO = 0 ;
NORMAL_LED_IO = 1 ; //常温灯亮
alarm_time = 20 ; //报警次数
alarm_cnt = BASE_ALARM_CNT ; //
alarm_flag = 'A' ;
return ;
}
}
/******************************************************************************
常温
******************************************************************************/
void CommonWater(void)
{
}
/******************************************************************************
计算平均温度值
******************************************************************************/
void CalculateTemperature(void)
{
unsigned char i ;
unsigned int temp ;
temp_sample[sample_cnt] = ADRES ; //读取采样值
sample_cnt++ ;
if(sample_cnt>(N_SAMPLE-1))
{
sample_cnt = 0 ;
temp_all = 0 ;
for(i=0;i<N_SAMPLE;i++)
{
temp_all = temp_all+temp_sample[i] ;
}
temp_avr = temp_all/N_SAMPLE ; //采样平均值
temp = temp_avr*5 ;
temp = temp/8 ;
temp_avr = temp+3 ;
if(((temp_avr-avr)>=1)||((avr-temp_avr)>=1))
{
avr =(temp_avr+avr)/2 ;
}
}
ADGO = 1 ; //启动下一轮温度采样
}
/******************************************************************************
******************************************************************************/
void main()
{
unsigned char i ;
for(i=0;i<250;i++) ;
InitSystem() ;
while(1)
{
RefInitSystem() ;
if(ad_flag=='A')
{//温度采样
CalculateTemperature() ;
}
UP_DOWN_WATER:
if(key_flag=='U')
{//上水,退水键按下处理
heat_common_bit = 0 ; //xwh 12.13
up_alarm_flag = 0 ;
key_flag = 0 ; //按键按下,蜂鸣器响一次
alarm_flag = 0 ;
alarm_one_flag = 'O' ;
alarm_one_time = BASE_ALARM_ONE_TIME ;
no_body_time = BASE_NO_BODY_TIME ; //无人值守定时
no_water_time = 0 ;
up_down_bit = !up_down_bit ;
if(up_down_bit)
{//上水
if(state!=3)
{//加热时不允许上水
state = 1 ;
if(W_HIGH_CHECK_IO)
{//此时水位为高,不上水
state = 0 ;
PWR_LED_IO = 1 ; //水满时,电源灯亮
NORMAL_LED_IO = 1 ; //水满时,状态灯亮
HEAT_LED_IO = 0 ; //水满时,加热灯灭
UP_MOTOR_UNABLE ;
TimeDelay(2) ;
UPDOWN_VAR_UNABLE;
}
else
{
PWR_LED_IO = 1 ; //上水时,电源灯亮
NORMAL_LED_IO = 1 ; //上水时,状态灯亮
HEAT_LED_IO = 0 ; //上水时,加热灯灭
down_water_time = 0 ;
UPDOWN_VAR_ENABLE ; //打开上水阀门
TimeDelay(2) ;
UP_MOTOR_ENABLE ; //打开电机
up_water_time = BASE_UP_WATER_TIME ; //上水延时定时
up_water_flag = 0 ;
}
}
}
else
{//退水
state = 2 ;
alarm_flag = 0 ; //关闭上水报警
no_body_time = 0 ; //退水时,不用无人值守
no_water_time = 0 ;
PWR_LED_IO = 0 ; //退水时,电源灯灭
HEAT_LED_IO = 0 ; //退水时,加热灯灭
NORMAL_LED_IO = 0 ; //退水时,状态灯灭
HEAT_WATER_UNABLE ; //关闭加热
up_water_time = 0 ;
up_water_flag = 0 ;
heat_led_flag = 0 ;
UPDOWN_VAR_ENABLE ; //退水时,退水阀门打开
DownDelay(2) ;
DOWN_WATER_ENABLE ; //退水时,打开电机
down_water_time = BASE_DOWN_WATER_TIME ; //退水延时定时
}
}
else if(key_flag=='H')
{//加热,常温键按下处理
up_alarm_flag = 0 ;
key_flag = 0 ; //按键按下,蜂鸣器响一次
alarm_flag = 0 ;
alarm_one_flag = 'O' ;
alarm_one_time = BASE_ALARM_ONE_TIME ;
no_body_time = BASE_NO_BODY_TIME ; //无人值守定时
no_water_time = 0 ;
if((state!=1)&&(state!=2))
{//上水退水时不允许加热
heat_common_bit = !heat_common_bit ;
if(heat_common_bit)
{//加热
state = 3 ;
if(W_HIGH_CHECK_IO)
{//水位为高时允许加热
if(avr<WATER_TEMP)
{//判断此时温度
HEAT_WATER_ENABLE ; //加热阀门打开
heat_water_time = BASE_HEAT_WATER_TIME ; //加热延时定时
heat_led_time = BASE_HEAT_LED_TIME ; //使能加热灯闪烁
heat_led_flag = 'H' ;
NORMAL_LED_IO = 0 ; //关闭常温灯
PWR_LED_IO = 1 ;
}
else
{
state = 0 ;
}
}
else
{//水位低,补水
up_down_bit = 1 ; //默认为退水xwh
PWR_LED_IO = 1 ; //上水时,电源灯亮
NORMAL_LED_IO = 1 ; //上水时,状态灯亮
HEAT_LED_IO = 0 ; //上水时,加热灯灭
down_water_time = 0 ;
UPDOWN_VAR_ENABLE ; //打开上水阀门
TimeDelay(2) ;
UP_MOTOR_ENABLE ; //打开电机
up_water_time = BASE_UP_WATER_TIME ; //上水延时定时
up_water_flag = 0 ;
UPWATER_REPEAT:
while(!W_HIGH_CHECK_IO)
{//等待水满
no_body_time = BASE_NO_BODY_TIME ; //无人值守定时
no_water_time = 0 ;
if(up_water_flag=='U')
{//延时到,报警,灯闪烁
up_water_flag = 0 ;
up_water_time = 0 ;
alarm_time = 10 ;
alarm_cnt = BASE_ALARM_CNT ;
alarm_flag = 'A' ;
up_alarm_flag = 'U' ;
up_alarm_time = 1 ;
PWR_LED_IO = 0 ;
NORMAL_LED_IO = 0 ;
goto HEAT_ADD_COM ;
}
if(key_flag=='U')
{
up_water_time = 0 ; //xwh
up_water_flag = 0 ;
alarm_flag = 0 ; //xwh
goto UP_DOWN_WATER ;
}
else if(key_flag=='H')
{
up_water_time = 0 ; //xwh
up_water_flag = 0 ;
alarm_flag = 0 ; //xwh
heat_common_bit = !heat_common_bit ;
goto COMMON_WATER ;
}
else
{
}
}
for(i=0;i<3;i++)
{
chk_time=50 ;
while(chk_time) ;
if(!W_HIGH_CHECK_IO) goto UPWATER_REPEAT ;
}
up_water_time = 0 ;
up_water_flag = 0 ;
HEAT_ADD_COM:
UP_MOTOR_UNABLE ; //上水停止
TimeDelay(2) ;
UPDOWN_VAR_UNABLE ; //关闭上水阀们
if(W_HIGH_CHECK_IO)
{//水位为高时允许加热
HEAT_WATER_ENABLE ; //加热阀门打开
heat_water_time = BASE_HEAT_WATER_TIME ; //加热延时定时
heat_led_time = BASE_HEAT_LED_TIME ; //使能加热灯闪烁
heat_led_flag = 'H' ;
NORMAL_LED_IO = 0 ; //关闭常温灯
PWR_LED_IO = 1 ; //电源灯亮
}
else
{
state = 0 ;
}
}
}
else
{//常温
COMMON_WATER:
state = 4 ;
HEAT_WATER_UNABLE ; //关闭加热
NORMAL_LED_IO = 1 ; //常温灯亮
heat_led_flag = 0 ;
HEAT_LED_IO = 0 ; //加热灯灭
}
}
}
else
{
}
switch(state)
{//根据系统所处的状态进行操作
case 1: UpWater() ;
break ;
case 2: DownWater() ;
break ;
case 3: HeatWater() ;
break ;
case 4: CommonWater() ;
break ;
default:state = 0 ;
break ;
}
if(cup_flag=='C')
{
cup_flag = 0 ;
no_body_time = BASE_NO_BODY_TIME ; //无人值守定时
no_water_time = 0 ;
if((state!=1)&&(state!=2)&&(state!=3)&&(W_LOW_CHECK_IO!=0))
{
if(CUP_CHECK_IO)
{
DRINK_VAR_ENABLE ;
TimeDelay(2) ;
DRINK_MOTOR_ENABLE ;
while(CUP_CHECK_IO)
{
key_flag = 0 ;
no_body_time = BASE_NO_BODY_TIME ; //无人值守定时
no_water_time = 0 ;
alarm_flag = 0 ;
}
DRINK_MOTOR_UNABLE ;
TimeDelay(2) ;
DRINK_BACK_ENABLE ;
time = 200 ;
while(time)
{
no_body_time = BASE_NO_BODY_TIME ; //无人值守定时
no_water_time = 0 ;
alarm_flag = 0 ;
key_flag = 0 ;
}
DRINK_MOTOR_UNABLE ;
TimeDelay(2) ;
DRINK_VAR_UNABLE ;
no_body_time = BASE_NO_BODY_TIME ; //无人值守定时
no_water_time = 0 ;
key_flag = 0 ;
}
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -