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

📄 water_v1.0.c

📁 太阳能热水器自动上水控制器
💻 C
字号:
/********************************************************************
            太阳能热水器自动上水控制  V1.0
   V1.0无阀门到位检测

   K1  控制上水阀开阀上水
   YS  检测太阳能热水器水满溢水信号
   LED 上水开阀时闪烁,开阀完成上水时闪亮(长时间灭,瞬间亮),水满
       后关阀闪烁,结束后灭。
   Beep完成一个操作后鸣叫
********************************************************************/
#include<reg51.h>
#include<intrins.h>
sbit  K1 =P1^1;           	//上水控制键
sbit  YS =P1^0;            //水满后溢水信号,开关信号
sbit  LED =P0^7;           //操作批示灯
sbit  KF=P2^6;
sbit  GF=P2^7;
sbit  Beep =P2^5 ;//蜂鸣器,关阀后继续收到溢水信号5个以上,间歇鸣叫提示
void  KaiFa();
void  GuanFa();
void  delayms(unsigned char ms);
void  delayled(unsigned char ll);
void  MingJiao();
/*********************************************************/
void main()
{
  unsigned int n;
  unsigned char led_bz,GFbz,KFbz,n_mj;
  LED=1;
  KF=1;
  GF=1;
  led_bz=0;
  Beep=0;
  GFbz=0;         //标志位,设置为不可关阀
  KFbz=1;         //标志位,设置为可开阀
  while(1)
  {
     if(led_bz)   //瞬闪LED
	    {
          n++;
     	    if(n==65500)
    	      {
	            n=0;
	            LED=0;
		         delayms(50);
		         LED=1;
	         }
		 }
     if(K1 ==0 & KFbz==1)
   	    {
  	        GFbz=1;         //标志位,设置为可关阀
		     KFbz=0;         //标志位,设置为不可开阀
			  n_mj=0;
		     KaiFa();
		  	  MingJiao();
			  led_bz=1;       //LED标志,打开瞬闪LED
	    }
	  if(YS==0 & GFbz==1)
	    {
	        KFbz=1;         //标志位,设置为可开阀
		     GFbz=0;         //标志位,设置为不可关阀
		     GuanFa();
			  MingJiao();
	        LED=1;
			  led_bz=0;       //LED标志,关闭瞬闪LED
	    }
	  if(YS==0 & GFbz==0)
	    {
		     n_mj++;
			  if(n_mj>=5) MingJiao();
		 }

  }
}

/*开阀子程序********************************************/
void KaiFa()
  {
    KF=1;
    GF=0;
    delayled(300);
    KF=1;
    GF=1;
  }

/*关阀子程序********************************************/
void GuanFa()
  {
    KF=0;
    GF=1;
    delayled(300);
    KF=01;
   GF=1;
  }


/*延时子程序**************************************/
void delayms(unsigned char ms) 
  {
     unsigned char i ;
     while(ms--)
      {
        for(i = 0 ; i < 120 ; i++) ;
      }
  }


/*开关阀延时并闪烁LED子程序**************************************/
void delayled(unsigned char ms) 
  {
     unsigned int i ;
     while(ms--)
      {
        for(i = 0 ; i < 12000 ; i++) ;
	     LED=!LED;
      }
  }
/*鸣叫子程序********************************************/
void MingJiao()
  {
    Beep=1;
    delayms(100);
    Beep=0;
  }

⌨️ 快捷键说明

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