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

📄 microt02.c

📁 本要求适用于Microcon-T02半导体冰箱控制板(以下简称控制板)。本控制板由电源板、显示控制板两部分组成。
💻 C
📖 第 1 页 / 共 3 页
字号:
          } 
        else
          { 
            fFanOut=0;
            fSelfTest=0;
            } 
          }
     else
     {
      if(fColdOut)
         {
           fColdOut=0;
           fFanOut=1;
           rDispValue=0x02;
          }
      else  if(fHotOut)
          {
             fHotOut=0;
             fColdOut=1;
             sDispTemp();
            } 
      else
     { 
         fFanOut=0;
         fSelfTest=0;
         }  
      } 
    }     
  }
  
void  sDispTemp(void)
{
 	  if(fSenError)rDispValue=0xED;   //传感器故障 显示E2	
    else
   	{  
  if(rTempValue>0x85)	rDispValue=0xBB; //LL	 
   else
    {
   		    	if(rTempValue>0x80)
   		    	   {
   		    	   	rDispValue=rTempValue&0x7F;
   		    	  	rDispValue|=0xA0;  
   		    	    }
   		    	else 
   		    	  { 
   		    	   rDispValue=sBin_Bcd(rTempValue);	
   		    	 //  if(rTempValue<0x0A)rDispValue|=0xF0;	  2006-6-21 15:16
   		    	  	}
           }
       }  
 }
/*-------------------------------------------------------------------------------

-------------------------------------------------------------------------------*/ 
void  s2msTask()
{
	if(!(++rMCount))
	{
		rMsecond++; //250*2ms=500ms   
		rMCount=6;    
		}
	}
/*-------------------------------------------------------------------------------
//500ms时间到
-------------------------------------------------------------------------------*/ 	
void  	sCheckTime()
{	
   if(rMsecond)    
   {
     rMsecond--; 
     
     rSelfTestTime--;
   	 rWorkFlag.BYTE^=0x80;  //对fFlash求反
   	 rSecond++;
   	 
   	 if(rSecond>119)
   	 {	
   	 	rSecond=0;    //1分钟时间到 
   	  if(rInqOnTime>0)rInqOnTime--;
   	  }
   	  
   	 if(!--rSetTemp5s)
   	  {
   	    fTempSetS=0;
   	    sOnDelayCheck(); 
   	    if(rE2Data[1]!=rSetTemp)fNeedSaveE2=1; 
   	    rSaveDelay=cDelaySave;    
   	   }
   	 if(rSecond&0x01)
   	  { 
       if(rOnDelay)rOnDelay=rOnDelay-1;   
       else   fOnDelay=0;   //2006-7-5 12:42
        	    
  	   if(!--rFanDelay180s)
   	   {
   	     if(fColdOut==0)
   	          if(fHotOut==0)fFanOut=0; 
   	     rFanDelay180s=181;	
   	    }
   	  }
      
      if(fPowerOn)
      {
      if(fVolDown)
        {
         if(!--rVolDown60s) 
         {
          //  fPowerOn=0;
            if(!fInVolDown)rFanDelay180s=181;	
          //  fNeedSaveE2=1;
          //  rSaveDelay=cDelaySave;  
         //   fVolDown=0;
         //   fTempSetS=0; 
         //   rSetTemp=rE2Data[1];  //设定过程中断电,保持原来设置温度不变	        
	        	fInVolDown=1;
            fColdOut=0;  //电压异常,风扇延时3分钟关闭
  	        fHotOut=0; 	        	
	        	} 
         }
      if(fVolHigh)
      {
          if(!--rVolDown60s) 
         {
         //   fPowerOn=0;
            if(!fInVolHigh)rFanDelay180s=181;	
        //    fNeedSaveE2=1;
       //     rSaveDelay=cDelaySave;  
        //    fVolHigh=0;
	      //    fTempSetS=0; 
        //    rSetTemp=rE2Data[3];  //设定过程中断电,保持原来设置温度不变	    
            fInVolHigh=1;    
            fColdOut=0;  //电压异常,风扇延时3分钟关闭
  	        fHotOut=0; 
        	}       
        }  
        }
     }
}	
/*-------------------------------------------------------------------------------

-------------------------------------------------------------------------------*/ 
unsigned char   sBin_Bcd(unsigned char i)
{
   rCount2=0;
   while(i>9){
                       i-=10;
                       rCount2++;
                      }
   rCount2=(rCount2<<4)&0xF0;
   rCount2|=i;   
   return rCount2;
   }
/*-------------------------------------------------------------------------------
A=- B=P C=H D=r E=E F=灭
-------------------------------------------------------------------------------*/ 
void   sPushData()
{
	
	rDispTimeBrush=21;   //12*21=250ms  
	       	
	rDispValue=0xFF;
	
	if(fNegVol)rDispValue=0xBD; //显示Pr 
		
	else if(fPowerOn)  
	{
	if(rErrFlag.BYTE)  //有故障
	{
	   if(fSenError)rDispValue=0xED;   //传感器故障 显示Er	
	   else if(fTempMax80)rDispValue=0xDD; //温度高于 80 显示rr
	   else if(fInVolDown)rDispValue=0xAA; //电压低
	   else if(fInVolHigh)rDispValue=0xAA; //电压高
	   } 
 //******************************************************
  else	if(fTempSetS)  //温度设定状态
	{
		if(fFlash||(fenflash==0))
		       {
		        if(rSetTemp>(cNegSetTemp-1))  //10>9 10-10=0;
		          {
		          rDispValue=sBin_Bcd(rSetTemp-cNegSetTemp);
		         // if(rSetTemp<(cNegSetTemp+10))rDispValue|=0xF0; 
		              }
		        else 
		          { 
		          	rDispValue=cNegSetTemp-rSetTemp; //10-9=-1
		            rDispValue|=0xA0; 
		                }
		        }
			}
 //******************************************************			
	else{	
	      if(fFDisp)
   		 	{
   		 	 //采用查表方式实现摄氏转换为华式温度 2006-5-11 11:16
   		 	 if(rTempValue>0x80)
   		 	  { 
   		 	     rCount3=FTempTab[rTempValue-0x80]; 
   		 	     rDispValue=sBin_Bcd(rCount3);
   		 	    }
   		 	 else  if(rTempValue>37)rDispValue=0xCC; //HH 
   		 	 else 
   		 	      {
    		 	     rCount3=FTempTab[rTempValue+10]; 
   		 	       rDispValue=sBin_Bcd(rCount3);  		 	        
   		 	        }
   		 	  
   		 	  /*  采用计算方式实现摄氏转换为华式温度
  		 	      rCount1=rTempValue&0x7F;
   		 	
   		         if(rTempValue&0x80)rCount3=32-sMpy(rCount1);
   		         	
   		         else 	rCount3=sMpy(rTempValue)+32;
   		       
   		         rDispValue=sBin_Bcd(rCount3);
   		         
   		         if(rCount3>99)rDispValue=0xCC; //HH
   		          */
   	 		    }
   	 		
   		else 
   		 {
 		     if(rTempValue>0x80)
   		   {
   		      	rDispValue=rTempValue&0x0F; //显示温度范围0~65 2006-6-30 15:00	
   		      	
   		      	if(fModeDH01)
   		      	{
   		      	  if(rDispValue>5)rDispValue=0x5;
   		      	  }
   		      	   
   		      	else 
   		      	{  
   		      	  if(rDispValue>9)rDispValue=0x9;  
   		      	  }
   		      	  
   		        rDispValue=rDispValue|0xA0;
   		        }
   		    else if(rTempValue>65)rDispValue=0x65;
   		    else rDispValue=sBin_Bcd(rTempValue);	 
   	       
   	     }
   	    
		  }
	}
}
/*-------------------------------------------------------------------------------
-----------计算温度转换--*9/5=1.8= *2-*2/10--------------------------------------------------------
-------------------------------------------------------------------------------*/ 	
unsigned char sMpy(unsigned char rTemp)
{
   rTemp=rTemp<<1;       ;//*2
   rCount3=0;
   if(rTemp>100)
      {
      	if(rTemp>200)
      	  {
      	    rCount3=0x20;
      	    rCount2=sBin_Bcd(rTemp-200);
      	      }
      	else 
      	{ 
      	  rCount3=0x10;
          rCount2=sBin_Bcd(rTemp-100);
          }
        }
        
    else  rCount2=sBin_Bcd(rTemp);
    
    rCount2=rCount2>>4;
    rCount3=rCount3|rCount2;      
    rCount3=rTemp-rCount3;
    return rCount3;
   	}

/*-------------------------------------------------------------------------------
1N4148=0.6v (11.6-0.6)/(30+6.8)*6.8/5 *256=104   14V-0.6v=127
-------------------------------------------------------------------------------*/ 	
void   sVolCheck(void)
{
 //--------------------------------
  if(fInVolDown||fInVolHigh)
  {
    //正在电压保护状态,检查电压值恢复正常了吗? 11.7~13V
    if(fModeDH01)
    { 	
    if((rVolAdValue>cDh01RetMinVol)&&(rVolAdValue<cDh01RetMaxVol))
    {
      fInVolDown=0;
      fInVolHigh=0;
      fVolDown=0;
      fVolHigh=0;
      }
      }
    else
    {
    	if(rVolAdValue<cT02RetMaxVol)
    	{
      fInVolDown=0;
      fInVolHigh=0;
      fVolDown=0;
      fVolHigh=0;    		
    		}	
    	}	  
    }  
  else
  {    
  //---------型号为DH01--------------------------	
  if(fModeDH01)
  {  
  if(rVolAdValue<cDh01MinVol)   //Voltage<11.6V 
  {
     if(!fVolDown)
        {
          fVolDown=1;
          fVolHigh=0;
          rVolDown60s=cVolDown60s;
        	} 
  	} 
   else fVolDown=0;
   	
   if(rVolAdValue>cDh01MaxVol)   //Voltage>18V 
  {
     if(!fVolHigh)
        {
          fVolDown=0;
          fVolHigh=1;
          rVolDown60s=cVolHigh5s;
        	} 
  	} 
   else fVolHigh=0;  	
   	
   	
    }
  //----------型号为T02时------------------------  
  else  
  {
  	/*
  if(rVolAdValue<138)   //Voltage<16V 
  {
     if(!fVolDown)
        {
          fVolDown=1;
          fVolHigh=0;
          rVolDown60s=cVolDown60s;
        	} 
  	} 
  else fVolDown=0;    
      */ 
  if(rVolAdValue>cT02MaxVol)   //Voltage>18V 
  {
     if(!fVolHigh)
        {
          fVolDown=0;
          fVolHigh=1;
          rVolDown60s=cVolHigh5s;
        	} 
  	} 
   else fVolHigh=0; 
   }
  }
 //--------------------------------

 }
//***************************************************************
//*******控制输出检查
//***************************************************************
void   sConCheck()
{ 
  if(fPowerOn)
  {
     rCount1=rTempValue&0x7F;
     
     if(rTempValue&0x80)rCount1=20-rCount1;
     else  rCount1=rTempValue+20;
     
     rCount2=rSetTemp+20-cNegSetTemp;
   
     if(fHotOut)  //制热状态
     {
       if(rCount1>=rCount2)
        {
          fHotOut=0;
          rFanDelay180s=181;	 
           } 
     	} 
     else if(fColdOut)
       {
       	if(rCount1<=rCount2||rTempValue>=0x89)//温度制冷较低时 
       	  {
       	    fColdOut=0;
       	    rFanDelay180s=181;	
       	    }
       	}
     else
        {
           if(rCount1>(rCount2+4))fColdOut=1;
           if(rCount1<(rCount2-4))fHotOut=1;
           if(rTempValue>=0x89)fHotOut=1; //温度太低将制热打开
        	}
        	
    if(fColdOut||fHotOut)fFanOut=1; 
    }
  else 
  {
  	fColdOut=0;
  	fHotOut=0;
  	}
  
   
  }	
/*
void  sDelay500ms()
{
  for(rCount1=255;rCount1!=0;rCount1--)
    {
     CLRWDT(); 

⌨️ 快捷键说明

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