📄 interface.c
字号:
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 + -