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

📄 constanttemp.c

📁 绝对原创
💻 C
字号:

/*************************************************************************************************************
*	函数名称 :
*	功能描述 :
*	实际参数 :
*	返回值   :
*	说明     :
**************************************************************************************************************/
	  
	#include "define.h"    

	uint  xdata Check_TempTime[10] ;							// 检测温度周期时间
	uint  xdata Old_NewTemp[10] ;								// 在前一周期的瞬间时间
	uint  xdata HeatUp_Time[10] ;								// 加热时间
																		
/*************************************************************************************************************
*	函数名称 :	void Heat_OnOff(bit onoff,uchar road)
*	功能描述 :
*	实际参数 :
*	返回值   :
*	说明     :	输出发热丝
**************************************************************************************************************/
	
	void Heat_OnOff(bit onoff,uchar road)
	{
		switch (road)
		{
			case 0:
						Temp_Heat0 = onoff ;

						break ;

		  	case 1:
						Temp_Heat1 = onoff ;

						break; 

			case 2:
						Temp_Heat2 = onoff ;

						break ;

			case 3:
						Temp_Heat3 = onoff ;

						break ;

			case 4:
						Temp_Heat4 = onoff ;

						break ; 

			case 5:
						Temp_Heat5 = onoff ;

						break ;
						
			case 6:
						Temp_Heat6 = onoff ;

						break ;

		    case 7:
						Temp_Heat7 = onoff ;

						break ;

			case 8:
						Temp_Heat8 = onoff ;

						break ;

			case 9:
						Temp_Heat9 = onoff ;

						break ;

			default:
						break ;

		}
	}

/*************************************************************************************************************
*	函数名称 : void ConstantTemp(uchar road) 
*	功能描述 :
*	实际参数 :
*	返回值   :
*	说明     :	road 第几路控温
**************************************************************************************************************/
	
	void ConstantTemp(uchar road)
    {
		uint temp ;

		// 是否有断线// 设置温度大于0 // 设置温度要大于实际温度
		
		if ((Thermocouple_Open[road] != 0x22) && (Site_TempDat[road] > 0) && (Site_TempDat[road] > Fact_Temp[road]))
 	    {	
			temp = Site_TempDat[road] - Fact_Temp[road] ;					   	// 算实际相差几度				
			if (temp <= SiteFack_Temp)										   	// 在设定范围内运行检测程序	
			{
				if (Check_TempTime[road] >= (Check_TempTimeCycle * SEC_TIME))	// 运算时间周期到了没有
				{
					Check_TempTime[road] = 0 ;									// 清计时时间
					if (Old_NewTemp[road] >= New_Temp[road]) 					// 当前瞬间温度比前周期温度小,
					{
						HeatUp_Time[road] = (Check_TempTimeCycle + 1) * SEC_TIME ;	// 载入加温时间,加1为了连续两周期都加温时,中间见不到停温现象
					}
					else
					{
						HeatUp_Time[road] = 0 ;									// 加热时间清0
					}
	
					if (New_Temp[road] <= Site_TempDat[road])					// 瞬间温度比设置温度小
					if ((New_Temp[road] > Old_NewTemp[road]) || (New_Temp[road] <= (Old_NewTemp[road] - 3)))//这样就不会加不上温度,即使加不上,都是一直在加温的
	 					Old_NewTemp[road] = New_Temp[road] ;
				}
		 	}
			else
			{
				HeatUp_Time[road] = SEC_TIME ;									// 继续不断加温
			}
		}
	    else	// 没有15度标志,两种情况,温度过高,温度相差大于在15度 
		{
			HeatUp_Time[road] = 0 ;												// 清加热时间		

			if (Fact_Temp[road] >= Site_TempDat[road])							// 判断实际温度是否过大
			{
				Old_NewTemp[road] = Site_TempDat[road] - 1 ;
			}	
		}
	}   	

/*************************************************************************************************************
*	函数名称 :  
*	功能描述 :
*	实际参数 :
*	返回值   :
*	说明     :	 控温程序
**************************************************************************************************************/

	void ControlTemp(void) 
	{
		uchar road ;

		for (road = 0;road < 10;road++)
		{
			ConstantTemp(road) ;
		}
	}
 
/*************************************************************************************************************
*	函数名称 :	void HeatUPCheckTempTime(void)
*	功能描述 :	加温计时,检测温度周期时间计时
*	实际参数 :
*	返回值   :
*	说明     :	
**************************************************************************************************************/
	
	void HeatUPCheckTempTime(void)
	{
		uchar number ;

		for (number = 0;number < 10;number++)
 	    {
			if (Site_TempDat[number] > Fact_Temp[number])			// 计时检测温度周期
				Check_TempTime[number]++ ;
			else
				Check_TempTime[number] = 0 ;						// 在过温或相差非常大的时候,计数器清0
	
			if (HeatUp_Time[number])
			{
				Heat_OnOff(HEAT_ON,number) ;						// 启动发热丝
				Thermocouple_Open[number] = 0x11 ;					// 置加热信息
				HeatUp_Time[number]-- ;
		    }
			else
			{
				Heat_OnOff(HEAT_OFF,number) ; 						// 关闭发热丝
				if (Thermocouple_Open[number] == 0x11) 
					Thermocouple_Open[number] = 0x00 ;				// 置位不加热信息
			}
		}
	}
 		
/*************************************************************************************************************
*	函数名称 :
*	功能描述 :
*	实际参数 :
*	返回值   :
*	说明     :
**************************************************************************************************************/

  

		
   

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -