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

📄 readtemp.c

📁 原创
💻 C
📖 第 1 页 / 共 2 页
字号:
			Road_Dat += 1 ;									// 路数值,(在储存温度值用)	

			if (Road_Dat >= TEMP_NUMBER)
				Road_Dat = 0 ;				   			

			TempRelayOnoff(ON,Road_Dat) ;				   // 接通下一个继电器	 				
			 
			if (Road_Dat > 0)
			if (Read_Number > 1)
				Read_Number -= 2  ;								
		}	
	}

/*************************************************************************************************************
*	函数名称 :
*	功能描述 :
*	实际参数 :
*	返回值   :
*	说明     :	处理温度数据
**************************************************************************************************************/

	void NeatenTemp(void)
	{
		if (Read_Time >= READ_TIME)						// 转换时间
		{
			Read_Time = CLEAR ;							
			ReadTempDat() ;								// 读温度数据

			TempCs(ON) ;                          		/* 进行温度转换 */			
		}
	}  

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

		// 是否有断线// 设置温度大于0 // 设置温度要大于实际温度		
		if ((Thermocouple_Open[road] != TEMP_OPEN) && (Site_Temp[road] > 0) && ((Site_Temp[road] << 2) > Fact_Temp[road]))
 	    {	
			temp = (Site_Temp[road] << 2) - Fact_Temp[road] ;					   	// 算实际相差几度				
			if (temp <= (SiteFack_Temp << 2))										   	// 在设定范围内运行检测程序	
			{
				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_Temp[road] << 2))					// 瞬间温度比设置温度小
					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_Temp[road] << 2))						// 判断实际温度是否过大
			{
				Old_NewTemp[road] = ((Site_Temp[road] - 1) << 2) ;
			}	
		}
	}   	

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

	void ControlTemp(void) 
	{
		uint8 road ;

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

		for (number = 0;number < TEMP_NUMBER;number++)				// 有几路温度TEMP_NUMBER
 	    {
			if ((Site_Temp[number] << 2) > Fact_Temp[number])		// 计时检测温度周期
				Check_TempTime[number]++ ;
			else
				Check_TempTime[number] = 0 ;						// 在过温或相差非常大的时候,计数器清0
	
			if (HeatUp_Time[number])
			{		
				TempHeatOnOff(HEAT_ON,number);			
				Thermocouple_Open[number] = TEMP_HEAT_UP ;			// 置加热信息
				HeatUp_Time[number]-- ;
		    }
			else
			{	
				TempHeatOnOff(HEAT_OFF,number);	
						
				if (Thermocouple_Open[number] == TEMP_HEAT_UP) 
					Thermocouple_Open[number] = TEMP_CLOSE ;		// 置位不加热信息
						 
				if (Thermocouple_Open[number] != TEMP_HEAT_UP)
				if (Thermocouple_Open[number] != TEMP_OPEN) 				
					Thermocouple_Open[number] = TEMP_CLOSE ;
			}
		}
	}	

/*************************************************************************************************************
*	函数名称 :	void TimerRun(void) 
*	功能描述 :
*	实际参数 :
*	返回值   :
*	说明     :	时间定时器
**************************************************************************************************************/

	void TimerRun(void) 
	{	
		if (Time_Int != Old_Time_Int)									// 累加时间中断
		{ 
			Old_Time_Int = Time_Int ;									// 下次比较	
			
			Read_Time += 1 ;										    // 读温度时间
			
			HeatUPCheckTempTime() ;										// 加温,检测计时器	   			
		}	
	}	

/*************************************************************************************************************
*	函数名称 :
*	功能描述 :
*	实际参数 :
*	返回值   :
*	说明     :	初始化变量
**************************************************************************************************************/
	
	void InitializeDat(void)
	{
		uint8 d,c ;
	
		for (c = 0;c < TEMP_NUMBER;c++)
		{
			for (d = 0;d < ALL_READ;d++)
			{
				All_Temp[c][d] = 0 ;	// 全清零	 			
			}		 
		}
		
		for (c = 0;c < TEMP_NUMBER;c++)
		{
			Check_TempTime[c] = 0 ;							 
	  		Old_NewTemp[c] = 0 ;	
			New_Temp[c] = 0 ;							 
	  		HeatUp_Time[c] = 0 ;

			Thermocouple_Open[c] = 0 ;
			Disp_Temp[c] = 0 ;
		}  		
		
		TempRelayOnoff(ON,0) ;                 /* 选通第一路热电偶 */	
	
		Delay0(READ_DELAY) ;
		TempCs(ON) ;                           /* 进行温度转换 */		

		Read_Time = CLEAR ;		 
	}

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

	void TempControl(void)
	{    
		static uint8 Inint_Dat = 0 ;

		if (Inint_Dat == 0)
		{
			InitializeDat()	;			// 初始化
			Inint_Dat = 0xff ;
		}

		if ((SiteFack_Temp > MAX_TEMP) || (SiteFack_Temp < MIN_TEMP))
			SiteFack_Temp = TYP_TEMP ;
			
		if ((Check_TempTimeCycle > MAX_SEC) || (Check_TempTimeCycle < MIN_SEC))
			Check_TempTimeCycle = TYP_SEC ; 

		TimerRun() ;					// 时间处理						
		NeatenTemp() ;					// 处理温度			
		ControlTemp() ;					// 控温
	}

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

⌨️ 快捷键说明

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