📄 main.c
字号:
PromptY1 = 124;
PromptX2 = 1;
PromptY2 = 148;
PromptX3 = 1;
PromptY3 = 172;
PromptX4 = 1;
PromptY4 = 196;
Putstr(PromptX1,PromptY1,"*操作提示*",0,0);
Put_uint(22,127,4,200,0,1);
Putstr(26,127,"ms",0,1);
Put_uint(32,127,4,2000,0,0);
Putstr(36,127,"ms",0,0);
Putstr(PromptX2,PromptY2,"空贱腚键移动光标空",0,0);
Put_uint(22,157,4,400,0,0);
Putstr(26,157,"ms",0,0);
Putstr(33,150,"输入",0,0);
Putstr(PromptX3,PromptY3,"确认键设定加速时间",0,0);
Put_uint(22,187,4,800,0,0);
Putstr(26,187,"ms",0,0);
Putstr(33,173,"标定",0,0);
Put_uint(22,217,4,1200,0,0);
Putstr(26,217,"ms",0,0);
Putstr(31,196,"开始加速",0,0);
Putstr(33,219,"退出",0,0);
// Linexy(240,204,319,204,1);
// Putstr(33,217,"退出",0,0);
MaxSubMenuCode = 9; //子菜单数目
LeftSubMenuCode = 4; //左边子菜单数目
SPEEDTIME = 200;
fSpeedTime = SPEEDTIME;
CYLINDERNUMBER = 4;
WRITHE = 600;
ParaFlag = 19; //用电压的标志区分转速档位
fTimeParaMul = 200/fPara[ParaFlag];
fTimeParaAdd = 0.0f;
fSpeedParaMul = 1.0f;
fSpeedParaAdd = 0.0f;
SetWrithe();
StartFlag = 0;
COUNTER = 0;
Timer4Counter = 0;
bUp = 1;
// Timer4PointTotal = 0;
TIMER4DRVCLOCK = SYSCLOCK;///12;
Timer4Overflow = 0;
// CKCON &= 0xb8; //Timer4使用系统时钟/12
CKCON |= 0x40; //Timer4使用系统时钟
T4CON = 0x0d;//允许并工作在捕捉方式,系统时钟/12
EIE2 |= 0x04;//允许中断
EIP2 &= 0xdf;//INT7外部中断置为低优先级
ResetStepCounter();
break;
case 3:
fSpeed = 0;
CYLINDERNUMBER = 3;
WRITHE = 1200;
CLOSEANGLE = 60;
fCloseAngle = CLOSEANGLE;
Putstr(15,4,"闭合角检定",0,0);
Putstr(10,36,"转速值:",0,0);
Putf(17,36,"62",fSpeed,0);
Putstr(25,36,"转/分",0,0);
Putstr(13,68,"闭合角:",0,0);
Putf(20,68,"42",fCloseAngle,0);
Putstr(25,68,"度",0,0);
Linexy(ScreenLeft,100,ScreenRight,100,1);
Putstr(2,102,"缸量03",0,0);
Putstr(11,102,"闭合角60",0,0);
Putstr(21,102,"缸量选择",0,0);
Putstr(31,102,"选闭合角",0,0);
Linexy(ScreenLeft,120,ScreenRight,120,1);
Linexy(160,100,160,239,1);
Linexy(80,100,80,120,1);
Linexy(240,100,240,239,1);
PromptX1 = 5;
PromptY1 = 124;
PromptX2 = 1;
PromptY2 = 148;
PromptX3 = 1;
PromptY3 = 172;
PromptX4 = 1;
PromptY4 = 196;
Putstr(PromptX1,PromptY1,"*操作提示*",0,0);
Put_uint(24,124,2,3,0,1);
Put_uint(33,124,2,60,0,0);
Putstr(35,124,"度",0,0);
Putstr(PromptX2,PromptY2,"空贱腚键移动光标空",0,0);
Put_uint(24,148,2,4,0,0);
Put_uint(33,144,2,65,0,0);
Putstr(35,144,"度",0,0);
Putstr(PromptX3,PromptY3,"空确认键设定缸量空",0,0);
Put_uint(24,172,2,6,0,0);
Put_uint(33,164,2,70,0,0);
Putstr(35,164,"度",0,0);
Put_uint(24,196,2,8,0,0);
Putstr(33,184,"输入",0,0);
Putstr(23,220,"输入",0,0);
Putstr(33,204,"标定",0,0);
Putstr(33,224,"退出",0,0);
MaxSubMenuCode = 11; //子菜单数目
LeftSubMenuCode = 5; //左边子菜单数目
ParaFlag = 24;
fCloseAngleParaMul = 60/fPara[ParaFlag];
fCloseAngleParaAdd = 0.0f;
fSpeedParaMul = 1.0f;
fSpeedParaAdd = 0.0f;
SetWrithe();
Timer4Counter = 0;
TIMER4DRVCLOCK = SYSCLOCK;///12;
Timer4Overflow = 0;
// CKCON &= 0xb8; //Timer4使用系统时钟/12
CKCON |= 0x40; //Timer4使用系统时钟
T4CON = 0x0d;//允许并工作在捕捉方式,系统时钟/12
EIE2 |= 0x04;//允许中断
break;
case 4:
FIREANGLE = 4;
CYLINDERNUMBER = 4;
WRITHE = 600;
fSpeed = 0;
fFireAngle = 4;
Putstr(13,4,"缸压提前角检定",0,0);
Putstr(10,36,"转速值:",0,0);
Putf(17,36,"62",fSpeed,0);
Putstr(25,36,"转/分",0,0);
Putstr(13,68,"提前角:",0,0);
Putf(20,68,"42",fFireAngle,0);
Putstr(25,68,"度",0,0);
Linexy(ScreenLeft,100,ScreenRight,100,1);
Putstr(1,102,"转速0600",0,0);
Putstr(11,102,"提前角04",0,0);
Putstr(21,102,"转速选择",0,0);
Putstr(31,102,"选提前角",0,0);
Linexy(ScreenLeft,120,ScreenRight,120,1);
Linexy(160,100,160,239,1);
Linexy(80,100,80,120,1);
Linexy(240,100,240,239,1);
PromptX1 = 5;
PromptY1 = 124;
PromptX2 = 1;
PromptY2 = 148;
PromptX3 = 1;
PromptY3 = 172;
PromptX4 = 1;
PromptY4 = 196;
Putstr(PromptX1,PromptY1,"*操作提示*",0,0);
Put_uint(23,124,4,600,0,1);
Put_uint(33,124,2,4,0,0);
Putstr(35,124,"度",0,0);
Putstr(PromptX2,PromptY2,"空贱腚键移动光标空",0,0);
Put_uint(23,148,4,1200,0,0);
Put_uint(33,148,2,10,0,0);
Putstr(35,148,"度",0,0);
Putstr(PromptX3,PromptY3,"空确认键设定转速空",0,0);
Put_uint(23,172,4,2400,0,0);
Put_uint(33,172,2,14,0,0);
Putstr(35,172,"度",0,0);
Putstr(23,196,"输入",0,0);
Putstr(33,196,"输入",0,0);
Putstr(23,220,"标定",0,0);
Putstr(33,220,"退出",0,0);
P4 = 0x00; //防止对DA0的干扰
MaxSubMenuCode = 10; //子菜单数目
LeftSubMenuCode = 5; //左边子菜单数目
ReSetAheadFlag();
// SetFireAngle();
ParaFlag = 36;
fAheadAngleParaMul = 4/fPara[ParaFlag];
fAheadAngleParaAdd = 0.0f;
fSpeedParaMul = 1.0f;
fSpeedParaAdd = 0.0f;
SetWrithe();
REF0CN = 0x03;//内部电压基准开
DAC0CN = 0x80;//DAC0打开
Timer4Counter = 0;
TIMER4DRVCLOCK = SYSCLOCK;///12;
Timer4Overflow = 0;
// CKCON &= 0xb8; //Timer4使用系统时钟/12
CKCON |= 0x40; //Timer4使用系统时钟
T4CON = 0x0d;//允许并工作在捕捉方式,系统时钟/12
EIE2 |= 0x04;//允许中断
break;
case 5:
fCurrent = 0;
Putstr(15,4,"起动系检定",0,0);
Putstr(11,36,"电压值:",0,0);
Putf(18,36,"42",fVoltage,0);
Putstr(25,36,"伏特",0,0);
Putstr(11,68,"电流值:",0,0);
Putf(18,68,"52",fCurrent,0);
Putstr(25,68,"安培",0,0);
Linexy(ScreenLeft,100,ScreenRight,100,1);
Putstr(1,102,"电流100A",0,0);
Putstr(11,102,"电压12V",0,0);
Putstr(21,102,"电流选择",0,0);
Putstr(31,102,"电压选择",0,0);
Linexy(ScreenLeft,120,ScreenRight,120,1);
Linexy(160,100,160,239,1);
Linexy(80,100,80,120,1);
Linexy(240,100,240,239,1);
P4 = 0x00; //防止对DA0的干扰
PromptX1 = 5;
PromptY1 = 124;
PromptX2 = 1;
PromptY2 = 148;
PromptX3 = 1;
PromptY3 = 172;
PromptX4 = 1;
PromptY4 = 196;
Putstr(PromptX1,PromptY1,"*操作提示*",0,0);
Put_uint(23,122,3,100,0,1);
Putstr(26,122,"A",0,1);
Put_uint(33,122,2,12,0,0);
Putstr(35,122,"V",0,0);
Putstr(PromptX2,PromptY2,"空贱腚键移动光标空",0,0);
Put_uint(23,142,3,150,0,0);
Putstr(26,142,"A",0,0);
Put_uint(33,142,2,24,0,0);
Putstr(35,142,"V",0,0);
Putstr(PromptX3,PromptY3,"确认键开始输出电流",0,0);
Put_uint(23,162,3,200,0,0);
Putstr(26,162,"A",0,0);
Putstr(33,162,"标定",0,0);
// Putstr(1,172,"确认键进行选定操作",0,0);
Put_uint(23,182,3,300,0,0);
Putstr(26,182,"A",0,0);
// Putstr(1,172,"确认键进行选定操作",0,0);
Put_uint(23,202,3,500,0,0);
Putstr(26,202,"A",0,0);
Putstr(23,222,"标定",0,0);
// Linexy(240,204,319,204,1);
Putstr(33,182,"退出",0,0);
MaxSubMenuCode = 10; //子菜单数目
LeftSubMenuCode = 6; //左边子菜单数目
CurrentFlag = 0;
StepCounter[0] = 0x092;
StepCounter[1] = 0x0ae;
StepCounter[2] = 0x0e8;
StepCounter[3] = 0x15c;
StepCounter[4] = 0x244;
//-----------开启AD0,DA0-------------
REF0CN = 0x03;//内部电压基准开,
DAC1CN = 0x80;//开启DA1输出
DAC0CN = 0x80;//开启DA0输出
VOLTAGEDATA = 0x63;
VoltageFlag = 8;
fVoltagePara = fPara[VoltageFlag];
VOLTAGEDATAADJUSTED = VOLTAGEDATA/fVoltagePara;
VOLTAGEDATAADJUSTEDUP = VOLTAGEDATAADJUSTED+1; //电压设定值
VOLTAGEDATAADJUSTEDDOWN = VOLTAGEDATAADJUSTED-1;
//ADC0LTH:ADC0LTL=0x0100,
//ADC0GTH:ADC0GTL=0x0200.//(CURRENT/500*2.35)
//窗口跟踪器界限设置,大于上限或小于下限引发中断
StartFlag = 0;
bVoltageAdjusting = 1;
bVoltageOk = 0;
VoltageCounter = 0;
VoltageOkCounter = 0;
// K4 = 0;
// DelayM(100);
K5 = 0;
DelayM(300);
K6 = 0;
DelayM(300);
K4 = 1;//线圈短路,无电流
ValueOut_DA0 = 0xfff;//DA0输出初始值
DAC0L = ValueOut_DA0;
DAC0H = ValueOut_DA0>>8;
ADC0CN = 0x80;//使能AD0,除转换期间一直跟踪,向AD0BUSY写1启动ADC0转换,寄存器数据右对齐
ADC0CF = 0x22;//时钟源为SYSCLOCK/5,增益为2
AMX0CF = 0x00;//全部单端输入
AMX0SL = 0x00;//选择通道0
bCurrentWaitForAdj = 0;
outCounter = 0;
ADC0_SUM = 0;
AD0ProcessEnd=0;
ADC1CN = 0x80;//使能AD1,除转换期间一直跟踪,向AD0BUSY写1启动ADC0转换,寄存器数据右对齐
ADC1CF = 0x21;//时钟源为SYSCLOCK/5,增益为1
AMX1SL = 0x07;//选择通道7
AD1ProcessEnd=0;
COUNTER_ADC1 = 0;
ADC1_SUM = 0;
EIE2 |= 0x08; //允许ADC1转换结束中断
ADC1CN |= 0x10;//Start AD1
break;
case 6:
fCurrent = 0;
Putstr(15,4,"充电系检定",0,0);
Putstr(11,36,"电压值:",0,0);
Putf(18,36,"42",fVoltage,0);
Putstr(25,36,"伏特",0,0);
Putstr(11,68,"电流值:",0,0);
Putf(18,68,"52",fCurrent,0);
Putstr(25,68,"安培",0,0);
Linexy(ScreenLeft,100,ScreenRight,100,1);
Putstr(1,102,"电流010A",0,0);
Putstr(11,102,"电压13V",0,0);
Putstr(21,102,"电流选择",0,0);
Putstr(31,102,"电压选择",0,0);
Linexy(ScreenLeft,120,ScreenRight,120,1);
Linexy(160,100,160,239,1);
Linexy(80,100,80,120,1);
Linexy(240,100,240,239,1);
P4 = 0x00; //防止对DA0的干扰
PromptX1 = 5;
PromptY1 = 124;
PromptX2 = 1;
PromptY2 = 148;
PromptX3 = 1;
PromptY3 = 172;
PromptX4 = 1;
PromptY4 = 196;
Putstr(PromptX1,PromptY1,"*操作提示*",0,0);
Put_uint(23,127,3,10,0,1);
Putstr(26,127,"A",0,1);
Put_uint(33,127,2,13,0,0);
Putstr(35,127,"V",0,0);
Putstr(PromptX2,PromptY2,"空贱腚键移动光标空",0,0);
Put_uint(23,157,3,20,0,0);
Putstr(26,157,"A",0,0);
Put_uint(33,157,2,28,0,0);
Putstr(35,157,"V",0,0);
Putstr(PromptX3,PromptY3,"确认键开始输出电流",0,0);
Put_uint(23,187,3,30,0,0);
Putstr(26,187,"A",0,0);
Putstr(33,187,"标定",0,0);
Putstr(23,217,"标定",0,0);
// Linexy(240,204,319,204,1);
Putstr(33,217,"退出",0,0);
MaxSubMenuCode = 8; //子菜单数目
LeftSubMenuCode = 4; //左边子菜单数目
//-----------开启AD0,DA0-------------
REF0CN = 0x03;//内部电压基准开,
DAC1CN = 0x80;//开启DA1输出
DAC0CN = 0x80;//开启DA0输出
VOLTAGEDATA = 0x6c;
CurrentFlag = 8;
VoltageFlag = 10;
fVoltagePara = fPara[VoltageFlag];
VOLTAGEDATAADJUSTED = VOLTAGEDATA/fVoltagePara;
VOLTAGEDATAADJUSTEDUP = VOLTAGEDATAADJUSTED+1; //电压设定值
VOLTAGEDATAADJUSTEDDOWN = VOLTAGEDATAADJUSTED-1;
//ADC0LTH:ADC0LTL=0x0100,
//ADC0GTH:ADC0GTL=0x0200.//(CURRENT/500*2.35)
//窗口跟踪器界限设置,大于上限或小于下限引发中断
StartFlag = 0;
bVoltageAdjusting = 1;
bVoltageOk = 0;
VoltageCounter = 0;
VoltageOkCounter = 0;
StepCounter[5] = 0x200;
StepCounter[6] = 0x400;
StepCounter[7] = 0x600;
K5 = 0;
DelayM(300);
K6 = 0;
DelayM(300);
K4 = 1;//线圈短路,无电流
ValueOut_DA0 = 0xfff;//DA0输出初始值
DAC0L = ValueOut_DA0;
DAC0H = ValueOut_DA0>>8;
ADC0CN = 0x80;//使能AD0,除转换期间一直跟踪,向AD0BUSY写1启动ADC0转换,寄存器数据右对齐
ADC0CF = 0x22;//时钟源为SYSCLOCK/5,增益为2
AMX0CF = 0x00;//全部单端输入
AMX0SL = 0x00;//选择通道0
bCurrentWaitForAdj = 0;
outCounter = 0;
ADC0_SUM = 0;
AD0ProcessEnd=0;
ADC1CN = 0x80;//使能AD1,除转换期间一直跟踪,向AD0BUSY写1启动ADC0转换,寄存器数据右对齐
ADC1CF = 0x21;//时钟源为SYSCLOCK/5,增益为1
AMX1SL = 0x07;//选择通道7
AD1ProcessEnd=0;
COUNTER_ADC1 = 0;
ADC1_SUM = 0;
SetFreq(40.0);
EIE2 |= 0x08; //允许ADC1转换结束中断
ADC1CN |= 0x10;//Start AD1
break;
case 7:
CYLINDERNUMBER = 4;
WRITHE = 600;
fSpeed = 0;
fFireAngle = 0;
FIREANGLE = 180/CYLINDERNUMBER; //半周期角度
Putstr(13,4,"闪光提前角检定",0,0);
Putstr(10,36,"转速值:",0,0);
Putf(17,36,"62",fSpeed,0);
Putstr(25,36,"转/分",0,0);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -