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

📄 ds18b20+ds1320+lcd12864.c

📁 多功能太阳能热水器设计 硬件:AT89S52单片机
💻 C
📖 第 1 页 / 共 5 页
字号:
 clear();

 write_character(0,2,"温",0);
 write_character(0,4,"度",0); 
 write_character(0,10,"返",0);
 write_character(0,12,"回",0);
 write_character(4,2,"热",0);
 write_character(4,4,"水",0);
 write_character(4,6,"箱",0);
 write_character(4,12,"℃",0);
 write_ascii(4,10,TN>>4,0);
 write_ascii(4,11,TN&0x0f,0);

 while(BACK2!=0)
 {
  if((K1&&K2&&K3)!=1)
  {
   write_character(0,10,"返",0);
   write_character(0,12,"回",0);
   write_ascii(4,10,TN>>4,0);
   write_ascii(4,11,TN&0x0f,0);
  }
  if(K1==0)
  {
   delayms(40);
   while(K1==0);
   TPF++;
  }

  if(K3==0)
  {
   delayms(40);
   while(K3==0);
   TPF--;
  }

  if(TPF==0xff)
  {
   TPF=1;
  }
  if(TPF==2)
  {
   TPF=0;
  }

  switch(TPF)
  {
   case 0:write_character(0,10,"返",1);
          write_character(0,12,"回",1);	
          if(K2==0)
		  {
		   delayms(60);
           while(K2==0);
		   BACK2=0;
		   clear();
		  }
          break;
   case 1:write_ascii(4,10,TN>>4,1);
          write_ascii(4,11,TN&0x0f,1);
          if(K2==0)
		  {
		   delayms(60);
		   while(K2==0);
		   TN=turntobcd(4,10,TN,70,20);
		  }
          break;
  }
 }
}

/****************************************************************************
闹钟设置
****************************************************************************/
void ringreset(void)
{
 unsigned char onoff1=read_ds1302(0x0c1);
 unsigned char ring1h=read_ds1302(0x0c3);
 unsigned char ring1l=read_ds1302(0x0c5);
  
 unsigned char onoff2=read_ds1302(0x0c7);
 unsigned char ring2h=read_ds1302(0x0c9);
 unsigned char ring2l=read_ds1302(0x0cb);

 bit BACK3=1; 

 clear();

 write_character(0,2,"闹",0);
 write_character(0,4,"钟",0); 
 write_character(0,10,"返",0);
 write_character(0,12,"回",0);
 write_week(4,2,1,0);
 write_character(4,4,"路",0);
 write_week(6,2,2,0);
 write_character(6,4,"路",0);
 write_ascii(4,9,ring1h>>4,0);
 write_ascii(4,10,ring1h&0x0f,0);
 write_ascii(4,11,11,0);
 write_ascii(4,12,ring1l>>4,0);
 write_ascii(4,13,ring1l&0x0f,0);
 write_ascii(6,9,ring2h>>4,0);
 write_ascii(6,10,ring2h&0x0f,0);
 write_ascii(6,11,11,0);
 write_ascii(6,12,ring2l>>4,0);
 write_ascii(6,13,ring2l&0x0f,0);
 if(onoff1==0)
 {
  write_character(4,6,"关",0);
 }
 else
 {
  write_character(4,6,"开",0);		   
 }
 if(onoff2==0)
 {
  write_character(6,6,"关",0);
 }
 else
 {
  write_character(6,6,"开",0);		   
 }

 while(BACK3!=0)
 {
  if((K1&&K2&&K3)!=1)
  {
   write_character(0,10,"返",0);
   write_character(0,12,"回",0);
   write_ascii(4,9,ring1h>>4,0);
   write_ascii(4,10,ring1h&0x0f,0);
   write_ascii(4,12,ring1l>>4,0);
   write_ascii(4,13,ring1l&0x0f,0);
   write_ascii(6,9,ring2h>>4,0);
   write_ascii(6,10,ring2h&0x0f,0);
   write_ascii(6,12,ring2l>>4,0);
   write_ascii(6,13,ring2l&0x0f,0);
   if(onoff1==0)
   {
    write_character(4,6,"关",0);
   }
   else
   {
    write_character(4,6,"开",0);		   
   }
   if(onoff2==0)
   {
    write_character(6,6,"关",0);
   }
   else
   {
    write_character(6,6,"开",0);		   
   }
  }

  if(K1==0)
  {
   delayms(40);
   while(K1==0);
   TRF++;
  }

  if(K3==0)
  {
   delayms(40);
   while(K3==0);
   TRF--;
  }

  if(TRF==0xff)
  {
   TRF=6;
  }
  if(TRF==7)
  {
   TRF=0;
  }

  switch(TRF)
  {
   case 0:write_character(0,10,"返",1);
          write_character(0,12,"回",1);	
          if(K2==0)
		  {
		   delayms(60);
           while(K2==0);
		   BACK3=0;
		   clear();
		  }
          break;
   case 1:if(onoff1==0)
          {
           write_character(4,6,"关",1);
          }
          else
          {
           write_character(4,6,"开",1);		   
          }

          if(K2==0)
		  {
		   delayms(60);
		   while(K2==0);
		   while(K2!=0)
		   {
            if(onoff1==0)
            {
			 if(SCNF==1) write_character(4,6,"关",1);
			 else 
			 {
			  write_ascii(4,6,12,0);
			  write_ascii(4,7,12,0);
			 }
		    }
		    else
		    {
             if(SCNF==1) write_character(4,6,"开",1);
			 else
			 {
			  write_ascii(4,6,12,0);
			  write_ascii(4,7,12,0);
			 }		   
		    }
		    if(K1==0)
            {
             delayms(60);
             while(K1==0);
             onoff1++;
            }
              
            if(K3==0)
            {
             delayms(40);
             while(K3==0);
             onoff1--;
            }
              
            if(onoff1==2)
            {
             onoff1=0;
            }
            if(onoff1==0xff)
            {
             onoff1=1;
            }
		   }
		   delayms(60);
           while(K2==0);
		   write_ds1302(0x0c0,onoff1);
		  }          
		   break;
   case 2:write_ascii(4,9,ring1h>>4,1);
          write_ascii(4,10,ring1h&0x0f,1);
          if(K2==0)
		  {
		   delayms(60);
		   while(K2==0);
		   ring1h=turntobcd(4,9,ring1h,23,0);
		  }
          write_ds1302(0x0c2,ring1h);
          break;
   case 3:write_ascii(4,12,ring1l>>4,1);
          write_ascii(4,13,ring1l&0x0f,1);
          if(K2==0)
		  {
		   delayms(60);
		   while(K2==0);
		   ring1l=turntobcd(4,12,ring1l,59,0);
		  }
          write_ds1302(0x0c4,ring1l);
          break;
   case 4:if(onoff2==0)
          {
           write_character(6,6,"关",1);
          }
          else
          {
           write_character(6,6,"开",1);		   
          }
   
          if(K2==0)
		  {
		   delayms(60);
		   while(K2==0);
		   while(K2!=0)
		   {
		    if(onoff2==0)
            {
			 if(SCNF==1) write_character(6,6,"关",1);
			 else
			 {
			  write_ascii(6,6,12,0);
              write_ascii(6,7,12,0);
			 }
		    }
		    else
		    {
             if(SCNF==1) write_character(6,6,"开",1);
			 else
			 {
			  write_ascii(6,6,12,0);
			  write_ascii(6,7,12,0);
			 }		   
		    }
		    if(K1==0)
            {
             delayms(60);
             while(K1==0);
             onoff2++;
            }
              
            if(K3==0)
            {
             delayms(40);
             while(K3==0);
             onoff2--;
            }
              
            if(onoff2==2)
            {
             onoff2=0;
            }
            if(onoff2==0xff)
            {
             onoff2=1;
            }
		   }
		   delayms(60);
           while(K2==0);
		   write_ds1302(0x0c6,onoff2);
		  }
		  break;
   case 5:write_ascii(6,9,ring2h>>4,1);
          write_ascii(6,10,ring2h&0x0f,1);
          if(K2==0)
		  {
		   delayms(60);
		   while(K2==0);
		   ring2h=turntobcd(6,9,ring2h,23,0);
		  }   
          write_ds1302(0x0c8,ring2h);
          break;
   case 6:write_ascii(6,12,ring2l>>4,1);
          write_ascii(6,13,ring2l&0x0f,1);
          if(K2==0)
		  {
		   delayms(60);
		   while(K2==0);
		   ring2l=turntobcd(6,12,ring2l,59,0);
		  }     
     	  write_ds1302(0x0ca,ring2l);
          break;
  }
 }
}

/****************************************************************************
时间设置
****************************************************************************/
void timereset(void)
{
 bit BACK4=1; 

 clear();

 write_character(0,2,"时",0);
 write_character(0,4,"间",0); 
 write_character(0,10,"返",0);
 write_character(0,12,"回",0);
 write_character(2,4,"年",0);//写入 年月日星期等不变汉字
 write_character(2,8,"月",0);
 write_character(2,12,"日",0);
 write_character(4,4,"星",0);
 write_character(4,6,"期",0);
 write_ascii(6,7,11,0);

 readtime();
 write_ascii(2,2,YEAR>>4,0);
 write_ascii(2,3,YEAR&0x0f,0);
 write_ascii(2,6,MONTH>>4,0);
 write_ascii(2,7,MONTH&0x0f,0);
 write_ascii(2,10,DAY>>4,0);
 write_ascii(2,11,DAY&0x0f,0);
 write_week(4,8,WEEK,0);
 write_ascii(6,5,HOUR>>4,0);
 write_ascii(6,6,HOUR&0x0f,0);
 write_ascii(6,8,MINUTE>>4,0);
 write_ascii(6,9,MINUTE&0x0f,0);
 while(BACK4!=0)
 {
  readtime();
  if((K1&&K2&&K3)!=1)
  {
   write_character(0,10,"返",0);
   write_character(0,12,"回",0);
   write_ascii(2,2,YEAR>>4,0);
   write_ascii(2,3,YEAR&0x0f,0);
   write_ascii(2,6,MONTH>>4,0);
   write_ascii(2,7,MONTH&0x0f,0);
   write_ascii(2,10,DAY>>4,0);
   write_ascii(2,11,DAY&0x0f,0);
   write_week(4,8,WEEK,0);
   write_ascii(6,5,HOUR>>4,0);
   write_ascii(6,6,HOUR&0x0f,0);
   write_ascii(6,8,MINUTE>>4,0);
   write_ascii(6,9,MINUTE&0x0f,0);
  }
  if(K1==0)
  {
   delayms(40);
   while(K1==0);
   TMF++;
  }

  if(K3==0)
  {
   delayms(40);
   while(K3==0);
   TMF--;
  }

  if(TMF==0xff)
  {
   TMF=6;
  }
  if(TMF==7)
  {
   TMF=0;
  }

  switch(TMF)
  {
   case 0:write_character(0,10,"返",1);
          write_character(0,12,"回",1);	
          if(K2==0)
		  {
		   delayms(60);
           while(K2==0);
		   BACK4=0;
		   clear();
		  }
          break;
   case 1:write_ascii(2,2,YEAR>>4,1);
          write_ascii(2,3,YEAR&0x0f,1);
          if(K2==0)
		  {
		   delayms(60);
		   while(K2==0);
		   YEAR=turntobcd(2,2,YEAR,99,0);
           write_ds1302(0x8c,YEAR);
		  }          
          break;
   case 2:write_ascii(2,6,MONTH>>4,1);
          write_ascii(2,7,MONTH&0x0f,1);
	      if(K2==0)
		  {
		   delayms(60);
           while(K2==0);
		   MONTH=turntobcd(2,6,MONTH,12,1);
           write_ds1302(0x88,MONTH);
		  }
          break;
   case 3:write_ascii(2,10,DAY>>4,1);
          write_ascii(2,11,DAY&0x0f,1);
          if(K2==0)
		  {
		   delayms(60);
		   while(K2==0);
           DAY=turntobcd(2,10,DAY,31,1);
		   write_ds1302(0x86,DAY);
		  }
          break;
   case 4:write_week(4,8,WEEK,1);
          if(K2==0)
		  {
		   delayms(60);
           while(K2==0);
		   WEEK=turntobcd(4,8,WEEK,7,1);
	       write_ds1302(0x8a,WEEK);
		  }
          break;
   case 5:write_ascii(6,5,HOUR>>4,1);
          write_ascii(6,6,HOUR&0x0f,1);
          if(K2==0)
		  {
		   delayms(60);
           while(K2==0);
		   HOUR=turntobcd(6,5,HOUR,23,0);
		  }
		  write_ds1302(0x84,HOUR);
          break;
   case 6:write_ascii(6,8,MINUTE>>4,1);
          write_ascii(6,9,MINUTE&0x0f,1);
          if(K2==0)
		  {
		   delayms(60);
           while(K2==0);
		   MINUTE=turntobcd(6,8,MINUTE,59,0);
		   write_ds1302(0x82,MINUTE);
		  }
          break;
  }
 }
}

/****************************************************************************
选择设置
****************************************************************************/
void keyscanf1(void)
{
 bit BACK1=1;

⌨️ 快捷键说明

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