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

📄 key.c

📁 电压瞬时检测
💻 C
字号:
/***********************************/
#include "REG51STC.H"
#include "oven.h"
#include "citation.h"
/*********************************************************
*   功能:读按键
*********************************************************/
void read_key(void)
{  
   bbyte=0;
	a0=~KEYSET;
	a1=~KEYRAY;
	a2=~KEYADD;
	a3=~KEYSUB;
	a4=~KEYSTOP;
	switch(bbyte)
	{  
		case 0:
		   break;
		case 1:
			bbyte=1;
			break;
		case 2:
			bbyte=2;
			break;
		case 4:
			bbyte=3;
			break;
		case 8:
			bbyte=4;
			break;
		case 0x10:
			bbyte=5;
			break;
		default:
   	   bbyte=0xff;  //其它的键不作响应
			break;
	}
	if(keynumold==bbyte && bbyte!=0 && bbyte<6)
	{
		keyinput++;
		if(keyinput>20) {keyinput=20;keysolve=bbyte;if(!keyok){keyok=1;fmqok=1;}}
	}
	else
	{
		if(bbyte==0){if(keyinput>0)keyinput--;}
		//else keyinput=0;
	}
	keynumold=bbyte;
	if(keyok && keyinput==0) {keyok=0;key_solve(keysolve);}  
   //-------------------------------------------------------
   if(ERT || unc>69) {if(tt_overrun_cnt<200)tt_overrun_cnt ++;}
   else if(unc<65){if(tt_overrun_cnt>0)tt_overrun_cnt--;}
   if(tt_overrun_cnt==0)tt_overrun=0;
   if(tt_overrun_cnt==200)tt_overrun=1; //超湿
   //-------------------------------------------------------
   if(state==1)
   {
	   if(ia==0){if(fanner_cnt<250)fanner_cnt++;} //  && !arrive_ok排湿时热风机不转
	   else {if(fanner_cnt>0)fanner_cnt--;}
		if(fanner_cnt==250)fanner_fail=1;   //风扇无电流
		if(fanner_cnt==0)fanner_fail=0;
   }
   else  {fanner_fail=0;fanner_cnt=0;}   //非加热状态排风电流不检查
	//-------------------------------
	a7=KM;
	if(a7) {if(kmnum<50)kmnum++;}  //门开关
	else {if(kmnum>0)kmnum--;}
	if(kmnum==50 && timerov)   //关门
	{ 
		kmok=1;
		if(state==1)
		{ 	
			stop_fanner_time=60;
			led_run=0;
			if(big_ok){led_big=0;led_small=1;}  //强
			else {led_small=0;led_big=1;}   //弱
			RLY3=0;
			if(arrive_ok && unc>49){RLY2=0;}	//打开排湿 [湿度大于49度]    
			else {RLY2=1;}	     
		}
		if(state==2){led_fuchsia=0;RLY1=0;led_run=0;}
	}
	if(kmnum==0  || !timerov)    //开门
	{  
		kmok=0;
		led_run=1;
		led_big=1;
		led_small=1;
		led_fuchsia=1;
		RLY1=1; RLY2=1;  //RLY3=1;
		fanner_fail=0;fanner_cnt=0;
		//OUTOM1=1;
		//OUTOM2=1;
	}
	//----------------------------
}
/*********************************************************
*   功能:按銉处理
**********************************************************/
void key_solve(uchar key_num)
{
	
	if(!sys_stare)  //正常控制
	{	
		switch(key_num)
		{
			case 1:  //设置/启动	
				//power_drop_save();
				time_dispstyle=180;
				switch(disp_style)
				{
					case 0: 
					   if(fanner_fail) disp_style=3; //显示电流
					 	else disp_style=1;	//显示温度  
						break;
					case 1:
					   if(fanner_fail) disp_style=3; //显示电流
					 	else disp_style=2; //显示湿度 
						break;
					case 2:
					   if(state==1)disp_style=3; //显示电流
  					   else  disp_style=0;  //显示时间
						break;
					default: 
  				    	disp_style=0;  //显示时间
						break;
				}
			
				break;
			case 2: //消毒
				if(state==0 || !timerov)
				{  count_down=900;
					state=2;
					led_fuchsia=0;
					led_run=0;
					RLY1=0;
					timerov=1;  //0-->超时
				}
				break;
			case 3: //强
				if(state==0 || !timerov)
				{   RLY3=0;
					heat_ok=1;
					big_ok=1;
					pwout=dynamo;
					work_time=0;
					arrive_time=300;  //排湿延时
					arrive_ok=0;
					state=1;
					timerov=1;  //0-->超时
					pause_heat=0;
				}
				else if(state==1)big_ok=1;
				break;
			case 4:  //弱
				if(state==0 || !timerov)
				{   RLY3=0;
					heat_ok=1;
					big_ok=0;
					pwout=dynamo;
					work_time=0;
					arrive_time=300;  //排湿延时
					arrive_ok=0;
					state=1;
					timerov=1;  //0-->超时
					pause_heat=0;
				}
				else if(state==1)big_ok=0;
				break;
			case 5: //停止 				
				stop_run();
				timerov=1;  //0-->超时
				//power_drop_save(); 
				break;
			default:   
				break;
		}
		
	}
	else   //设置参数
	{
		switch(key_num)
			{
				case 1:  //设置
				   menu++;
					switch(menu)
					{
						case 1:
							if(save_ok){ save_ok=0;power_drop_save();}
						   
							break;
						case 2:
							if(save_ok){ save_ok=0;power_drop_save();}
							break;
						case 3:
						   if(save_ok){ save_ok=0;power_drop_save();}
							break;
						case 4:
							
							break;
						case 5:
							
							break;
						case 6:
							
							break;
						case 7:
						   
							break;
						case  8:
							break;
						case 9:
							
							break;
						case 10:
							
							break;
						case 11:
							break;
						case 12:
							break;
						default:
							
							break;
					}
					break;
				case 2:  
					
					switch(menu)
					{
						case  1:
							
							break;
						case 2:
							
							break;
						case 3:
							
							break;
						case 4:
							
							break;
						case 5:
							
							break;
						case 6:
							
							break;
						case 7:
							
							break;
						case 8:
							break;
						case 9:
							
							break;
						case 10:
							
							break;
						case 11:
							break;
						case 12:
							break;
						default:
							
							break;
					}
					break;
				case 3:  //↑
					save_ok=1;
					if(dynamo<20)dynamo++;
					disp_setb1();
					break;
				case 4:  //↓
				   save_ok=1;
					switch(menu)
					{
						case 1:
							if(dynamo>1)dynamo--;
							disp_setb1();
							break;
						case 2:
							
							break;
						case 3:
							
							break;
						case 4:
							
							break;
						case 5:
							
							break;
						case 6:
							
							break;
						case 7:
							
							break;
						case 8:
							break;
						case 9:
							break;
						case 10:
							break;
						case 11:
							break;
						case 12:
							break;
						default:
							
							break;
					}
					
					break;
				default:   
					break;
			}
	}
}

⌨️ 快捷键说明

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