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

📄 interface.c

📁 基于c8051f020的应用
💻 C
📖 第 1 页 / 共 2 页
字号:
    key_num = 0;
    cur_x = TimeShowAddrX;
	cur_y = TimeShowAddrY1;
    LCD_Cursor_Show(cur_y,cur_x);
	Display_Data();
	while(1)
	{
		while (! (SubSubFK = get_key(1)));

		if( SubSubFK == LEFT_ARROW_KEY)							// 左移键,用于光标位置左移
		{
			if( key_num == 0 )									// 左极端跳转
			{
				key_num = 15;
				cur_x = TimeShowAddrX+42 ; cur_y = TimeShowAddrY2;
		    }
			else if( key_num == 1 ||  key_num == 4 ||  key_num == 7 )// 双位时间的右侧位置
			{
				key_num--;
				cur_x -=6 ; cur_y = TimeShowAddrY1;
		    }
		   	else if( key_num == 3 ||  key_num == 6 )			// 光标在"-"右侧的位置
			{
				key_num -= 2 ;
				cur_x -= 2*6 ; cur_y = TimeShowAddrY1 ;
		    }
		   	else if( key_num == 8 )								// 十时位置,必须跳转
			{
				key_num--;
				cur_x = TimeShowAddrX+42 ; cur_y = TimeShowAddrY1;
		    }
		   	else if( key_num == 9 || key_num == 12 || key_num == 15 )// 双位日期的右侧位置
			{
				key_num--;
				cur_x -=6 ; cur_y = TimeShowAddrY2;
		    }
		   	else if( key_num == 11 || key_num == 14 )			// 光标在":"右侧的位置
			{
			 	key_num -= 2 ;
				cur_x -= 2*6 ; cur_y = TimeShowAddrY2;
		    }
		}
 		else if(SubSubFK == RIGHT_ARROW_KEY )
		{
			if(key_num == 0 || key_num == 3 ||key_num == 6 )
			{
			   	key_num ++ ; cur_x +=6; cur_y = TimeShowAddrY1;
			}
		    else if( key_num == 1 ||  key_num == 4 )
		    {
			   	key_num += 2; cur_x += 12;  cur_y = TimeShowAddrY1;
		    }
		    else if( key_num == 7) 
			{
			  	key_num ++ ; cur_x = TimeShowAddrX; cur_y = TimeShowAddrY2;
		      	
			} 
			else if(key_num == 8 || key_num == 11 || key_num == 14 )
			{
			   	key_num++; cur_x +=6;  cur_y = TimeShowAddrY2;
			}
		    else if( key_num == 9 ||  key_num == 12 )
		    {
			   	key_num += 2 ; cur_x += 12;  cur_y = TimeShowAddrY2;
		    }
		    else if( key_num == 15) 
			{
			  	cur_x = TimeShowAddrX; cur_y = TimeShowAddrY1;
		      	key_num = 0;
  			} 
		}
		else if( SubSubFK == RETURN_KEY )							// 确定键,注意该段程序允许输入非法日期
		{
			input_key[0] = (Clock_Date_Str[0] - 0x30)*16 + Clock_Date_Str[1] - 0x30;// 年
			input_key[1] = (Clock_Date_Str[3] - 0x30)*16 + Clock_Date_Str[4] - 0x30;// 月
			if(input_key[1]  > 0x12) input_key[1] = 0x12;
			input_key[2] = (Clock_Date_Str[6] - 0x30)*16 + Clock_Date_Str[7] - 0x30;// 日
			if(input_key[2]  > 0x31) input_key[2] = 0x31;
			input_key[3] = (Clock_Time_Str[0] - 0x30)*16 + Clock_Time_Str[1] - 0x30;// 时
			if(input_key[3]  > 0x23) input_key[3] = 0x23;
			input_key[4] = (Clock_Time_Str[3] - 0x30)*16 + Clock_Time_Str[4] - 0x30;// 分
			if(input_key[4]  > 0x59) input_key[4] = 0x59;
			input_key[5] = (Clock_Time_Str[6] - 0x30)*16 + Clock_Time_Str[7] - 0x30;// 秒
			if(input_key[5]  > 0x59) input_key[5] = 0x59;
		    DS1302_Write(input_key);
			return ;
		}
		else if(SubSubFK == UP_ARROW_KEY) // 数字键,用于输入时间数据
		{
			if(key_num==0 || key_num==1 || key_num==3 || key_num==4 || key_num==6 || key_num==7)	// 输入日期限制:月日
			{
				Clock_Date_Str[key_num]++;
				if(Clock_Date_Str[key_num]>=0x3A)
					Clock_Date_Str[key_num]=0x30;
			}
			if(key_num==8 || key_num==9 || key_num==11 || key_num==12 || key_num==14 || key_num==15)	// 输入日期限制:月日
			{
				Clock_Time_Str[key_num-8]++;
				if(Clock_Time_Str[key_num-8]>=0x3A)
					Clock_Time_Str[key_num-8]=0x30;
			}

		}
		else if(SubSubFK == DOWN_ARROW_KEY) // 数字键,用于输入时间数据
		{
			if(key_num==0 || key_num==1 || key_num==3 || key_num==4 || key_num==6 || key_num==7)	// 输入日期限制:月日
			{
				Clock_Date_Str[key_num]--;
				if(Clock_Date_Str[key_num]<=0x2F)
					Clock_Date_Str[key_num]=0x39;
			}
			if(key_num==8 || key_num==9 || key_num==11 || key_num==12 || key_num==14 || key_num==15)	// 输入日期限制:月日
			{
				Clock_Time_Str[key_num-8]--;
				if(Clock_Time_Str[key_num-8]<=0x2F)
					Clock_Time_Str[key_num-8]=0x39;
			}

		}
		SubSubFK=0x00;
		LCD_CLEAR();
		//LCD_DispStr("Please input time.",4,5);
		disp_chn_str("请输入时间",14,10,12,1);
		//LCD_DispStr("E:OK + Return.",48,5);
		//disp_chn_str("确定  返回",50,15,12,1);
		LCD_Cursor_Show(cur_y,cur_x);
		LCD_SHOW_TIME();
		Display_Data();
	}

}
//**************************************************************************************************************************
void Input_WellNameNum(void)
{
 	xdata unsigned char SubSubFK=0x00,cur_x,cur_y ;
 	xdata unsigned char key_num;										// 输入位置(光标)
 	xdata unsigned char input_key[3];								// 输入数据存储
	xdata unsigned int  temp;

   	LCD_CLEAR();
	//LCD_DispStr("Input Well Num.",4,5);
	disp_chn_str("请输入井号",14,10,12,1);
	//LCD_DispStr("E:OK + Return.",48,5);
	//disp_chn_str("确定  返回",50,15,12,1);
	sprintf(Str_Buffer,"%03.0f",(float)NowWellName);
	LCD_DispStr(Str_Buffer,WellNumShowAddrY,WellNumShowAddrX);
	//Display_Data();

    key_num = 0;
    cur_x = WellNumShowAddrX;
	cur_y = WellNumShowAddrY;
    LCD_Cursor_Show(cur_y,cur_x);
	Display_Data();
	temp=NowWellName;
	input_key[0]=temp/100 + 0x30;temp=temp%100;
	input_key[1]=temp/10 + 0x30;
	input_key[2]=temp%10 + 0x30;

	while(1)
	{
		while (! (SubSubFK = get_key(1)));

		if( SubSubFK == LEFT_ARROW_KEY)							// 左移键,用于光标位置左移
		{
			if( key_num == 0 )									// 左极端跳转
			{
				key_num = 0;
				cur_x = TimeShowAddrX ; 
		    }
			else
			{
				key_num--;
				cur_x -=6 ; 
		    }
		}
 		else if(SubSubFK == RIGHT_ARROW_KEY )
		{
			if(key_num == 2)
			{
			   	key_num =2 ; cur_x = TimeShowAddrX + 12; 
			}
		    else
		    {
			   	key_num += 1; cur_x += 6;
		    }
		}
		else if( SubSubFK == RETURN_KEY )							// 确定键,注意该段程序允许输入非法日期
		{
		    Write_Eeprom(0x7FFE,NowWellName);
			return ;
		}
		else if(SubSubFK == UP_ARROW_KEY) // 数字键,用于输入时间数据
		{
			if(key_num == 0)
			{
				input_key[key_num]++;
				if(input_key[key_num]>=0x33)
					input_key[key_num]=0x30;
			}
			else
			{
				input_key[key_num]++;
				if(input_key[key_num]>=0x3A)
					input_key[key_num]=0x30;
			}
			temp=(input_key[0]-0x30)*100 + (input_key[1]-0x30)*10 + (input_key[2]-0x30);
			if(temp>0xFF)
			{
				temp=0xFF;
				input_key[0]=0x32;input_key[1]=0x35;input_key[2]=0x35;
			}
			NowWellName=temp;

		}
		else if(SubSubFK == DOWN_ARROW_KEY) // 数字键,用于输入时间数据
		{
			if(key_num == 0)
			{
				input_key[key_num]--;
				if(input_key[key_num]<=0x2F)
					input_key[key_num]=0x32;
			}
			else
			{
				input_key[key_num]--;
				if(input_key[key_num]<=0x2F)
					input_key[key_num]=0x39;
			}
			temp=(input_key[0]-0x30)*100 + (input_key[1]-0x30)*10 + (input_key[2]-0x30);
			if(temp>0xFF)
			{
				temp=0xFF;
				input_key[0]=0x32;input_key[1]=0x35;input_key[2]=0x35;
			}
			NowWellName=temp;
		}
		SubSubFK=0x00;
		LCD_CLEAR();
		//LCD_DispStr("Input Well Num.",4,5);
		disp_chn_str("请输入井号",14,10,12,1);
		//LCD_DispStr("E:OK + Return.",48,5);
		//disp_chn_str("确定  返回",50,15,12,1);
		sprintf(Str_Buffer,"%03.0f",(float)NowWellName);
		LCD_DispStr(Str_Buffer,WellNumShowAddrY,WellNumShowAddrX);
		LCD_Cursor_Show(cur_y,cur_x);
		Display_Data();
	}
}
//**************************************************************************************************************************
void Set_Test_Time(void)
{
 	xdata unsigned char SubSubFK=0x00;

   	LCD_CLEAR();
	//LCD_DispStr("Input Test Time.",0,5);
	//disp_chn_str("请输入测试时间",2,15,12,1);
	LCD_DispStr("25s",4,34);
	disp_chn_str("↑丰",2,10,12,1);
	LCD_DispStr("50s",16,34);
	disp_chn_str("↓丰",14,10,12,1);
	LCD_DispStr("100s",28,34);
	disp_chn_str("←丰",26,10,12,1);
	LCD_DispStr("200s",40,34);
	disp_chn_str("→丰",38,10,12,1);
	//LCD_DispStr("E:OK + Return.",48,5);
	//disp_chn_str("确定  返回",50,15,12,1);


	disp_chn_str("设定值",50,10,12,1);
	sprintf(Str_Buffer,":%03.0fs",(float)TestTime*25);
	LCD_DispStr(Str_Buffer,52,46);
	Display_Data();

	while(1)
	{
		while (! (SubSubFK = get_key(1)));

		if(SubSubFK == UP_ARROW_KEY)
		{
			TestTime=1;
		}
		else if(SubSubFK == DOWN_ARROW_KEY)
		{
			TestTime=2;
		}
		else if( SubSubFK == LEFT_ARROW_KEY)
		{
			TestTime=4;
		}
 		else if(SubSubFK == RIGHT_ARROW_KEY )
		{
			TestTime=8;
		}
		else if( SubSubFK == RETURN_KEY )
		{
			Write_Eeprom(0x7FFD,TestTime);
			return ;
		}
		SubSubFK=0x00;
		disp_chn_str("设定值",50,10,12,1);
		sprintf(Str_Buffer,":%03.0fs",(float)TestTime*25);
		LCD_DispStr(Str_Buffer,52,46);
		Display_Data();
	}
}
//**************************************************************************************************************************
void ReNew_All_Date(void)
{
	xdata unsigned char i;
	xdata unsigned char SubSubRFK=0x00;

	LCD_CLEAR();
	//LCD_DispStr("ReNew All Date.",22,5);
	disp_chn_str("恢复所有数据",2,10,12,1);
	//LCD_DispStr("Are you Show?",30,5);
	//disp_chn_str("确定?",26,10,12,1);
	//LCD_DispStr("E:OK.",48,5);
	disp_chn_str("确认丰确定",38,10,12,1);
	//LCD_DispStr("Other:Cancle.",56,5);
	disp_chn_str("其他丰返回",50,10,12,1);
	Display_Data();

	while(1)
	{
		while (! (SubSubRFK = get_key(1)));

		if(SubSubRFK == RETURN_KEY)
			break;
		else
			return ;
	
	}

	for(i=0;i<MaxWellSaveNum;i++)
	{
		Write_Eeprom(0x400*i+HollDateLong+0,0xA5);
		Write_Eeprom(0x400*i+HollDateLong+1,0x5A);
	}

	LCD_CLEAR();
    //LCD_DispStr("Renew Date OK..",48,5);Display_Data();
	disp_chn_str("数据恢复",14,10,12,1);
	//LCD_DispStr("E:Return.",48,5);
	disp_chn_str("任意键返回",50,10,12,1);
	Display_Data();
	while(!get_key(1));

}
//**************************************************************************************************************************
void Clear_ALL_Date(void)
{
	xdata unsigned int  i;
	xdata unsigned char SubSubFK=0x00;

	LCD_CLEAR();
	//LCD_DispStr("Clear ALL Date.",22,5);
	disp_chn_str("确认清除所有数据",2,10,12,1);
	//LCD_DispStr("Are you Show?",30,5);
	//disp_chn_str("确定?",26,10,12,1);
	//LCD_DispStr("E:OK.",48,5);
	disp_chn_str("确认丰确定",38,10,12,1);
	//LCD_DispStr("Other:Cancle.",56,5);
	disp_chn_str("其他丰返回",50,10,12,1);
	Display_Data();

	while(1)
	{
		while (! (SubSubFK = get_key(1)));

		if(SubSubFK == RETURN_KEY)
			break;
		else
			return ;
	}

	for(i=0;i<MaxWellSaveNum;i++)
	{
		Write_Eeprom(0x400*i+HollDateLong+0,0xFF);
		Write_Eeprom(0x400*i+HollDateLong+1,0xFF);
	}

	LCD_CLEAR();
	//LCD_DispStr("All date cleared.",30,5);
	disp_chn_str("数据清除",14,10,12,1);
	//LCD_DispStr("E:Return.",48,5);
	disp_chn_str("任意键返回",50,10,12,1);
	Display_Data();

	while(!(get_key(1)));

}
//**************************************************************************************************************************
// The End
//**************************************************************************************************************************


⌨️ 快捷键说明

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