⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 安装在车上
💻 C
📖 第 1 页 / 共 2 页
字号:
				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 + -