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

📄 index.c

📁 1602+ds1302时钟显示+ds18b20温度报警
💻 C
📖 第 1 页 / 共 2 页
字号:
  dis2[4]=code_switch(((int)date)%10);

  dis2[6]=code_switch(((int)hour)/10);
  dis2[7]=code_switch(((int)hour)%10);

  dis2[9]=code_switch(((int)minute)/10);
  dis2[10]=code_switch(((int)minute)%10);

  dis2[12]=code_switch(((int)second)/10);
  dis2[13]=code_switch(((int)second)%10);

  dis2[15]=code_switch((int)week);

  lcd_pos(0);
  i=0;
  while(dis1[i]!='\0')
  {
    lcd_wdat(dis1[i]);
    i++;
  }
  lcd_pos(0x40);
  i=0;
  while(dis2[i]!='\0')
  {
    lcd_wdat(dis2[i]);
    i++;
  }
  switch (m)
  {
  case 0: lcd_pos(0x0d);break;
  case 1: lcd_pos(0x41);break;
  case 2: lcd_pos(0x44);break;
  case 3: lcd_pos(0x47);break;
  case 4: lcd_pos(0x4a);break;
  case 5: lcd_pos(0x4d);break;
  case 6: lcd_pos(0x4f);break;
  }
}

/////////////////////////////时间设置显示结束///////////////////////////////////
///////////////////////////////时间设置///////////////////////////////////////

 void seting2()
{
   if(SET2==1&&NEXT==1&&REDUCE==1&&ADD==1&&SET==1);	  //无键盘按下
   else						 /////有键盘按下时
    {
	  keyon=1;
	  if(SET2==0)keytype=0;
	  if(NEXT==0)keytype=1;
	  if(REDUCE==0)keytype=2;
	  if(ADD==0)keytype=3;
	  if(SET==0)keytype=5;
	}
   if(keyon==1&&SET2==1&&NEXT==1&&REDUCE==1&&ADD==1)		 //键盘松开后判断键盘状态
    {
	  if(keytype==1)////////////////菜单下翻
	    { 
		  if(m>=6)m=0;
	      else m++;
		 }
	  if(keytype==3)	////////////////加操作
	    {
		  if(m==0)
		  {
		    if(year<32)
		    year++;
		   else
		    year=8;
		  }
		  if(m==1)
		    {
			  if(month<12)
		        month++;
		      else
		        month=1;
			}
		  if(m==2)
		   {
		     if(month==1||month==3||month==5||month==7||month==8||month==10||month==12)
		     {
		       if(date<31)
			    date++;
		  	   else
			    date=1;
		     }
		     if(month==4||month==6||month==9||month==11)
		      {
		       if(date<30)
		   	    date++;
			   else
			    date=1;
		      }
		     if(month==2)
		      {
		       if(year%4==0 && year%100!=0 || year%400==0)
			    {
			       if(date<29)
				     date++;
				   else
				     date=1;
			     }
			   if(!(year%4==0 && year%100!=0 || year%400==0))
                {
				  if(date<28)
				   date++;
				  else
				   date=1;
				 }
			   }
		   }
		  if(m==3)
		    {
			  if(hour<23)
		        hour++;
		      else
		        hour=0;
			}
		  if(m==4)
		    {
			  if(minute<59)
		       minute++;
		      else
		       minute=0;
		 	}
		  if(m==5)
		    {
			  if(second<59)
		       second++;
		      else
		       second=0;
			}
		  if(m==6)
		    {
			  if(week<7)
		        week++;
		      else
		        week=1;
			}
		}
	  if(keytype==2)		 ////////////////减操作
	    {
		  if(m==0)
		  {
		    if(year>8)
		    year--;
		   else
		    year=32;
		  }
		  if(m==1)
		    {
			  if(month>1)
		        month--;
		      else
		        month=12;
			}
		  if(m==2)
		   {
		     if(month==1||month==3||month==5||month==7||month==8||month==10||month==12)
		     {
		       if(date>1)
			    date--;
		  	   else
			    date=31;
		     }
		     if(month==4||month==6||month==9||month==11)
		      {
		       if(date>1)
		   	    date--;
			   else
			    date=30;
		      }
		     if(month==2)
		      {
		       if(year%4==0 && year%100!=0 || year%400==0)
			    {
			       if(date>1)
				     date--;
				   else
				     date=29;
			     }
			   if(!(year%4==0 && year%100!=0 || year%400==0))
                {
				  if(date>1)
				   date--;
				  else
				   date=28;
				 }
			   }
		   }
		  if(m==3)
		    {
			  if(hour>0)
		        hour--;
		      else
		        hour=23;
			}
		  if(m==4)
		    {
			  if(minute>0)
		       minute--;
		      else
		       minute=59;
		 	}
		  if(m==5)
		    {
			  if(second>0)
		       second--;
		      else
		       second=59;
			}
		  if(m==6)
		    {
			  if(week>1)
		        week--;
		      else
		        week=7;
			}
		}
	  if(keytype==0)			  ///////////跳出温度设置
	    {
	      keyon=0;
	      keytype=4;
		  out=1;		
		}
	  if(keytype==5)
	   {
	     keyon=0;
	     keytype=4;
		 out=1;
		 out2=1;
	   }
	  keyon=0;
	  keytype=4;
	}
}

////////////////////////////////时间设置结束/////////////////////////////////////
void main()					
{ 
    unsigned char i;
    P1=0XFF;
	BLUE=1;
	RED=1;
	SPEAKER=1;
    DS1302_init();
    lcd_init();
    lcd_pos(0);
    i=0;
    while(dis1[i]!='\0')
    {
      lcd_wdat(dis1[i]);
      i++;
    }
    lcd_pos(0x40);
    i=0;
    while(dis2[i]!='\0')
    {
      lcd_wdat(dis2[i]);
  	  i++;
    }
  while(1)
  {
    ReadTemperature();
    t_codechange();
	DS1302_readdate();
	ds_codechange();
	lcd_pos(0);
    i=0;
    while(dis1[i]!='\0')
    {
      lcd_wdat(dis1[i]);
      i++;
    }
	lcd_pos(0x40);
    i=0;
    while(dis2[i]!='\0')
    {
      lcd_wdat(dis2[i]);
  	  i++;
    }

	if(SET==0)	/////////////////////////进入报警温度设定
	  {
	    out=0;
	    delay(300);
		while(SET==0);
		strcpy(dis1,"ALARM-H: OFF 35 \0");
		strcpy(dis2,"ALARM-L: OFF 00 \0");
		lcd_init2();
		lcd_pos(0);
        i=0;
        while(dis1[i]!='\0')
        {
          lcd_wdat(dis1[i]);
          i++;
        }
        lcd_pos(0x40);
        i=0;
        while(dis2[i]!='\0')
        {
          lcd_wdat(dis2[i]);
  	      i++;
        }
		lcd_pos(0x0a);//光标显示在高温开关位置
		m=0;
		keyon=0;
		keytype=4;
		while(1)
		  {
		    Display2();
			seting();
			if (out==1)
			{
			  lcd_init();
			  strcpy(dis1,"03-11 19:57:00 2\0");
	          strcpy(dis2,"NOW TEMP: 015.0 \0");
			  break;
			}
			delay(1000);
		  }
		delay(200);
		while(SET==0);	
	  }
	if(SET2==0)	/////////////////////////进入时间设定
	  {
	    out=0;
	    out2=0;
	    delay(300);
		while(SET2==0);
		strcpy(dis1,"TIME SET: 2008  \0");
		strcpy(dis2,"10-11 19:57:00 2\0");
		lcd_init2();
		lcd_pos(0);
        i=0;
        while(dis1[i]!='\0')
        {
          lcd_wdat(dis1[i]);
          i++;
        }
        lcd_pos(0x40);
        i=0;
        while(dis2[i]!='\0')
        {
          lcd_wdat(dis2[i]);
  	      i++;
        }
		lcd_pos(0x0d);//光标显示在高温开关位置
		m=0;
		keyon=0;
		keytype=4;
		while(1)
		  {
		    Display3();
			seting2();
			if (out==1)
			{
			  lcd_init();
			  strcpy(dis1,"03-11 19:57:00 2\0");
	          strcpy(dis2,"NOW TEMP: 015.0 \0"); 
			  if(out2==0) DS1302_writedate();
			  break;
			}
			delay(1000);
		  }
		delay(200);
		while(SET2==0);	
		while(SET==0);
	  }
	delay(30000);
	if(tH==1)
	RED=1;
	else if(tH==-1&&temperature>=temperatureH)
	 {	
	 RED=0;
	SPEAKER=1;
	delay(10000);
	SPEAKER=0;
	RED=1;
	delay(10000);
	SPEAKER=1;
	Too_hot();
	delay(50000);
		}  //////满足条件是开启高温报警
	else if(temperature<(temperatureH-0.2))
	RED=1;
	if(tL==1)
	BLUE=1;
	if(tL==-1&&temperature<=temperatureL) 
	{
	BLUE=0;
	SPEAKER=1;
	delay(10000);
	SPEAKER=0;
	BLUE=1;
	delay(10000);
	SPEAKER=1;
	Too_cold();
	delay(50000);
	}//////满足条件时开启低温报警	     
	else if(temperature>(temperatureL+0.2))
	 BLUE=1;		
	if(RED==1&&BLUE==1)
	SPEAKER=0;
  }
}

⌨️ 快捷键说明

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