📄 play.#2
字号:
LCDDAT(0xBD);
LCDDAT(0xE1);
LCDDAT(0xB0);
LCDDAT(0xB4);
LCDDAT(0xC8);
LCDDAT(0xB7);
LCDDAT(0xB6);
LCDDAT(0xA8);
LCDASIIC();
LCDLINE(0x07,0,0,0xEE,0,0x3F,0x01,0xEE,0);
//
while(1)
{
if(SAMPLEN)
{
SAMPLEN=0;
workshow_temp();
}
if(KEY == 'S' || KEY == 'C')
{
key=KEY;
switch(key)
{
case 'S':{
//************************************
//画温度过程基本曲线,画压力过程基本曲线
temp1=33;
temp2=(uint)(197-(GY[GYNUM].temperature[0]-TEMPRATURE_lo)*scale2);
temp3=(uint)(197-(GY[GYNUM].power[0]-POWER_lo)*scale3);
X1L[0]=33;X1H[0]=0;
X1L[1]=33;X1H[1]=0;
Y1L[0]=temp2%256;Y1H[0]=temp2/256;
Y1L[1]=temp3%256;Y1H[1]=temp3/256;
for(i=1,alltime=0;i<20;i++)
{
if(GY[GYNUM].time[i]!=0)
{
alltime+=GY[GYNUM].time[i];
temp1=(uint)(33+alltime*scale1);
temp2=(uint)(197-(GY[GYNUM].temperature[i]-TEMPRATURE_lo)*scale2);
temp3=(uint)(197-(GY[GYNUM].power[i]-POWER_lo)*scale3);
X2L[0]=temp1%256;X2H[0]=temp1/256;
X2L[1]=temp1%256;X2H[1]=temp1/256;
Y2L[0]=temp2%256;Y2H[0]=temp2/256;
Y2L[1]=temp3%256;Y2H[1]=temp3/256;
LCDLINE(0x00,X1L[0],X1H[0],Y1L[0],Y1H[0],X2L[0],X2H[0],Y2L[0],Y2H[0]);
LCDLINE(0x00,X1L[1],X1H[1],Y1L[1],Y1H[1],X2L[1],X2H[1],Y2L[1],Y2H[1]);
X1L[0]=X2L[0];X1H[0]=X2H[0];Y1L[0]=Y2L[0];Y1H[0]=Y2H[0];
X1L[1]=X2L[1];X1H[1]=X2H[1];Y1L[1]=Y2L[1];Y1H[1]=Y2H[1];
}
else
{
break;
}
}
//************************************
AUTO_MAN=1;alltime=0;MOTORRUN;SEGMENT=1;segtemp=1;TEMPTIME=0;SAMPLEN=1;first=0;
X1L[0]=33;X1H[0]=0;Y1L[0]=197;Y1H[0]=0;
X1L[1]=33;X1H[1]=0;Y1L[1]=197;Y1H[1]=0;
//
LCDXY(12,14);
for(i=0;i<14;i++)
{
LCDDAT(' ');
}
LCDLINE(0x07,0,0,0xEE,0,0x3F,0x01,0xEE,0);
DAC0CN=0x80;//开DAC0
DAC0L=0x00;
DAC0H=0x00;
delay1s();delay1s();delay1s();
delay1s();delay1s();delay1s();
// delay1s();delay1s();delay1s();
// delay1s();delay1s();delay1s();
DAC0L=0xC9;
DAC0H=0x00;
delay1s();delay1s();
DAC0L=0x92;
DAC0H=0x01;
delay1s();delay1s();
DAC0L=0x5B;
DAC0H=0x02;
delay1s();delay1s();
DAC0L=0x25;
DAC0H=0x03;
WRITEAI(0x15,4);
TG=0;
//
goto ack;break;
}
case 'C':{goto cancel;break;}
default: {break;}
}
}
}
ack:
SFRPAGE=DAC1_PAGE;
DAC1CN=0x00;//关DAC1
SFRPAGE=LEGACY_PAGE;
LCDFCOLOR(4);//前景色为红色
LCDHANZ();
LCDXY(3,0);
LCDDAT(0xD7);
LCDDAT(0xD4);
LCDDAT(0xB6);
LCDDAT(0xAF);//自动
LCDXY(31,0);
LCDDAT(0xD4);
LCDDAT(0xCB);
LCDDAT(0xD0);
LCDDAT(0xD0);//运行
LCDASIIC();
LCDLINE(0x07,0,0,15,0,0x3F,0x01,15,0);
while(1)
{
if(SAMPLEN)
{
SAMPLEN=0;
workshow_temp();
if((AIBUF[0]+AIBUF[1]*256) > (TEMPRATURE_lo+5))
{
break;
}
}
}
WRITEAI(0x15,0);
WRITEAI(0x18,1);
DAC0CN=0x80;//开DAC0
POWEROUT=0;
PrevError=0;
PrevDError=0;
PIDEN=1;
goto AUTO;
MAN:
PIDEN=0;
DAC0CN=0x00;//关DAC0
SFRPAGE=DAC1_PAGE;
DAC1CN=0x80;//开DAC1
SFRPAGE=LEGACY_PAGE;
LCDFCOLOR(4);//前景色为红色
LCDHANZ();
LCDXY(3,0);
LCDDAT(0xCA);
LCDDAT(0xD6);
LCDDAT(0xB6);
LCDDAT(0xAF);//手动
LCDXY(31,0);
LCDDAT(0xD4);
LCDDAT(0xDD);
LCDDAT(0xCD);
LCDDAT(0xA3);//暂停
LCDLINE(0x07,0,0,15,0,0x3F,0x01,15,0);
LCDASIIC();
WRITEAI(0x15,4);
WRITEAI(0x18,33);
goto MANU;
AUTO:
if(!AUTO_MAN)
{
goto MAN;
}
if(SAMPLEN)
{
SAMPLEN=0;
PIDEN=0;
SEGMENT=READAI(0x00);
if(first==1 && SEGMENT ==1)
{
DAC0CN=0x00;
SFRPAGE=0x01;//DAC1 and T3 are in the same SFR page
DAC1CN=0x00;
TR3=0;
SFRPAGE=LEGACY_PAGE;
LCDFCOLOR(7);//前景色为白色
LCDXY(13,1);
LCDDAT(TOTALTIME/600+0x30);
LCDDAT(TOTALTIME/60%10+0x30);
LCDDAT(':');
LCDDAT(TOTALTIME%60/10+0x30);
LCDDAT(TOTALTIME%10+0x30);//显示时间值
//画温度过程曲线,画压力过程曲线
temp1=(uint)(33+TOTALTIME*scale1);
temp2=(uint)(197-(temptemp-TEMPRATURE_lo)*scale2);
temp3=(uint)(197-(temppower-POWER_lo)*scale3);
X2L[0]=temp1%256;X2H[0]=temp1/256;
X2L[1]=temp1%256;X2H[1]=temp1/256;
Y2L[0]=temp2%256;Y2H[0]=temp2/256;
Y2L[1]=temp3%256;Y2H[1]=temp3/256;
LCDLINE(14,X1L[0],X1H[0],Y1L[0],Y1H[0],X2L[0],X2H[0],Y2L[0],Y2H[0]);
LCDLINE(11,X1L[1],X1H[1],Y1L[1],Y1H[1],X2L[1],X2H[1],Y2L[1],Y2H[1]);
WRITEAI(0x15,12);
//
LCDFCOLOR(4);//前景色为红色
LCDHANZ();
LCDXY(31,0);
LCDDAT(0xBD);
LCDDAT(0xE1);
LCDDAT(0xCA);
LCDDAT(0xF8);//结束
LCDLINE(0x07,0,0,15,0,0x3F,0x01,15,0);
LCDASIIC();
//
LCDFCOLOR(6);//前景色为黄色
LCDHANZ();
LCDXY(12,14);//油缸回程请稍候
LCDDAT(0xD3);
LCDDAT(0xCD);
LCDDAT(0xB8);
LCDDAT(0xD7);
LCDDAT(0xBB);
LCDDAT(0xD8);
LCDDAT(0xB3);
LCDDAT(0xCC);
LCDDAT(0xC7);
LCDDAT(0xEB);
LCDDAT(0xC9);
LCDDAT(0xD4);
LCDDAT(0xBA);
LCDDAT(0xF2);
LCDASIIC();
LCDLINE(0x07,0,0,0xEE,0,0x3F,0x01,0xEE,0);
//
if(HDISTANCE)
{
TPFCON;
MOTORRUN;
loop:
while(HDISTANCE){}
delay200ms();
if(!HDISTANCE)
{
MOTORSTOP;
delay200ms();
TPFCOFF;
}
else
{
goto loop;
}
}
else
{
MOTORSTOP;
delay200ms();
TPFCOFF;
}
//
LCDXY(12,14);
for(i=0;i<14;i++)
{
LCDDAT(' ');
}
LCDLINE(0x07,0,0,0xEE,0,0x3F,0x01,0xEE,0);
//
BEEP=1;
delay200ms();
BEEP=0;
delay200ms();
BEEP=1;
delay200ms();
BEEP=0;
delay200ms();
BEEP=1;
delay200ms();
BEEP=0;
delay1s();
delay1s();
goto again;
}
if(first==0 && SEGMENT >=2)
{
first=1;
}
if(SEGMENT == segtemp)
{
TEMPTIME=READAI(0x56);//读取运行时间
PIDEN=1;
}
else
{
segtemp=SEGMENT;
goto AUTO;
}
for(i=0,alltime=0;i<SEGMENT;i++)
{
alltime+=GY[GYNUM].time[i];
}
alltime+=TEMPTIME;//得到总的时间
LCDFCOLOR(7);//前景色为白色
LCDXY(5,1);
LCDDAT(SEGMENT/10+0x30);
LCDDAT(SEGMENT%10+0x30);//显示段号值
LCDXY(13,1);
LCDDAT(alltime/600+0x30);
LCDDAT(alltime/60%10+0x30);
LCDDAT(':');
LCDDAT(alltime%60/10+0x30);
LCDDAT(alltime%10+0x30);//显示时间值
//************
ZERO=0;
temptemp=AIBUF[0]+AIBUF[1]*256;//得到温度值
LCDFCOLOR(4);//前景色为红色
LCDXY(24,1);//光标到(24,1)
if(ZERO==0 && temptemp/1000==0)
{
LCDDAT(' ');
}
else
{
ZERO=1;
LCDDAT(temptemp/1000+0x30);
}
if(ZERO==0 && temptemp/100%10==0)
{
LCDDAT(' ');
}
else
{
ZERO=1;
LCDDAT(temptemp/100%10+0x30);
}
if(ZERO==0 && temptemp%100/10==0)
{
LCDDAT(' ');
}
else
{
LCDDAT(temptemp%100/10+0x30);
}
LCDDAT(temptemp%10+0x30);//显示温度
//
temppower=(uchar)(((float)GY[GYNUM].power[SEGMENT]-(float)GY[GYNUM].power[SEGMENT-1])/(float)GY[GYNUM].time[SEGMENT]*(float)TEMPTIME+(float)GY[GYNUM].power[SEGMENT-1]);
ttpp=(uchar)(REALPOWER*BL+temppower*(1-BL));
//
LCDXY(35,1);//光标到(35,1)
LCDFCOLOR(1);//前景色为兰色
ZERO=0;
if(ZERO==0 && ttpp/100==0)
{
LCDDAT(' ');
}
else
{
ZERO=1;
LCDDAT(ttpp/100+0x30);
}
if(ZERO==0 && ttpp/10%10==0)
{
LCDDAT(' ');
}
else
{
LCDDAT(ttpp/10%10+0x30);
}
LCDDAT(ttpp%10+0x30);//显示实时压力值
//画温度过程曲线,画压力过程曲线
temp1=(uint)(33+alltime*scale1);
temp2=(uint)(197-(temptemp-TEMPRATURE_lo)*scale2);
temp3=(uint)(197-(temppower-POWER_lo)*scale3);
X2L[0]=temp1%256;X2H[0]=temp1/256;
X2L[1]=temp1%256;X2H[1]=temp1/256;
Y2L[0]=temp2%256;Y2H[0]=temp2/256;
Y2L[1]=temp3%256;Y2H[1]=temp3/256;
LCDLINE(14,X1L[0],X1H[0],Y1L[0],Y1H[0],X2L[0],X2H[0],Y2L[0],Y2H[0]);
LCDLINE(11,X1L[1],X1H[1],Y1L[1],Y1H[1],X2L[1],X2H[1],Y2L[1],Y2H[1]);
X1L[0]=X2L[0];X1H[0]=X2H[0];Y1L[0]=Y2L[0];Y1H[0]=Y2H[0];
X1L[1]=X2L[1];X1H[1]=X2H[1];Y1L[1]=Y2L[1];Y1H[1]=Y2H[1];
}
//************
goto AUTO;
MANU:
if(AUTO_MAN)
{
goto ack;
}
SFRPAGE=DAC1_PAGE;
if(KEY == 'U')
{
DACVALUE=DAC1L+(DAC1H & 0x0F)*256;
if(DACVALUE < 3889)//由于外部电压放大倍数为3.9倍,电压输出最大为2.43V
{ //才能使输出电压在9V以内,对应DA最大为0x0F31即3889
DACVALUE++;
DAC1L=DACVALUE%256;
DAC1H=DACVALUE/256;
delay5ms();
}
}
if(KEY == 'D')
{
DACVALUE=DAC1L+(DAC1H & 0x0F)*256;
if(DACVALUE > 0)
{
DACVALUE--;
DAC1L=DACVALUE%256;
DAC1H=DACVALUE/256;
delay5ms();
}
}
SFRPAGE=LEGACY_PAGE;
if(SAMPLEN)
{
SAMPLEN=0;
workshow();
}
goto MANU;
cancel:
LCDSHOW(MENUSELECT);//菜单选择画面
}
//***********************
void selectpronum()//选择工艺序号
{
uchar i;
uchar gynum[2];
uchar gynumber;
uchar key;
LCDSHOW(PRONUMSELT);
LCDASIIC();//西文方式
LCDGBCOLOR(7,0);//光标前景色为白色//光标背景色为黑色
LCDFCOLOR(2);//设置前景色为绿色
LCDOVERLAP(1);//覆盖方式
again:
LCDXY(22,10);//光标移到x=22光标移到y=10
gynum[0]=GYNUM/10;
if(gynum[0]==0)
{
LCDDAT(' ');
}
else
{
LCDDAT(gynum[0]+0x30);//显示当前工艺序号的高位
}
gynum[1]=GYNUM%10;
LCDDAT(gynum[1]+0x30);//显示当前工艺序号的低位
LCDGBOC(1);//光标显示
while(1)
{
newlly:
LCDXY(22,10);//光标移到x=22光标移到y=10
for(i=0;i<2;i++)
{
loop:
while((KEY <'0' || KEY >'9') && (KEY != 'S') && (KEY != 'C') && (KEY != 'R') && (KEY != 'L')){}
key=KEY;
switch(key)
{
case '0':
case '1':
case '2':
case '3':
case '4':
case '5':
case '6':
case '7':
case '8':
case '9':
{
gynum[i]=(key-0x30);
if(i==0)
{
if(gynum[i]==0)
{
LCDDAT(' ');
}
else
{
LCDDAT(key);
}
}
else
{
LCDDAT(key);
}
break;
}
case 'R':{LCDRSFT(1);break;}
case 'L':{goto newlly;break;}
case 'S':{goto ack;break;}
case 'C':{goto cancel;break;}
default: {goto loop;break;}
}
while(KEY != 0xFF){}
}
}
ack:
while(KEY != 0xFF){}
gynumber=(gynum[0]*10+gynum[1]);
if((gynumber > 60) || (gynumber == 0))
{
LCDGBOC(0);//光标关闭
goto again;
}
else
{
GYNUM=gynumber;
}
cancel:
LCDSHOW(MENUSELECT);//菜单选择画面
}
//***********************
void setpropara()//设置工艺参数
{
uchar i,j,k;
uint address;
uint addr;
bit ZERO=0;
uchar key;
uchar xdata temp[20][11];
LCDSHOW(PROPARASET);
LCDASIIC();//西文方式
LCDGBCOLOR(7,0);//光标前景色为白色光标背景色为黑色
LCDFCOLOR(7);//设置前景色为白色
LCDXY(21,1);//光标到(21,1)
if(GYNUM/10==0)
{
LCDDAT(' ');
}
else
{
LCDDAT(GYNUM/10+0x30);
}
LCDDAT(GYNUM%10+0x30);
LCDOVERLAP(1);//覆盖方式
again:
for(i=0;i<20;i++)
{
if(i<10)
{
LCDXY(5,4+i);//光标到(5,4+i)
}
else
{
LCDXY(24,i-6);//光标到(24,i-6)
}
LCDFCOLOR(4);//设置前景色为红色
temp[i][10]=GY[GYNUM].time[i]/600;
LCDDAT(temp[i][10]+0x30);
temp[i][9]=GY[GYNUM].time[i]/60%10;
LCDDAT(temp[i][9]+0x30);
LCDDAT(':');
temp[i][8]=GY[GYNUM].time[i]%60/10;
LCDDAT(temp[i][8]+0x30);
temp[i][7]=GY[GYNUM].time[i]%10;
LCDDAT(temp[i][7]+0x30);
LCDRSFT(1);//右移一个字符
LCDFCOLOR(1);//设置前景色为兰色
temp[i][6]=GY[GYNUM].temperature[i]/1000;
ZERO=0;
if(ZERO==0 && temp[i][6]==0)
{
LCDDAT(' ');
}
else
{
ZERO=1;
LCDDAT(temp[i][6]+0x30);
}
temp[i][5]=GY[GYNUM].temperature[i]/100%10;
if(ZERO==0 && temp[i][5]==0)
{
LCDDAT(' ');
}
else
{
ZERO=1;
LCDDAT(temp[i][5]+0x30);
}
temp[i][4]=GY[GYNUM].temperature[i]%100/10;
if(ZERO==0 && temp[i][4]==0)
{
LCDDAT(' ');
}
else
{
LCDDAT(temp[i][4]+0x30);
}
temp[i][3]=GY[GYNUM].temperature[i]%10;
LCDDAT(temp[i][3]+0x30);
ZERO=0;
LCDRSFT(1);//右移一个字符
LCDFCOLOR(6);//设置前景色为黄色
temp[i][2]=GY[GYNUM].power[i]/100;
if(ZERO==0 && temp[i][2]==0)
{
LCDDAT(' ');
}
else
{
ZERO=1;
LCDDAT(temp[i][2]+0x30);
}
temp[i][1]=GY[GYNUM].power[i]%100/10;
if(ZERO==0 && temp[i][1]==0)
{
LCDDAT(' ');
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -