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

📄 wkq.c

📁 一个电热水器的控制程序
💻 C
📖 第 1 页 / 共 2 页
字号:
          F_CheckWaterFlag=0;
          F_InWaterFlag   =0;
          OUT_IN_WATER    =1; 
          DelayInWater    =0;      
       }
   } 
   return;  
}



void    SetHotUp(uchar mode)
{
   if(mode)
   {
       OUT_HOTUP1=!F_HotFlag1;
       OUT_HOTUP2=!F_HotFlag2;
       if(F_HotFlag1||F_HotFlag2)
           F_HotUpingFlag=1;
       else
           F_HotUpingFlag=0;
   }
   else
   {
       OUT_HOTUP1    =1;
       OUT_HOTUP2    =1;
       F_HotUpingFlag=0;
   }
}

void    SetWater(uchar mode)
{
   if(mode)
   {
       OUT_WATER     =0;
       F_OutWaterFlag=1;
   }
   else
   {
       OUT_WATER     =1;
       F_OutWaterFlag=0;
   }
}
uchar   ScanKey()
{
   if(KeyDelay>DefKeyDelay)
   {
           KeyDelay=0;
           OUT_DISP_DATA=0x00;
   	   KEYIN=0x0ff;
	   KEY_COM1=0;
	   KEY_COM2=1;
	   KeyIn=KEYIN;
	   KeyIn &=0x1f;
	   if(KeyIn<0x1f)
	   {
 	      if(KeyCode!=KeyIn)
	      {
                  KeyCode=KeyIn;
	          return KeyIn;
	      } 
	      else return KEY_NULL; 
	   }
	
           KEYIN=0xff;
	   KEY_COM2=0;
	   KEY_COM1=1;
	   KeyIn=KEYIN;
	   KeyIn &=0x1f;
           KeyIn+=0x10;
           if(KeyIn<0x2f)
	   {
 	         if(KeyCode!=KeyIn)
		 {
                    KeyCode=KeyIn;
	            return KeyIn;
		 }
		 else return KEY_NULL; 
	   }
	   KeyCode=KEY_NULL;
     }
     return KEY_NULL;
}


void SetDispSub()
{
        switch(State)
	{
           case	KEY_SETTEMP:
 		        DispBuf[2]=CurTime.hour%10;
		        DispBuf[3]=CurTime.hour/10;
		        DispBuf[4]=CurTime.min%10;
		        DispBuf[5]=CurTime.min/10;
		        DispBuf[1]=InData/10;
		        DispBuf[0]=InData%10;
		        break;
     	  case  KEY_SETTIME:
  		        DispBuf[2]=(InData%60)%10;
		        DispBuf[3]=(InData%60)/10;
		        DispBuf[4]=(InData/60)%10;
		        DispBuf[5]=(InData/60)/10;
		        DispBuf[1]=SetNum/2+1;
		        DispBuf[0]=SetNum%2;
		        break;
       	   default:
		        if(F_KeyPressHot1Flag)
                        {
                          if(F_HotFlag1)
                          {
                              DispBuf[5]=0x11;
                              DispBuf[4]=0x11;
		              DispBuf[3]=0;
		              DispBuf[2]=0x10;   
                           }
                           else
                           { 
                              DispBuf[5]=0x11;
                              DispBuf[4]=0;
		              DispBuf[3]=0x0f;
		              DispBuf[2]=0x0f;   
                           }
                        }
                        else
                        if(F_KeyPressHot2Flag)
                        {
                          if(F_HotFlag2)
                          {
                              DispBuf[5]=0x11;
                              DispBuf[4]=0x11;
		              DispBuf[3]=0;
		              DispBuf[2]=0x10;   
                           }
                           else
                           { 
                              DispBuf[5]=0x11;
                              DispBuf[4]=0;
		              DispBuf[3]=0x0f;
		              DispBuf[2]=0x0f;   
                           }
                        }
                        else
                        if(F_KeyPressRunFlag)
                        {
                          if(!F_WarningFlag)
                          {
                              DispBuf[5]=0x11;
                              DispBuf[4]=0x11;
		              DispBuf[3]=0;
		              DispBuf[2]=0x10;   
                           }
                           else
                           { 
                              DispBuf[5]=0x11;
                              DispBuf[4]=0;
		              DispBuf[3]=0x0f;
		              DispBuf[2]=0x0f;   
                           }
                        }
                        else
		        {
                           DispBuf[5]=CurTime.hour/10;
                           DispBuf[4]=CurTime.hour%10;
		           DispBuf[3]=CurTime.min/10;
		           DispBuf[2]=CurTime.min%10;
               
		           DispBuf[1]=CurTemp/10;
		           DispBuf[0]=CurTemp%10;
                 
			}
                        break;
 	}
	DispSub();
}


void  DispSub()
{
	uchar code DispCode[]={ 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x54,0x00};
      // 显示代码               0     1    2    3    4    5    6    7    8    9    A    b    c    d    E    F      N   off

	uchar data i,inicom;
	ushort j;
	inicom=0x01;
	for(i=0;i<6;i++)
	{
           if((State==KEY_SETTIME||State==KEY_VERIFY_TIME||State==KEY_SETTEMP)&&Offset_Bit==i)
	   {
              if(DispDelay_Bit>DefDispDelay)
              {
                   DispDelay_Bit=0;
                   Bit_Flag=!Bit_Flag;
              }
              if(Bit_Flag)
	      {
                   OUT_DISP_COM=~(inicom<<i);   
		   if(State!=KEY_SETTIME&&State!=KEY_VERIFY_TIME&&F_DcFlag)
		       OUT_DISP_DATA=(DispCode[DispBuf[i]]|0X80);
                   else
                       OUT_DISP_DATA=DispCode[DispBuf[i]];
                   for(j=0;j<DefXSTime;j++);
	       }
	   }
	   else
           {
                   OUT_DISP_COM=~(inicom<<i);   
                   if(State!=KEY_SETTIME&&State!=KEY_VERIFY_TIME&&F_DcFlag
                     &&!F_KeyPressHot1Flag&&!F_KeyPressHot2Flag&&!F_KeyPressRunFlag)
                       OUT_DISP_DATA=(DispCode[DispBuf[i]]|0X80);
                   else
                       OUT_DISP_DATA=DispCode[DispBuf[i]];
                   for(j=0;j<DefXSTime;j++);
                    OUT_DISP_DATA=0;
	    }
	}
        OUT_DISP_DATA=0;
}
void SetDispBuf(uchar aa)
 {    
         DispBuf[2]=0x11;
	 DispBuf[3]=0x11;
	 DispBuf[4]=0x11;
	 DispBuf[5]=0x11;
	 DispBuf[1]=SetNum/2+1;
	 DispBuf[0]=SetNum%2;
    
      }
//&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
void   SetTimeSub()
{
    DispDelay=0;
    State        = KEY_SETTIME;
    Offset_Bit   = 5;
    SetNum       = 0;
    //SetTime     = SetTimeBuf[SetNum];
    ReadRam(1,0x02);
    F_TimeChange = 1;
    while(DispDelay<40) 
         SetDispBuf(SetNum);
    while(1)
    {
        KeyIn=ScanKey();
	switch(KeyIn)
	{
               case	KEY_RST:
			    return;
			    break;
	       case	KEY_SETTIME:
                          //  write_clock(0xc1|address,d);
			    WriteRam(SetNum*3+1,*SetTime,0x02);
			    SetNum++;
			    if(SetNum>=8)
					return;
                            ReadRam(SetNum*3+1,0x02);
                            Offset_Bit= 5;
			    break;
              case	KEY_INC:
			    switch(Offset_Bit)
			    {
				case 5:
					   if((SetTime.hour/10)<2)
						   SetTime.hour+=10;
					   else
						   SetTime.hour%=10;
                                          
					   break;
				case 4:
					   if((SetTime.hour/10)==2)
					   {
                                                   if((SetTime.hour%10)<3)
                                                      SetTime.hour++;
						   else
 						      SetTime.hour=20;
					   }
					   else
					   {
					      if((SetTime.hour%10)<9)
						        SetTime.hour++;
					      else
						        SetTime.hour-=9;
				           }
					   break;
				case 3:
					   if((SetTime.min/10)<5)
						   SetTime.min+=10;
					   else
						   SetTime.min=SetTime.min%10;
					   break;
				case 2:
					   if((SetTime.min%10)<9)
						   SetTime.min++;
					   else
						   SetTime.min-=9;
					   break;
			    }
			    break;
           case	KEY_OFFSET:
			    if(Offset_Bit>2)
					Offset_Bit--;
				else
					Offset_Bit=5;
			    break;
            case KEY_SETTEMP:
                          
                          =SetTempSub();
                           State = KEY_SETTIME;
                           Offset_Bit= 5;
                           wk=0;
                           break;*/

      	   default:
			    break;
	}
	SetDispSub();
    }
}

void    SetChangTimeSub()
{
    
    State=KEY_VERIFY_TIME;
    SetTime    = CurTime;
    Offset_Bit  = 5;
    F_TimeChange= 1;
    while(1)
    {
        KeyIn=ScanKey();
	switch(KeyIn)
	{
           case	KEY_RST:
			return;
		 	break;
	   case	KEY_VERIFY_TIME:
                        CurTime=TimeData;
			return;
	   	        break;
           case	KEY_INC:
  		        switch(Offset_Bit)
			{
			   case 5:
					   if((SetTime.hour/10)<2)
						   SetTime.hour+=10;
					   else
						   SetTime.hour%=10;
                                          
					   break;
				case 4:
					   if((SetTime.hour/10)==2)
					   {
                                                   if((SetTime.hour%10)<3)
                                                      SetTime.hour++;
						   else
 						      SetTime.hour=20;
					   }
					   else
					   {
					      if((SetTime.hour%10)<9)
						        SetTime.hour++;
					      else
						        SetTime.hour-=9;
				           }
					   break;
				case 3:
					   if((SetTime.min/10)<5)
						   SetTime.min+=10;
					   else
						   SetTime.min=SetTime.min%10;
					   break;
				case 2:
					   if((SetTime.min%10)<9)
						   SetTime.min++;
					   else
						   SetTime.min-=9;
					   break;
			}
	 	        break;
           case	KEY_OFFSET:
			if(Offset_Bit>2)
				Offset_Bit--;
			else
				Offset_Bit=5;
			break;
      	   default:
		        break;
	}
	SetDispSub();
    }
}


⌨️ 快捷键说明

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