自己用到的点阵液晶资料的一些分享:
菜单界面的实现方法
建议在看下面内容之前复习一下C语言的如下内容
1、结构体
2、指向函数的指针
3、结构体链表
4、傻孩子的菜单引擎

当前层节点数,即每层菜单最多能显示的条目数.
目的:
1、在菜单读取前先读取这个菜单总共拥有的项目数,防止越界。
在菜单读取过程中将会有一个计数变量存储菜单移动。所以需要这个变量来确定移动的上界;
2、可以方便的实现菜单的滚动。例如:“文件”菜单依次下有:
“打开”、“保存”、“打印”、“退出”这4个子项,如果计数存储达到上界“退出” 即(MenuCount == 4)时再继续向下一级翻页则会回到“打开”。
指向菜单标题字符串的指针
目的:
指向菜单标题的字符串,指向当选中该级菜单后所要显
示的字符串。
指向当前状态应该执行功能函数的指针
目的:
说明如果选中该级菜单应当执行什么程序,这个指针指向该项所要实现功能的函数。例如:菜单项为“播放”,则该函数指向Play();
指向当前菜单的下级菜单
目的:
指向结构体指针,用于存储下一级菜单,在后面的链表中详细
说明。
  
所有资料51hei提供下载(pdf+源码):
http://www.51hei.com/bbs/dpj-109977-1.html
单片机源程序如下:
- #include <stdio.h>
- #include "drv_lcd.h"
- #include "menu.h"
- MENU MainMenu[3] =
- {
- {0,"AUTO",MENU_AUTO,&MainMenu[0],&AUTOMenu[0],&MainMenu[2],&MainMenu[1]}, //主菜单AUTOMenu[0]
- {1,"SETUP",MENU_SETUP,&MainMenu[0],&SETUPKey[0],&MainMenu[0],&MainMenu[2]}, //主菜单
- {2,"HAND",MENU_HAND,&MainMenu[0],&Manualcontrol[0],&MainMenu[1],&MainMenu[0]}, //主菜单
- };
- MENU AUTOMenu[6] = //??????
- {
- {0,"NULL",MENU_AUTOMenu1,&MainMenu[0],NULL,&AUTOMenu[5],&AUTOMenu[1]},
- {1,"NULL",MENU_AUTOMenu2,&MainMenu[0],NULL,&AUTOMenu[0],&AUTOMenu[2]},
- {2,"NULL",MENU_AUTOMenu3,&MainMenu[0],NULL,&AUTOMenu[1],&AUTOMenu[3]},
- {3,"NULL",MENU_AUTOMenu4,&MainMenu[0],NULL,&AUTOMenu[2],&AUTOMenu[4]},
- {4,"NULL",MENU_AUTOMenu5,&MainMenu[0],NULL,&AUTOMenu[3],&AUTOMenu[5]},
- {5,"NULL",MENU_AUTOMenu6,&MainMenu[0],NULL,&AUTOMenu[4],&AUTOMenu[0]}
- };
- MENU SELFCONTROL =
- {
- 0,"MIMA",Autonetworking,NULL,NULL,NULL,NULL, //密码界面
- };
- MENU ZuWang_Succ = {0,"succ",MENU_Succ,&ZuWang_Succ,&ZuWang_Succ,&ZuWang_Succ,&ZuWang_Succ};//jjk 4.29
- MENU Sure_Noyes[2] =
- {
- {0,"no",MENU_NO,&SETUPKey[2],&SETUPKey[2],&Sure_Noyes[1],&Sure_Noyes[1]},
- {111,"yes",MENU_YES,&SETUPKey[2],&SELFCONTROL,&Sure_Noyes[0],&Sure_Noyes[0]},
- };
- MENU SETUPKey[5] =
- {
- {0,"MIMA",SETUP_Key1,&MainMenu[1],&AD,NULL,&SETUPKey[1]}, //密码界面
- {1,"LD",SETUP_Key2,&MainMenu[1],NULL,NULL,&SETUPMenu[0]}, //参数同步界面
- {2,"LD",Localnet,&SETUPMenu[2],&Cap_configura[0],&SETUPKey[3],&SETUPKey[3]}, //参数同步界面
- {3,"LD",Autonet,&SETUPMenu[2],&Sure_Noyes[0],&SETUPKey[2],&SETUPKey[2]}, //参数同步界面
- {4,"TJDQ",T_JDQ,&SETUPKey[0],NULL,NULL,NULL}, //继电器动作时间界面
- };
- MENU SETUPMenu[3] = //设置参数菜单
- {
- {0,"D",RUN_key,&MainMenu[1],&Oppt[0],&SETUPMenu[2],&SETUPMenu[1]}, //运行参数
- {1,"D",Protect_SETUP,&MainMenu[1],&Protect_p[0],&SETUPMenu[0],&SETUPMenu[2]}, //保护参数
- {2,"D",DR_SETUP,&MainMenu[1],&SETUPKey[2],&SETUPMenu[1],&SETUPMenu[0]}, //电容配置
- // {2,"D",DR_SETUP,&MainMenu[1],&Cap_configura[0],&SETUPMenu[1],&SETUPMenu[0]} //电容配置
- };
- MENU AD=
- {
- 0,"AD",G_ADUa,NULL,NULL,NULL,NULL,
- };
- MENU Oppt[15]= //运行参数 菜单 Operating parameters
- {
- {0,"A",Addressset,&Oppt[13],&Oppt[3],NULL,&Oppt[1]},
- {1,"A",G_ID1,NULL,NULL,NULL,&Oppt[2]},
- {2,"A",G_ID2,NULL,NULL,NULL,&Oppt[3]},
- {3,"A",Competenceset,&Oppt[0],&Oppt[6],NULL,&Oppt[4]},
- {4,"A",G_pw1,NULL,NULL,NULL,&Oppt[5]},
- {5,"A",G_pw2,NULL,NULL,NULL,&Oppt[6]},
- {6,"A",CTset,&Oppt[3],&Oppt[9],NULL,&Oppt[7]},
- {7,"A",G_ct1,NULL,NULL,NULL,&Oppt[8]},
- {8,"A",G_ct2,NULL,NULL,NULL,&Oppt[9]},
- {9,"A",COSset,&Oppt[6],&Oppt[11],NULL,&Oppt[10]},
- {10,"A",G_cos,NULL,NULL,NULL,&Oppt[11]},
- {11,"A",QCset,&Oppt[9],&Oppt[13],NULL,&Oppt[12]},
- {12,"A",G_qc,NULL,NULL,NULL,&Oppt[13]},
- {13,"A",D1set,&Oppt[11],&Oppt[0],NULL,&Oppt[14]},
- {14,"A",G_d1,NULL,NULL,NULL,&Oppt[0]},
- };
- MENU Protect_p[12]= //保护参数 菜单 parameters
- {
- {0,"B",G_Uh,&Protect_p[10],&Protect_p[2],NULL,&Protect_p[1]},
- {1,"B",G_ProUH,NULL,NULL,NULL,&Protect_p[2]},
- {2,"B",G_Ul,&Protect_p[0],&Protect_p[4],NULL,&Protect_p[3]},
- {3,"B",G_ProUl,NULL,NULL,NULL,&Protect_p[4]},
- {4,"B",G_THDu,&Protect_p[2],&Protect_p[6],NULL,&Protect_p[5]},
- {5,"B",G_ProTHDu,NULL,NULL,NULL,&Protect_p[6]},
- {6,"B",G_THDi,&Protect_p[4],&Protect_p[8],NULL,&Protect_p[7]},
- {7,"B",G_ProTHDi,NULL,NULL,NULL,&Protect_p[8]},
- {8,"B",G_D2,&Protect_p[6],&Protect_p[10],NULL,&Protect_p[9]},
- {9,"B",G_ProD2,NULL,NULL,NULL,&Protect_p[10]},
- {10,"B",G_TP,&Protect_p[8],&Protect_p[0],NULL,&Protect_p[11]},
- {11,"B",G_ProTP,NULL,NULL,NULL,&Protect_p[0]},
- };
- MENU Cap_configura[12]= //电容配置 菜单
- {
- {0,"C",G_SN,&Cap_configura[9],&Cap_configura[3],NULL,&Cap_configura[1]},
- {1,"C",G_CapSN1,NULL,NULL,NULL,&Cap_configura[2]},
- {2,"C",G_CapSN2,NULL,NULL,NULL,&Cap_configura[3]},
- {3,"C",G_VE,&Cap_configura[0],&Cap_configura[6],NULL,&Cap_configura[4]},
- {4,"C",G_CapVE1,NULL,NULL,NULL,&Cap_configura[5]},
- {5,"C",G_CapVE2,NULL,NULL,NULL,&Cap_configura[6]},
- {6,"C",G_Ih,&Cap_configura[3],&Cap_configura[9],NULL,&Cap_configura[7]},
- {7,"C",G_CapIH1,NULL,NULL,NULL,&Cap_configura[8]},
- {8,"C",G_CapIH2,NULL,NULL,NULL,&Cap_configura[9]},
- {9,"C",G_Il,&Cap_configura[6],&Cap_configura[0],NULL,&Cap_configura[10]},
- {10,"C",G_CapIL1,NULL,NULL,NULL,&Cap_configura[11]},
- {11,"C",G_CapIL2,NULL,NULL,NULL,&Cap_configura[0]},
- };
- MENU Manualcontrol[2] =
- {
- {0,"E",Cx_control0,&MainMenu[2],NULL,&Manualcontrol[1],&Manualcontrol[1]},
- {1,"E",Cx_control1,&MainMenu[2],NULL,&Manualcontrol[0],&Manualcontrol[0]},
- };
- MENU *pMenu = &MainMenu[0]; //指向当前菜单的指针
- //2015.3.14
- void MENU_AUTO(void) //自动运行
- {
- g_MBHoldReg1[5] = 1;
- MENU_MainSub(1,0,0);
- MENU_MainKey();
- }
- void MENU_SETUP() //参数配置
- {
- g_MBHoldReg1[5] = 2;
- MENU_MainSub(0,1,0);
- MENU_MainKey();
- }
- void MENU_HAND() //手动控制
- {
- g_MBHoldReg1[5] = 3;
- MENU_MainSub(0,0,1);
- MENU_MainKey();
- }
- void lian_fen()
- {
- unsigned char *p;
- if(g_communicate)
- {
- p = (pstr) "联";
- Dis_String(3,0,p,0);
- }else
- {
- p = (pstr) "分";
- Dis_String(3,0,p,0);
- }
- }
- void MENU_MainSub(u8 first,u8 second,u8 third) //主菜单
- {
- u8 *p;
- lian_fen();
- p = (pstr) "自动运行";
- Dis_String(42,1,p,first);
- p = (pstr) "参数配置";
- Dis_String(42,3,p,second);
- p = (pstr)"手动控制";
- Dis_String(42,5,p,third);
- }
- void MENU_MainKey() //主菜单按键扫描
- {
- u8 tmp = 0;
- tmp = g_keyValue; //键值
- g_keyValue = 0;
- switch(tmp)
- {
- case KCR:
- {
- kongflag =0;
- LcmClear(0);
- //zhangjian
- if(strcmp(pMenu -> string,"AUTO")==0)
- Auto_manual = 0;
- //zhangjian
- pMenu = pMenu -> childrenMenuItem;
- }break;
- case KESC:{
-
- //LcmClear(0);
- pMenu = &MainMenu[0];
- }break;
- case KUP:
- {
- pMenu = pMenu -> lastMenuItem;
- }break;
- case KDOWN:
- {
- pMenu = pMenu -> nextMenuItem;
- }break;
- default:
- break;
- }
- }
- // //
- void Display_C() //显示电容标号及是否投退 反显表示投入 此函数有共补、分补之分
- {
- unsigned char i=0;
- for(i=0;i<6;i++)
- {
- Display_charLocate(2+i,6,HZTT[i+6],0);
- }
- if(g_CScratch!= g_InitiativeFlag)
- {
- g_CScratch = g_InitiativeFlag;
- LcmClear_xy(6,7,0,128);
- }
- if(g_InitiativeFlag==1) //主控模式
- {
- for(i=0;i<8;i++)
- {
- LcmPutNum_2(8+15*i,6,g_cx,capdevice[g_cx-1].cstatus);
- LcmPutNum_2(8+15*i,7,g_cx+8,capdevice[g_cx+7].cstatus);
- g_cx++;
- if(g_cx==64) break;
- }
- }else
- {
- Uchar p;
- p = 'C';
- LcmPutChar_8(15,6,p,capdevice[g_CapSN1-1].cstatus);
- LcmPutChar_8(45,6,p,capdevice[g_CapSN2-1].cstatus);
- LcmPutNum_2(21,6,g_CapSN1,capdevice[g_CapSN1-1].cstatus);
- LcmPutNum_2(51,6,g_CapSN2,capdevice[g_CapSN2-1].cstatus);
-
- LcmClear_xy(7,8,0,128);
- }
- }
- void MENU_AUTOMenu1() //第一屏 功率因数、电压电流、电容器状态
- {
- u8 *p;
- unsigned char i;
- g_cx = 1;
- g_MBHoldReg1[5] = 11;
- if(!kongflag)
- {
- kongflag = 1;
- p = (pstr)"COS";
- LcmPutStr_8(15,0,p,0);
- for(i=0;i<6;i++)
- {
- Display_charLocate(33+i,0,HZTT[i],0);
- }
- p = (pstr)"VOLT(V)";
- LcmPutStr_8(15,2,p,0);
- p = (pstr)"CURR(A)";
- LcmPutStr_8(15,4,p,0);
- //zhangjian
- if(Qflag == 1)
- p = (pstr)"-";
- else
- p = (pstr)" ";
- LcmPutStr_8(69,0,p,0);
- LcmPutNum_4(75,0,g_Pf,0); //??g_RunCOS
- LcmPutNum_40(75,2,g_Uca,g_warnFlagc);
- LcmPutNum_40(75,4,g_Ib/10.0,g_warnFlagIb);
- Display_C();
- }
- MENU_AUTOKey();
- }
- //zhangjian20160921
- void MENU_AUTOMenu2() //第二屏 有功功率、无功功率、频率
- {
- unsigned char *p;
- // unsigned char i;
- g_cx = 17;
- g_MBHoldReg1[5] = 12;
- if(!kongflag)
- {
- kongflag = 1;
- p = (pstr)"P(KW)";
- LcmPutStr_8(15,0,p,0);
- p = (pstr)"Q(Kvar)";
- LcmPutStr_8(15,2,p,0);
- p = (pstr)"f(HZ)";
- LcmPutStr_8(15,4,p,0);
- LcmPutNum_40(75,0,g_P/1000.0,0);
- LcmPutNum_40(75,2,g_Q/1000.0,0);
- LcmPutNum_40(75,4,g_f,0);
- Display_C();
- } //数据
- MENU_AUTOKey();
- }
- //zhangjian20160921
- void MENU_AUTOMenu3() //第三屏 电容器电流、温度
- {
- unsigned char *p;
- unsigned char i;
- unsigned int Display_T;
- Display_T = fabs(g_Temperature1);
- g_cx = 33;
- g_MBHoldReg1[5] = 13;
- if(!kongflag)
- {
- kongflag = 1;
- p = (pstr)"C(A)";
- LcmPutStr_8(30,0,p,0);
- for(i=0;i<28;i++)
- {
- Display_charLocate(75+i,0,T_1[i],0); //
- }
- p = (pstr)"C1";
- LcmPutStr_8(15,2,p,0);
- p = (pstr)"C2";
- LcmPutStr_8(15,4,p,0);
- p = (pstr)"___";
- LcmPutStr_8(35,2,p,0); // C1值
- LcmPutNum_40(75,2,Display_T,g_warnFlag); //温度
- LcmPutStr_8(35,4,p,0); // C2值
- Display_C(); //显示电容标示
- if(g_Temperature1 < 0)
- {
- p = (pstr)"-";
- LcmPutStr_8(67,2,p,0);
- }
- }//数据
- MENU_AUTOKey();
- }
- //zhangjian20160921
- void MENU_AUTOMenu4() //第四屏 电压畸变率、电流畸变率
- {
- unsigned char *p;
- g_cx = 49;
- g_MBHoldReg1[5] = 14;
- if(!kongflag)
- {
- kongflag = 1;
- p = (pstr)"THDu(%)";
- LcmPutStr_8(15,1,p,0);
- p = (pstr)"THDi(%)";
- LcmPutStr_8(15,3,p,0);
-
- LcmPutNum_30(75,1,g_cTHDu,g_warnFlagTHUc);//g_THDu g_warnFlagTHUc == 0)&&(g_warnFlagTHIb
- LcmPutNum_30(75,3,g_bTHDi,g_warnFlagTHIb);//g_THDi
- Display_C();
- }
- MENU_AUTOKey();
- }
- void MENU_AUTOMenu5() //第五屏 电压、电流3、5、7、9、11次谐波
- {
- unsigned char *p;
- unsigned char i=0;
- g_MBHoldReg1[5] = 15;
- if(!kongflag)
- {
- kongflag = 1;
- p = (pstr)"HRUn(%)";
- LcmPutStr_8(25,1,p,0);
- p = (pstr)"HRIn(%)";
- LcmPutStr_8(75,1,p,0);
- for(i=0;i<5;i++)//??
- {
- LcmPutNum_12(5,2+i,3+2*i,0); // 3/5/7/9/11
- LcmPutNum_30(30,2+i,g_cHRUn[i],0); //HRUn
- LcmPutNum_30(80,2+i,g_bHRIn[i],0); //HRUi
- }
- }
- MENU_AUTOKey();
- }
- void MENU_AUTOMenu6() //第六屏 电压、电流13、15、17、19、21次谐波
- {
- unsigned char *p;
- unsigned char i=0;
- g_MBHoldReg1[5] = 16;
- if(!kongflag)
- {
- kongflag = 1;
- p = (pstr)"HRUn(%)";
- LcmPutStr_8(25,1,p,0);
- p = (pstr)"HRIn(%)";
- LcmPutStr_8(75,1,p,0);
- for(i=0;i<5;i++) //??
- {
- LcmPutNum_12(5,2+i,13+2*i,0); // 13/15/17/19/21
- LcmPutNum_30(30,2+i,g_cHRUn[5+i],0); //HRUn
- LcmPutNum_30(80,2+i,g_bHRIn[5+i],0); //HRUi
- }
- }
- MENU_AUTOKey();
- }
- void MENU_AUTOMenu7() //第七屏 3/5/7/9/11电流谐波率
- {
- unsigned char *p;
- unsigned char i=0;
- g_MBHoldReg1[5] = 17;
- if(!kongflag)
- {
- kongflag = 1;
- p = (pstr)"HRIn(%)";
- LcmPutStr_8(5,0,p,0);
- p = (pstr)"A";
- LcmPutStr_8(40,1,p,0);
- p = (pstr)"B";
- LcmPutStr_8(70,1,p,0);
- p = (pstr)"C";
- LcmPutStr_8(100,1,p,0);
-
- }
- for(i=0;i<5;i++) //数据
- {
- LcmPutNum_12(5,2+i,3+2*i,0); //3/5/7/9/11电流谐波率
- LcmPutNum_30(30,2+i,g_aHRIn[i],0); //HRUn
- LcmPutNum_30(64,2+i,g_bHRIn[i],0); //HRUi
- LcmPutNum_30(96,2+i,g_cHRIn[i],0); //HRUi
- }
- MENU_AUTOKey();
- }
- void MENU_AUTOMenu8() //第八屏 13/15/17/19/21电流谐波率
- {
- unsigned char *p;
- unsigned char i=0;
- g_MBHoldReg1[5] = 18;
- if(!kongflag)
- {
- kongflag = 1;
- p = (pstr)"HRIn(%)";
- LcmPutStr_8(5,0,p,0);
- p = (pstr)"A";
- LcmPutStr_8(40,1,p,0);
- p = (pstr)"B";
- LcmPutStr_8(70,1,p,0);
- p = (pstr)"C";
- LcmPutStr_8(100,1,p,0);
-
- }
- for(i=0;i<5;i++) //数据
- {
- LcmPutNum_12(5,2+i,13+2*i,0); // 13/15/17/19/21电流谐波率
- LcmPutNum_30(30,2+i,g_aHRIn[5+i],0); //HRUn-A
- LcmPutNum_30(64,2+i,g_bHRIn[5+i],0); //HRUi-B
- LcmPutNum_30(96,2+i,g_cHRIn[5+i],0); //HRUi-C
- }
- MENU_AUTOKey();
- }
- void MENU_SETKey() //按键扫描
- {
- unsigned char tmp;
- tmp = g_keyValue; //键值
- g_keyValue = 0;
- switch(tmp)
- {
- case KESC:
- {
- kongflag = 0;
- LcmClear(0);
- pMenu = pMenu -> parentMenuItem;
- }break;
- case KUP:
- {
- kongflag = 0;
- LcmClear(0);
- pMenu = pMenu -> lastMenuItem;
- }break;
- case KDOWN:
- {
- kongflag = 0;
- LcmClear(0);
- pMenu = pMenu -> nextMenuItem;
- }break;
- case KCR:
- {
- {
- kongflag = 0;
- LcmClear(0);
- if(strcmp(pMenu -> string,"yes")== 0) // sjf003 在此发信号,自动组网,试验
- {
- if(KZ_Flag == 0)//lmm
- {
- AutoNet_Key();
- pMenu = pMenu -> childrenMenuItem;
- }
- else
- pMenu = pMenu -> nextMenuItem;
- }
- else
- pMenu = pMenu -> childrenMenuItem;
- }
- }break;
- default:
- break;
- }
- }
- void init_run()
- {
- unsigned char i=0;
- for(i=0;i<15;i++)
- Runset[i]=0;
- }
- void init_AD()
- {
- unsigned char i=0;
- for(i=0;i<8;i++)
- ADset[i]=0;
- }
- void MENU_AUTOKey() //主菜单按键扫描
- {
- u8 tmp;
- Auto_manual=0;
- tmp = g_keyValue; //键值
- g_keyValue = 0;
- switch(tmp)
- {
- case KESC:
- {
- kongflag = 0;
- LcmClear(0);
- pMenu = pMenu -> parentMenuItem;
- }break;
- case KUP:
- {
- kongflag = 0;
- LcmClear(0);
- pMenu = pMenu -> lastMenuItem;
- }break;
- case KDOWN:
- {
- kongflag = 0;
- LcmClear(0);
- pMenu = pMenu -> nextMenuItem;
- }break;
- case KCR:
- {
- kongflag = 0;
- if(strcmp(pMenu -> string,"D")== 0)
- {
- LcmClear(0);
- pMenu = pMenu -> childrenMenuItem;
- }
- }break;
- default:
- break;
- }
- }
- void MENU_tiaokey() //主菜单按键扫描
- {
- unsigned char tmp;
- tmp = g_keyValue; //键值
- g_keyValue = 0;
- switch(tmp)
- {
- case KUP:
- {
- if(strcmp(pMenu -> string,"MIMA")== 0)//密码设置
- {
- if(Pass_flag0)
- g_SetPassword2++;
- else
- g_SetPassword1++;
- if(g_SetPassword2==100)
- g_SetPassword2=0;
- if(g_SetPassword1==100)
- g_SetPassword1=0;
- }
- if(strcmp(pMenu -> string,"LD")== 0)
- {
- if(g_communicate==1) g_communicate=0;
- else g_communicate=1;
- }
- }break;
- case KDOWN:
- {
- if(strcmp(pMenu -> string,"MIMA")== 0)
- {
-
- if(Pass_flag0)
- {
- if(g_SetPassword2==0)
- g_SetPassword2=99;
- else
- g_SetPassword2--;
- }
- else
- {
- if(g_SetPassword1==0)
- g_SetPassword1=99;
- else
- g_SetPassword1--;
- }
- }
- if(strcmp(pMenu -> string,"LD")== 0)
- {
- if(g_communicate==1) g_communicate=0;
- else g_communicate=1;
- }
- }break;
- case KCR:
- {
- kongflag=0;
- if(strcmp(pMenu -> string,"LD")== 0)
- {
- LcmClear(0);
- pMenu = pMenu -> nextMenuItem;
- }
- if(((g_SetPassword1==1)&&(g_SetPassword2==1))&&((strcmp(pMenu -> string,"MIMA")== 0)))
- {
- LcmClear(0);
- g_SetPassword1 = 0;
- g_SetPassword2 = 0;
- ADset_Subscript=0;
- init_AD();
- ADset[ADset_Subscript]=1;
- pMenu = pMenu -> childrenMenuItem;
- }
- if(((g_SetPassword1==2)&&(g_SetPassword2==2))&&((strcmp(pMenu -> string,"MIMA")== 0)))
- {
- LcmClear(0);
- g_SetPassword1 = 0;
- g_SetPassword2 = 0;
- pMenu = &SETUPKey[4];
- }
- if((((g_SetPassword1==g_RunPW1)&&(g_SetPassword2==g_RunPW2))||((g_SetPassword1==1)&&(g_SetPassword2==10)))&&((strcmp(pMenu -> string,"MIMA")== 0)))
- {
- LcmClear(0);
- g_SetPassword1 = 0;
- g_SetPassword2 = 0;
- pMenu = pMenu -> nextMenuItem;
- }else
- {
- if(strcmp(pMenu -> string,"MIMA")== 0)
- {
- if(Pass_flag0)
- {Pass_flag0=0;Pass_flag1 = 1;Pass_flag2 = 0;}
- else
- {Pass_flag0=1;Pass_flag1 = 0;Pass_flag2 = 1;}
- break;
- }
- }
- }break;
- case KESC:
- {
- LcmClear(0);
- pMenu = pMenu -> parentMenuItem;
- }
- default:
- break;
- }
- }
- void T_JDQ()
- {
- LcmPutNum_4(10,2,RelayA1on_j*16,0);
- LcmPutNum_4(10,3,RelayC1on_j*16,0);
- LcmPutNum_4(10,4,RelayA2on_j*16,0);
- LcmPutNum_4(10,5,RelayC2on_j*16,0);
- LcmPutNum_4(60,2,RelayA1off_j*16,0);
- LcmPutNum_4(60,3,RelayC1off_j*16,0);
- LcmPutNum_4(60,4,RelayA2off_j*16,0);
- LcmPutNum_4(60,5,RelayC2off_j*16,0);
- MENU_tiaokey();
- }
- void SETUP_Key1() //参数设置 密码
- {
- unsigned char *p;
- // if(!kongflag)
- {
- g_MBHoldReg1[5] = 25;
- // kongflag = 1;
- lian_fen();
- p = (pstr) "密空空码";
- Dis_String(40,1,p,0);
- }
- p = (pstr)"Num";
- LcmPutStr_8(10,7,p,0);
- p = (pstr)":";
- LcmPutStr_8(28,7,p,0);
- LcmPutNum_2(34,7,20,0);
- LcmPutNum_2(46,7,g_Year,0);
- LcmPutNum_2(58,7,g_Month,0);
- LcmPutNum_2(70,7,g_Code1,0);
- LcmPutNum_2(82,7,g_Code2,0);
- LcmPutNum_2(48,4,g_SetPassword1,Pass_flag1);
- LcmPutNum_2(60,4,g_SetPassword2,Pass_flag2);
- p = (pstr)"VN";
- LcmPutStr_8(96,7,p,0);
- LcmPutNum_2(109,7,40,0); //2016.8.22
- MENU_tiaokey();
- }
- void SETUP_AD()
- {
- unsigned char *p;
- lian_fen();
- p = (pstr) "测量参数";
- Dis_String(42,2,p,0);
- MENU_SETKey();
- }
- void Net(u8 first,u8 second) //组网主菜单
- {
- unsigned char *p;
- lian_fen();
- p = (pstr) "手动配置";
- Dis_String(42,2,p,first);
- p = (pstr) "自动组网";
- Dis_String(42,4,p,second);
- }
- void Autonet() //自动组网界面
- {
- Net(0,1);
- g_MBHoldReg1[5] = 23;
- MENU_SETKey();
- }
- void Localnet() //本地组网界面
- {
- Net(1,0);
- g_MBHoldReg1[5] = 23;
- MENU_SETKey();
- }
- ///////////////////////////////////////////
- void MENU_NO()
- {
- unsigned char *p;
- if(!kongflag)
- {
- p = (pstr)"NO";
- LcmPutStr_8(44,3,p,1);
- p = (pstr)"YES";
- LcmPutStr_8(72,3,p,0);
- }
- MENU_SETKey();
- }
- void MENU_YES()
- {
- unsigned char *p;
- if(!kongflag)
- {
- p = (pstr)"NO";
- LcmPutStr_8(44,3,p,0);
- p = (pstr)"YES";
- LcmPutStr_8(72,3,p,1);
- }
- MENU_SETKey();
- }
- ///////////////////////////////////////////
- void Autonetworking() //自动组网中
- {
- unsigned char *p;
-
- p=(pstr)"自动组网中";//
-
- Dis_String(42,3,p,0);
- }
- void SETUP_Key2() //参数同步界面
- {
- unsigned char *p;
- // if(!kongflag)
- {
- g_MBHoldReg1[5] = 24;
- // kongflag = 1;
- lian_fen();
- p =(pstr)"参数同步冒";
- Dis_String(16,3,p,0);
- }
- if(g_communicate==1)
- p = (pstr)"启动";
- else
- p = (pstr)"关闭";
- Dis_String(76,3,p,1);
- MENU_tiaokey();
- }
- void SETUP_Parameters(u8 first,u8 second,u8 third) //主菜单
- {
- unsigned char *p;
- lian_fen();
- p = (pstr)"运行参数";
- Dis_String(42,1,p,first);
- p = (pstr)"保护参数";
- Dis_String(42,3,p,second);
- p = (pstr)"电容配置";
- Dis_String(42,5,p,third);
- }
- void RUN_key()//运行参数
- {
- SETUP_Parameters(1,0,0);
- g_MBHoldReg1[5] = 21;
- init_Pro();
- init_run();
- init_Cset();
- init_AD();
- MENU_SETKey();
- //MENU_AUTOKey();
- }
- void Protect_SETUP()//保护参数
- {
- g_MBHoldReg1[5] = 22;
- SETUP_Parameters(0,1,0);
- init_Pro();
- init_run();
- init_Cset();
- init_AD();
- MENU_SETKey();
- //MENU_AUTOKey();
- }
- void DR_SETUP()//电容配置
- {
- g_MBHoldReg1[5] = 23;
- SETUP_Parameters(0,0,1);
- init_Pro();
- init_run();
- init_Cset();
- init_AD();
- MENU_SETKey();
- //MENU_AUTOKey();
- }
- void Display_AD()//电压参数界面显示
- {
- unsigned char *p;
- unsigned char i=0;
- p = (pstr)"Uac";
- LcmPutStr_8(23,1,p,0);//35
- p = (pstr)"Ib";
- LcmPutStr_8(23,2,p,0);
- p = (pstr)":";
- LcmPutStr_8(41,1,p,0);//47
- LcmPutStr_8(41,2,p,0);//47
- p = (pstr)"Year";
- LcmPutStr_8(23,3,p,0);
- p = (pstr)"Month";
- LcmPutStr_8(23,4,p,0);
- p = (pstr)"Code";
- LcmPutStr_8(23,5,p,0);
-
- p = (pstr)":";
- for(i=2;i<5;i++)
- LcmPutStr_8(55,1+i,p,0);//47
- LcmPutNum_300(50,1,g_ADUa,ADset[0]);//64
- LcmPutNum_300(50,2,g_ADIb,ADset[1]);
- LcmPutNum_40(90,1,g_Uca,0);
- LcmPutNum_40(90,2,g_Ib/10.0,0);
- LcmPutNum_2(67,3,20,0);
- LcmPutNum_2(79,3,g_Year,ADset[2]);
- LcmPutNum_2(67,4,g_Month,ADset[3]);
- LcmPutNum_2(67,5,g_Code1,ADset[4]);
- LcmPutNum_2(79,5,g_Code2,ADset[5]);
- p = (pstr)"Pa";
- LcmPutStr_8(23,6,p,0);//35
- LcmPutNum_300(40,6,g_ADPa,ADset[6]);//64
- p = (pstr)"Qa";
- LcmPutStr_8(23,7,p,0);//35
- LcmPutNum_300(40,7,g_ADQa,ADset[7]);//64
- }
- void Display_Run()//运行参数界面显示
- {
- unsigned char i=0;
- unsigned char *p;
- lian_fen();
-
- p = (pstr)"ID";
- LcmPutStr_8(35,1,p,Runset[0]);
- p = (pstr)"PW";
- LcmPutStr_8(35,2,p,Runset[3]);
- p = (pstr)"CT";
- LcmPutStr_8(35,3,p,Runset[6]);
- p = (pstr)"COS";
- LcmPutStr_8(29,4,p,Runset[9]);
- p = (pstr)"QC";
- LcmPutStr_8(35,5,p,Runset[11]);
- p = (pstr)"D1";
- LcmPutStr_8(35,6,p,Runset[13]);
- p = (pstr)":";
- for(i=0;i<6;i++)
- LcmPutStr_8(47,1+i,p,0);
- p = (pstr)"S";
- LcmPutStr_8(100,6,p,0);
-
- LcmPutNum_2(64,1,g_RunID1,Runset[1]);
- LcmPutNum_2(76,1,g_RunID2,Runset[2]);
- LcmPutNum_2(64,2,g_RunPW1,Runset[4]);
- LcmPutNum_2(76,2,g_RunPW2,Runset[5]);
- LcmPutNum_2(64,3,g_RunCT1,Runset[7]);
- LcmPutNum_2(76,3,g_RunCT2,Runset[8]);
- LcmPutNum_300(64,4,g_RunCOS,Runset[10]);
- LcmPutNum_20(64,5,g_RunQC,Runset[12]);
- LcmPutNum_3(64,6,g_RunD1,Runset[14]);
- }
- void Display_Protect()//保护参数界面显示
- {
-
- unsigned char i=0;
- unsigned char *p;
- lian_fen();
- p = (pstr)"Uh";
- LcmPutStr_8(35,1,p,G_ProC[0]);
- p = (pstr)"Ul";
- LcmPutStr_8(35,2,p,G_ProC[2]);
- p = (pstr)"THDu";
- LcmPutStr_8(23,3,p,G_ProC[4]);
- p = (pstr)"THDi";
- LcmPutStr_8(23,4,p,G_ProC[6]);
- p = (pstr)"D2";
- LcmPutStr_8(35,5,p,G_ProC[8]);
- p = (pstr)"TP";
- LcmPutStr_8(35,6,p,G_ProC[10]);
- p = (pstr)":";
- for(i=0;i<6;i++)
- LcmPutStr_8(47,1+i,p,0);
- p = (pstr)"V";
- LcmPutStr_8(100,1,p,0);
- LcmPutStr_8(100,2,p,0);
- p = (pstr)"%";
- LcmPutStr_8(100,3,p,0);
- LcmPutStr_8(100,4,p,0);
- p = (pstr)"S";
- LcmPutStr_8(100,5,p,0);
- for(i=0;i<6;i++) //.c
- {
- Display_charLocate(100+i,6,HZTT[i+12],0);
- }
-
- LcmPutNum_3(64,1,g_ProUH,G_ProC[1]); //数据 Uh
- LcmPutNum_3(64,2,g_ProUL,G_ProC[3]);
- LcmPutNum_30(64,3,g_ProTHDu,G_ProC[5]);
- LcmPutNum_30(64,4,g_ProTHDi,G_ProC[7]);
- LcmPutNum_3(64,5,g_ProD2,G_ProC[9]);
- LcmPutNum_3(64,6,g_ProTp,G_ProC[11]);
- }
- void Display_Configura()//电容配置 界面显示
- {
- unsigned char i=0;
- unsigned char *p;
- p = (pstr)"C1(~) C2(~)";
- LcmPutStr_8(25,1,p,0);
- p = (pstr)"SN";
- LcmPutStr_8(5,3,p,G_cset[0]);
- p = (pstr)"VE";
- LcmPutStr_8(5,4,p,G_cset[3]);
- p = (pstr)"Ih";
- LcmPutStr_8(5,6,p,G_cset[6]);
- p = (pstr)"Il";
- LcmPutStr_8(5,7,p,G_cset[9]);
- p = (pstr)":";
- for(i=0;i<2;i++)
- LcmPutStr_8(17,3+i,p,0);
- LcmPutStr_8(17,6,p,0);
- LcmPutStr_8(17,7,p,0);
-
- LcmPutNum_2(30,3,g_CapSN1,G_cset[1]); //SN
- LcmPutNum_2(69,3,g_CapSN2,G_cset[2]); //
- LcmPutNum_30(30,4,g_CapVE1,G_cset[4]); //VE
- LcmPutNum_30(69,4,g_CapVE2,G_cset[5]); //
- p = (pstr)"Kvar";
- LcmPutStr_8(104,4,p,0);
- p = (pstr)"___";
- LcmPutStr_8(30,6,p,G_cset[7]); //Ih
- LcmPutStr_8(69,6,p,G_cset[8]);
- LcmPutStr_8(30,7,p,G_cset[10]); //Il
- LcmPutStr_8(69,7,p,G_cset[11]);
- p = (pstr)"A";
- LcmPutStr_8(110,6,p,0);
- LcmPutStr_8(110,7,p,0);
- }
- void init_Cmode() //电容类型初始化
- {
- unsigned char numbers;
- for(numbers = 0;numbers<64;numbers++)
- {
- DR_LX[numbers] = 0xff;
- DR_RZ1[numbers] = 0;
- DR_RZ2[numbers] = 0;
- DR_Num[numbers] = 0;
- capdevice[numbers].cid = numbers;
- // capdevice[numbers].ctype = "?";
- capdevice[numbers].cctype = 0;
- capdevice[numbers].cvalue = 0;
- capdevice[numbers].cstatus = 0;
- capdevicetmp[numbers].cstatus = 0;
- capdevice[numbers].count = 0;
- }
- capdevice[g_CapSN1-1].cctype=4;
- capdevice[g_CapSN2-1].cctype=4;
- //capdevice[g_CapSN3-1].cctype=3;
- capdevice[g_CapSN1-1].cvalue=g_CapVE1;
- capdevice[g_CapSN2-1].cvalue=g_CapVE2;
- //capdevice[g_CapSN3-1].cvalue=g_CapVE3;
- }
- void Display_CNMode(u8 col,u8 page,u8 cnumber,u8 cnumber_x,u8 mode,u16 cvalue,u8 cvalue_x)//c+N+类型
- { //col列 page页 mode电容类型 cnumber电容标号 cvalue电容值 cnumber_x反显表示电容选中 cvalue_x反显表示电容投
- //函数显示 Cx △ 010
- unsigned char *p;
- if(mode == 0)
- {
- p = (pstr)"?"; //主机未确定
- }else if(mode == 4)
- {
- p = (pstr)"~"; //△
- }else if(mode == 1)
- {
- p = (pstr)"A"; //Y
- }
- else if(mode == 2)
- {
- p = (pstr)"B"; //Y
- }
- else if(mode == 3)
- {
- p = (pstr)"C"; //Y
- }
- LcmPutStr_8(col+22,page,p,0);
-
- p = (pstr)"C";
- LcmPutStr_8(col,page,p,cnumber_x);
-
- LcmPutNum_2(col+6,page,cnumber,cnumber_x);//电容标号
- LcmPutNum_30(col+32,page,cvalue,cvalue_x);//电容值
- }
- void Display_Mcontrol(Uchar C) // 手动控制 界面显示 Npage 值0-5
- { //△ 电容类型 显示
-
- Display_CNMode(5,0,g_CapSN1,0,capdevice[g_CapSN1-1].cctype,capdevice[g_CapSN1-1].cvalue,0);
- Display_CNMode(70,0,g_CapSN2,0,capdevice[g_CapSN2-1].cctype,capdevice[g_CapSN2-1].cvalue,0);
- G_mcontrol[C]=1;
- if( Npage > 4)
- {
- Display_CNMode(5,2,1+Npage*12,G_mcontrol[1+Npage*12],capdevice[0+Npage*12].cctype,capdevice[0+Npage*12].cvalue,capdevice[0+Npage*12].cstatus);
- Display_CNMode(5,3,2+Npage*12,G_mcontrol[2+Npage*12],capdevice[1+Npage*12].cctype,capdevice[1+Npage*12].cvalue,capdevice[1+Npage*12].cstatus);
-
- Display_CNMode(68,2,3+Npage*12,G_mcontrol[3+Npage*12],capdevice[2+Npage*12].cctype,capdevice[2+Npage*12].cvalue,capdevice[2+Npage*12].cstatus);
- Display_CNMode(68,3,4+Npage*12,G_mcontrol[4+Npage*12],capdevice[3+Npage*12].cctype,capdevice[3+Npage*12].cvalue,capdevice[3+Npage*12].cstatus);
-
- }
- else
- {
- Display_CNMode(5,2,1+Npage*12,G_mcontrol[1+Npage*12],capdevice[0+Npage*12].cctype,capdevice[0+Npage*12].cvalue,capdevice[0+Npage*12].cstatus);
- Display_CNMode(5,3,2+Npage*12,G_mcontrol[2+Npage*12],capdevice[1+Npage*12].cctype,capdevice[1+Npage*12].cvalue,capdevice[1+Npage*12].cstatus);
- Display_CNMode(5,4,3+Npage*12,G_mcontrol[3+Npage*12],capdevice[2+Npage*12].cctype,capdevice[2+Npage*12].cvalue,capdevice[2+Npage*12].cstatus);
- Display_CNMode(5,5,4+Npage*12,G_mcontrol[4+Npage*12],capdevice[3+Npage*12].cctype,capdevice[3+Npage*12].cvalue,capdevice[3+Npage*12].cstatus);
- Display_CNMode(5,6,5+Npage*12,G_mcontrol[5+Npage*12],capdevice[4+Npage*12].cctype,capdevice[4+Npage*12].cvalue,capdevice[4+Npage*12].cstatus);
- Display_CNMode(5,7,6+Npage*12,G_mcontrol[6+Npage*12],capdevice[5+Npage*12].cctype,capdevice[5+Npage*12].cvalue,capdevice[5+Npage*12].cstatus);
-
- Display_CNMode(68,2,7+Npage*12,G_mcontrol[7+Npage*12],capdevice[6+Npage*12].cctype,capdevice[6+Npage*12].cvalue,capdevice[6+Npage*12].cstatus);
- Display_CNMode(68,3,8+Npage*12,G_mcontrol[8+Npage*12],capdevice[7+Npage*12].cctype,capdevice[7+Npage*12].cvalue,capdevice[7+Npage*12].cstatus);
- Display_CNMode(68,4,9+Npage*12,G_mcontrol[9+Npage*12],capdevice[8+Npage*12].cctype,capdevice[8+Npage*12].cvalue,capdevice[8+Npage*12].cstatus);
- Display_CNMode(68,5,10+Npage*12,G_mcontrol[10+Npage*12],capdevice[9+Npage*12].cctype,capdevice[9+Npage*12].cvalue,capdevice[9+Npage*12].cstatus);
- Display_CNMode(68,6,11+Npage*12,G_mcontrol[11+Npage*12],capdevice[10+Npage*12].cctype,capdevice[10+Npage*12].cvalue,capdevice[10+Npage*12].cstatus);
- Display_CNMode(68,7,12+Npage*12,G_mcontrol[12+Npage*12],capdevice[11+Npage*12].cctype,capdevice[11+Npage*12].cvalue,capdevice[11+Npage*12].cstatus);
-
- }
- }
- void calibration_key()
- {
- unsigned char tmp;
- tmp = g_keyValue; //键值
- g_keyValue = 0;
- Auto_manual = 0;
- switch(tmp)
- {
- case KESC:
- {
- kongflag = 0;
- LcmClear(0);
- pMenu = &MainMenu[1];
- }break;
- case KUP:
- {
- kongflag = 0;
- if(ADset[0])
- { g_ADUa++;
- if(g_ADUa>300) //???????
- g_ADUa=100;
- }else if(ADset[1])
- { g_ADIb++;
- if(g_ADIb>300) //???????
- g_ADIb=100;
- }
-
- if(ADset[2])
- { g_Year++;
- if(g_Year>20) //???????
- g_Year=15;
- }
- if(ADset[3])
- { g_Month++;
- if(g_Month>12) //???????
- g_Month=1;
- }
- if(ADset[4])
- { g_Code1++;
- if(g_Code1>9) //???????
- g_Code1=0;
- }
- if(ADset[5])
- { g_Code2++;
- if(g_Code2>99) //???????
- g_Code2=0;
- }else if(ADset[6])
- { g_ADPa++;
- if(g_ADPa>300) //???????
- g_ADPa=100;
- }
- if(ADset[7])
- { g_ADQa++;
- if(g_ADQa>300) //???????
- g_ADQa=100;
- }
- }break;
- case KDOWN:
- {
- kongflag = 0;
- if(ADset[0])
- {
- if(g_ADUa==50) //???????
- g_ADUa=300;
- else
- g_ADUa--;
- }else if(ADset[1])
- {
- if(g_ADIb==50) //???????
- g_ADIb=300;
- else
- g_ADIb--;
- }
- else if(ADset[2])
- {
- if(g_Year==14) //???????
- g_Year=15;
- else
- g_Year--;
- }
- else if(ADset[3])
- {
- if(g_Month==1) //???????
- g_Month=12;
- else
- g_Month--;
- }
- else if(ADset[4])
- {
- if(g_Code1==0) //???????
- g_Code1=9;
- else
- g_Code1--;
- }
- else if(ADset[5])
- {
- if(g_Code2==0) //???????
- g_Code2=99;
- else
- g_Code2--;
- }else if(ADset[6])
- {
- if(g_ADPa==50) //???????
- g_ADPa=300;
- else
- g_ADPa--;
- }else if(ADset[7])
- {
- if(g_ADQa==50) //???????
- g_ADQa=300;
- else
- g_ADQa--;
- }
- }break;
- case KCR:
- {
- kongflag = 0;
- if(ADset[0])
- {
- AT24Cxx_WriteTwoByte(0x0038,g_ADUa);
- }
- if(ADset[1])
- { AT24Cxx_WriteTwoByte(0x00F0,g_ADIb);
- }
- if(ADset[2])
- { AT24Cxx_WriteTwoByte(0x003e,g_Year);
- }
- if(ADset[3])
- { AT24Cxx_WriteTwoByte(0x0040,g_Month);
- }
- if(ADset[4])
- { AT24Cxx_WriteTwoByte(0x0042,g_Code1);
- // DR_SendTime = ((u32) g_Code1*100+(u32)g_Code2)*50+2000;//sjf003
- }
- if(ADset[5])
- { AT24Cxx_WriteTwoByte(0x0044,g_Code2);
- // DR_SendTime = ((u32) g_Code1*100+(u32)g_Code2)*50+2000;//sjf003
- }
- if(ADset[6])
- { AT24Cxx_WriteTwoByte(0x00F6,g_ADPa);
- }
- if(ADset[7])
- { AT24Cxx_WriteTwoByte(0x00F8,g_ADQa);
- }
- if(ADset_Subscript<7)ADset_Subscript++;
- else ADset_Subscript=0;
- init_AD();
- ADset[ADset_Subscript]=1;
- }break;
- default:
- break;
- }
- }
- void Run_setkey() //主菜单按键扫描
- {
- unsigned char tmp;
- tmp = g_keyValue; //键值
- g_keyValue = 0;
- switch(tmp)
- {
- case KESC:
- {
- kongflag = 0;
- LcmClear(0);
- if(strcmp(pMenu -> string,"A")== 0)
- pMenu = &SETUPMenu[0];
- if(strcmp(pMenu -> string,"B")== 0)
- pMenu = &SETUPMenu[1];
- if(strcmp(pMenu -> string,"C")== 0)
- pMenu = &SETUPMenu[2];
- }break;
- case KUP:
- {
-
- if(Runset[1])
- { g_RunID1++;
- if(g_RunID1>99) //运行参数最大值
- g_RunID1=0;
- }
- if(Runset[2])
- { g_RunID2++;
- if(g_RunID2>99) //运行参数最大值
- g_RunID2=0;
- }
- if(Runset[4])
- { g_RunPW1++;
- if(g_RunPW1>99) //运行参数最大值
- g_RunPW1=0;
- }
- if(Runset[5])
- { g_RunPW2++;
- if(g_RunPW2>99) //运行参数最大值
- g_RunPW2=0;
- }
- if(Runset[7])
- { g_RunCT1++;
- if(g_RunCT1>99) //运行参数最大值
- g_RunCT1=0;
- }
- if(Runset[8])
- { g_RunCT2++;
- if(g_RunCT2>99) //运行参数最大值
- g_RunCT2=0;
- }
- if(Runset[10])
- { g_RunCOS++;
- if(g_RunCOS>100) //运行参数最大值
- g_RunCOS=85;
- }
- if(Runset[12])
- { g_RunQC++;
- if(g_RunQC>12) //运行参数最大值
- g_RunQC=5;
- }
- if(Runset[14])
- { g_RunD1++;
- if(g_RunD1>600) //运行参数最大值
- g_RunD1=0;
- }
- if(G_ProC[1])
- { g_ProUH++;
- if(g_ProUH>480) //保护参数最大值
- g_ProUH=380;
- }
- if(G_ProC[3])
- { g_ProUL++;
- if(g_ProUL>360) //保护参数最大值
- g_ProUL=330;
- }
- if(G_ProC[5])
- { g_ProTHDu++;
- if(g_ProTHDu>250) //保护参数最大值
- g_ProTHDu=0;
- }
- if(G_ProC[7])
- { g_ProTHDi++;
- if(g_ProTHDi>999) //保护参数最大值
- g_ProTHDi=0;
- }
- if(G_ProC[9])
- { g_ProD2++;
- if(g_ProD2>180) //保护参数最大值
- g_ProD2=60;
- }
- if(G_ProC[11])
- { g_ProTp++;
- if(g_ProTp>100) //保护参数最大值
- g_ProTp=0;
- }
- if(G_cset[1]) //电容设置 SN 1 序号
- { g_CapSN1++;
- if(g_CapSN1>64)
- g_CapSN1=1;
- g_CapSN2 = g_CapSN1+1;
- if(g_CapSN2>64)
- g_CapSN2=1;
- }
- if(G_cset[2]) //电容设置 SN 2
- { g_CapSN2++;
- if(g_CapSN2>64)
- g_CapSN2=1;
- g_CapSN1 = g_CapSN2-1;
- if(g_CapSN1 == 0)
- g_CapSN1=64;
- }
- if(G_cset[4]) //电容设置 VE 1 值
- { g_CapVE1++;
- if(g_CapVE1>400)//电容器容量最大值
- g_CapVE1=0;
- }
- if(G_cset[5]) //电容设置 VE 2
- { g_CapVE2++;
- if(g_CapVE2>400)//电容器容量最大值
- g_CapVE2=0;
- }
- if(G_cset[0]|G_cset[3]|G_cset[6]|G_cset[9])
- {pMenu = pMenu -> parentMenuItem;kongflag = 0;}
- if(G_ProC[0]|G_ProC[2]|G_ProC[4]|G_ProC[6]|G_ProC[8]|G_ProC[10])
- {pMenu = pMenu -> parentMenuItem;kongflag = 0;}
- if(Runset[0]|Runset[3]|Runset[6]|Runset[9]|Runset[11]|Runset[13])
- {pMenu = pMenu -> parentMenuItem;kongflag = 0;}
-
- }break;
- case KDOWN:
- {
- if(Runset[1])
- {
- if(g_RunID1==0) //运行参数最小值
- g_RunID1=99;
- else
- g_RunID1--;
- }
- if(Runset[2])
- {
- if(g_RunID2==0) //运行参数最小值
- g_RunID2=99;
- else
- g_RunID2--;
- }
- if(Runset[4])
- {
- if(g_RunPW1==0) //运行参数最小值
- g_RunPW1=99;
- else
- g_RunPW1--;
- }
- if(Runset[5])
- {
- if(g_RunPW2==0) //运行参数最小值
- g_RunPW2=99;
- else
- g_RunPW2--;
- }
- if(Runset[7])
- {
- if(g_RunCT1==0) //运行参数最小值
- g_RunCT1=99;
- else
- g_RunCT1--;
- }
- if(Runset[8])
- {
- if(g_RunCT2==0) //运行参数最小值
- g_RunCT2=99;
- else
- g_RunCT2--;
- }
- if(Runset[10])
- {
- if(g_RunCOS==80) //运行参数最小值
- g_RunCOS=100;
- else
- g_RunCOS--;
- }
- if(Runset[12])
- {
- if(g_RunQC==5) //运行参数最小值
- g_RunQC=12;
- else
- g_RunQC--;
- }
- if(Runset[14])
- {
- if(g_RunD1==0) //运行参数最小值
- g_RunD1=600;
- else
- g_RunD1--;
- }
- if(G_ProC[1])
- { g_ProUH--;
- if(g_ProUH==380) //保护参数最小值
- g_ProUH=480;
- }
- if(G_ProC[3])
- {
- if(g_ProUL==300) //保护参数最小值
- g_ProUL=360;
- else
- g_ProUL--;
- }
- if(G_ProC[5])
- {
- if(g_ProTHDu==0) //保护参数最小值
- g_ProTHDu=250;
- else
- g_ProTHDu--;
- }
- if(G_ProC[7])
- {
- if(g_ProTHDi==0) //保护参数最小值
- g_ProTHDi=999;
- else
- g_ProTHDi--;
- }
- if(G_ProC[9])
- {
- if(g_ProD2==60) //保护参数最小值
- g_ProD2=180;
- else
- g_ProD2--;
- }
- if(G_ProC[11])
- {
- if(g_ProTp==0) //保护参数最小值
- g_ProTp=100;
- else
- g_ProTp--;
- }
- if(G_cset[1]) //电容设置 SN 1
- {
- if(g_CapSN1==1)
- g_CapSN1=64;
- else
- g_CapSN1--;
- g_CapSN2 = g_CapSN1+1;
- if(g_CapSN2>64)
- g_CapSN2=1;
- }
- if(G_cset[2]) //电容设置 SN 2
- {
- if(g_CapSN2==1)
- g_CapSN2=64;
- else
- g_CapSN2--;
- g_CapSN1 = g_CapSN2-1;
- if(g_CapSN1==0)
- g_CapSN1=64;
- }
-
- if(G_cset[4]) //电容设置 VE 1
- {
- if(g_CapVE1==0)
- g_CapVE1=400;
- else
- g_CapVE1--;
- }
- if(G_cset[5]) //电容设置 VE 2
- {
- if(g_CapVE2==0)
- g_CapVE2=400;
- else
- g_CapVE2--;
- }
- //LcmClear(0);
- if(G_cset[0]|G_cset[3]|G_cset[6]|G_cset[9])
- {pMenu = pMenu -> childrenMenuItem;kongflag = 0;}
- if(G_ProC[0]|G_ProC[2]|G_ProC[4]|G_ProC[6]|G_ProC[8]|G_ProC[10])
- {pMenu = pMenu -> childrenMenuItem;kongflag = 0;}
- if(Runset[0]|Runset[3]|Runset[6]|Runset[9]|Runset[11]|Runset[13])
- {pMenu = pMenu -> childrenMenuItem;kongflag = 0;}
- }break;
- case KCR: //按下确认键后进行存储
- {
- kongflag = 0;
- pMenu = pMenu -> nextMenuItem;
-
- if(Runset[1]) //运行参数存储
- { AT24Cxx_WriteTwoByte(0x0004,g_RunID1);
- }
- if(Runset[2])
- { AT24Cxx_WriteTwoByte(0x0006,g_RunID2);
- }
- if(Runset[4])
- { AT24Cxx_WriteTwoByte(0x0008,g_RunPW1);
- }
- if(Runset[5])
- { AT24Cxx_WriteTwoByte(0x000a,g_RunPW2);
- }
- if(Runset[7])
- { AT24Cxx_WriteTwoByte(0x000c,g_RunCT1);
- }
- if(Runset[8])
- { AT24Cxx_WriteTwoByte(0x000e,g_RunCT2);
- }
- if(Runset[10])
- { AT24Cxx_WriteTwoByte(0x0010,g_RunCOS);
- }
- if(Runset[12])
- { AT24Cxx_WriteTwoByte(0x0012,g_RunQC);
- }
- if(Runset[14])
- { AT24Cxx_WriteTwoByte(0x0014,g_RunD1);
- }
- if(G_ProC[1]) //保护参数存储
- { AT24Cxx_WriteTwoByte(0x0016,g_ProUH);
- }
- if(G_ProC[3])
- { AT24Cxx_WriteTwoByte(0x0018,g_ProUL);
- }
- if(G_ProC[5])
- { AT24Cxx_WriteTwoByte(0x001a,g_ProTHDu);
- }
- if(G_ProC[7])
- { AT24Cxx_WriteTwoByte(0x001c,g_ProTHDi);
- }
- if(G_ProC[9])
- { AT24Cxx_WriteTwoByte(0x001e,g_ProD2);
- }
- if(G_ProC[11])
- { AT24Cxx_WriteTwoByte(0x0020,g_ProTp);
- }
- if(G_cset[1]||G_cset[2]||G_cset[8]||G_cset[4]||G_cset[5]||G_cset[11]) //电容配置参数存储
- { AT24Cxx_WriteTwoByte(0x0022,g_CapSN1);
- AT24Cxx_WriteTwoByte(0x0024,g_CapSN2);
- capdevice[g_CapSN1-1].cctype=4;
- capdevice[g_CapSN2-1].cctype=4;
- AT24Cxx_WriteOneByte(0x0060 + g_CapSN1-1,4);
- AT24Cxx_WriteOneByte(0x0060 + g_CapSN2-1,4);
-
- AT24Cxx_WriteTwoByte(0x0026,g_CapVE1);
- AT24Cxx_WriteTwoByte(0x0028,g_CapVE2);
- capdevice[g_CapSN1-1].cvalue=g_CapVE1;
- capdevice[g_CapSN2-1].cvalue=g_CapVE2;
- AT24Cxx_WriteTwoByte(0x00A0+(g_CapSN1-1)<<1,g_CapVE1);
- AT24Cxx_WriteTwoByte(0x00A0+(g_CapSN2-1)<<1,g_CapVE2);
- }
- //对应序号的 电容类型 电容大小 !!! 存储未添加
- }break;
- default:
- break;
- }
- }
- void G_ADUa()//UA
- {
- if(!kongflag)
- {
- kongflag = 1;
- // init_AD();
- // ADset[0]=1;
- Display_AD();
- }
- calibration_key();
- }
- void Addressset()
- {
- // if(!kongflag)
- {
- g_MBHoldReg1[5] = 210;
- // kongflag = 1;
- init_run();
- Runset[0]=1;
- Display_Run();
- }
- Run_setkey();
- }
- void G_ID1()//g_RunID1
- {
- // if(!kongflag)
- {
- // kongflag = 1;
- init_run();
- Runset[1]=1;
- g_MBHoldReg1[5] = 200;
- }
- Display_Run();
- Run_setkey();
- }
- void G_ID2()////g_RunID1
- {
- // if(!kongflag)
- {
- // kongflag = 1;
- init_run();
- Runset[2]=1;
- g_MBHoldReg1[5] = 201;
- }
- Display_Run();
- Run_setkey();
- }
- void Competenceset() //密码
- {
- // if(!kongflag)
- {
- g_MBHoldReg1[5] = 211;
- // kongflag = 1;
- init_run();
- Runset[3]=1;
- Display_Run();
- }
- Run_setkey();
- }
- void G_pw1()
- {
- if(!kongflag)
- {
- kongflag = 1;
- init_run();
- Runset[4]=1;
- g_MBHoldReg1[5] = 202;
- }
- Display_Run();
- Run_setkey();
- }
- void G_pw2()
- {
- // if(!kongflag)
- {
- // kongflag = 1;
- init_run();
- Runset[5]=1;
- g_MBHoldReg1[5] = 203;
- }
- Display_Run();
- Run_setkey();
- }
- void CTset()
- {
- // if(!kongflag)
- {
- g_MBHoldReg1[5] = 212;
- // kongflag = 1;
- init_run();
- Runset[6]=1;
- Display_Run();
- }
- Run_setkey();
- }
- void G_ct1()
- {
- // if(!kongflag)
- {
- g_MBHoldReg1[5] = 150;
- //g_MBHoldReg1[4] = 5;
- // kongflag = 1;
- init_run();
- Runset[7]=1;
- }
- Display_Run();
- Run_setkey();
- }
- void G_ct2()
- {
- // if(!kongflag)
- {
- g_MBHoldReg1[5] = 151;
- //g_MBHoldReg1[4] = 5;
- // kongflag = 1;
- init_run();
- Runset[8]=1;
-
- }
- Display_Run();
- Run_setkey();
- }
- void COSset()
- {
- // if(!kongflag)
- {
- g_MBHoldReg1[5] = 213;
- // kongflag = 1;
- init_run();
- Runset[9]=1;
- Display_Run();
- }
- Run_setkey();
- }
- void G_cos()
- {
- // if(!kongflag)
- {
- g_MBHoldReg1[5] = 152;
- //g_MBHoldReg1[4] = 5;
- // kongflag = 1;
- init_run();
- Runset[10]=1;
- }
- Display_Run();
- Run_setkey();
- }
- void QCset()
- {
- // if(!kongflag)
- {
- g_MBHoldReg1[5] = 214;
- // kongflag = 1;
- init_run();
- Runset[11]=1;
- Display_Run();
- }
- Run_setkey();
- }
- void G_qc()
- {
- // if(!kongflag)
- {
- // kongflag = 1;
- init_run();
- Runset[12]=1;
- g_MBHoldReg1[5] = 153;
- //g_MBHoldReg1[4] = 5;
- }
- Display_Run();
- Run_setkey();
- }
- void D1set()
- {
- // if(!kongflag)
- {
- g_MBHoldReg1[5] = 215;
- // kongflag = 1;
- init_run();
- Runset[13]=1;
- Display_Run();
- }
- Run_setkey();
- }
- void G_d1()
- {
- // if(!kongflag)
- {
- // kongflag = 1;
- init_run();
- Runset[14]=1;
- g_MBHoldReg1[5] = 154;
- //g_MBHoldReg1[4] = 5;
- }
- Display_Run();
- Run_setkey();
- }
- void init_Pro()
- {
- char i = 0;
- for(i=0;i<12;i++)
- G_ProC[i]=0;
- }
- void G_Uh()
- {
- // if(!kongflag)
- {
- g_MBHoldReg1[5] = 221;
- // kongflag = 1;
- init_Pro();
- G_ProC[0]=1;
- Display_Protect();
- }
-
- Run_setkey();
- }
- void G_ProUH()//数据
- {
- // if(!kongflag)
- {
- // kongflag = 1;
- init_Pro();
- G_ProC[1]=1;
- g_MBHoldReg1[5] = 204;
- }
- Display_Protect();
- Run_setkey();
- }
- void G_Ul()
- {
- // if(!kongflag)
- {
- g_MBHoldReg1[5] = 222;
- // kongflag = 1;
- init_Pro();
- G_ProC[2]=1;
- Display_Protect();
- }
- Run_setkey();
- }
- void G_ProUl()//数据
- {
- // if(!kongflag)
- {
- // kongflag = 1;
- init_Pro();
- G_ProC[3]=1;
- g_MBHoldReg1[5] = 205;
- }
- Display_Protect();
- Run_setkey();
- }
- void G_THDu()
- {
- if(!kongflag)
- {
- g_MBHoldReg1[5] = 223;
- kongflag = 1;
- init_Pro();
- G_ProC[4]=1;
- Display_Protect();
- }
- Run_setkey();
- }
- void G_ProTHDu()//数据
- {
- if(!kongflag)
- {
- kongflag = 1;
- init_Pro();
- G_ProC[5]=1;
- g_MBHoldReg1[5] = 206;
- }
- Display_Protect();
- Run_setkey();
- }
- void G_THDi()
- {
- if(!kongflag)
- {
- g_MBHoldReg1[5] = 224;
- kongflag = 1;
- init_Pro();
- G_ProC[6]=1;
- Display_Protect();
- }
- Run_setkey();
- }
- void G_ProTHDi()//数据
- {
- if(!kongflag)
- {
- kongflag = 1;
- init_Pro();
- G_ProC[7]=1;
- g_MBHoldReg1[5] = 207;
- }
- Display_Protect();
- Run_setkey();
- }
- void G_D2()
- {
- if(!kongflag)
- {
- g_MBHoldReg1[5] = 225;
- kongflag = 1;
- init_Pro();
- G_ProC[8]=1;
- Display_Protect();
- }
- Run_setkey();
- }
- void G_ProD2()//数据
- {
- if(!kongflag)
- {
- kongflag = 1;
- init_Pro();
- G_ProC[9]=1;
- g_MBHoldReg1[5] = 208;
- }
- Display_Protect();
- Run_setkey();
- }
- void G_TP()
- {
- if(!kongflag)
- {
- g_MBHoldReg1[5] = 226;
- kongflag = 1;
- init_Pro();
- G_ProC[10]=1;
- Display_Protect();
- }
- Run_setkey();
- }
- void G_ProTP()//数据
- {
- if(!kongflag)
- {
- kongflag = 1;
- init_Pro();
- G_ProC[11]=1;
- g_MBHoldReg1[5] = 209;
- }
- Display_Protect();
- Run_setkey();
- }
- void init_Cset()
- {
- Uchar i;
- for(i=0;i<12;i++)
- G_cset[i]=0;
- }
- void init_Cmcontrol()
- {
- Uchar i;
- for(i=0;i<65;i++)
- G_mcontrol[i]=0;
- }
- void G_SN() //电容配置,界面设置内容
- {
- if(!kongflag)
- {
- g_MBHoldReg1[5] = 230;
- kongflag = 1;
- j_syn = 1 ; //8.1添加 为了确定电容配置 界面
- init_Cset();
- G_cset[0]=1;
- Display_Configura();
- }
- Run_setkey();
- }
- void G_CapSN1() //数据 //电容配置,界面设置内容
- {
- if(!kongflag)
- {
- kongflag = 1;
- j_syn = 0 ; //8.1添加 为了确定电容配置 界面
- init_Cset();
- G_cset[1]=1;
- g_MBHoldReg1[5] = 180;
- }
- Display_Configura();
- Run_setkey();
- }
- void G_CapSN2() //数据 //电容配置,界面设置内容
- {
- if(!kongflag)
- {
- kongflag = 1;
- init_Cset();
- j_syn = 0 ; //8.1添加 为了确定电容配置 界面
- G_cset[2]=1;
- g_MBHoldReg1[5] = 181;
- }
- Display_Configura();
- Run_setkey();
- }
- void G_CapSN3() //数据 //电容配置,界面设置内容
- {
- if(!kongflag)
- {
- kongflag = 1;
- j_syn = 2 ; //8.1添加 为了确定电容配置 界面
- init_Cset();
- G_cset[8]=1;
- g_MBHoldReg1[5] = 188;
- }
- Display_Configura();
- Run_setkey();
- }
- void G_VE() // //电容配置,界面设置内容
- {
- if(!kongflag)
- {
- g_MBHoldReg1[5] = 231;
- kongflag = 1;
- j_syn = 3 ; //8.1添加 为了确定电容配置 界面
- init_Cset();
- G_cset[3]=1;
- Display_Configura();
- }
- Run_setkey();
- }
- void G_CapVE1() //数据 //电容配置,界面设置内容
- {
- if(!kongflag)
- {
- kongflag = 1;
- init_Cset();
- G_cset[4]=1;
- j_syn = 0 ; //8.1添加 为了确定电容配置 界面
- g_MBHoldReg1[5] = 182;
- }
- Display_Configura();
- Run_setkey();
- }
- void G_CapVE2() //数据 //电容配置,界面设置内容
- {
- if(!kongflag)
- {
- kongflag = 1;
- init_Cset();
- G_cset[5]=1;
- j_syn = 0 ; //8.1添加 为了确定电容配置 界面
- g_MBHoldReg1[5] = 183;
- }
- Display_Configura();
- Run_setkey();
- }
- void G_CapVE3() //数据 //电容配置,界面设置内容
- {
- if(!kongflag)
- {
- kongflag = 1;
- j_syn = 4 ; //8.1添加 为了确定电容配置 界面
- init_Cset();
- G_cset[11]=1;
- g_MBHoldReg1[5] = 189;
- }
- Display_Configura();
- Run_setkey();
- }
- void G_Ih() // //电容配置,界面设置内容
- {
- if(!kongflag)
- {
- g_MBHoldReg1[5] = 232;
- kongflag = 1;
- j_syn = 5 ; //8.1添加 为了确定电容配置 界面
- init_Cset();
- G_cset[6]=1;
- Display_Configura();
- }
-
- Run_setkey();
- }
- void G_CapIH1() //数据 //电容配置,界面设置内容
- {
- if(!kongflag)
- {
- kongflag = 1;
- j_syn = 6 ; //8.1添加 为了确定电容配置 界面
- init_Cset();
- G_cset[7]=1;
- g_MBHoldReg1[5] = 184;
- }
- Display_Configura();
- Run_setkey();
- }
- void G_CapIH2() //数据 //电容配置,界面设置内容
- {
- if(!kongflag)
- {
- kongflag = 1;
- init_Cset();
- G_cset[8]=1;
- g_MBHoldReg1[5] = 185;
- }
- Display_Configura();
- Run_setkey();
- }
- void G_Il() // //电容配置,界面设置内容
- {
- if(!kongflag)
- {
- g_MBHoldReg1[5] = 233;
- kongflag = 1;
- j_syn = 7 ; //8.1添加 为了确定电容配置 界面
- init_Cset();
- G_cset[9]=1;
- Display_Configura();
- }
-
- Run_setkey();
- }
- void G_CapIL1() //数据 //电容配置,界面设置内容
- {
- if(!kongflag)
- {
- kongflag = 1;
- j_syn = 8 ; //8.1添加 为了确定电容配置 界面
- init_Cset();
- G_cset[10]=1;
- g_MBHoldReg1[5] = 186;
- }
- Display_Configura();
- Run_setkey();
- }
- void G_CapIL2() //数据 //电容配置,界面设置内容
- {
- if(!kongflag)
- {
- kongflag = 1;
- init_Cset();
- G_cset[11]=1;
- g_MBHoldReg1[5] = 187;
- }
- Display_Configura();
- Run_setkey();
- }
- void Bitwise(Uchar a) //取反
- {
- if(a == 0)
- {
- a = 1;
- }
- else
- a = 0;
- }
- /////32组电容器标号,接线方式和容量
- void Cx_control0() // i值 0-31 手动控制
- {
- g_InitiativeFlag = 0 ; //进入手动控制界面后 都是被控 退出后重新竞争主机(新乡)
- // g_CFlagTimeCnt = 0 ;
- if(!kongflag)
- {
- g_MBHoldReg1[5] = 110;
- kongflag = 1;
- //Npage = 0; //确保进入手动控制界面的时间是从c01开始
- init_Cmcontrol();
- // initcc(); //初始化电容器容量,解决修改后不能更新的问题
- Display_Mcontrol(g_Ccontrol);
- }
- CxcontrolKey();
- }
- void Cx_control1() // i值 1-64
- {
- if(!kongflag)
- {
- g_MBHoldReg1[5] = 111;
- kongflag = 1;
- init_Cmcontrol();
- //G_mcontrol[1]=1;
- Display_Mcontrol(2);
- }
- CxcontrolKey();
- }
- //////////////////
- void CxcontrolKey() //手动控制按键扫描 手动投切
- {
- unsigned char tmp;
- u8 i = 0;
- tmp = g_keyValue; //键值
- g_keyValue = 0;
- //g_InitiativeFlag = 0 ;
- //g_CFlagTimeCnt = 0 ;
- Auto_manual = 1;
- switch(tmp)
- {
- case KCR://实现电容投切
- {
- kongflag =0;
- for(i=0;i<64;i++)
- {
- if((G_mcontrol[i+1] == 1)&&(capdevice[i].cctype!=0))//&&(g_warnFlag == 0)) //选中,可进行投退
- {
- if(capdevice[i].cstatus==0) {capdevice[i].cstatus=1;}
- else{capdevice[i].cstatus=0;}
-
- if((i+1) == g_CapSN1)
- {
- if(capdevice[i].cstatus==0){Drq1=1;Drt1=0;} //Drq1=1;Drt1=0;}//J_Cq1 =1;A1_C = 1;} //电容1切除
- else
- {
- Drq1=0;Drt1=1;
- j_flag=1;
- if(g_RunID1==1){T_CASTD1 = 0;DISchargeD1 = 0;}
- }
- }else if((i+1) == g_CapSN2)
- {
- if(capdevice[i].cstatus==0)
- {
- Drq2=1;Drt2=0;//J_Cq3 =1;A2_C =1; //电容2切除
- }
- else
- {
- Drq2=0;Drt2=1;
- j_flag2=1;//J_Cc3 = 1;A2_C =1;
- if(g_RunID1==1){T_CASTD1 = 0;DISchargeD2 = 0;} //电容2投入
- }
- }
- }
- }
- if(Host_Flag == 1)//主机
- {
- Struct_SendData();
- UartSends(17);
- }
- }break;
- case KESC://返回上级菜单
- {
- Npage = 0;
- g_Ccontrol = 1;
- LcmClear(0);
- pMenu = pMenu -> parentMenuItem;
- }break;
- case KUP://实现菜单切换
- {
- kongflag = 0;
- if(g_Ccontrol > 1) g_Ccontrol -- ;
- else {g_Ccontrol = 64 ; LcmClear(0);}
- if((g_Ccontrol)%12 == 0)//换页时清屏 0.6.12.18.24.30
- LcmClear(0);
- // pMenu = pMenu -> lastMenuItem;
- Npage = (g_Ccontrol -1)/12;
- }break;
- case KDOWN://实现菜单切换
- {
- kongflag = 0;
- if(g_Ccontrol < 64) g_Ccontrol ++ ;
- else g_Ccontrol = 1 ;
- if((g_Ccontrol -1 )%12 == 0)//换页时清屏 5.11.17.23.29
- LcmClear(0);
- // pMenu = pMenu -> nextMenuItem;
- Npage = (g_Ccontrol -1)/12;
- }break;
- default:
- break;
- }
- }
- //zhangjian
- u8 Warn_Tui_Gong = 1; //要退的共补的数量
- //报警时的共补退函数
- void Warn_CapJ_Tui()
- {
- u32 temp = 0x0fffffff;
- u32 i = 0;
- unsigned char need = 0;
- unsigned char all[64] = {0};
- unsigned char j = 0;
- unsigned char k =0;
- unsigned char last = 0;
- Tou_Gong = 0;
- Tou_Fen = 0;
- for(i = 0;i<SystemPara[7];i++)
- {
- if((capdevice[SystemPara[6]+i].cstatus) != 0)
- {
- if((capdevice[SystemPara[6]+i].cvalue) <= temp)
- {
- temp = capdevice[SystemPara[6]+i].cvalue;
- need = SystemPara[6]+i;
- need++;
- }
- }
- }
- if(need != 0)
- {
- for(i = 0;i<SystemPara[7];i++)
- {
- if(capdevice[SystemPara[6]+i].cstatus != 0)
- {
- if(capdevice[SystemPara[6]+i].cvalue == capdevice[need-1].cvalue)
- {
- all[j] = SystemPara[6]+i; //如果有多个与所需电容量的电容器都取出来
- j++;
- }
- }
- }
- }
- Warn_Tui_Gong = j;
- Tui_Gong = j;
- if(j >= 1)
- {
- last = all[0];
- for(k = 0;k<j;k++)
- {
- if(capdevice[all[k]].count < capdevice[last].count)
- last = all[k]; //多个电容器容量相同的 比较投入次数 投入次数最少的一个
- }
- capdevice[last].cstatus = 0;
- capdevice[last].count += 1;
- }
- }
- //报警时的分补退函数
- /*void Warn_CapX_Tui(u8 x)
- {
- u8 i = 0;
- u32 temp = 0x0fffffff;
- u8 need = 0;
- u8 all[64] = {0};
- u8 j = 0;
- u8 k =0;
- u8 last = 0;
- u8 Nn = 0;
- Tou_Gong = 0;
- Tou_Fen = 0;
- if(x == 1)
- {
- Nn = 0;
- }
- else if(x == 2)
- {
- Nn = 1;
- }
- else if(x == 3)
- {
- Nn = 2;
- }
- for(i = 0;i<(SystemPara[6]/3);i++)
- {
- if((capdevice[3*i+Nn].cstatus) != 0)
- {
-
- if((capdevice[3*i+Nn].cvalue) <= temp)
- {
- temp = capdevice[3*i+Nn].cvalue;
- need = 3*i+Nn; //取得与小于无功功率且最小的电容器容量
- need++;
- }
- }
- }
- if(need != 0)
- {
- for(i = 0;i<(SystemPara[6]/3);i++)
- {
- if(capdevice[3*i+Nn].cstatus != 0)
- {
- if(capdevice[3*i+Nn].cvalue == capdevice[need-1].cvalue)
- {
- all[j] = 3*i+Nn; //如果有多个与所需电容量的电容器都取出来
- j++;
- }
- }
- }
- }
- Tui_Fen = j;
- if(j >= 1)
- {
- last = all[0];
- for(k = 0;k<j;k++)
- {
- if(capdevice[all[k]].count < capdevice[last].count)
- last = all[k]; //多个电容器容量相同的 比较投入次数 投入次数最少的一个
- }
- capdevice[last].cstatus = 0;
- capdevice[last].count += 1;
- }
- }*/
- //共补投退逻辑 用于混补
- /*void CapJ_Controls() //共补逻辑
- {
- //共补逻辑(投)
- if((g_Pfa < g_RunCOS*10)&&(g_Pfb < g_RunCOS*10)&&(g_Pfc < g_RunCOS*10)&&((Qaflag == 0)&&(Qbflag == 0)&&(Qcflag == 0)))
- {
- CapJT_Sub();
- }
- //共补逻辑(退)
- if((Qaflag == 1)&&(Qbflag == 1)&&(Qcflag == 1))
- {
- CapJQ_Sub();
- }
- }*/
- //纯共补的 共补投退逻辑
- void CapJ_Controls_Chun() //共补逻辑
- {
- //共补逻辑(投)
- if((g_Pf < g_RunCOS*10)&&(Qflag == 0))
- {
- CapJT_Chun();
- }
- //共补逻辑(退)
- if(Qflag == 1)
- {
- CapJQ_Chun();
- }
- }
- //分补投退逻辑
- /*void CapX_Controls() //分补逻辑
- {
- //分补逻辑(投)
- if((g_warnFlag == 0)&&(g_warnFlaga ==0)&&(g_warnFlagIa == 0))
- {
- if((g_Pfa < g_RunCOS*10)&&(Qaflag == 0))
- {
- CapXT_Sub(1);
- }
- }
- if((g_warnFlag == 0)&&(g_warnFlagb ==0)&&(g_warnFlagIb == 0))
- {
- if((g_Pfb < g_RunCOS*10)&&(Qbflag == 0))
- {
- CapXT_Sub(2);
- }
- }
- if((g_warnFlag == 0)&&(g_warnFlagc ==0)&&(g_warnFlagIc == 0))
- {
- if((g_Pfc < g_RunCOS*10)&&(Qcflag == 0))
- {
- CapXT_Sub(3);
- }
- }
- //分补逻辑(退)
- if((g_warnFlag == 0)&&(g_warnFlaga ==0)&&(g_warnFlagIa == 0))
- {
- if(Qaflag == 1)
- CapXQ_Sub(1);
- }
- if((g_warnFlag == 0)&&(g_warnFlagb ==0)&&(g_warnFlagIb == 0))
- {
- if(Qbflag == 1)
- CapXQ_Sub(2);
- }
- if((g_warnFlag == 0)&&(g_warnFlagc ==0)&&(g_warnFlagIc == 0))
- {
- if(Qcflag == 1)
- CapXQ_Sub(3);
- }
-
- } */
- //混补投退逻辑
- /*void CapXJ_Controls() //共补分补混合
- {
- // unsigned char a = 0;
- // unsigned char b = 0;
- // unsigned char c = 0;
-
- //共补逻辑
- if((g_warnFlag == 0)&&(g_warnFlaga ==0)&&(g_warnFlagb == 0)&&(g_warnFlagc == 0)&&(g_warnFlagIa ==0)&&(g_warnFlagIb == 0)&&(g_warnFlagIc == 0))
- CapJ_Controls();
-
- //分补逻辑(投)
- if(Tou_Gong == 0)
- {
- if((g_warnFlag == 0)&&(g_warnFlaga ==0)&&(g_warnFlagIa == 0))
- {
- if((g_Pfa < g_RunCOS*10)&&(Qaflag == 0))
- {
- CapXT_Sub(1);
- }
- }
- if((g_warnFlag == 0)&&(g_warnFlagb ==0)&&(g_warnFlagIb == 0))
- {
- if((g_Pfb < g_RunCOS*10)&&(Qbflag == 0))
- {
- CapXT_Sub(2);
- }
- }
- if((g_warnFlag == 0)&&(g_warnFlagc ==0)&&(g_warnFlagIc == 0))
- {
- if((g_Pfc < g_RunCOS*10)&&(Qcflag == 0))
- {
- CapXT_Sub(3);
- }
- }
- }
- //分补逻辑(退)
- if(Tui_Gong == 0)
- {
- if((g_warnFlag == 0)&&(g_warnFlaga ==0)&&(g_warnFlagIa == 0))
- {
- if(Qaflag == 1)
- CapXQ_Sub(1);
- }
- if((g_warnFlag == 0)&&(g_warnFlagb ==0)&&(g_warnFlagIb == 0))
- {
- if(Qbflag == 1)
- CapXQ_Sub(2);
- }
- if((g_warnFlag == 0)&&(g_warnFlagc ==0)&&(g_warnFlagIc == 0))
- {
- if(Qcflag == 1)
- CapXQ_Sub(3);
- }
- }
- }*/
- u32 Find_min(u32 Qa,u32 Qb,u32 Qc)
- {
- u32 min = 0;
- min = Qa;
- if(Qb<min)
- min = Qb;
- if(Qc<min)
- min = Qc;
- return (min);
- }
- u32 Find_max(u32 Qa,u32 Qb,u32 Qc)
- {
- u32 max = 0;
- max = Qa;
- if(Qb > max)
- max = Qb;
- if(Qc > max)
- max = Qc;
- return (max);
- }
- //共补投函数 用于混补
- /*void CapJT_Sub() //共补电容器投 子函数
- {
- unsigned char i = 0;
- u32 temp = 0x0fffffff;
- u32 g_Qsn = 0;
- u8 need = 0;
- u8 all[64] = {0};
- u8 j = 0;
- u8 k =0;
- u8 last = 0;
- Tui_Gong = 0;
- Tui_Fen = 0;
- g_Qsn = Find_min(g_Qa,g_Qb,g_Qc)/100;
- for(i = 0;i<SystemPara[7];i++)
- {
- if((capdevice[SystemPara[6]+i].cvalue != 0)&&(capdevice[SystemPara[6]+i].cstatus == 0))
- {
- if((g_Qsn >= g_RunQC*capdevice[SystemPara[6]+i].cvalue/3)&&((g_Qsn - g_RunQC*(capdevice[SystemPara[6]+i].cvalue/3))<0x0fffffff))
- {
- if((g_Qsn - g_RunQC*(capdevice[SystemPara[6]+i].cvalue/3)) <= temp)
- {
- temp = g_Qsn - g_RunQC*(capdevice[SystemPara[6]+i].cvalue/3);
- need = SystemPara[6]+i;
- //取得与小于无功功率且最接近的电容器容量
-
- ……………………
- …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
全部资料下载地址:
http://www.51hei.com/bbs/dpj-109977-1.html
|