📄 control.c
字号:
flash_line(union_vlaue.revalue_buf_int[3],union_vlaue.revalue_buf_int[1]);//显示进度条
lcd_partclr(0,10,33); //显示启动电流
data_switch_display(union_vlaue.revalue_buf_int[0],0,0,36,6);
lcd_partclr(0,83,32); //显示已用热容量
data_switch_display(union_vlaue.revalue_buf_int[2],0,0,108,6);
break;
case 0x40:
lcdwrite_chinese(2,69,13,&zheng[0]); //显示正在运行
lcdwrite_chinese(2,83,13,&zai[0]);
lcdwrite_chinese(2,95,13,&yunxing_yun[0]);
lcdwrite_chinese(2,108,13,&xing[0]);
lcd_partclr(0,10,33); //显示平均电流
data_switch_display(union_vlaue.revalue_buf_int[5],0,0,36,6);
lcd_partclr(0,83,32); //显示已用热容量
data_switch_display(union_vlaue.revalue_buf_int[2],0,0,108,6);
break;
default : break;
}
break;
default : break; //此时为非法状态
}
}
}
}
}
/*
双电源及保护方式的合闸与运行界面
显示信息包括系统准备状态、运行方式、操作方式、平均电流、平均电压等
*/
void power_run_show()
{
unsigned char a;
if(union_state.state_buf[0]&0x01) //停车状态
{
dis_number=0; //转向察看参数界面号
show_bit=1; //第一次进入标志
set_bit=0;
remote_sign.furbish=1;//刷新标志
dis_message_count=3;
remote_type.value=1;
}
else //非停车状态
{
if((union_state.state_buf[11]&0x07)>=two_power)
{
if(key==ok_key) //如果有确认键,立即处理键
{
dis_number=33; //转向察看参数界面号
show_bit=1; //第一次进入标志
remote_sign.furbish=1;//刷新标志
dis_message_count=0;
arrow_state1=0;
}
if(remote_sign.furbish==0)
{
remote_sign.furbish=1;//刷新标志
dis_message_count=5;
remote_type.value=1;
switch (union_state.state_buf[11]) //读起动方式
{
case two_power:
if(show_bit)
{
clr_fullscreen();
lcdwrite(1,0,1,&pointline[0]);
lcdwrite(1,1,1,&pointline[0]);
lcdwrite(1,119,1,&pointline[0]);
lcdwrite(1,120,1,&pointline[0]);
for(a=2;a<119;a++)
{
lcdwrite(1,a,1,&dline[0]); //显示线
}
lcdwrite(0,0,6,&ascI[0]); //显示I
lcdwrite(0,6,4,&mh[0]); //显示:
lcdwrite(0,43,6,&ascA[0]); //显示A
lcdwrite(0,73,6,&ascU[0]); //显示U
lcdwrite(0,79,4,&mh[0]); //显示:
lcdwrite(0,115,6,&ascV[0]); //显示V
show_bit=0;
point_row=0;
}
switch (union_vlaue.revalue_buf[11]) //操作原因
{
case 0x01:
lcdwrite_chinese(2,0,13,&an[0]); //显示按键操作
lcdwrite_chinese(2,13,13,&anjian_jian[0]);
lcdwrite_chinese(2,26,13,&cao[0]);
lcdwrite_chinese(2,39,13,&zuo[0]);
break;
case 0x02:
lcdwrite_chinese(2,0,13,&an[0]); //显示按钮操作
lcdwrite_chinese(2,13,13,&niu[0]);
lcdwrite_chinese(2,26,13,&cao[0]);
lcdwrite_chinese(2,39,13,&zuo[0]);
break;
case 0x04:
lcdwrite_chinese(2,0,13,&tongxun[0]); //显示通讯操作
lcdwrite_chinese(2,13,13,&xun[0]);
lcdwrite_chinese(2,26,13,&cao[0]);
lcdwrite_chinese(2,39,13,&zuo[0]);
break;
// case 0x08:
// lcdwrite_chinese(2,0,13,&qian[0]); //显示欠压重投
// lcdwrite_chinese(2,13,13,&dianya_ya[0]);
// lcdwrite_chinese(2,26,13,&chong[0]);
// lcdwrite_chinese(2,39,13,&tou[0]);
// break;
case 0x10:
lcdwrite_chinese(2,0,13,&zi[0]); //显示自动操作
lcdwrite_chinese(2,13,13,&dong[0]);
lcdwrite_chinese(2,26,13,&cao[0]);
lcdwrite_chinese(2,39,13,&zuo[0]);
break;
default : break;
}
switch (union_state.state_buf[1]&0x48) //起动状态
{
case 0x08:
if(union_state.state_buf[1]&0x10)
{
lcdwrite_chinese(2,69,13,&tou[0]); //显示投主电源
lcdwrite_chinese(2,83,13,&zhu[0]);
lcdwrite_chinese(2,95,13,&dian[0]);
lcdwrite_chinese(2,108,13,&yuan[0]);
flash_line(union_vlaue.revalue_buf_int[4],union_vlaue.revalue_buf_int[0]);//显示进度条
}
else
{
lcdwrite_chinese(2,69,13,&tou[0]); //显示投备电源
lcdwrite_chinese(2,83,13,&bei[0]);
lcdwrite_chinese(2,95,13,&dian[0]);
lcdwrite_chinese(2,108,13,&yuan[0]);
flash_line(union_vlaue.revalue_buf_int[3],union_vlaue.revalue_buf_int[0]);//显示进度条
}
break;
case 0x40:
if(union_state.state_buf[1]&0x80)
{
lcdwrite_chinese(2,69,13,&zhu[0]); //显示主电工作
lcdwrite_chinese(2,83,13,&dian[0]);
lcdwrite_chinese(2,95,13,&gong[0]);
lcdwrite_chinese(2,108,13,&zuo[0]);
}
else
{
lcdwrite_chinese(2,69,13,&bei[0]); //显示备电工作
lcdwrite_chinese(2,83,13,&dian[0]);
lcdwrite_chinese(2,95,13,&gong[0]);
lcdwrite_chinese(2,108,13,&zuo[0]);
}
break;
default : break;
}
lcd_partclr(0,10,33); //显示平均电流
data_switch_display(union_vlaue.revalue_buf_int[1],0,0,36,6);
lcd_partclr(0,83,32); //显示平均电压
data_switch_display(union_vlaue.revalue_buf_int[2],0,0,108,6);
break;
case protect:
if(show_bit)
{
clr_fullscreen();
lcdwrite(0,0,6,&ascI[0]); //显示I
lcdwrite(0,6,4,&mh[0]); //显示:
lcdwrite(0,43,6,&ascA[0]); //显示A
lcdwrite(0,73,6,&ascU[0]); //显示U
lcdwrite(0,79,4,&mh[0]); //显示:
lcdwrite(0,115,6,&ascV[0]); //显示V
lcdwrite_chinese(2,35,13,&zheng[0]); //显示正常运行
lcdwrite_chinese(2,48,13,&chang[0]);
lcdwrite_chinese(2,62,13,&yunxing_yun[0]);
lcdwrite_chinese(2,75,13,&xing[0]);
show_bit=0;
}
lcd_partclr(0,10,33); //显示平均电流
data_switch_display(union_vlaue.revalue_buf_int[1],0,0,36,6);
lcd_partclr(0,83,32); //显示平均电压
data_switch_display(union_vlaue.revalue_buf_int[2],0,0,108,6);
break;
default : break;
}
}
}
else
{
dis_number=3;//转向察看参数界面号
show_bit=1; //第一次进入标志
set_bit=0;
remote_sign.furbish=1;//刷新标志
dis_message_count=4;
remote_type.value=1;
}
}
}
//显示滚动条
void flash_line(unsigned int all_time,use_time)
{
unsigned char temp;
unsigned char a;
temp=all_time/122;
temp=use_time/temp;
if(temp>121){temp=121;}
if(point_row>120)
{
point_row=121;
temp=0;
}
for(a=point_row;a<=temp;a++)
{
lcdwrite(1,point_row,1,&pointline); //动态显示滚动点
point_row++;
}
}
/*
停车运行界面选择
*/
void hmi_select()
{
if(union_state.state_buf[0]&0x01) //停车状态
{
dis_number=0; //转向察看参数界面号
show_bit=1; //第一次进入标志
set_bit=0;
remote_sign.furbish=1;//刷新标志
dis_message_count=3;
remote_type.value=1;
}
else //非停车状态
{
if((union_state.state_buf[11]&0x07)>=two_power)
{
dis_number=7; //转向察看参数界面号
show_bit=1; //第一次进入标志
set_bit=0;
remote_sign.furbish=1;//刷新标志
dis_message_count=5;
remote_type.value=1;
}
else
{
dis_number=3;//转向察看参数界面号
show_bit=1; //第一次进入标志
set_bit=0;
remote_sign.furbish=1;//刷新标志
dis_message_count=4;
remote_type.value=1;
}
}
}
/*
起动方式设定
*/
/*void start_type_setting()
{
if(show_bit) //判断是否是第一次显示
{//第一次显示
clr_fullscreen();//清屏
lcdwrite_chinese(2,4,13,&yunxing_yun[0]); //显示运行方式
lcdwrite_chinese(2,17,13,&xing[0]);
lcdwrite_chinese(2,30,13,&fang[0]);
lcdwrite_chinese(2,43,13,&shi[0]);
lcdwrite_arrow(1,115,set_bit); //显示箭头
show_bit=0;
}
if(set_bit==0)
{
if(remote_sign.furbish==0)
{
switch(union_state.state_buf[23]) //根据起动方式处理显示界面
{
case direct_start:
lcdwrite_chinese(0,35,13,&zhijie_zhi[0]); //显示直接起动
lcdwrite_chinese(0,48,13,&jie[0]);
lcdwrite_chinese(0,61,13,&qidong[0]);
lcdwrite_chinese(0,74,13,&dong[0]);
break;
case double_start:
lcdwrite_chinese(0,35,13,&zheng[0]); //显示正反起动
lcdwrite_chinese(0,48,13,&fan[0]);
lcdwrite_chinese(0,61,13,&qidong[0]);
lcdwrite_chinese(0,74,13,&dong[0]);
break;
case two_speed_start:
lcdwrite_chinese(0,35,13,&shuang[0]); //显示双速起动
lcdwrite_chinese(0,48,13,&su[0]);
lcdwrite_chinese(0,61,13,&qidong[0]);
lcdwrite_chinese(0,74,13,&dong[0]);
break;
case res_start:
lcdwrite_chinese(0,35,13,&dian[0]); //显示电阻降压
lcdwrite_chinese(0,48,13,&zu[0]);
lcdwrite_chinese(0,61,13,&jiang[0]);
lcdwrite_chinese(0,74,13,&dianya_ya[0]);
break;
case ydelta_start:
lcdwrite_chinese(0,35,13,&y_delta[0]); //显示星三角起动
lcdwrite_chinese(0,48,13,&delta[0]);
lcdwrite_chinese(0,61,13,&qidong[0]);
lcdwrite_chinese(0,74,13,&dong[0]);
break;
case auto_transfor:
lcdwrite_chinese(0,35,13,&zi[0]); //显示自耦降压
lcdwrite_chinese(0,48,13,&ou[0]);
lcdwrite_chinese(0,61,13,&jiang[0]);
lcdwrite_chinese(0,74,13,&dianya_ya[0]);
break;
case protect:
lcdwrite_chinese(0,35,13,&baohu[0]); //显示保护方式
lcdwrite_chinese(0,48,13,&hu[0]);
lcdwrite_chinese(0,61,13,&fang[0]);
lcdwrite_chinese(0,74,13,&shi[0]);
break;
case measure_control:
lcdwrite_chinese(0,35,13,&ce[0]); //显示测控方式
lcdwrite_chinese(0,48,13,&kong[0]);
lcdwrite_chinese(0,61,13,&fang[0]);
lcdwrite_chinese(0,74,13,&shi[0]);
break;
case two_power:
lcdwrite_chinese(0,35,13,&shuang[0]); //显示双电源方式
lcdwrite_chinese(0,48,13,&dian[0]);
lcdwrite_chinese(0,61,13,&yuan[0]);
lcdwrite_chinese(0,74,13,&fang[0]);
lcdwrite_chinese(0,87,13,&shi[0]);
break;
default : break;
}
}
if(key) //处理按键
{
switch(key)
{
case up_key:
//至上一界面号
set_bit=0; //至察看标志
show_bit=1; //重至第一次刷新标志
break;
case down_key:
//至下一界面号
set_bit=0; //至察看标志
show_bit=1; //重至第一次刷新标志
break;
case ok_key:
set_bit=1; //至设定状态标志,进入设定状态
show_bit=1; //重至第一次刷新标志
set_data_temp=union_state.state_buf[23];//初始化设定暂存器
break;
case esc_key:
//至返回界面号
set_bit=0; //至察看标志
show_bit=1; //重至第一次刷新标志
break;
}
}
}
else //设定界面显示
{
switch(set_data_temp) //根据起动方式处理显示界面
{
case direct_start:
lcdwrite_chinese(0,35,13,&zhijie_zhi[0]); //显示直接起动
lcdwrite_chinese(0,48,13,&jie[0]);
lcdwrite_chinese(0,61,13,&qidong[0]);
lcdwrite_chinese(0,74,13,&dong[0]);
break;
case double_start:
lcdwrite_chinese(0,35,13,&zheng[0]); //显示正反起动
lcdwrite_chinese(0,48,13,&fan[0]);
lcdwrite_chinese(0,61,13,&qidong[0]);
lcdwrite_chinese(0,74,13,&dong[0]);
break;
case two_speed_start:
lcdwrite_chinese(0,35,13,&shuang[0]); //显示双速起动
lcdwrite_chinese(0,48,13,&su[0]);
lcdwrite_chinese(0,61,13,&qidong[0]);
lcdwrite_chinese(0,74,13,&dong[0]);
break;
case res_start:
lcdwrite_chinese(0,35,13,&dian[0]); //显示电阻降压
lcdwrite_chinese(0,48,13,&zu[0]);
lcdwrite_chinese(0,61,13,&jiang[0]);
lcdwrite_chinese(0,74,13,&dianya_ya[0]);
break;
case ydelta_start:
lcdwrite_chinese(0,35,13,&y_delta[0]); //显示星三角起动
lcdwrite_chinese(0,48,13,&delta[0]);
lcdwrite_chinese(0,61,13,&qidong[0]);
lcdwrite_chinese(0,74,13,&dong[0]);
break;
case auto_transfor:
lcdwrite_chinese(0,35,13,&zi[0]); //显示自耦降压
lcdwrite_chinese(0,48,13,&ou[0]);
lcdwrite_chinese(0,61,13,&jiang[0]);
lcdwrite_chinese(0,74,13,&dianya_ya[0]);
break;
case protect:
lcdwrite_chinese(0,35,13,&baohu[0]); //显示保护方式
lcdwrite_chinese(0,48,13,&hu[0]);
lcdwrite_chinese(0,61,13,&fang[0]);
lcdwrite_chinese(0,74,13,&shi[0]);
break;
case measure_control:
lcdwrite_chinese(0,35,13,&ce[0]); //显示测控方式
lcdwrite_chinese(0,48,13,&kong[0]);
lcdwrite_chinese(0,61,13,&fang[0]);
lcdwrite_chinese(0,74,13,&shi[0]);
break;
case two_power:
lcdwrite_chinese(0,35,13,&shuang[0]); //显示双电源方式
lcdwrite_chinese(0,48,13,&dian[0]);
lcdwrite_chinese(0,61,13,&yuan[0]);
lcdwrite_chinese(0,74,13,&fang[0]);
lcdwrite_chinese(0,87,13,&shi[0]);
break;
default : break;
}
if(key) //处理按键
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -