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

📄 power_supply.c

📁 基于51单片机和LCD1602编写的一个人机界面程序
💻 C
📖 第 1 页 / 共 3 页
字号:
			 {
			     date_temp--;
				 if(date_temp==0)date_temp=31;
				 date_h=date_temp/10;
				 date_l=date_temp%10;

				 lcd_wrcmd(0x8b);
				 lcd_wrdata(0x30+date_h);
				 lcd_wrdata(0x30+date_l);
				 lcd_wrcmd(0x8c);
			 }
			 else if(ss==4)
			 {
			     week--;
				 if(week==0)week=7;
				 lcd_wrcmd(0x8e);
				 lcd_wrdata(str_week[2*(week-1)]);
	             lcd_wrdata(str_week[2*week-1]);
				 lcd_wrcmd(0x8f);

			 } 
		}
		else if(ii==5)   //OK
		{
		    year=year_h*16+year_l;
		   	month=month_h*16+month_l;
			date=date_h*16+date_l;
			lcd_wrcmd(0x0c);
			set_time();
			lcd_wrcmd(1);
			display(0xc3,str_su);
			for(n=0;n<1500;n++)delay(250);
			lcd_wrcmd(1);
			state=2;                 //clock();
			break;
		    
		}
		else if(ii==6)   //Exit
		{
		     lcd_wrcmd(1);
			 state=2;
			 break; 
		    
		}
	    
	}
}



set_alarm()
{
    uchar ii,ss=1,hour_h,hour_l,minute_h,minute_l;
	uchar hour_temp,minute_temp;
	uint n;

	if(ap==0)
	{
	    hour_h=alarm_hour[0]/10;
	    hour_l=alarm_hour[0]%10;
	    minute_h=alarm_minute[0]/10;
        minute_l=alarm_minute[0]%10;
	    hour_temp=alarm_hour[0];
    	minute_temp=alarm_minute[0];
	}
	else
	{
	    hour_h=alarm_hour[1]/10;
	    hour_l=alarm_hour[1]%10;
	    minute_h=alarm_minute[1]/10;
        minute_l=alarm_minute[1]%10;

	    hour_temp=alarm_hour[1];
    	minute_temp=alarm_minute[1];
	}

    lcd_wrcmd(1);
	lcd_wrcmd(0x84);
	lcd_wrdata(0x30+hour_h);
	lcd_wrdata(0x30+hour_l);
	lcd_wrdata(':');
	lcd_wrdata(0x30+minute_h);
	lcd_wrdata(0x30+minute_l);


	lcd_wrcmd(0x0f);	
	display(0xc0,str_ok);display(0xce,str_exit);
	lcd_wrcmd(0x85);
	while(1)
	{
	    ii=key();
		if(ii==4)
		{
		    ss++;
			if(ss==3)ss=1;
			if(ss==1)lcd_wrcmd(0x85);	  
			else if(ss==2)lcd_wrcmd(0x88);
		}

		else if(ii==3)  //切换状态ss=1为校时状态,ss=2为校分状态
		{
		    ss++;
			if(ss==3)ss=1;
			if(ss==1)lcd_wrcmd(0x85);	  
			else if(ss==2)lcd_wrcmd(0x88);

		}
		////////////////////////校时程序块////////////////////////////////
		else if(ii==1)//加1操作 
		{
		    if(ss==1)//小时
			{
			    hour_temp++;
				if(hour_temp>23)
				{
				    hour_temp=0;
				}
				hour_h=hour_temp/10;
	            hour_l=hour_temp%10;
			    lcd_wrcmd(0x84);
	            lcd_wrdata(0x30+hour_h);
	            lcd_wrdata(0x30+hour_l);
				lcd_wrcmd(0x85);
			}
			else if(ss==2)//分钟
			{
			    minute_temp++;
				if(minute_temp>59)
				{
				    minute_temp=0;
				}
				minute_h=minute_temp/10;
	            minute_l=minute_temp%10;
			    lcd_wrcmd(0x87);
	            lcd_wrdata(0x30+minute_h);
	            lcd_wrdata(0x30+minute_l);
				lcd_wrcmd(0x88); 
			}
		    
		    
		}
		else if(ii==2)//减1操作
		{
		    if(ss==1)
			{
			    hour_temp--;
				if(hour_temp==0xff)
				{
				    hour_temp=23;
				}
				hour_h=hour_temp/10;
	            hour_l=hour_temp%10;
			    lcd_wrcmd(0x84);
	            lcd_wrdata(0x30+hour_h);
	            lcd_wrdata(0x30+hour_l);
				lcd_wrcmd(0x85);
			}
			else if(ss==2)
			{
			    minute_temp--;
				if(minute_temp==0xff)
				{
				    minute_temp=59;
				}
				minute_h=minute_temp/10;
	            minute_l=minute_temp%10;
			    lcd_wrcmd(0x87);
	            lcd_wrdata(0x30+minute_h);
	            lcd_wrdata(0x30+minute_l);
				lcd_wrcmd(0x88);
			}
		}
		else if(ii==5)
		{
		    f=1;
			if(ap==0)
		    {
			    alarm_hour[0]=hour_h*10+hour_l;
			    alarm_minute[0]=minute_h*10+minute_l;
			    IICWrite(2000,alarm_hour[0]);
		        IICWrite(2001,alarm_minute[0]);
			}
			else
			{
			    alarm_hour[1]=hour_h*10+hour_l;
			    alarm_minute[1]=minute_h*10+minute_l;
			    IICWrite(2002,alarm_hour[1]);
		        IICWrite(2003,alarm_minute[1]);
			}
			IICWrite(1002,1);
			lcd_wrcmd(0x0c);
			lcd_wrcmd(1);
			display(0xc3,str_su);
			for(n=0;n<1500;n++)delay(250);
			lcd_wrcmd(1);
			alarm_f=1;
			state=13;       //clock();
			break; 
		     
		}
		else if(ii==6)
		{
		     lcd_wrcmd(1);
			 lcd_wrcmd(0x0c);
			 state=13;
			 break; 
		    
		}
	    
	}
    
   
}




am_pm()
{
     uchar ii,ss=1;
	 //uint n;
	 display(0x83,str_am);	  //设置上午闹钟
	 display(0xc3,str_pm);	  //设置下午闹钟
	 lcd_wrcmd(0x80);
	 lcd_wrdata('-');
	 lcd_wrdata('>');
	 while(1)
	 {
	     ii=key();
		 if(ii==2)  //down
		 {
		     ss++;
			 if(ss==3)ss=1;
			 if(ss==1)
			 {
			     lcd_wrcmd(0xc0);
				 lcd_wrdata(' ');
	             lcd_wrdata(' ');
				 lcd_wrcmd(0x80);
	             lcd_wrdata('-');
	             lcd_wrdata('>');
			 }
			 else if(ss==2)
			 {
			     lcd_wrcmd(0x80);
				 lcd_wrdata(' ');
	             lcd_wrdata(' ');
				 lcd_wrcmd(0xc0);
	             lcd_wrdata('-');
	             lcd_wrdata('>');
			 }
		 }
		 else if(ii==1)  //up
		 {
		     ss++;
			 if(ss==3)ss=1;
			 if(ss==1)
			 {
			     lcd_wrcmd(0xc0);
				 lcd_wrdata(' ');
	             lcd_wrdata(' ');
				 lcd_wrcmd(0x80);
	             lcd_wrdata('-');
	             lcd_wrdata('>');
			 }
			 else if(ss==2)
			 {
			     lcd_wrcmd(0x80);
				 lcd_wrdata(' ');
	             lcd_wrdata(' ');
				 lcd_wrcmd(0xc0);
	             lcd_wrdata('-');
	             lcd_wrdata('>');
			 }
		 }
		 else if(ii==5)
		 {
		    if(ss==1)ap=0;
			else if(ss==2)ap=1;
			lcd_wrcmd(1);
			state=8;   
			break;
			 
		 }
		 else if(ii==6)
		 {
		     lcd_wrcmd(1);
			 state=7;    //clock();
			 break;
		 }
	 }

	    
}

alarm()
{
     uchar ii,ss=1;
	 uint n;
	 display(0x83,str_alarm2);
	 display(0xc3,str_alarm3);
	 lcd_wrcmd(0x80);
	 lcd_wrdata('-');
	 lcd_wrdata('>');
	 while(1)
	 {
	     ii=key();
		 if(ii==2)  //down
		 {
		     ss++;
			 if(ss==3)ss=1;
			 if(ss==1)
			 {
			     lcd_wrcmd(0xc0);
				 lcd_wrdata(' ');
	             lcd_wrdata(' ');
				 lcd_wrcmd(0x80);
	             lcd_wrdata('-');
	             lcd_wrdata('>');
			 }
			 else if(ss==2)
			 {
			     lcd_wrcmd(0x80);
				 lcd_wrdata(' ');
	             lcd_wrdata(' ');
				 lcd_wrcmd(0xc0);
	             lcd_wrdata('-');
	             lcd_wrdata('>');
			 }
		 }
		 else if(ii==1)  //up
		 {
		     ss++;
			 if(ss==3)ss=1;
			 if(ss==1)
			 {
			     lcd_wrcmd(0xc0);
				 lcd_wrdata(' ');
	             lcd_wrdata(' ');
				 lcd_wrcmd(0x80);
	             lcd_wrdata('-');
	             lcd_wrdata('>');
			 }
			 else if(ss==2)
			 {
			     lcd_wrcmd(0x80);
				 lcd_wrdata(' ');
	             lcd_wrdata(' ');
				 lcd_wrcmd(0xc0);
	             lcd_wrdata('-');
	             lcd_wrdata('>');
			 }
		 }
		 else if(ii==5)
		 {
		     if(ss==2)
			 {
			     alarm_f=0;
				 IICWrite(1002,0);
				 lcd_wrcmd(1);
				 display(0xc3,str_su);
			     for(n=0;n<1500;n++)delay(250);
				 lcd_wrcmd(1);
			     state=2;    //clock();
			     break;
			 }
			 else if(ss==1)
			 {
				 lcd_wrcmd(1);
			     state=13;    //set_alarm();
			     break;
			 }
		 }
		 else if(ii==6)
		 {
		     lcd_wrcmd(1);
			 state=2;    //clock();
			 break;
		 }
	 }

	    
}


close_beep()
{
     uchar ii,ss=1;
	 uint n;
	 display(0x83,str_beep2);
	 display(0xc3,str_beep3);
	 lcd_wrcmd(0x80);
	 lcd_wrdata('-');
	 lcd_wrdata('>');
	 while(1)
	 {
	     ii=key();
		 if(ii==2)  //down
		 {
		     ss++;
			 if(ss==3)ss=1;
			 if(ss==1)
			 {
			     lcd_wrcmd(0xc0);
				 lcd_wrdata(' ');
	             lcd_wrdata(' ');
				 lcd_wrcmd(0x80);
	             lcd_wrdata('-');
	             lcd_wrdata('>');
			 }
			 else if(ss==2)
			 {
			     lcd_wrcmd(0x80);
				 lcd_wrdata(' ');
	             lcd_wrdata(' ');
				 lcd_wrcmd(0xc0);
	             lcd_wrdata('-');
	             lcd_wrdata('>');
			 }
		 }
		 else if(ii==1)  //up
		 {
		     ss++;
			 if(ss==3)ss=1;
			 if(ss==1)
			 {
			     lcd_wrcmd(0xc0);
				 lcd_wrdata(' ');
	             lcd_wrdata(' ');
				 lcd_wrcmd(0x80);
	             lcd_wrdata('-');
	             lcd_wrdata('>');
			 }
			 else if(ss==2)
			 {
			     lcd_wrcmd(0x80);
				 lcd_wrdata(' ');
	             lcd_wrdata(' ');
				 lcd_wrcmd(0xc0);
	             lcd_wrdata('-');
	             lcd_wrdata('>');
			 }
		 }
		 else if(ii==5)
		 {
		     if(ss==2)              //Open  beep
			 {
				 beep_f=0;
				 lcd_wrcmd(1);
				 IICWrite(1003,0);

				 
				 display(0xc2,str_su);
				 for(n=0;n<1500;n++)delay(250);
				 lcd_wrcmd(1);
			     state=2;     //clock();
			     break;
			 }
			 else if(ss==1)
			 {
			     beep_f=1;           //close beep
				 IICWrite(1003,1);
				 lcd_wrcmd(1);
				 display(0xc2,str_su);
				 for(n=0;n<1500;n++)delay(250);
				 lcd_wrcmd(1);
			     state=2;     
			     break;
			 }
		 }
		 else if(ii==6)
		 {
		     lcd_wrcmd(1);
			 state=2;    //clock();
			 break;
		 }
	 }

}


clock()
{
    uchar ii,ss=1;
	display(0x80,str_time);
	display(0xc0,str_ok);display(0xce,str_exit);
	lcd_wrcmd(0x0c);
	while(1)
	{
	    if(read_temperature()>set_t) fan=1;
		else if(read_temperature()<(set_t-1))fan=0;
	     ii=key();
		 if(ii==2) //down
		 {
		      ss++;
			  if(ss==6)ss=1;
			  if(ss==1)
			  {
			       display(0x80,str_time);
		 
			  }
			  else if(ss==2)
			  {
			      display(0x80,str_date); 
			  }
			  else if(ss==3)
			  {
			       display(0x80,str_alarm);
			  }
			  else if(ss==4)
			  {
			       display(0x80,str_beep1);
			  }
			   else if(ss==5)
			  {
			       display(0x80,str_tem);
			  }

		 }
         if(ii==1)
		 {
		      ss--;
			  if(ss==0)ss=5;
			  if(ss==1)
			  {
			       display(0x80,str_time);
			  }
			  else if(ss==2)
			  {
			      display(0x80,str_date);
			  }
			  else if(ss==3)
			  {
			       display(0x80,str_alarm);
			  }
			  else if(ss==4)
			       display(0x80,str_beep1);

			  else if(ss==5)
			 {
			       display(0x80,str_tem);
			 }

		 }
		 else if(ii==5)
		 {
		     if(ss==1)
			 {
			     lcd_wrcmd(1);
			     state=3;
			     break;
			  }
			  else if(ss==2)
			  {
			     lcd_wrcmd(1);
			     state=4;
			     break; 
			  }
			  else if(ss==3)
			  {
			     lcd_wrcmd(1);
			     state=7;
			     break; 
			  }
			  else if(ss==4)
			  {
			      lcd_wrcmd(1);
				  state=11;
				  break;
			  }
			   else if(ss==5)
			  {
			      lcd_wrcmd(1);
				  state=12;
				  break;
			  }

		 }
		 if(ii==6)
		 {
		     lcd_wrcmd(1);
			 state=1;
			 break;
		 }
	}
}



temp()
{
    uchar ii;
	uint n;
	//uchar keycount=0;
	uchar t;
	uchar temp_h,temp_l;
	temp_h=set_t/10;
	temp_l=set_t%10;
	t=set_t;
    lcd_wrcmd(1);
	lcd_wrcmd(0x87);
	lcd_wrdata(0x30+temp_h);
	lcd_wrdata(0x30+temp_l);
	lcd_wrcmd(0x0f);	
	display(0xc0,str_ok);display(0xce,str_exit);
	while(1)
	{
	     

		//*********************处理按键连击的效果**********
	    if((sw5==0)||(sw2==0))    //判断有按键
		{
		    beep=beep_f;
			for(n=0;n<50;n++)delay(200);
			beep=1;
		    for(n=0;n<100;n++)delay(200);    //延时消抖
			//keycount=0;
			if((sw5==0)||(sw2==0))    //有按键
			{
			    t++;
				if(t>99) t=1;
				temp_h=t/10;
	            temp_l=t%10;
			    lcd_wrcmd(0x87);
	            lcd_wrdata(0x30+temp_h);
	            lcd_wrdata(0x30+temp_l);
				lcd_wrcmd(0x87);
				if((sw5==0)||(sw2==0))    //还有按键,延时一段时间
				{
					for(n=0;n<1000;n++)delay(200);
					while((sw5==0)||(sw2==0))    //有按键,处理连击键
					{
					  
					   t++;
				       if(t>99)t=1;
					   temp_h=t/10;
	                   temp_l=t%10;
			           lcd_wrcmd(0x87);
	                   lcd_wrdata(0x30+temp_h);
	                   lcd_wrdata(0x30+temp_l);
				       lcd_wrcmd(0x87);
					   for(n=0;n<200;n++)delay(250);
					   beep=beep_f;
					   for(n=0;n<100;n++)delay(250);
					   beep=1;
					   for(n=0;n<100;n++)delay(250);

					 }     
				 }
				 beep=1;    //关闭蜂鸣器    
		    }
		}
		else if((sw4==0)||(sw3==0))    //判断有按键
		{
		    beep=beep_f;
			for(n=0;n<50;n++)delay(200);
			beep=1;
		    for(n=0;n<100;n++)delay(200);    //延时消抖
			//keycount=0;
			if((sw4==0)||(sw3==0))    //有按键
			{

⌨️ 快捷键说明

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