实例介绍
【实例截图】
【核心代码】
#include "STC15W4K61S4.h"
#include "stdio.h"
#include "string.h"
#include "intrins.h"
#include "main.h"
#include "config.h"
#include "24c128.h"
#include "24C128.h"
bit B_Defy; //是否修改过
bit B_Res; //单片机复位标志
bit Spr1,Spr2,Spr3;
bit First_Test;
bit B_Tongji;
bit B_Start;
bit B_Test_Start; //试验大于初始力值 开始进入试验
bit Mot_DIRB;
bit B_AD; //AD是否更新
bit B_Stop; //停机
bit B_Line;
bit B_FS; //是否大于过初始力值
#define IDC_S 7 //产品型号:7:撕拉力试验机 YYB-01
unsigned char ID_Address;
//主程序用到的变量
unsigned char Mode01,Mode02,Mode03;
unsigned char Mode05;
unsigned char Mode_ICO1,Mode_ICO2; //光标位置
unsigned char PRT_Mode; //打印模式
//用户登陆
long int xdata Coust; //系统现在用户
long int xdata CoustB; //查看界面试验人员用户
long int xdata Coustomer[2];
long int xdata Coust_sec[2];
long int xdata CoustomerB[10];
long int xdata Coust_secB[10];
long int xdata CoustomerC[10];
long int xdata Coust_secC[10];
//系统时间用变量
bit B_Time;
unsigned char idata tt0,tt1,tt2;
unsigned int xdata Time0;
unsigned int xdata Time1,Time2,Time3;
unsigned int xdata Time9; //试验计时
long int xdata Time_L0,Time_L1;
unsigned int xdata Time_Res;
unsigned int xdata Time_Mot;
unsigned int xdata Time_Set; //设定时间
unsigned int xdata T_Set; //设定时间
//AD 采样 标定 平均使用变量
long int xdata AD_02;
long int xdata AD_E2;
unsigned char AD_n2;
long int xdata AD2_BUF[20];
long int idata XX_AD0,XX_AD1;
long int idata YY_Dat0,YY_Dat1;
long int xdata YY_DY; //力值修正
long int xdata YY_Max; //保护力值
float idata KKK;
unsigned char Mode_Sensor; //传感器类型
long int xdata End00; //力值
long int xdata End01; //修正后力值 01 标定界面清零
long int xdata End02,End02B; //修正后力值 02 试验界面清零
long int xdata End02C; //反向力值
//位移
char idata CD_00,CD_01;
unsigned char idata CD_N00,CD_N01,CD_N02;
long int xdata CD_Vol0; //位移 脉冲个数
long int xdata CD_Vol1; //位移 mm
long int xdata CD_Vol2; //下一次记录数据
long int xdata CD_Vol3; //记录位置 回位时使用
long int xdata CD_Vol4; //记录位置 试验过程中过冲使用
long int xdata CD_Vol_SetA; //清零数据
long int xdata CD_Vol_SetB; //预置厚度
int xdata Vol_D[12]; //历史数据 最多用到10次
//曲线使用
int xdata Lin_Dat[1024];
unsigned int xdata Lin_N0,Lin_N1; //刷新点 存储点
long int xdata Ymax_Dat,Ymin_Dat; //记录间隔之间的最大值
long int xdata Lin_Yn,Lin_Xn; //Y方向最大值,如果大于这个数需要修改 MUL_Y;
int xdata MUL_Y;
//试验使用参数
unsigned char xdata Test_MM;
unsigned char xdata Mode_Test; //试验模试
long int xdata Test_N0; //试验编号
unsigned char xdata Test_Times; //试验次数
long int xdata Test_L; //试样厚度
long int xdata LL_00,LL_01; //位移
long int xdata LL_02; //拉伸长度
long int xdata LL_03; //记录点位置
long int xdata Set1_D[11][10]; //试验参数
long int xdata TestAD_N; //记录 AD 累积次数
float xdata TestAD_Sum; //记录 AD 累积和
unsigned char xdata Sample_Serial[16];
long int xdata Set_FF[5]; //针尖穿刺
unsigned char xdata Dat_Num; //定点剥离记录的点数
long int xdata Dat_EE[7]; //定点剥离记录
//试验结果
long int xdata End_Max,End_Min,End_Ave; //试验结果 最大值 最小值 平均值
long int xdata Test_End01; //伸长率
long int xdata Test_End02; //拉伸强度
long int xdata Test_End03; //伸长率
long int xdata Test_End04; //拉伸强度
long int xdata Test_End05; //针尖穿刺使用,位移
//查询使用变量
unsigned char xdata Time_Q[8];
unsigned int xdata Set_Q[6];
long int xdata Test_N0_Q;
//按键
bit B_Key;
unsigned char Key00,Key01,Key02;
long int idata Key_LN;
//蜂鸣器使用变量
unsigned char xdata SPK_Mode;
unsigned int xdata Time_SPK;
//串口 1 使用变量
unsigned char U1R_Mode,U1T_Mode;
unsigned char idata U1T_N0,U1T_N1;
unsigned char xdata R1_Data[30],T1_Data[250];
unsigned char U2R_Mode,U2T_Mode;
unsigned char idata U2R_N0,U2R_N1;
unsigned char idata U2T_N0,U2T_N1;
unsigned char xdata R2_Data[0x40],T2_Data[0x60];
unsigned char U3R_Mode,U3T_Mode;
unsigned char idata U3R_N0,U3R_N1;
unsigned char idata U3T_N0,U3T_N1;
unsigned char xdata R3_Data[0x40],T3_Data[0x40];
//电机使用变量
bit B_MOT_RG; //标示 电机速度需要更新
bit B_L0; //标示 L0_Data 可以使用
bit B_JL; //标示 按位移停机
unsigned char xdata Mode_Mot;
long int xdata Set_Speed; //暂定为 1——500 mm/S 可调
long int xdata Set_Speed0; //暂定为 1——500 mm/S 可调
unsigned char idata LL0_1,LL0_2,LL0_3;
unsigned long int xdata L0_Data; //脉冲计数 一直
unsigned long int xdata L1_Data; //脉冲计数
//时钟相关变量
unsigned char xdata Time[10];
//常用变量
unsigned char idata CC1,CC2,CC3,CC4;
unsigned int xdata II1,II2,II3;
int xdata SI1,SI2,SI3;
unsigned long int xdata LL1,LL2;
long int xdata SL1,SL2;
float xdata FF1,FF2;
union F_L_C xdata UFL1,UFL2;
unsigned long int xdata sec;
unsigned long int xdata sec2;
unsigned char code *cptr;
#define ID_ADDR_ROM 0Xf3f9
unsigned int xdata CN_CON_ADD; //通信 eeprom 地址
void main(void)
{
Initilaztion();//程序初始化
DelayMs(300); //延时启动液晶屏
for(II1=0;II1<513;II1 )
Lin_Dat[II1] = II1%20;
Coust = 0xffffff; //初始化后 变为 0xFFFF
if((Coustomer[0]==1)&&(Coust_sec[0]==123456)) //如果管理员没有修改密码则用户 0 密码 0可进入
{
Coust = 1;
U1T_Mode = 0x85;
}
//程序主循环
Mode01 = 0;
Mode02 = 0;
while(1)
{
TR_Time();
if(B_Key)
TR_Key();
if(Spr1)
TR_Display();
if(B_Time)
TR_Test();
if(B_Time)
TR_Mot();
if(B_Time)
TR_AD();
if((B_Time)&&(!Busy))
TR_Print(); //打印处理
if(U1R_Mode==0x7a)
TR_U1();
if((B_Time)&&(U1T_Mode))
Send_U1(U1T_Mode);
//位移处理
if(CD_N00!=CD_N01)
{
CD_N02 = CD_N00-CD_N01;
if(CD_N02<128) //上升
{
CD_N01 = CD_N02;
CD_Vol0 = CD_N02;
}
else
{
CD_N02 = CD_N01-CD_N00;
CD_N01 -= CD_N02;
CD_Vol0 -= CD_N02;
}
CD_Vol1 = CD_Vol0/4;
if(CD_Vol1!=CD_Vol2)
{
if(Mode_Test==0x0D)
{
SL1 = CD_Vol1-CD_Vol2;
CD_Vol2 = SL1;
}
else if((Test_MM==3)||(Test_MM==4)||(Test_MM==7)||(Test_MM==8)||(Test_MM==9))
{
SL1 = CD_Vol2-CD_Vol1;
CD_Vol2 -= SL1;
}
else
{
SL1 = CD_Vol1-CD_Vol2;
CD_Vol2 = SL1;
}
LL_00 = SL1;
}
}
if((U1R_Mode==0x88)|(U1R_Mode==0x89)) //向 STC15F2K32S2 写入程序
{
ES = 0;
break;
}
B_Time = 0;
}
EA = 0;
//向 STC15F2K32S2 写入程序
while(0)
{
P31 = P00;
P01 = P30;
if(U1R_Mode==0x89)
break;
}
//与液晶屏透传通信
while(1)
{
P31 = P10;
P11 = P30;
if(U2R_Mode==1) //接收到液晶按键 单片机复位
{
U2R_Mode = 0;
U2R_N0 = 0;
if((R2_Data[9]==0x14)|(R2_Data[9]==0x15))
IAP_CONTR = 0x20;
}
}
}
void Initilaztion(void) //程序初始化
{
P0M0 = 0x00;
P0M1 = 0x00;
P2M0 = 0X00;
P2M1 = 0X00;
P4M0 = 0X00;
P4M1 = 0X00;
P6M0 = 0X00;
P6M1 = 0X00;
P7M0 = 0X00;
P7M1 = 0X00;
//选择通道
P61 = 0;
P62 = 1;
ID_Address = 1;
B_Res = 0;
B_Tongji = 0;
B_Start = 0;
//开AD转换
CS_Clk1 = 0;
CS_Clk2 = 0;
//
CD_00 = CD_01 = 0;
CD_N00 = CD_N01 = CD_N02 = 0;
CD_Vol0 = CD_Vol1 = CD_Vol2 = 0;
B_Time = 0;
tt0 = tt1 = tt2 = 0;
Time0 = 0;
Time1 = Time2 = Time3 = 0;
Time_L0 = Time_L1 = 0;
Mode01 = Mode02 = Mode03 = 0;
Mode_Mot = 0x00;
Mode_Test = 0x00;
PRT_Mode = 0;
LL_00 = LL_01 = LL_02 = LL_03 = 0;
LL0_1 = LL0_2 = LL0_3 = 0;
L1_Data = 0;
B_MOT_RG = 0;
B_JL = 0;
B_L0 = 0;
U2T_Mode = 1;
U1R_Mode = 0;
U1T_Mode = 0;
U1T_N0 = 0;
U1T_N1 = 0;
Timer0Init();
UartInit();
Read_Set(); //读出试验编号 读出试验参数
Read_Set2(); //读出用户名 密码数据
Read_CAL(); //读出标定数据
Test_MM = Read24c128(0x02);
if((Test_MM<1)||(Test_MM>10))
{
Test_MM = 1;
Write24c128(Test_MM,0x0002);
}
DelayMs(500);
ES = 1; //串口 1 中断
IE2 |= 0x01; //串口 2 中断
IE2 |= 0x08; //串口 3 中断
EX0 = 1; //开外部 0 中断
EX1 = 1; //开外部 1 中断
ET0 = 1; //开定时器 0 中断
EA = 1; //开总中断允许
}
void TR_Time(void)
{
if(tt1!=tt0)
{
B_Time = 1;
tt2 = tt0-tt1;
tt1 = tt2;
Time0 = tt2;
Time_L0 = tt2;
if(Time0-Time1>=200)
{
Time1 = Time0;
Spr1 = 1;
}
if(Time0-Time2>=500)
{
Time2 = Time0;
// ES = 0;
// TI = 1;
// printf("CD_Vol0 = %ld;\n",CD_Vol0);
// printf("CD_Vol1 = %ld;\n",CD_Vol1);
// TI = 0;
// ES = 1;
// SBUF = Mode_Test;
}
if(Mode01==1) //如果在试验界面
{
}
//按键采集
if(U2R_Mode==1)
{
U2R_Mode = 0;
U2R_N0 = 0;
if(R2_Data[4]==0x83) //液晶屏数据存储器应答
{
//按键动作
if((R2_Data[5]==0x00)&&(R2_Data[6]==0x00)&&(R2_Data[7]==0x01)&&(R2_Data[8]==0x00))//
{
B_Key = 1;
Key01 = R2_Data[9];
}
else if((R2_Data[5]==0x02)&&(R2_Data[6]==0x20)) //序列号输入
{
if((Mode_Test==0)||(Mode_Test>0xf0))
{
Mode_Test = 0;
End01 = 0;
End02 = 0;
Test_End01 = 0;
Test_End02 = 0;
Test_End03 = 0;
Test_End04 = 0;
CC2 = 8;
for(CC1=0;CC1<14;CC1 )
Sample_Serial[CC1] = R2_Data[CC2 ];
B_Key = 1;
Key01 = 0xc0;
}
}
else if((R2_Data[5]==0x02)&&((R2_Data[7]==0x01)|(R2_Data[7]==0x02))) //数据输入数据返回
{
B_Key = 1;
Key01 = 0xa0 R2_Data[6];
Key_LN = R2_Data[8]*0x100 R2_Data[9];
if(R2_Data[7]==0x02)
{
SL1 = R2_Data[10]*0x100 R2_Data[11];
Key_LN = Key_LN*0x10000 SL1;
}
}
else
{
// for(CC1=0;CC1<10;CC1 )
// {
// SBUF = R2_Data[CC1];
// DelayMs(1);
// }
}
}
}
//发送开机帧
if(B_Start==0)
{
if(Time0>=2000)
{
B_Start = 1;
Send_U1(1);
}
}
//单片机复位
if(B_Res)
{
if(Time_Res==0)
{
Time_Res = Time0;
if(Time_Res==0)
Time_Res ;
}
else
{
if(Time0-Time_Res>200)
IAP_CONTR = 0x60;
}
}
}
}
void TR_Key(void) //按键
{
// SBUF = Key01;
B_Key = 0;
Spr1 = 1; //有过按键动作后马上刷新
if(Key01==0x05) //返回 一键返回欢迎界面
{
Read_Set();
Read_Set2();
Read_CAL();
Mode_Mot = 0;
Mode_Test = 0;
if(Mode01==1)
{
B_Defy = 0;
Mode01 = 6;
Mode02 = 0;
}
else if(Mode01==5)
{
Mode01 = 3;
Mode02 = 0;
}
else if(Mode01==6)
{
Mode01 = 0;
Mode02 = 0;
Mode_Sensor = Read24c128(0x000e);
Read_CAL(); //传感器重新读取标定数据,转为力值传感器
}
else if((Mode01==7)||(Mode01==9))
{
Mode01 = 1;
Mode02 = 0;
}
else if(Mode01==8)
{
Mode01 = 3;
Mode02 = 0;
Mode_Sensor = Read24c128(0x000e);
Read_CAL(); //传感器重新读取标定数据,转为力值传感器
}
else if(Mode01==21)
{
Mode01 = 20;
Mode02 = 0;
}
else
{
Mode01 = 0x00;
Mode02 = 0x00;
}
Sample_Serial[0] = 0xff;
}
else if(Mode01==0) //待机界面
{
if(Key01==0x0f) //公司标志
Coust = 0xffffff;
if(Coust<0xffffff)
{
if(Key01==0x11) //进入试验界面
{
B_Defy = 0;
Mode01 = 0x06; //进入试验界面
Mode02 = 0x00;
}
else if(Key01==0x12) //进入查看界面
{
//用户权限判断
CC4 = 0;
if(Coust==Coustomer[0])
CC4 ;
for(CC1=0;CC1<10;CC1 )
{
if(Coust==CoustomerB[CC1])
{
CC4 ;
break;
}
}
if(CC4!=0) //用户权限判断
{
Mode01 = 0x02; //进入查看界面
Mode02 = 0x00;
Test_N0_Q = Test_N0;
}
}
else if((Key01==0x13)&&(Coust==1))//进入设置界面
{
if(Coust==1)
{
B_Defy = 0;
Mode01 = 0x03; //进入设置界面
Mode02 = 0x00;
}
}
else if(Key01==0x15) //进入关于界面
{
Mode01 = 0x04; //进入关于界面
Mode02 = 0x00;
}
}
else
{
Mode01 = 20;
Mode02 = 0;
}
Sample_Serial[0] = 0xff;
}
else if(Mode01==1) //试验界面
{
if(Key01==0x11) //试验
{
//按下一次设定键 更新一次时间
Spr2 = 1;
U2T_Mode = 2;
Mot_DIRB = 0;
Mode_Test = 1;
U1T_Mode = 10; //试验开始 接着发送试验参数 然后再发送试验数据
}
else if(Key01==0x12) //上升
{
if(Mode_Test==0xfa)
{
Mode_Test = 0x00;
}
if(Mode_Test==0)
{
if(Mode_Mot==0)
{
Mot_DIRB = 0;
Set_Speed = 50;
Mode_Mot = 1;
}
else if(Mot_DIRB==0) //方向正确 加速
{
if(Set_Speed<1000)
{
Mot_DIRB = 0;
Set_Speed *= 2;
if(Set_Speed>1000)
Set_Speed = 1000;
Mode_Mot = 1;
}
}
}
}
else if(Key01==0x13) //下降
{
if(Mode_Test==0xfa)
{
Mode_Test = 0x00;
}
if(Mode_Test==0)
{
if(Mode_Mot==0)
{
Mot_DIRB = 1;
Set_Speed = 50;
Mode_Mot = 1;
}
else if(Mot_DIRB==1) //方向正确
{
if(Set_Speed<1000)
{
Mot_DIRB = 1;
Set_Speed *= 2;
if(Set_Speed>1000)
Set_Speed = 1000;
Mode_Mot = 1;
}
}
}
}
else if(Key01==0x14) //停止
{
Mode_Test = 0;
Mode_Mot = 0;
}
else if(Key01==0x05) //确定
{
//按下一次设定键 更新一次时间
Spr2 = 1;
U2T_Mode = 2;
if((Mode_Test==0)|(Mode_Test==2)) //待机
{
Mode_Test = 1;
Test_Times = 0;
}
if(Test_Times<10) //小于10次才记录,大于10次时自动丢弃
{
Test_Times ;
End00 = CD_Vol2;
Vol_D[Test_Times] = End00;
End01 = CD_Vol2;
if(Test_Times==1)
{
End_Max = End01;
End_Min = End01;
}
else
{
if(End_Max<End01)
End_Max = End01;
if(End_Min>End01)
End_Min = End01;
}
End_Ave = 0;
}
}
else if(Key01==0x15) //试验参数设置
{
CC4 = 0;
if(Coust==Coustomer[0])
CC4 ;
for(CC1=0;CC1<10;CC1 )
{
if(Coust==CoustomerB[CC1])
{
CC4 ;
break;
}
}
if (CC4!=0)
{
Mode_Mot = 0;
Mode_Test = 0;
Mode01 = 7;
Mode02 = 0;
if(Test_MM==4)
{
Mode01 = 9;
}
}
}
else if(Key01==0x14) //统计
{
Mode_Test = 2;
End_Ave = 0;
for(CC1=1;CC1<=Test_Times;CC1 )
{
End_Ave = Vol_D[CC1];
}
End_Ave /= Test_Times;
//下面将试验数据写入存储器
Write_Test();
Read_Set();
}
else if(Key01==0x16) //打印
{
if((PRT_Mode==0)&&(Mode_Test>0xf8))
{
PRT_Mode = 1;
}
}
else if(Key01==0x21) //位移清零
{
Mode_Test = 0;
LL_00 = 0;
}
else if(Key01==0x22) //力值清零
{
Mode_Test = 0;
End02B = End01;
}
else if((Key01==0xa1)&&(Coust==1)) //试验编号
{
if((Mode_Test==0)|(Mode_Test==0xfa))
{
Mode_Test = 0;
Mode02 = 0; //清空曲线
Test_End01 = 0;
Test_End02 = 0;
Test_End03 = 0;
Test_End04 = 0;
if(Key01>99999999)
Key01 = 99999999;
else if(Key_LN<1)
Key_LN = 1;
Test_N0 = Key_LN-1;
II1 = 0x0008;
UFL1.SL = Test_N0;
CC3 = 0;
Write24c128(UFL1.UC[CC3 ],II1 );
Write24c128(UFL1.UC[CC3 ],II1 );
Write24c128(UFL1.UC[CC3 ],II1 );
Write24c128(UFL1.UC[CC3 ],II1 );
}
}
else if(Key01==0xa2) //设定速度
{
CC4 = 0;
if(Coust==Coustomer[0])
CC4 ;
for(CC1=0;CC1<10;CC1 )
{
if(Coust==CoustomerB[CC1])
{
CC4 ;
break;
}
}
if(CC4!=0)
{
if(Key_LN>1000)
Key_LN = 1000;
else if(Key_LN<1)
Key_LN = 1;
Set1_D[Test_MM][0] = Key_LN;
SL1 = Key_LN;
Write_Set_SG(0);
}
}
else if(Key01==0xa3) //设定长度
{
CC4 = 0;
if(Coust==Coustomer[0])
CC4 ;
for(CC1=0;CC1<10;CC1 )
{
if(Coust==CoustomerB[CC1])
{
CC4 ;
break;
}
}
if(CC4!=0)
{
if(Key_LN>100000)
Key_LN = 100000;
else if(Key_LN<1)
Key_LN = 1;
Set1_D[Test_MM][1] = Key_LN;
SL1 = Key_LN;
Write_Set_SG(1);
// if(Test_MM==5)
// {
// SL1 /= 2;
// Set1_D[Test_MM][2] = SL1;
// Write_Set_SG(2);
// }
}
}
else if(Key01==0xa4) //设定宽度
{
CC4 = 0;
if(Coust==Coustomer[0])
CC4 ;
for(CC1=0;CC1<10;CC1 )
{
if(Coust==CoustomerB[CC1])
{
CC4 ;
break;
}
}
if(CC4!=0)
{
if(Key_LN>100000)
Key_LN = 100000;
else if(Key_LN<1)
Key_LN = 1;
Set1_D[Test_MM][2] = Key_LN;
SL1 = Key_LN;
Write_Set_SG(2);
}
}
else if(Key01==0xa5) //设定厚度
{
if(Coust==Coustomer[0])
CC4 ;
for(CC1=0;CC1<10;CC1 )
{
if(Coust==CoustomerB[CC1])
{
CC4 ;
break;
}
}
if(CC4!=0)
{
if(Key_LN>100000)
Key_LN = 100000;
else if(Key_LN<1)
Key_LN = 1;
Set1_D[Test_MM][3] = Key_LN;
SL1 = Key_LN;
Write_Set_SG(3);
}
}
}
else if(Mode01==2) //查看界面
{
if(Key01==0x11) //打印
{
if(PRT_Mode==0)
{
PRT_Mode = 1;
}
}
else if(Key01==0x12) //加
{
if(Test_N0_Q<Test_N0)
{
Test_N0_Q ;
Mode02 = 0;
// Read_Test(Test_N0_Q);
}
}
else if(Key01==0x13) //减
{
if((Test_N0_Q>Test_N0-400)&&(Test_N0_Q>1))
{
Test_N0_Q--;
Mode02 = 0;
// Read_Test(Test_N0_Q);
}
}
else if(Key01==0xa0) //设置试验编号
{
if((Key_LN<=Test_N0)&&(Key_LN>Test_N0-400))
{
Test_N0_Q = Key_LN;
Mode02 = 0;
// Read_Test(Test_N0_Q);
}
}
}
else if(Mode01==3) //设置界面
{
if(Key01==0x11) //保存 确定
{
if(B_Defy)
{
B_Defy = 0;
Write24c128(Mode_Sensor,0x000e);
Write_CAL();
Read_CAL();
}
}
else if(Key01==0x12) //修改传感器类型
{
B_Defy = 1;
if(Mode_Sensor<6)
Mode_Sensor ;
else
Mode_Sensor = 0;
Read_CAL();
}
else if(Key01==0xa0) //标定密码
{
if(Key_LN==5513)
{
Mode_Sensor = Read24c128(0x000e);
Read_CAL(); //传感器重新读取标定数据,转为力值传感器
Mode01 = 5;
Mode02 = 0;
}
else if(Key_LN==5514) //进入气压标定
{
Mode_Sensor = 7;
Read_CAL();
Mode01 = 8;
Mode02 = 0;
}
}
}
else if(Mode01==4) //关于界面
{
if(Key01==0x11) //确定键 打印联系方式
{
if(PRT_Mode==0)
PRT_Mode = 1;
}
}
else if(Mode01==5) //标定界面
{
if(Key01==0x11) //保存 确定
{
Write24c128(Mode_Sensor,0x000e);
Write_CAL();
CC3 = Test_MM;
for(CC4=1;CC4<10;CC4 )
{
Test_MM = CC4;
SL1 = YY_Max;
Write_Set_SG(5);
}
Test_MM = CC3;
Read_CAL();
Read_Set();
}
else if(Key01==0x12) //修改传感器类型
{
if(Mode_Sensor<6)
Mode_Sensor ;
else
Mode_Sensor = 0;
Read_CAL();
}
else if(Key01==0xa1) //力值修正
{
YY_DY = Key_LN;
}
else if(Key01==0xa2) //力值保护
{
YY_Max = Key_LN;
}
else if(Key01==0xa3) //零点标定
{
XX_AD0 = AD_E2;
YY_Dat0 = Key_LN;
FF1 = XX_AD1-XX_AD0;
FF2 = YY_Dat1-YY_Dat0;
KKK = FF2/FF1;
}
else if(Key01==0xa4) //终点标定
{
XX_AD1 = AD_E2;
YY_Dat1 = Key_LN;
FF1 = XX_AD1-XX_AD0;
FF2 = YY_Dat1-YY_Dat0;
KKK = FF2/FF1;
}
}
else if(Mode01==6) //项目选择界面
{
if(Key01==0x11) //确定键 进入试验界面
{
Mode01 = 1;
Mode02 = 0;
CD_Vol2 = CD_Vol1;
LL_00 = 0;
LL_02 = 0;
if(Test_MM==8)
End02B = 0;
else
End02B = End01;
End02 = 0;
Test_End01 = 0;
Test_End02 = 0;
Test_End03 = 0;
Test_End04 = 0;
Lin_Xn = 1;
Lin_Yn = 0;
if(B_Defy) //写入选择的试验模式
Write24c128(Test_MM,0x0002);
Read_Set();
if(Test_MM==8)
Mode_Sensor = 7;
else
Mode_Sensor = Read24c128(0x000e);
Read_CAL();
Sample_Serial[0] = 0xff;
}
// else if(Key01==0x18) //屏蔽这个试验项目
// {
// }
else if((Key01>0x11)&&(Key01<0x1c))
{
B_Defy = 1;
Test_MM = Key01-0x11;
Mode01 = 6;
Mode02 = 0;
}
}
else if(Mode01==7) //试验参数设置界面
{
if(Key01==0x11) //
{
Read_Set();
}
else if(Key01==0x12) //
{
Set1_D[Test_MM][8] = 1;
SL1 = 1;
Write_Set_SG(8);
Mode02 = 0;
}
else if(Key01==0x13) //
{
Set1_D[Test_MM][8] = 0;
SL1 = 0;
Write_Set_SG(8);
Mode02 = 0;
}
else if(Key01>=0xa1) //标定密码
{
if(Key01==0xa3)
{
if(Key_LN>99)
Key_LN = 99;
}
else if(Key01==0xa4)
{
if(Key_LN>1000)
Key_LN = 1000;
}
else
{
if(Key_LN>999999)
Key_LN = 999999;
}
if(Key_LN<0)
Key_LN = 0;
CC3 = Key01-0xa0 3;
Set1_D[Test_MM][CC3] = Key_LN;
SL1 = Key_LN;
Write_Set_SG(CC3);
}
}
else if(Mode01==8) //标定界面
{
if(Key01==0x11) //保存 确定
{
Write_CAL();
CC3 = Test_MM;
for(CC4=1;CC4<10;CC4 )
{
Test_MM = CC4;
SL1 = YY_Max;
Write_Set_SG(5);
}
Test_MM = CC3;
Read_CAL();
Read_Set();
}
else if(Key01==0xa1) //压力修正
{
YY_DY = Key_LN;
}
else if(Key01==0xa2) //压力保护
{
YY_Max = Key_LN;
}
else if(Key01==0xa3) //零点标定
{
XX_AD0 = AD_E2;
YY_Dat0 = Key_LN;
FF1 = XX_AD1-XX_AD0;
FF2 = YY_Dat1-YY_Dat0;
KKK = FF2/FF1;
}
else if(Key01==0xa4) //终点标定
{
XX_AD1 = AD_E2;
YY_Dat1 = Key_LN;
FF1 = XX_AD1-XX_AD0;
FF2 = YY_Dat1-YY_Dat0;
KKK = FF2/FF1;
}
}
else if(Mode01==9) //输液针穿刺力 试验参数设置界面
{
if(Key01==0x11) //保存
{
if(B_Defy)
{
B_Defy = 0;
II1 = 0X00D0;
for(CC1=0;CC1<4;CC1 )
{
UFL1.SL = Set_FF[CC1];
CC3 = 2;
Write24c128(UFL1.UC[CC3 ],II1 );
Write24c128(UFL1.UC[CC3 ],II1 );
}
}
Read_Set();
}
else if(Key01==0x12) //自动回位
{
Set1_D[Test_MM][8] = 1;
SL1 = 1;
Write_Set_SG(8);
Mode02 = 0;
}
else if(Key01==0x13) //不自动回位
{
Set1_D[Test_MM][8] = 0;
SL1 = 0;
Write_Set_SG(8);
Mode02 = 0;
}
else if(Key01>=0xa5) //
{
B_Defy = 1;
if(Key_LN>30000)
{
Key_LN = 30000;
}
else if(Key_LN<1)
Key_LN = 1;
CC3 = Key01-0xa5;
Set_FF[CC3] = Key_LN;
}
else if(Key01>=0xa1) //
{
if(Key01==0xa3)
{
if(Key_LN>999999)
Key_LN = 999999;
}
else if(Key01==0xa4)
{
if(Key_LN>1000)
Key_LN = 1000;
}
else
{
if(Key_LN>999999)
Key_LN = 999999;
}
if(Key_LN<1)
Key_LN = 1;
CC3 = Key01-0xa0 3;
Set1_D[Test_MM][CC3] = Key_LN;
SL1 = Key_LN;
Write_Set_SG(CC3);
}
}
else if(Mode01==20) //用户登陆界面
{
if(Key01<0x20)
{
CC1 = 0; //如果密码验正合格,则CC1 != 0;
if((sec==0)&&(sec2==0)&&(Coust_sec[0]==123456)) //如果管理员没有修改密码则用户 0 密码 0可进入
{
CC1 ;
sec = 1;
}
else if(sec==0) //超级管理员,
{
if(sec2==741852)
{
sec = 1;
CC1 ;
}
}
else if((sec==Coustomer[0])&&(sec2==Coust_sec[0])) //管理员
{
CC1 ;
}
else //二 三级用户
{
for(CC2=0;CC2<10;CC2 ) //二级用户
{
if((sec==CoustomerB[CC2])&&(sec2==Coust_secB[CC2]))
{
CC1 ;
break;
}
}
for(CC2=0;CC2<10;CC2 ) //三级用户
{
if((sec==CoustomerC[CC2])&&(sec2==Coust_secC[CC2]))
{
CC1 ;
break;
}
}
}
if(CC1!=0)
{
Coust = sec;
if((Key01==0x11)&&((sec==0)|(sec==1)))//进入用户管理界面
{
Mode01 = 21;
Mode02 = 0;
}
else if(Key01==0x12)
{
U1T_Mode = 0x85; //发送登陆成功命令
Mode01 = 0;
Mode02 = 0;
}
}
}
else if(Key01==0xa1)
{
Key_LN %= 100000;
sec = Key_LN;
}
else if(Key01==0xa2)
{
Key_LN %= 1000000;
sec2 = Key_LN;
}
}
else if(Mode01==21) //用户管理界面
{
if(Key01==0x11)
{
W_Set2();
}
else if(Key01==0x12)
{
Read_Set2();
sec = 0;
Mode01 = 20;
Mode02 = 0;
}
else if(Key01==0x21) //二级用户设置
{
Mode01 = 22;
Mode02 = 0;
}
else if(Key01==0x22) //三级用户设置
{
Mode01 = 23;
Mode02 = 0;
}
else if(Key01==0xa1)
{
Key_LN %= 1000000;
Coust_sec[0] = Key_LN;
}
else if(Key01==0xa2)
{
Coustomer[0] = 1;
}
}
else if(Mode01==22) //二级 用户管理界面
{
if(Key01==0x11)
{
W_Set2();
}
else if(Key01==0x12)
{
Read_Set2();
sec = 0;
Mode01 = 21;
Mode02 = 0;
}
else if((Key01<0x2B)&&(Key01>0x20)) //删除
{
CC1 = Key01-0x21;
CoustomerB[CC1] = 0;
Coust_secB[CC1] = 0;
}
else if((Key01<0xB5)&&(Key01>0x9f)) //输入
{
Key01 -= 0xa1;
if(Key01%2==0) //用户名
{
Key_LN %= 100000;
CC4 = 0;
if(Key_LN==Coustomer[0])
{
CC4 ;
}
for(CC1=0;CC1<10;CC1 ) //判断是否有用户名重复
{
if(Key_LN==CoustomerB[CC1])
{
CC4 ;
break;
}
}
for(CC1=0;CC1<10;CC1 ) //判断是否有用户名重复
{
if(Key_LN==CoustomerC[CC1])
{
CC4 ;
break;
}
}
if(CC4==0)
CoustomerB[Key01/2] = Key_LN;
}
else //密码
{
Key_LN %= 1000000;
sec2 = Key_LN;
if(CoustomerB[Key01/2]==0)
Coust_secB[Key01/2] = 0;
else
Coust_secB[Key01/2] = sec2;//Key_N1*0x10000 Key_N2;
}
}
}
else if(Mode01==23) //三级 用户管理界面
{
if(Key01==0x11)
{
W_Set2();
}
else if(Key01==0x12)
{
Read_Set2();
sec = 0;
Mode01 = 21;
Mode02 = 0;
}
else if((Key01<0x2B)&&(Key01>0x20)) //删除
{
CC1 = Key01-0x21;
CoustomerC[CC1] = 0;
Coust_secC[CC1] = 0;
}
else if((Key01<0xB5)&&(Key01>0x9f)) //输入
{
Key01 -= 0xa1;
if(Key01%2==0) //用户名
{
Key_LN %= 100000;
CC4 = 0;
if(Key_LN==Coustomer[0])
{
CC4 ;
}
for(CC1=0;CC1<10;CC1 ) //判断是否有用户名重复
{
if(Key_LN==CoustomerB[CC1])
{
CC4 ;
break;
}
}
for(CC1=0;CC1<10;CC1 ) //判断是否有用户名重复
{
if(Key_LN==CoustomerC[CC1])
{
CC4 ;
break;
}
}
if(CC4==0)
CoustomerC[Key01/2] = Key_LN;
}
else //密码
{
Key_LN %= 1000000;
sec2 = Key_LN;
if(CoustomerC[Key01/2]==0)
Coust_secC[Key01/2] = 0;
else
Coust_secC[Key01/2] = sec2;//Key_N1*0x10000 Key_N2;
}
}
}
}
void TR_Display(void) //显示处理 串口 2 处理函数
{
unsigned char *pt1;
if((U2T_N1<U2T_N0)|(U2T_N1==0)) //只有通信完成时才能进行下一条指令
{
// SBUF = Mode_Test;
U2T_N1 = 0x00;
if((U2T_Mode==1)&&(Spr1==1)) //正常界面通信
{
Spr1 = 0;
if(Mode01==0) //待机界面
{
if(Mode02==0)
{
//A5 5A 04 80 03 00 00
CC1 = 0x00;
T2_Data[CC1 ] = 0xa5;
T2_Data[CC1 ] = 0x5a;
T2_Data[CC1 ] = 0x04;
T2_Data[CC1 ] = 0x80;
T2_Data[CC1 ] = 0x03;
T2_Data[CC1 ] = 0x00;
T2_Data[CC1 ] = 0x00;
U2T_N1 = 0x07;
// Mode02 ;
// Mode01 = 6;
}
else
{
CC1 = 0x00;
T2_Data[CC1 ] = 0xa5;
T2_Data[CC1 ] = 0x5a;
T2_Data[CC1 ] = 5;
T2_Data[CC1 ] = 0x82;
T2_Data[CC1 ] = 0x00;
T2_Data[CC1 ] = 0x00;
T2_Data[CC1 ] = 0x00;
T2_Data[CC1 ] = 0x00;
U2T_N1 = 0x08;
}
if(B_Start==0)
{
if(Time0>=2000)
{
B_Start = 1;
Send_U1(1);
}
}
}
else if(Mode01==1) //试验界面
{
if(Mode02==0x15)
Mode02 = 1;
else if((Mode02==1)&&(Mode_Test!=0))
{
if(Lin_Xn<5)
{
if(Lin_N1-Lin_N0>3)
Mode02 = 0x15; //绘制曲线
else if(B_Line)
Mode02 = 0x15; //绘制曲线
}
else
{
if(Lin_N1>Lin_N0)
Mode02 = 0x15; //绘制曲线
}
B_Line = 0;
}
if(Mode02==0) //界面初始化
{
//A5 5A 04 80 03 00 01
CC1 = 0x00;
T2_Data[CC1 ] = 0xa5;
T2_Data[CC1 ] = 0x5a;
T2_Data[CC1 ] = 0x04;
T2_Data[CC1 ] = 0x80;
T2_Data[CC1 ] = 0x03;
T2_Data[CC1 ] = 0x00;
T2_Data[CC1 ] = 40 Test_MM;
T2_Data[2] = CC1-3;
U2T_N1 = CC1;
Mode02 = 0x11;
Mode_Test = 0; //待机界面
Test_Times = 0; //试验次数
for(CC1=0;CC1<12;CC1 )
Vol_D[CC1] = 0;
End_Max = 0;
End_Min = 0;
End_Ave = 0;
End02 = 0;
Set_Speed = 100;
}
else if(Mode02==1) //刷新显示数据
{
//A5 5A 04 80 03 00 01
CC1 = 0x00;
T2_Data[CC1 ] = 0xa5;
T2_Data[CC1 ] = 0x5a;
T2_Data[CC1 ] = 33;
T2_Data[CC1 ] = 0x82;
T2_Data[CC1 ] = 0x01;
T2_Data[CC1 ] = 0x00;
//试验编号
if(Mode_Test<0XF8) //测试中
UFL1.SL = Test_N0 1;
else if(Mode_Test>0XF8) //测试完,统计完,显示统计结果
UFL1.SL = Test_N0;
UFL1.SL = 100000000;
CC2 = 0;
T2_Data[CC1 ] = UFL1.UC[CC2 ];
T2_Data[CC1 ] = UFL1.UC[CC2 ];
T2_Data[CC1 ] = UFL1.UC[CC2 ];
T2_Data[CC1 ] = UFL1.UC[CC2 ];
//实时数据 速度
if(Mode_Test<0xf0)
{
//实时力值
if(Mode_Test==0x0d)
UFL1.SL = End02;
else if((Test_MM==3)||(Test_MM==4)||(Test_MM==7)||(Test_MM==8)||(Test_MM==9))
UFL1.SL = End02C;
else
UFL1.SL = End02;
CC2 = 0;
T2_Data[CC1 ] = UFL1.UC[CC2 ];
T2_Data[CC1 ] = UFL1.UC[CC2 ];
T2_Data[CC1 ] = UFL1.UC[CC2 ];
T2_Data[CC1 ] = UFL1.UC[CC2 ];
//实时位移
UFL1.SL = LL_00;
CC2 = 0;
T2_Data[CC1 ] = UFL1.UC[CC2 ];
T2_Data[CC1 ] = UFL1.UC[CC2 ];
T2_Data[CC1 ] = UFL1.UC[CC2 ];
T2_Data[CC1 ] = UFL1.UC[CC2 ];
}
else
{
//结果;最大力值
UFL1.SL = End_Max;
CC2 = 0;
T2_Data[CC1 ] = UFL1.UC[CC2 ];
T2_Data[CC1 ] = UFL1.UC[CC2 ];
T2_Data[CC1 ] = UFL1.UC[CC2 ];
T2_Data[CC1 ] = UFL1.UC[CC2 ];
//结果:试验位移
UFL1.SL = LL_02;
CC2 = 0;
T2_Data[CC1 ] = UFL1.UC[CC2 ];
T2_Data[CC1 ] = UFL1.UC[CC2 ];
T2_Data[CC1 ] = UFL1.UC[CC2 ];
T2_Data[CC1 ] = UFL1.UC[CC2 ];
}
//试验速度
UFL1.SL = Set1_D[Test_MM][0];
CC2 = 0;
T2_Data[CC1 ] = UFL1.UC[CC2 ];
T2_Data[CC1 ] = UFL1.UC[CC2 ];
T2_Data[CC1 ] = UFL1.UC[CC2 ];
T2_Data[CC1 ] = UFL1.UC[CC2 ];
//设置的参数
//长度 6:设定保压压协和
UFL1.SL = Set1_D[Test_MM][1];
CC2 = 0;
T2_Data[CC1 ] = UFL1.UC[CC2 ];
T2_Data[CC1 ] = UFL1.UC[CC2 ];
T2_Data[CC1 ] = UFL1.UC[CC2 ];
T2_Data[CC1 ] = UFL1.UC[CC2 ];
//宽度 6:设定保压时间
UFL1.SL = Set1_D[Test_MM][2];
CC2 = 0;
T2_Data[CC1 ] = UFL1.UC[CC2 ];
T2_Data[CC1 ] = UFL1.UC[CC2 ];
T2_Data[CC1 ] = UFL1.UC[CC2 ];
T2_Data[CC1 ] = UFL1.UC[CC2 ];
//厚度 0x10C;
if((Test_MM==4)||(Test_MM==7))
UFL1.SL = Test_End04;
else
UFL1.SL = Set1_D[Test_MM][3];
CC2 = 0;
T2_Data[CC1 ] = UFL1.UC[CC2 ];
T2_Data[CC1 ] = UFL1.UC[CC2 ];
T2_Data[CC1 ] = UFL1.UC[CC2 ];
T2_Data[CC1 ] = UFL1.UC[CC2 ];
//试验结果
if(1)//Test_MM==1)
{
//伸长率 0x110
UFL1.SL = Test_End01;
CC2 = 0;
T2_Data[CC1 ] = UFL1.UC[CC2 ];
T2_Data[CC1 ] = UFL1.UC[CC2 ];
T2_Data[CC1 ] = UFL1.UC[CC2 ];
T2_Data[CC1 ] = UFL1.UC[CC2 ];
//拉伸强度
UFL1.SL = Test_End02;
CC2 = 0;
T2_Data[CC1 ] = UFL1.UC[CC2 ];
T2_Data[CC1 ] = UFL1.UC[CC2 ];
T2_Data[CC1 ] = UFL1.UC[CC2 ];
T2_Data[CC1 ] = UFL1.UC[CC2 ];
//变形量
UFL1.SL = Test_End03;
CC2 = 0;
T2_Data[CC1 ] = UFL1.UC[CC2 ];
T2_Data[CC1 ] = UFL1.UC[CC2 ];
T2_Data[CC1 ] = UFL1.UC[CC2 ];
T2_Data[CC1 ] = UFL1.UC[CC2 ];
}
pt1 = T2_Data CC1;
//显示试验状态
if(Mode_Test==0)
{
if(Mode_Mot==0)
strcpy(pt1," 待 机 ");
else
{
if(Mot_DIRB==0)
strcpy(pt1," 微 升 ");
else
strcpy(pt1," 微 降 ");
}
}
else if(Mode_Test==0xf1)
strcpy(pt1," 微 升 ");
else if(Mode_Test==0xf2)
strcpy(pt1," 微 降 ");
else if(Mode_Test==0xfb)
strcpy(pt1,"正在回位");
else if(Mode_Test==0xfa)
strcpy(pt1,"试验结束");
else if(Mode_Test==0xff)
strcpy(pt1," 超量程 ");
else
strcpy(pt1,"正在试验");
pt1 = 8;
//显示试验模式
if(Test_MM==1)
strcpy(pt1," 拉伸试验 ");
else if(Test_MM==2)
strcpy(pt1,"撕拉盖开启");
else if(Test_MM==3)
strcpy(pt1," 剥离试验 ");
else if(Test_MM==4)
strcpy(pt1,"预灌封滑动");
else if(Test_MM==5)
strcpy(pt1," 笔式滑动 ");
else if(Test_MM==6)
strcpy(pt1," 器身密合 ");
else if(Test_MM==7)
strcpy(pt1,"开启力试验");
else if(Test_MM==8)
strcpy(pt1,"穿刺力试验");
else if(Test_MM==9)
strcpy(pt1,"连接力试验");
else if(Test_MM==10)
strcpy(pt1,"折断力试验");
CC1 = 18;
//显示实时力值
if(Mode_Test==0x0d)
UFL1.SL = End02;
else if((Test_MM==3)||(Test_MM==4)||(Test_MM==7)||(Test_MM==8)||(Test_MM==9))
UFL1.SL = End02C;
else
UFL1.SL = End02;
CC2 = 0;
T2_Data[CC1 ] = UFL1.UC[CC2 ];
T2_Data[CC1 ] = UFL1.UC[CC2 ];
T2_Data[CC1 ] = UFL1.UC[CC2 ];
T2_Data[CC1 ] = UFL1.UC[CC2 ];
//显示 Y 单位
UFL1.SL = LL_YB[Lin_Yn];
CC2 = 0;
T2_Data[CC1 ] = UFL1.UC[CC2 ];
T2_Data[CC1 ] = UFL1.UC[CC2 ];
T2_Data[CC1 ] = UFL1.UC[CC2 ];
T2_Data[CC1 ] = UFL1.UC[CC2 ];
//显示 X 单位
UFL1.SI[0] = Lin_Xn*10;
CC2 = 0;
T2_Data[CC1 ] = UFL1.UC[CC2 ];
T2_Data[CC1 ] = UFL1.UC[CC2 ];
//输出试样序号
for(CC2=0;CC2<14;CC2 )
{
if(Sample_Serial[0]==0xff)
T2_Data[CC1 ] = 0x2d;
else
T2_Data[CC1 ] = Sample_Serial[CC2];
}
T2_Data[2] = CC1-3;
U2T_N1 = CC1;
}
else if(Mode02==0x11) //初始化曲线 清空曲线
{
CC1 = 0x00;
T2_Data[CC1 ] = 0xa5;
T2_Data[CC1 ] = 0x5a;
T2_Data[CC1 ] = 3;
T2_Data[CC1 ] = 0x80;
T2_Data[CC1 ] = 0xeb;
T2_Data[CC1 ] = 0x56;
T2_Data[2] = CC1-3;
U2T_N1 = CC1;
Mode02 ;
}
else if(Mode02==0x12) //初始化完曲线后延时 01
{
Mode02 ;
}
else if(Mode02==0x13) //初始化完曲线后延时 02
{
Mode02 ;
}
else if(Mode02==0x14) //曲线参数设置 纵轴放大倍数
{
CC1 = 0x00;
T2_Data[CC1 ] = 0xa5;
T2_Data[CC1 ] = 0x5a;
T2_Data[CC1 ] = 7;
T2_Data[CC1 ] = 0x82;
T2_Data[CC1 ] = 0x06;
T2_Data[CC1 ] = 0x08;
UFL1.SL = (long int)350*256/LL_Y[Lin_Yn]; //纵轴放大倍数 单位 1/256
T2_Data[CC1 ] = UFL1.UC[2];
T2_Data[CC1 ] = UFL1.UC[3];
T2_Data[CC1 ] = 0x00; //曲线 0
T2_Data[CC1 ] = 1; //X 轴 间隔
T2_Data[2] = CC1-3;
U2T_N1 = CC1;
if(Lin_N0!=Lin_N1)
Mode02 = 1;
else
Mode02 = 0x15;
Spr1 = 1;
}
else if(Mode02==0x15) //曲线绘图
{
CC1 = 0x00;
T2_Data[CC1 ] = 0xa5;
T2_Data[CC1 ] = 0x5a;
T2_Data[CC1 ] = 12;
T2_Data[CC1 ] = 0x84;
T2_Data[CC1 ] = 0x01;
II1 = Lin_N1-Lin_N0;
II2 = Lin_N0;
if(II1>40)
II1 = 40;
for(II3=0;II3<II1;II3 )
{
II2 ;
UFL1.SI[0] = Lin_Dat[II2];
T2_Data[CC1 ] = UFL1.UC[0];
T2_Data[CC1 ] = UFL1.UC[1];
}
Lin_N0 = II1;
T2_Data[2] = CC1-3;
U2T_N1 = CC1;
if(Lin_N0!=Lin_N1)
Mode02 = 1;
else
Mode02 = 0x15;
Spr1 = 1;
}
}
else if(Mode01==2) //查看界面
{
if(Mode02==0)
{
Read_Test(Test_N0_Q);
//A5 5A 04 80 03 00 01
CC1 = 0x00;
T2_Data[CC1 ] = 0xa5;
T2_Data[CC1 ] = 0x5a;
T2_Data[CC1 ] = 0x04;
T2_Data[CC1 ] = 0x80;
T2_Data[CC1 ] = 0x03;
T2_Data[CC1 ] = 0x00;
T2_Data[CC1 ] = 60 Test_MM;
U2T_N1 = 0x07;
Mode02 = 0x01;
Spr1 = 1; //再刷新一次界面,向液晶发送显示数据
}
else
{
//A5 5A 04 80 03 00 01
CC1 = 0x00;
T2_Data[CC1 ] = 0xa5;
T2_Data[CC1 ] = 0x5a;
T2_Data[CC1 ] = 33;
T2_Data[CC1 ] = 0x82;
T2_Data[CC1 ] = 0x01;
T2_Data[CC1 ] = 0x00;
//试验编号
UFL1.SL = Test_N0_Q 100000000;
CC2 = 0;
T2_Data[CC1 ] = UFL1.UC[CC2 ]; //00
T2_Data[CC1 ] = UFL1.UC[CC2 ];
T2_Data[CC1 ] = UFL1.UC[CC2 ];
T2_Data[CC1 ] = UFL1.UC[CC2 ];
CC1 = 8; //空
//试验速度
UFL1.SL = Set1_D[Test_MM][0];
CC2 = 0;
T2_Data[CC1 ] = UFL1.UC[CC2 ]; //06
T2_Data[CC1 ] = UFL1.UC[CC2 ];
T2_Data[CC1 ] = UFL1.UC[CC2 ];
T2_Data[CC1 ] = UFL1.UC[CC2 ];
//长度
UFL1.SL = Set1_D[Test_MM][1];
CC2 = 0;
T2_Data[CC1 ] = UFL1.UC[CC2 ]; //08
T2_Data[CC1 ] = UFL1.UC[CC2 ];
T2_Data[CC1 ] = UFL1.UC[CC2 ];
T2_Data[CC1 ] = UFL1.UC[CC2 ];
//宽度
UFL1.SL = Set1_D[Test_MM][2];
CC2 = 0;
T2_Data[CC1 ] = UFL1.UC[CC2 ]; //0a
T2_Data[CC1 ] = UFL1.UC[CC2 ];
T2_Data[CC1 ] = UFL1.UC[CC2 ];
T2_Data[CC1 ] = UFL1.UC[CC2 ];
//厚度
UFL1.SL = Set1_D[Test_MM][3];
CC2 = 0;
T2_Data[CC1 ] = UFL1.UC[CC2 ]; //0a
T2_Data[CC1 ] = UFL1.UC[CC2 ];
T2_Data[CC1 ] = UFL1.UC[CC2 ];
T2_Data[CC1 ] = UFL1.UC[CC2 ];
if(1)//(Test_MM==4)|(Test_MM==9))
{
//启始力
UFL1.SL = Test_End01;
CC2 = 0;
T2_Data[CC1 ] = UFL1.UC[CC2 ]; //0c
T2_Data[CC1 ] = UFL1.UC[CC2 ];
T2_Data[CC1 ] = UFL1.UC[CC2 ];
T2_Data[CC1 ] = UFL1.UC[CC2 ];
//持续力最大值
UFL1.SL = Test_End02;
CC2 = 0;
T2_Data[CC1 ] = UFL1.UC[CC2 ]; //0e
T2_Data[CC1 ] = UFL1.UC[CC2 ];
T2_Data[CC1 ] = UFL1.UC[CC2 ];
T2_Data[CC1 ] = UFL1.UC[CC2 ];
//持续力平均值
UFL1.SL = Test_End03;
CC2 = 0;
T2_Data[CC1 ] = UFL1.UC[CC2 ]; //10
T2_Data[CC1 ] = UFL1.UC[CC2 ];
T2_Data[CC1 ] = UFL1.UC[CC2 ];
T2_Data[CC1 ] = UFL1.UC[CC2 ];
//持续力平均值
UFL1.SL = Test_End04;
CC2 = 0;
T2_Data[CC1 ] = UFL1.UC[CC2 ]; //10
T2_Data[CC1 ] = UFL1.UC[CC2 ];
T2_Data[CC1 ] = UFL1.UC[CC2 ];
T2_Data[CC1 ] = UFL1.UC[CC2 ];
}
//年月日时分秒
for(CC3=0;CC3<7;CC3 )
{
if(CC3==3)
CC3 ;
UFL1.UI[0] = 2000 Time[CC3];
CC2 = 0;
T2_Data[CC1 ] = UFL1.UC[CC2 ];
T2_Data[CC1 ] = UFL1.UC[CC2 ];
}
CC1 = 6;
//输出试样序号
for(CC2=0;CC2<14;CC2 )
{
if(Sample_Serial[0]==0xff)
T2_Data[CC1 ] = 0x2d;
else
T2_Data[CC1 ] = Sample_Serial[CC2];
}
T2_Data[2] = CC1-3;
U2T_N1 = CC1;
}
}
else if(Mode01==3) //设置界面
{
if(Mode02==0)
{
//A5 5A 04 80 03 00 01
CC1 = 0x00;
T2_Data[CC1 ] = 0xa5;
T2_Data[CC1 ] = 0x5a;
T2_Data[CC1 ] = 0x04;
T2_Data[CC1 ] = 0x80;
T2_Data[CC1 ] = 0x03;
T2_Data[CC1 ] = 0x00;
T2_Data[CC1 ] = 0x04;
U2T_N1 = 0x07;
Mode02 = 0x01;
Spr1 = 1; //再刷新一次界面,向液晶发送显示数据
}
else
{
//A5 5A 04 80 03 00 01
CC1 = 0x00;
T2_Data[CC1 ] = 0xa5;
T2_Data[CC1 ] = 0x5a;
T2_Data[CC1 ] = 27;
T2_Data[CC1 ] = 0x82;
T2_Data[CC1 ] = 0x01;
T2_Data[CC1 ] = 0x00;
UFL1.SL = LL_Sensor[Mode_Sensor];
CC2 = 0;
T2_Data[CC1 ] = UFL1.UC[CC2 ];
T2_Data[CC1 ] = UFL1.UC[CC2 ];
T2_Data[CC1 ] = UFL1.UC[CC2 ];
T2_Data[CC1 ] = UFL1.UC[CC2 ];
T2_Data[2] = CC1-3;
U2T_N1 = CC1;
}
}
else if(Mode01==4) //关于界面
{
if(Mode02==0)
{
//A5 5A 04 80 03 00 01
CC1 = 0x00;
T2_Data[CC1 ] = 0xa5;
T2_Data[CC1 ] = 0x5a;
T2_Data[CC1 ] = 0x04;
T2_Data[CC1 ] = 0x80;
T2_Data[CC1 ] = 0x03;
T2_Data[CC1 ] = 0x00;
T2_Data[CC1 ] = 24;
U2T_N1 = 0x07;
Mode02 = 0x01;
Spr1 = 1; //再刷新一次界面,向液晶发送显示数据
}
else //刷新数据
{
//A5 5A 04 80 03 00 01
CC1 = 0x00;
T2_Data[CC1 ] = 0xa5;
T2_Data[CC1 ] = 0x5a;
T2_Data[CC1 ] = 43;
T2_Data[CC1 ] = 0x82;
T2_Data[CC1 ] = 0x01;
T2_Data[CC1 ] = 0x00;
pt1 = T2_Data CC1;
strcpy(pt1,"SUMSPRING_01_E.PCB ");
pt1 = 20;
strcpy(pt1,"YYL-03_V3.0.1D ");
U2T_N1 = 46;
}
}
else if(Mode01==5) //标定界面
{
if(Mode02==0)
{
//A5 5A 04 80 03 00 01
CC1 = 0x00;
T2_Data[CC1 ] = 0xa5;
T2_Data[CC1 ] = 0x5a;
T2_Data[CC1 ] = 0x04;
T2_Data[CC1 ] = 0x80;
T2_Data[CC1 ] = 0x03;
T2_Data[CC1 ] = 0x00;
T2_Data[CC1 ] = 11;
U2T_N1 = 0x07;
Mode02 = 0x01;
Mode05 = 0x00;
Mode_ICO1 = 0;
Mode_ICO2 = 15;
Spr1 = 1; //再刷新一次界面,向液晶发送显示数据
Test_Times = 1;
}
else
{
//A5 5A 04 80 03 00 01
CC1 = 0x00;
T2_Data[CC1 ] = 0xa5;
T2_Data[CC1 ] = 0x5a;
T2_Data[CC1 ] = 27;
T2_Data[CC1 ] = 0x82;
T2_Data[CC1 ] = 0x01;
T2_Data[CC1 ] = 0x00;
//修正
UFL1.SL = YY_DY;
CC2 = 0;
T2_Data[CC1 ] = UFL1.UC[CC2 ];
T2_Data[CC1 ] = UFL1.UC[CC2 ];
T2_Data[CC1 ] = UFL1.UC[CC2 ];
T2_Data[CC1 ] = UFL1.UC[CC2 ];
//传感器量程
UFL1.SL = YY_Max; //
CC2 = 0;
T2_Data[CC1 ] = UFL1.UC[CC2 ];
T2_Data[CC1 ] = UFL1.UC[CC2 ];
T2_Data[CC1 ] = UFL1.UC[CC2 ];
T2_Data[CC1 ] = UFL1.UC[CC2 ];
//零点
UFL1.SL = YY_Dat0; //
CC2 = 0;
T2_Data[CC1 ] = UFL1.UC[CC2 ];
T2_Data[CC1 ] = UFL1.UC[CC2 ];
T2_Data[CC1 ] = UFL1.UC[CC2 ];
T2_Data[CC1 ] = UFL1.UC[CC2 ];
//终点
UFL1.SL = YY_Dat1; //
CC2 = 0;
T2_Data[CC1 ] = UFL1.UC[CC2 ];
T2_Data[CC1 ] = UFL1.UC[CC2 ];
T2_Data[CC1 ] = UFL1.UC[CC2 ];
T2_Data[CC1 ] = UFL1.UC[CC2 ];
//AD值
UFL1.SL = AD_E2;
CC2 = 0;
T2_Data[CC1 ] = UFL1.UC[CC2 ];
T2_Data[CC1 ] = UFL1.UC[CC2 ];
T2_Data[CC1 ] = UFL1.UC[CC2 ];
T2_Data[CC1 ] = UFL1.UC[CC2 ];
//实时力值
UFL1.SL = End01;
CC2 = 0;
T2_Data[CC1 ] = UFL1.UC[CC2 ];
T2_Data[CC1 ] = UFL1.UC[CC2 ];
T2_Data[CC1 ] = UFL1.UC[CC2 ];
T2_Data[CC1 ] = UFL1.UC[CC2 ];
//
UFL1.SL = LL_Sensor[Mode_Sensor];
CC2 = 0;
T2_Data[CC1 ] = UFL1.UC[CC2 ];
T2_Data[CC1 ] = UFL1.UC[CC2 ];
T2_Data[CC1 ] = UFL1.UC[CC2 ];
T2_Data[CC1 ] = UFL1.UC[CC2 ];
T2_Data[2] = 28 3;
U2T_N1 = 34;
}
}
else if(Mode01==6) //项目选择界面
{
if(Mode02==0)
{
//A5 5A 04 80 03 00 01
CC1 = 0x00;
T2_Data[CC1 ] = 0xa5;
T2_Data[CC1 ] = 0x5a;
T2_Data[CC1 ] = 0x04;
T2_Data[CC1 ] = 0x80;
T2_Data[CC1 ] = 0x03;
T2_Data[CC1 ] = 0x00;
T2_Data[CC1 ] = 30 Test_MM;
U2T_N1 = 0x07;
Mode02 = 0x01;
}
else
{
}
}
else if(Mode01==7) //试验参数设置界面
{
if(Mode02==0)
{
//A5 5A 04 80 03 00 01
CC1 = 0x00;
T2_Data[CC1 ] = 0xa5;
T2_Data[CC1 ] = 0x5a;
T2_Data[CC1 ] = 0x04;
T2_Data[CC1 ] = 0x80;
T2_Data[CC1 ] = 0x03;
T2_Data[CC1 ] = 0x00;
if(Set1_D[Test_MM][8]==0)
T2_Data[CC1 ] = 52;
else
T2_Data[CC1 ] = 51;
U2T_N1 = 0x07;
Mode02 = 0x01;
Spr1 = 1; //再刷新一次界面,向液晶发送显示数据
}
else //刷新数据
{
//A5 5A 04 80 03 00 01
CC1 = 0x00;
T2_Data[CC1 ] = 0xa5;
T2_Data[CC1 ] = 0x5a;
T2_Data[CC1 ] = 11;
T2_Data[CC1 ] = 0x82;
T2_Data[CC1 ] = 0x01;
T2_Data[CC1 ] = 0x02;
for(CC3=4;CC3<8;CC3 )
{
UFL1.SL = Set1_D[Test_MM][CC3];
CC2 = 0;
T2_Data[CC1 ] = UFL1.UC[CC2 ];
T2_Data[CC1 ] = UFL1.UC[CC2 ];
T2_Data[CC1 ] = UFL1.UC[CC2 ];
T2_Data[CC1 ] = UFL1.UC[CC2 ];
}
T2_Data[2] = 19;
U2T_N1 = 22;
}
}
else if(Mode01==8) //气压标定界面
{
if(Mode02==0)
{
//A5 5A 04 80 03 00 01
CC1 = 0x00;
T2_Data[CC1 ] = 0xa5;
T2_Data[CC1 ] = 0x5a;
T2_Data[CC1 ] = 0x04;
T2_Data[CC1 ] = 0x80;
T2_Data[CC1 ] = 0x03;
T2_Data[CC1 ] = 0x00;
T2_Data[CC1 ] = 15;
U2T_N1 = 0x07;
Mode02 = 0x01;
Mode05 = 0x00;
Mode_ICO1 = 0;
Mode_ICO2 = 15;
Spr1 = 1; //再刷新一次界面,向液晶发送显示数据
Test_Times = 1;
}
else
{
//A5 5A 04 80 03 00 01
CC1 = 0x00;
T2_Data[CC1 ] = 0xa5;
T2_Data[CC1 ] = 0x5a;
T2_Data[CC1 ] = 27;
T2_Data[CC1 ] = 0x82;
T2_Data[CC1 ] = 0x01;
T2_Data[CC1 ] = 0x00;
//修正
UFL1.SL = YY_DY;
CC2 = 0;
T2_Data[CC1 ] = UFL1.UC[CC2 ];
T2_Data[CC1 ] = UFL1.UC[CC2 ];
T2_Data[CC1 ] = UFL1.UC[CC2 ];
T2_Data[CC1 ] = UFL1.UC[CC2 ];
//传感器量程
UFL1.SL = YY_Max; //
CC2 = 0;
T2_Data[CC1 ] = UFL1.UC[CC2 ];
T2_Data[CC1 ] = UFL1.UC[CC2 ];
T2_Data[CC1 ] = UFL1.UC[CC2 ];
T2_Data[CC1 ] = UFL1.UC[CC2 ];
//零点
UFL1.SL = YY_Dat0; //
CC2 = 0;
T2_Data[CC1 ] = UFL1.UC[CC2 ];
T2_Data[CC1 ] = UFL1.UC[CC2 ];
T2_Data[CC1 ] = UFL1.UC[CC2 ];
T2_Data[CC1 ] = UFL1.UC[CC2 ];
//终点
UFL1.SL = YY_Dat1; //
CC2 = 0;
T2_Data[CC1 ] = UFL1.UC[CC2 ];
T2_Data[CC1 ] = UFL1.UC[CC2 ];
T2_Data[CC1 ] = UFL1.UC[CC2 ];
T2_Data[CC1 ] = UFL1.UC[CC2 ];
//AD值
UFL1.SL = AD_E2;
CC2 = 0;
T2_Data[CC1 ] = UFL1.UC[CC2 ];
T2_Data[CC1 ] = UFL1.UC[CC2 ];
T2_Data[CC1 ] = UFL1.UC[CC2 ];
T2_Data[CC1 ] = UFL1.UC[CC2 ];
//实时力值
UFL1.SL = End01;
CC2 = 0;
T2_Data[CC1 ] = UFL1.UC[CC2 ];
T2_Data[CC1 ] = UFL1.UC[CC2 ];
T2_Data[CC1 ] = UFL1.UC[CC2 ];
T2_Data[CC1 ] = UFL1.UC[CC2 ];
//
UFL1.SL = LL_Sensor[Mode_Sensor];
CC2 = 0;
T2_Data[CC1 ] = UFL1.UC[CC2 ];
T2_Data[CC1 ] = UFL1.UC[CC2 ];
T2_Data[CC1 ] = UFL1.UC[CC2 ];
T2_Data[CC1 ] = UFL1.UC[CC2 ];
T2_Data[2] = 28 3;
U2T_N1 = 34;
}
}
else if(Mode01==9) //针尖穿刺 试验参数设置界面
{
if(Mode02==0)
{
//A5 5A 04 80 03 00 01
CC1 = 0x00;
T2_Data[CC1 ] = 0xa5;
T2_Data[CC1 ] = 0x5a;
T2_Data[CC1 ] = 0x04;
T2_Data[CC1 ] = 0x80;
T2_Data[CC1 ] = 0x03;
T2_Data[CC1 ] = 0x00;
if(Set1_D[Test_MM][8]==0)
T2_Data[CC1 ] = 74;
else
T2_Data[CC1 ] = 73;
U2T_N1 = 0x07;
Mode02 = 0x01;
Spr1 = 1; //再刷新一次界面,向液晶发送显示数据
}
else //刷新数据
{
//A5 5A 04 80 03 00 01
CC1 = 0x00;
T2_Data[CC1 ] = 0xa5;
T2_Data[CC1 ] = 0x5a;
T2_Data[CC1 ] = 11;
T2_Data[CC1 ] = 0x82;
T2_Data[CC1 ] = 0x01;
T2_Data[CC1 ] = 0x02;
for(CC3=4;CC3<8;CC3 )
{
UFL1.SL = Set1_D[Test_MM][CC3];
CC2 = 0;
T2_Data[CC1 ] = UFL1.UC[CC2 ];
T2_Data[CC1 ] = UFL1.UC[CC2 ];
T2_Data[CC1 ] = UFL1.UC[CC2 ];
T2_Data[CC1 ] = UFL1.UC[CC2 ];
}
for(CC3=0;CC3<4;CC3 )
{
UFL1.SL = Set_FF[CC3];
CC2 = 0;
T2_Data[CC1 ] = UFL1.UC[CC2 ];
T2_Data[CC1 ] = UFL1.UC[CC2 ];
T2_Data[CC1 ] = UFL1.UC[CC2 ];
T2_Data[CC1 ] = UFL1.UC[CC2 ];
}
T2_Data[2] = CC1-3;
U2T_N1 = CC1 3;
}
}
else if(Mode01==20) //用户登陆界面
{
if(Mode02==0)
{
//A5 5A 04 80 03 00 01
CC1 = 0x00;
T2_Data[CC1 ] = 0xa5;
T2_Data[CC1 ] = 0x5a;
T2_Data[CC1 ] = 0x04;
T2_Data[CC1 ] = 0x80;
T2_Data[CC1 ] = 0x03;
T2_Data[CC1 ] = 0x00;
T2_Data[CC1 ] = 20;
U2T_N1 = 0x07;
Mode02 = 0x01;
Mode05 = 0x00;
Mode_ICO1 = 5;
sec = 0;
sec2 = 0;
Spr1 = 1; //再刷新一次界面,向液晶发送显示数据
}
else //刷新数据
{
//A5 5A 04 80 03 00 01
CC1 = 0x00;
T2_Data[CC1 ] = 0xa5;
T2_Data[CC1 ] = 0x5a;
T2_Data[CC1 ] = 11;
T2_Data[CC1 ] = 0x82;
T2_Data[CC1 ] = 0x01;
T2_Data[CC1 ] = 0x00;
UFL1.SL = 1000000 sec;
CC2 = 0;
T2_Data[CC1 ] = UFL1.UC[CC2 ];
T2_Data[CC1 ] = UFL1.UC[CC2 ];
T2_Data[CC1 ] = UFL1.UC[CC2 ];
T2_Data[CC1 ] = UFL1.UC[CC2 ];
if(sec2==0)
{
for(CC2=0;CC2<6;CC2 )
T2_Data[CC1 ] = 0x20;
}
else
{
for(CC2=0;CC2<6;CC2 )
T2_Data[CC1 ] = 0x2a;
}
T2_Data[2] = CC1-3;
U2T_N1 = CC1;
}
}
else if(Mode01==21) //用户管理界面
{
if(Mode02==0)
{
//A5 5A 04 80 03 00 01
CC1 = 0x00;
T2_Data[CC1 ] = 0xa5;
T2_Data[CC1 ] = 0x5a;
T2_Data[CC1 ] = 0x04;
T2_Data[CC1 ] = 0x80;
T2_Data[CC1 ] = 0x03;
T2_Data[CC1 ] = 0x00;
T2_Data[CC1 ] = 75;
U2T_N1 = 0x07;
Mode02 = 0x01;
Mode05 = 0x00;
Mode_ICO1 = 5;
sec = 0;
sec2 = 0;
Spr1 = 1; //再刷新一次界面,向液晶发送显示数据
}
else //刷新数据
{
//A5 5A 04 80 03 00 01
CC1 = 0x00;
T2_Data[CC1 ] = 0xa5;
T2_Data[CC1 ] = 0x5a;
T2_Data[CC1 ] = 39;
T2_Data[CC1 ] = 0x82;
T2_Data[CC1 ] = 0x01;
T2_Data[CC1 ] = 0x00;
UFL1.SL = 100000 Coustomer[0];
CC2 = 0;
T2_Data[CC1 ] = UFL1.UC[CC2 ];
T2_Data[CC1 ] = UFL1.UC[CC2 ];
T2_Data[CC1 ] = UFL1.UC[CC2 ];
T2_Data[CC1 ] = UFL1.UC[CC2 ];
if(Coustomer[0]==0)
UFL1.UL = 1000000;
else
UFL1.UL = 1000000 Coust_sec[0];
CC2 = 0;
T2_Data[CC1 ] = UFL1.UC[CC2 ];
T2_Data[CC1 ] = UFL1.UC[CC2 ];
T2_Data[CC1 ] = UFL1.UC[CC2 ];
T2_Data[CC1 ] = UFL1.UC[CC2 ];
T2_Data[2] = CC1-3;
U2T_N1 = CC1;
}
}
else if(Mode01==22) //二级 用户管理界面
{
if(Mode02==0)
{
//A5 5A 04 80 03 00 01
CC1 = 0x00;
T2_Data[CC1 ] = 0xa5;
T2_Data[CC1 ] = 0x5a;
T2_Data[CC1 ] = 0x04;
T2_Data[CC1 ] = 0x80;
T2_Data[CC1 ] = 0x03;
T2_Data[CC1 ] = 0x00;
T2_Data[CC1 ] = 77;
U2T_N1 = 0x07;
Mode02 = 0x01;
Mode05 = 0x00;
Mode_ICO1 = 5;
sec = 0;
sec2 = 0;
Spr1 = 1; //再刷新一次界面,向液晶发送显示数据
}
else //刷新数据
{
//A5 5A 04 80 03 00 01
CC1 = 0x00;
T2_Data[CC1 ] = 0xa5;
T2_Data[CC1 ] = 0x5a;
T2_Data[CC1 ] = 39;
T2_Data[CC1 ] = 0x82;
T2_Data[CC1 ] = 0x01;
T2_Data[CC1 ] = 0x00;
for(CC3=0;CC3<10;CC3 )
{
UFL1.SL = 100000 CoustomerB[CC3];
CC2 = 0;
T2_Data[CC1 ] = UFL1.UC[CC2 ];
T2_Data[CC1 ] = UFL1.UC[CC2 ];
T2_Data[CC1 ] = UFL1.UC[CC2 ];
T2_Data[CC1 ] = UFL1.UC[CC2 ];
if(CoustomerB[CC3]==0)
UFL1.UL = 1000000;
else
UFL1.UL = 1000000 Coust_secB[CC3];
CC2 = 0;
T2_Data[CC1 ] = UFL1.UC[CC2 ];
T2_Data[CC1 ] = UFL1.UC[CC2 ];
T2_Data[CC1 ] = UFL1.UC[CC2 ];
T2_Data[CC1 ] = UFL1.UC[CC2 ];
}
T2_Data[2] = CC1-3;
U2T_N1 = CC1;
}
}
else if(Mode01==23) //三级 用户管理界面
{
if(Mode02==0)
{
//A5 5A 04 80 03 00 01
CC1 = 0x00;
T2_Data[CC1 ] = 0xa5;
T2_Data[CC1 ] = 0x5a;
T2_Data[CC1 ] = 0x04;
T2_Data[CC1 ] = 0x80;
T2_Data[CC1 ] = 0x03;
T2_Data[CC1 ] = 0x00;
T2_Data[CC1 ] = 79;
U2T_N1 = 0x07;
Mode02 = 0x01;
Mode05 = 0x00;
Mode_ICO1 = 5;
sec = 0;
sec2 = 0;
Spr1 = 1; //再刷新一次界面,向液晶发送显示数据
}
else //刷新数据
{
//A5 5A 04 80 03 00 01
CC1 = 0x00;
T2_Data[CC1 ] = 0xa5;
T2_Data[CC1 ] = 0x5a;
T2_Data[CC1 ] = 39;
T2_Data[CC1 ] = 0x82;
T2_Data[CC1 ] = 0x01;
T2_Data[CC1 ] = 0x00;
for(CC3=0;CC3<10;CC3 )
{
UFL1.SL = 100000 CoustomerC[CC3];
CC2 = 0;
T2_Data[CC1 ] = UFL1.UC[CC2 ];
T2_Data[CC1 ] = UFL1.UC[CC2 ];
T2_Data[CC1 ] = UFL1.UC[CC2 ];
T2_Data[CC1 ] = UFL1.UC[CC2 ];
if(CoustomerC[CC3]==0)
UFL1.UL = 1000000;
else
UFL1.UL = 1000000 Coust_secC[CC3];
CC2 = 0;
T2_Data[CC1 ] = UFL1.UC[CC2 ];
T2_Data[CC1 ] = UFL1.UC[CC2 ];
T2_Data[CC1 ] = UFL1.UC[CC2 ];
T2_Data[CC1 ] = UFL1.UC[CC2 ];
}
T2_Data[2] = CC1-3;
U2T_N1 = CC1;
}
}
}
else if((U2T_Mode==2)&&(Spr2==1)&&(U2R_Mode==0)) //时间查询
{
Spr2 = 0;
U2T_Mode = 1;
U2R_Mode = 2; //接收时间
U2R_N0 = 0; //接收计数清零
//A5 5A 03 81 20 08
CC1 = 0x00;
T2_Data[CC1 ] = 0xa5;
T2_Data[CC1 ] = 0x5a;
T2_Data[CC1 ] = 0x03;
T2_Data[CC1 ] = 0x81;
T2_Data[CC1 ] = 0x20;
T2_Data[CC1 ] = 0x08;
U2T_N1 = 0x06;
}
else if((U2T_Mode==3)&&(Spr3==1)) //设定时间
{
Spr3 = 0;
U2T_Mode = 1;
//A5 5A 03 81 20 08
CC1 = 0x00;
T2_Data[CC1 ] = 0xa5;
T2_Data[CC1 ] = 0x5a;
T2_Data[CC1 ] = 10;
T2_Data[CC1 ] = 0x80;
T2_Data[CC1 ] = 0x1f;
T2_Data[CC1 ] = 0x5a;
CC2 = 0x00;
CC3 = Time[CC2 ];
CC4 = CC3/10;
CC4 <<= 4;
CC4 = CC4|(CC3%10);
T2_Data[CC1 ] = CC4;
CC3 = Time[CC2 ];
CC4 = CC3/10;
CC4 <<= 4;
CC4 = CC4|(CC3%10);
T2_Data[CC1 ] = CC4;
CC3 = Time[CC2 ];
CC4 = CC3/10;
CC4 <<= 4;
CC4 = CC4|(CC3%10);
T2_Data[CC1 ] = CC4;
CC3 = Time[CC2 ];
CC4 = CC3/10;
CC4 <<= 4;
CC4 = CC4|(CC3%10);
T2_Data[CC1 ] = CC4;
CC3 = Time[CC2 ];
CC4 = CC3/10;
CC4 <<= 4;
CC4 = CC4|(CC3%10);
T2_Data[CC1 ] = CC4;
CC3 = Time[CC2 ];
CC4 = CC3/10;
CC4 <<= 4;
CC4 = CC4|(CC3%10);
T2_Data[CC1 ] = CC4;
CC3 = Time[CC2 ];
CC4 = CC3/10;
CC4 <<= 4;
CC4 = CC4|(CC3%10);
T2_Data[CC1 ] = CC4;
U2T_N1 = 13;
}
if(U2T_N1) //有需要发送的数据
{
U2T_N0 = 1;
S2BUF = 0xa5;
}
}
}
void TR_AD(void) //AD处理
{
unsigned char m,n;
if((Test_MM!=8)||(Mode01==5)) //采信力值传感器
{
if(!CS_Dat1) //AD采集 滤波
{
for(m=1;m<4;m )
{
for(n=8;n>0;n--)
{
CS_Clk1 = 1;
ACC <<= 1;
if(CS_Dat1)
ACC ;
CS_Clk1 = 0;
}
n = ACC;
UFL1.UC[m] = n;
}
if(UFL1.UC[1]&0xf0)
AD_02 = AD_E2;
else
{
AD_02 = UFL1.UL;
if(UFL1.UC[1]&0x08)
AD_02 |= 0xfff00000;
else //如果是正数
AD_02 &= 0x000fffff;
}
if(AD_n2<11)
AD_n2 ;
else
AD_n2 = 0;
AD2_BUF[AD_n2] = AD_02;
if(AD_n2%2==0) //约 16.666 ms 计算一次平均值
{
B_AD = 1;
AD_E2 = 0;
for(m=0;m<12;m )
AD_E2 = AD2_BUF[m];
AD_E2 /= 12;
FF1 = AD_E2-XX_AD0;
FF1 = KKK*FF1 YY_Dat0;
End00 = (long int)FF1;
End01 = End00 YY_DY;
End02 = End01-End02B;
End02C = -End02;
//力值保护,传感器保护
if((End01>YY_Max)||(End01>Set1_D[Test_MM][5]))
{
if((Mot_DIRB==0)&&(Mode_Mot!=0))
{
Mode_Test = 0xff;
Mode_Mot = 0;
ET1 = 0;
TR1 = 0;
}
}
else if((End01<-YY_Max)||(End01<-Set1_D[Test_MM][5]))
{
if((Mot_DIRB==1)&&(Mode_Mot!=0))
{
Mode_Test = 0xff;
Mode_Mot = 0;
ET1 = 0;
TR1 = 0;
}
}
}
}
}
else //采集气压传感
{
if(!CS_Dat2) //AD采集 滤波
{
for(m=1;m<4;m )
{
for(n=8;n>0;n--)
{
CS_Clk2 = 1;
ACC <<= 1;
if(CS_Dat2)
ACC ;
CS_Clk2 = 0;
}
n = ACC;
UFL1.UC[m] = n;
}
if(UFL1.UC[1]&0xf0)
AD_02 = AD_E2;
else
{
AD_02 = UFL1.UL;
if(UFL1.UC[1]&0x08)
AD_02 |= 0xfff00000;
else //如果是正数
AD_02 &= 0x000fffff;
}
if(AD_n2<11)
AD_n2 ;
else
AD_n2 = 0;
AD2_BUF[AD_n2] = AD_02;
if(AD_n2%2==0) //约 16.666 ms 计算一次平均值
{
B_AD = 1;
AD_E2 = 0;
for(m=0;m<12;m )
AD_E2 = AD2_BUF[m];
AD_E2 /= 12;
FF1 = AD_E2-XX_AD0;
FF1 = KKK*FF1 YY_Dat0;
End00 = (long int)FF1;
End01 = End00 YY_DY;
End02 = End01-End02B;
End02C = End02/100;
//传感器保护
if((End01>100000)||(End01>Set1_D[Test_MM][5]))
{
if((Mot_DIRB==0)&&(Mode_Mot!=0))
{
Mode_Test = 0xff;
Mode_Mot = 0;
ET1 = 0;
TR1 = 0;
}
}
}
}
}
}
void TR_Mot(void) //电机运运
{
Mot_DIR = Mot_DIRB;
//减速:1:1 螺距:5mm 分频:4000
if(Mode_Mot==0) //待机不运行
{
ET1 = 0; //关中断
TR1 = 0;
}
else if(Mode_Mot==1) //电机启动
{
if(Set_Speed<400)
FF1 = Set_Speed;
else
FF1 = 400;
FF1 = FF1/60/5*8000;
if(FF1<30)
{
AUXR &= ~0x40; //定时器时钟12T模式
TMOD &= 0x0F; //设置定时器模式
TL1 = 0x00; //设置定时初值
TH1 = 0x00; //设置定时初值
}
else if(FF1<400)
{
FF1 = 22118400/12/FF1 0.5;
II1 = (unsigned int)FF1;
II1 = (~II1) 1;
AUXR &= ~0x40; //定时器时钟12T模式
TMOD &= 0x0F; //设置定时器模式
TL1 = II1; //设置定时初值
TH1 = II1/0x100; //设置定时初值
}
else
{
FF1 = 22118400/FF1 0.5;
II1 = (unsigned int)FF1;
II1 = (~II1) 1;
AUXR |= 0x40; //定时器时钟1T模式
TMOD &= 0x0F; //设置定时器模式
TL1 = II1; //设置定时初值
TH1 = II1/0x100; //设置定时初值
}
TF1 = 0; //清除TF1标志
TR1 = 1; //定时器1开始计时
ET1 = 1; //开中断
if(Set_Speed<400)
Mode_Mot = 0x0f;
else
{
Mode_Mot = 2;
Set_Speed0 = 400;
Time_Mot = Time0;
}
}
else if(Mode_Mot==2) //匀加速
{
if(Time0-Time_Mot>=20)
{
Time_Mot = Time0;
Set_Speed0 = Set_Speed0*21/20;
if(Set_Speed0>Set_Speed)
Set_Speed0 = Set_Speed;
FF1 = Set_Speed0;
FF1 = FF1/60/5*8000;
if(FF1<30)
{
AUXR &= ~0x40; //定时器时钟12T模式
TMOD &= 0x0F; //设置定时器模式
TL1 = 0x00; //设置定时初值
TH1 = 0x00; //设置定时初值
}
else if(FF1<400)
{
FF1 = 22118400/12/FF1 0.5;
II1 = (unsigned int)FF1;
II1 = (~II1) 1;
AUXR &= ~0x40; //定时器时钟12T模式
TMOD &= 0x0F; //设置定时器模式
TL1 = II1; //设置定时初值
TH1 = II1/0x100; //设置定时初值
}
else
{
FF1 = 22118400/FF1 0.5;
II1 = (unsigned int)FF1;
II1 = (~II1) 1;
AUXR |= 0x40; //定时器时钟1T模式
TMOD &= 0x0F; //设置定时器模式
TL1 = II1; //设置定时初值
TH1 = II1/0x100; //设置定时初值
}
TF1 = 0; //清除TF1标志
TR1 = 1; //定时器1开始计时
ET1 = 1; //开中断
if(Set_Speed0==Set_Speed)
{
Mode_Mot = 0x0f;
}
}
}
else if(Mode_Mot==0x0f) //电机工作中
{
}
if(Mode_Mot)
{
if((In_K1==0)&&(Mot_DIRB==0))
{
// Set_Speed = 10;
// Mot_DIRB = 1;
TR1 = 0;
Mode_Mot = 0;
Mode_Test = 0;
}
if((In_K2==0)&&(Mot_DIRB==1))
{
// Set_Speed = 10;
// Mot_DIRB = 0;
TR1 = 0;
Mode_Mot = 0;
Mode_Test = 0;
}
}
}
void TR_Test(void) //试验处理
{
CC4 = 0;
if(Mode_Test==CC4 ) //00 待机
{
}
else if(Mode_Test==CC4 ) //01 启动
{
B_FS = 0;
B_Test_Start = 0;
B_Line = 0;
if(Mode_Mot==0)
{
if(((In_K2==1)&&((Test_MM==3)||(Test_MM==4)||(Test_MM==7)||(Test_MM==8)||(Test_MM==9)))||((In_K1==1)&&((Test_MM==1)||(Test_MM==2)||(Test_MM==5)||(Test_MM==6))))
{
B_Stop = 0;
//记录当前位置 以便回位时使用
CD_Vol3 = CD_Vol1;
//软件限位
if((Test_MM==3)||(Test_MM==4))
CD_Vol4 = CD_Vol1-Set1_D[Test_MM][1];
else if((Test_MM==5)||(Test_MM==6))
CD_Vol4 = CD_Vol1 Set1_D[Test_MM][1];
else if((Test_MM==8)|(Test_MM==9))
CD_Vol4 = CD_Vol1-Set1_D[Test_MM][3];
for (II1=0;II1<600;II1 )
{
Lin_Dat[II1] = 0;
}
//速度
if(Test_MM==10)
Set_Speed = Set1_D[Test_MM][7]; //开始时以回位速度下压,到达起始压力后减速,以试验速度下压
else
Set_Speed = Set1_D[Test_MM][0];
if (Set_Speed<200)
Lin_Xn = 1;
else if (Set_Speed<400)
Lin_Xn = 4;
else if (Set_Speed<800)
Lin_Xn = 16;
else
Lin_Xn = 16;
CD_Vol2 = CD_Vol1;
LL_00 = 0;
LL_01 = Lin_Xn;
LL_02 = 0;
Lin_N1 = 0;
Lin_N0 = 0;
Lin_Dat[0] = 0;
// End02B = End01;
// End02 = 0;
Test_End01 = 0;
Test_End02 = 0;
Test_End03 = 0;
Test_End04 = 0;
Ymax_Dat = 0;
Ymin_Dat = 0;
End_Max = 0;
End_Min = 0;
TestAD_N = 0; //计数清零
TestAD_Sum = 0;
Lin_Yn = 0;
Mode02 = 0x11; //初始化曲线
if((Test_MM==1)||(Test_MM==2)||(Test_MM==5)||(Test_MM==6)||(Test_MM==7))
Mot_DIRB = 0; //向上运动
else
Mot_DIRB = 1; //向下运动
Mode_Mot = 1; //启动电机
if((Test_MM==1)||(Test_MM==2)||(Test_MM==5)||(Test_MM==6)||(Test_MM==7)||(Test_MM==8)||(Test_MM==9)) //直接进入试验,无起始力值
{
CD_Vol2 = CD_Vol1;
LL_00 = 0;
LL_01 = Lin_Xn;
LL_02 = 0;
if(Test_MM==1)
Mode_Test = 2;
else if(Test_MM==2)
Mode_Test = 3;
else if(Test_MM==3)
Mode_Test = 4;
else if(Test_MM==4) //输液针穿刺力
Mode_Test = 0x50;
else if(Test_MM==5) //拔开力试验
Mode_Test = 0x06;
else if(Test_MM==6) //连接牢固度
Mode_Test = 0x07;
else if(Test_MM==7) //滑动性试验
Mode_Test = 0x0d;
else if(Test_MM==8) //正压密合试验
Mode_Test = 0x0b;
else if(Test_MM==9) //压缩试验
Mode_Test = 0x09;
else
Mode_Test = 2;
}
}
else
{
Mode_Test = 0;
}
}
else // Test_MM==3 Test_MM==4
{
if((End02>=Set1_D[Test_MM][4])||(End02C>=Set1_D[Test_MM][4])) //大于起始力值
{
CD_Vol2 = CD_Vol1;
LL_00 = 0;
LL_01 = Lin_Xn;
LL_02 = 0;
if(Test_MM==1)
Mode_Test = 2;
else if(Test_MM==2)
Mode_Test = 3;
else if(Test_MM==3)
Mode_Test = 4;
else if(Test_MM==4) //输液针穿刺力
Mode_Test = 0x50;
else if(Test_MM==5) //拔开力试验
Mode_Test = 0x06;
else if(Test_MM==6) //连接牢固度
Mode_Test = 0x07;
else if(Test_MM==7) //滑动性试验
Mode_Test = 0x0d;
else if(Test_MM==8) //正压密合试验
Mode_Test = 0x0b;
else if(Test_MM==9) //压缩试验
Mode_Test = 0x09;
else
Mode_Test = 2;
}
else if(Test_MM==1) //拉伸试验直接进入试验,无起始力值
{
CD_Vol2 = CD_Vol1;
LL_00 = 0;
LL_01 = Lin_Xn;
LL_02 = 0;
Mode_Test = 2;
}
//大于设定位移直接回位结束试验
if(1)
{
if(CD_Vol1<CD_Vol4) //大于设定位移直接回位结束试验
{
if(Set1_D[Test_MM][8]==0)
{
Mode_Test = 0xfa;
}
else
{
Time9 = Time0;
Set_Speed = 0;
ET1 = 0;
TR1 = 0;
Mode_Test = 0xf9;
}
}
}
}
}
//拉伸试验
else if(Mode_Test==CC4 ) //0x02 采信最
{
if(B_AD)
{
B_AD = 0;
Line_Code01();
//判断是否满足停机条件,停止试验
if((End_Max>=Set1_D[Test_MM][4])||(B_FS)) //大于初始力值
{
B_FS = 1;
SL1 = End_Max*Set1_D[Test_MM][6]/100;
if(End02<SL1) //停止试验
{
B_Line = 1;
B_Stop = 1;
Ymax_Dat = End02;
}
}
}
if((LL_00>=LL_01)||(B_Stop))
{
LL_02 = LL_00;
//试样变形量
Test_End01 = LL_02;
//计算伸长率
Test_End02 = LL_02*10000/Set1_D[Test_MM][1];
//计算拉伸强度
Test_End03 = End_Max*100/Set1_D[Test_MM][2]*1000/Set1_D[Test_MM][3];
if(B_Stop)
B_Line = 1;
Draw_Line();
if(B_Stop)
{
B_Stop = 0;
Time9 = Time0;
Set_Speed = 0;
ET1 = 0;
TR1 = 0;
Mode_Mot = 0;
Mode_Test = 0xf9;
}
}
}
//剥离试验
else if(Mode_Test==CC4 ) //0x03
{
if(LL_02>Set1_D[Test_MM][2]) //到达结束值 结束试验
{
B_Line = 1;
B_Stop = 1;
}
if(B_AD)
{
B_AD = 0;
Line_Code01();
if(LL_02>Set1_D[Test_MM][1]) //大于头长度
{
//为计算平均值准备
TestAD_N ;
TestAD_Sum = End02;
//Line_Code01中有相应的代码,这个地方可以注释掉
// if(End02>End_Max)
// End_Max = End02;
// else if(End02<End_Min)
// End_Min = End02;
}
else
{
TestAD_N = 1;
TestAD_Sum = 0;
Test_End01 = 0;
End_Max = End02;
End_Min = End02;
}
}
if((LL_00>=LL_01)||(B_Stop))
{
LL_02 = LL_00/2;
//计算平均力值
Test_End01 = TestAD_Sum/TestAD_N;
//计算强度
Test_End02 = Test_End01*1500/Set1_D[Test_MM][3]; //单位 N/15mm
Draw_Line();
if(B_Stop)
{
B_Stop = 0;
Time9 = Time0;
Set_Speed = 0;
ET1 = 0;
TR1 = 0;
Mode_Mot = 0;
Mode_Test = 0xf9;
}
}
}
//针尖穿刺试验
else if(Mode_Test==CC4 ) //0x04
{
if(B_AD)
{
B_AD = 0;
Line_Code02();
//如果压力达到初始压力速度变为试验速度
if(End02C>=Set1_D[Test_MM][4])
{
Set_Speed = Set1_D[Test_MM][0];
Mode_Mot = 1; //更换速度重新启动电机
}
//判断是否满足停机条件,停止试验
if((End_Max>=Set1_D[Test_MM][4])||(B_FS)) //大于初始力值
{
B_FS = 1;
SL1 = End_Max*Set1_D[Test_MM][6]/100;
if(End02C<SL1) //停止试验
{
B_Line = 1;
B_Stop = 1;
Ymax_Dat = End02C;
}
}
if(CD_Vol1<CD_Vol4) //大于设定位移直接回位结束试验
{
B_Line = 1;
B_Stop = 1;
}
}
if((LL_00>=LL_01)||(B_Stop))
{
//位移
LL_02 = LL_00;
//取最大力值
Test_End01 = End_Max;
Draw_Line();
if(B_Stop)
{
B_Stop = 0;
Time9 = Time0;
Set_Speed = 0;
ET1 = 0;
TR1 = 0;
Mode_Mot = 0;
if(Test_MM==3) //穿刺力
Mode_Test = 0x05;
else
Mode_Test = 0xf9;
}
}
}
//B针尖穿刺试验 测量回拔力值
else if(Mode_Test==CC4 ) //0x05 测量回拔力值
{
if (B_AD)
{
B_AD = 0;
if (Set_Speed==0) //回位有个延时
{
if (Time0-Time9>1000)
{
Set_Speed = Set1_D[Test_MM][7];
Mot_DIRB = 0;
Mode_Mot = 1;
End_Max = End02;
}
}
else
{
if (End02>End_Max) //最大力值
{
End_Max = End02;
Test_End02 = End_Max;
}
if (CD_Vol1>=CD_Vol3) //回位到位 试验结束 向下回位
{
Mode_Mot = 0;
ET1 = 0;
TR1 = 0;
B_Stop = 1;
Mode_Test = 0xfa;
if (Test_N0<999999999)
Test_N0 ;
else
Test_N0 = 0;
UFL1.SL = Test_N0;
II1 = 0x0008;
CC2 = 0;
Write24c128(UFL1.UC[CC2 ],II1 );
Write24c128(UFL1.UC[CC2 ],II1 );
Write24c128(UFL1.UC[CC2 ],II1 );
Write24c128(UFL1.UC[CC2 ],II1 );
Write_Test(); //写入试验结果
U1T_Mode = 4; //发送试验结果
}
}
}
}
//拔开力试验
else if(Mode_Test==CC4 ) //0x06
{
if(B_AD)
{
B_AD = 0;
Line_Code01();
//判断是否满足停机条件,停止试验
if((End_Max>=Set1_D[Test_MM][4])||(B_FS)) //大于初始力值
{
B_FS = 1;
SL1 = End_Max*Set1_D[Test_MM][6]/100;
if(End02<SL1) //停止试验
{
B_Line = 1;
B_Stop = 1;
Ymax_Dat = End02;
}
}
if(CD_Vol1>CD_Vol4) //大于设定位移直接回位结束试验
{
B_Line = 1;
B_Stop = 1;
}
}
if((LL_00>=LL_01)||(B_Stop))
{
//位移
LL_02 = LL_00;
Test_End01 = LL_02;
//取最大力值
Test_End02 = End_Max;
Draw_Line();
if(B_Stop)
{
B_Stop = 0;
Time9 = Time0;
Set_Speed = 0;
ET1 = 0;
TR1 = 0;
Mode_Mot = 0;
Mode_Test = 0xf9;
}
}
}
//连接牢固度
else if(Mode_Test==CC4 ) //0x07 初始加压
{
if(B_AD)
{
B_AD = 0;
Line_Code01();
if(End_Max>Set1_D[Test_MM][1])
End_Max = Set1_D[Test_MM][1];
if(End02>Set1_D[Test_MM][1]) //大于设定压力 结束加压
{
B_Line = 1;
B_Stop = 1;
}
SL1 = End_Max*Set1_D[Test_MM][6]/100;
if((End02<SL1)&&(End02>=Set1_D[Test_MM][4])) //破型判断 停止试验
{
B_Line = 1;
B_Stop = 1;
Test_End04 = 2;
Ymax_Dat = End02;
}
if(CD_Vol1>CD_Vol4) //大于设定位移直接回位结束试验
{
B_Line = 1;
B_Stop = 1;
}
}
if((LL_00>=LL_01)||(B_Stop))
{
//位移
LL_02 = LL_00;
//取最大力值
Test_End01 = End_Max; //最大力值
Test_End03 = End_Max;
Draw_Line();
if(B_Stop)
{
B_Stop = 0;
LL_03 = LL_00; //记录点位置
Set_Speed = 0;
ET1 = 0;
TR1 = 0;
Mode_Mot = 0;
if(Test_End04==0) //进入保压
{
Time_L1 = Time_L0;
End_Max = End02;
End_Min = End02;
Mode_Test ;
}
else //直接结束试验
{
B_Stop = 0;
Time9 = Time0;
Set_Speed = 0;
ET1 = 0;
TR1 = 0;
Mode_Mot = 0;
Mode_Test = 0xf9;
}
}
}
}
else if(Mode_Test==CC4 ) //0x08 保压时间 保压期间补压 并计算出位移量
{
if(B_AD)
{
B_AD = 0;
Line_Code01();
if(End_Max>Set1_D[Test_MM][1])
End_Max = Set1_D[Test_MM][1];
//破型判断
SL1 = End_Max*Set1_D[Test_MM][6]/100;
if(End02<SL1) //破型判断 停止试验
{
B_Stop = 1;
Test_End04 = 2;
Ymax_Dat = End02;
}
//时间是否超
SL1 = Set1_D[Test_MM][2]*10;
if(Time_L0-Time_L1<SL1) //保压中 时间
{
Test_End02 = (Time_L0-Time_L1)/10;
if(End02<Set1_D[Test_MM][1]-20)
{
if(Set_Speed==0)
{
//速度
Set_Speed = Set1_D[Test_MM][0];
Mot_DIRB = 0; //向上运动
Mode_Mot = 1; //启动电机
}
else
{
}
}
else
{
if(Set_Speed==0)
{
}
else
{
Set_Speed = 0;
ET1 = 0;
TR1 = 0;
Mode_Mot = 0;
}
}
}
else //结束试验
{
Test_End04 = 1;
B_Stop = 1;
}
//位移是否超
if(CD_Vol1>CD_Vol4) //大于设定位移直接回位结束试验
{
B_Line = 1;
B_Stop = 1;
}
}
if((LL_00>=LL_01)||(B_Stop))
{
//位移
LL_02 = LL_00;
Draw_Line();
if(B_Stop)
{
if(Test_End04==1) //试验成功,时间改为设定时间
Test_End02 = Set1_D[Test_MM][2];
B_Stop = 0;
Time9 = Time0;
Set_Speed = 0;
ET1 = 0;
TR1 = 0;
Mode_Mot = 0;
Mode_Test = 0xf9;
}
}
}
//压缩试验
else if(Mode_Test==CC4 ) //0x09 初始加压
{
if(B_AD)
{
B_AD = 0;
Line_Code02();
if(End02C>Set1_D[Test_MM][1]) //大于设定压力 结束加压
{
B_Line = 1;
B_Stop = 1;
}
SL1 = End_Max*Set1_D[Test_MM][6]/100;
if((End02C<SL1)&&(End02C>=Set1_D[Test_MM][4])) //破型判断 停止试验
{
B_Line = 1;
B_Stop = 1;
Test_End04 = 2;
Ymax_Dat = End02C;
}
if(CD_Vol1<CD_Vol4) //大于设定位移直接回位结束试验
{
B_Line = 1;
B_Stop = 1;
}
}
if((LL_00>=LL_01)||(B_Stop))
{
//位移
LL_02 = LL_00;
//取最大力值
Test_End03 = End_Max;
Draw_Line();
if(B_Stop)
{
B_Stop = 0;
LL_03 = LL_00; //记录点位置
Set_Speed = 0;
ET1 = 0;
TR1 = 0;
Mode_Mot = 0;
if(Test_End04==0) //进入保压
{
Time_L1 = Time_L0;
End_Max = End02C;
End_Min = End02C;
Mode_Test ;
}
else //直接结束试验
{
B_Stop = 0;
Time9 = Time0;
Set_Speed = 0;
ET1 = 0;
TR1 = 0;
Mode_Mot = 0;
Mode_Test = 0xf9;
}
}
}
}
else if(Mode_Test==CC4 ) //0x0A 保压时间 保压期间补压 并计算出位移量
{
if(B_AD)
{
B_AD = 0;
Line_Code02();
SL1 = End_Max*Set1_D[Test_MM][6]/100;
if(End02C<SL1) //破型判断 停止试验
{
B_Stop = 1;
Test_End04 = 2;
Ymax_Dat = End02C;
}
SL1 = Set1_D[Test_MM][2]*10;
if(Time_L0-Time_L1<SL1) //保压中
{
Test_End02 = (Time_L0-Time_L1)/10;
if(End02C<Set1_D[Test_MM][1]-20)
{
if(Set_Speed==0)
{
//速度
Set_Speed = Set1_D[Test_MM][0];
Mot_DIRB = 1; //向上运动
Mode_Mot = 1; //启动电机
}
else
{
}
}
else
{
if(Set_Speed==0)
{
}
else
{
Set_Speed = 0;
ET1 = 0;
TR1 = 0;
Mode_Mot = 0;
}
}
}
else //结束试验
{
Test_End04 = 1;
B_Stop = 1;
}
if(CD_Vol1<CD_Vol4) //大于设定位移直接回位结束试验
{
B_Line = 1;
B_Stop = 1;
}
}
if((LL_00>=LL_01)||(B_Stop))
{
//位移
LL_02 = LL_00;
//保持时间内的位移
Test_End01 = LL_02-LL_03;
Draw_Line();
if(B_Stop)
{
if(Test_End04==1) //试验成功,时间改为设定时间
Test_End02 = Set1_D[Test_MM][2];
B_Stop = 0;
Time9 = Time0;
Set_Speed = 0;
ET1 = 0;
TR1 = 0;
Mode_Mot = 0;
Mode_Test = 0xf9;
}
}
}
//正压密合试验
else if(Mode_Test==CC4 ) //0x0b 初始加压
{
if(B_AD)
{
B_AD = 0;
Line_Code02();
if(End02C>=Set1_D[Test_MM][1]) //大于设定压力 结束加压
{
B_Line = 1;
B_Stop = 1;
}
SL1 = End_Max*Set1_D[Test_MM][6]/100;
if((End02C<SL1)&&(End02C>=Set1_D[Test_MM][4])) //破型判断 停止试验
{
B_Line = 1;
B_Stop = 1;
Test_End04 = 2;
Ymax_Dat = End02C;
}
if(CD_Vol1<CD_Vol4) //大于设定位移直接回位结束试验
{
B_Line = 1;
B_Stop = 1;
}
}
if((LL_00>=LL_01)||(B_Stop))
{
//位移
LL_02 = LL_00;
//取最大力值
Test_End01 = End_Max;
Test_End03 = End_Max;
Draw_Line();
if(B_Stop)
{
B_Stop = 0;
LL_03 = LL_00; //记录点位置
Set_Speed = 0;
ET1 = 0;
TR1 = 0;
Mode_Mot = 0;
if(Test_End04==0) //进入保压
{
Time_L1 = Time_L0;
End_Max = End02C;
End_Min = End02C;
Mode_Test ;
}
else //直接结束试验
{
B_Stop = 0;
Time9 = Time0;
Set_Speed = 0;
ET1 = 0;
TR1 = 0;
Mode_Mot = 0;
Mode_Test = 0xf9;
}
}
}
}
else if(Mode_Test==CC4 ) //0x0c 保压时间 保压期间补压 并计算出位移量
{
if(B_AD)
{
B_AD = 0;
Line_Code02();
SL1 = End_Max*Set1_D[Test_MM][6]/100;
if(End02C<SL1) //破型判断 停止试验
{
B_Stop = 1;
Test_End04 = 2;
Ymax_Dat = End02C;
}
SL1 = Set1_D[Test_MM][2]*10;
if(Time_L0-Time_L1<SL1) //保压中
{
Test_End02 = (Time_L0-Time_L1)/10;
if(End02C<Set1_D[Test_MM][1]-2)
{
if(Set_Speed==0)
{
//速度
Set_Speed = Set1_D[Test_MM][0];
Mot_DIRB = 1; //向上运动
Mode_Mot = 1; //启动电机
}
else
{
}
}
else
{
if(Set_Speed==0)
{
}
else
{
Set_Speed = 0;
ET1 = 0;
TR1 = 0;
Mode_Mot = 0;
}
}
}
else //结束试验
{
Test_End04 = 1;
B_Stop = 1;
}
if(CD_Vol1<CD_Vol4) //大于设定位移直接回位结束试验
{
B_Line = 1;
B_Stop = 1;
}
}
if((LL_00>=LL_01)||(B_Stop))
{
//位移
LL_02 = LL_00;
//保持时间内的位移
Test_End01= End_Max;
Draw_Line();
if(B_Stop)
{
if(Test_End04==1) //试验成功,时间改为设定时间
Test_End02 = Set1_D[Test_MM][2];
B_Stop = 0;
Time9 = Time0;
Set_Speed = 0;
ET1 = 0;
TR1 = 0;
Mode_Mot = 0;
Mode_Test = 0xf9;
}
}
}
//滑动性试验
else if(Mode_Test==CC4 ) //0x0d 拉动时的最大力值 位移停机
{
//达到设定位移停止试验
if(LL_02>=Set1_D[Test_MM][2])
{
B_Line = 1;
B_Stop = 1;
Ymax_Dat = End02;
}
if(B_AD)
{
B_AD = 0;
Line_Code01();
if(End_Max<0)
End_Max = 0;
}
if((LL_00>=LL_01)||(B_Stop))
{
//位移
LL_02 = LL_00;
//取最大力值
Test_End01 = End_Max;
Draw_Line();
if(B_Stop)
{
B_Stop = 0;
Time9 = Time0;
Set_Speed = 0;
ET1 = 0;
TR1 = 0;
Mode_Mot = 0;
Mode_Test ;
}
}
}
else if(Mode_Test==CC4 ) //0x0e 停止 30 秒
{
if(Time0-Time9>=30000)
{
B_Stop = 0;
TestAD_N = 0;
TestAD_Sum = 0;
End_Max = End02C;
End_Min = End02C;
End_Ave = 0;
LL_00 = 0;
LL_01 = 0;
LL_02 = 0;
Time9 = Time0;
Set_Speed = Set1_D[Test_MM][0];
Mot_DIRB = 1; //向下运动
Mode_Mot = 1;
Mode_Test ;
}
}
else if(Mode_Test==CC4 ) //0x0f 推动 采信最大值 最小值 平均值
{
//达到设定位移停止试验
if(CD_Vol1<=CD_Vol3)
{
B_Line = 1;
B_Stop = 1;
Ymax_Dat = End02C;
}
if(B_AD)
{
B_AD = 0;
//为计算平均值准备
if(LL_02<500) //1.0mm
{
TestAD_N = 0;
TestAD_Sum = 0;
if(End_Max<End02C)
{
End_Max = End02C;
End_Min = End02C;
}
else if(End_Min>End02C)
End_Min = End02C;
}
else
{
if(TestAD_N==0)
End_Max = End02C;
else if(End_Max<End02C)
End_Max = End02C;
TestAD_N ;
TestAD_Sum = End02C;
}
Line_Code02();
if(End_Max<0)
End_Max = 0;
if(End_Min<0)
End_Min = 0;
if(TestAD_Sum<0)
TestAD_Sum = 0;
}
if((LL_00>=LL_01)||(B_Stop))
{
//位移
LL_02 = LL_00;
//取最大力值
FF1 = TestAD_N;
FF1 = TestAD_Sum/FF1;
Test_End02 = (long int)FF1;
Test_End03 = End_Max;
Test_End04 = End_Min;
Draw_Line();
if(B_Stop)
{
B_Stop = 0;
Time9 = Time0;
Set_Speed = 0;
ET1 = 0;
TR1 = 0;
Mode_Mot = 0;
Set1_D[Test_MM][8] = 0;
Mode_Test = 0xf9;
}
}
}
//针尖穿刺力
CC4 = 0x50;
if(Mode_Test==CC4 ) //30 起始力值判断
{
if(B_AD)
{
B_AD = 0;
if(End02C>Ymax_Dat)
Ymax_Dat = End02C;
else if(End02C<Ymin_Dat)
Ymin_Dat = End02C;
End_Max = End02C;
End_Min = End02C;
//判断是否满足停机条件,停止试验
if(End_Max>=Set1_D[Test_MM][4]) //大于初始力值 转入下一个阶段
{
B_FS = 1;
Mode_Test ;
}
if(CD_Vol1<CD_Vol4) //大于设定位移直接回位结束试验
{
Set_Speed = 0;
ET1 = 0;
TR1 = 0;
Mode_Mot = 0;
if(Set1_D[Test_MM][8]==0)
Mode_Test = 0xfa;
else
Mode_Test = 0xfb;
}
if(Lin_Yn<7)
SL1 = End02C;
else
SL1 = End02C/100 1;
if(SL1>LL_Y[Lin_Yn])
{
Lin_Yn ;
if(Lin_Yn==7)
{
for(II1=0;II1<=Lin_N1;II1 )
Lin_Dat[II1] /= 100;
Lin_N0 = 0;
Mode02 = 0x11;
}
else
{
Mode02 = 0x14;
}
}
}
if((LL_00>=LL_01)||(B_Stop))
{
//位移
LL_02 = LL_00;
Draw_Line();
}
}
else if(Mode_Test==CC4 ) //31 第一个波峰
{
if(B_AD)
{
B_AD = 0;
if(End02C>Ymax_Dat)
Ymax_Dat = End02C;
else if(End02C<Ymin_Dat)
Ymin_Dat = End02C;
if(End02C>End_Max)
End_Max = End02C;
else if(End02C<End_Min)
End_Min = End02C;
//判断是否满足停机条件,停止试验
if(B_FS) //大于初始力值
{
if(End_Max-End02C>Set_FF[0]) //停止试验
{
B_Stop = 0;
//取最大力值
Test_End01 = End_Max;
Mode_Test ;
End_Max = End02C;
End_Min = End02C;
// B_Line = 1;
// B_Stop = 1;
// Ymax_Dat = End02;
}
}
if(CD_Vol1<CD_Vol4) //大于设定位移直接回位结束试验
{
Set_Speed = 0;
ET1 = 0;
TR1 = 0;
Mode_Mot = 0;
if(Set1_D[Test_MM][8]==0)
Mode_Test = 0xfa;
else
Mode_Test = 0xfb;
}
if(Lin_Yn<7)
SL1 = End02C;
else
SL1 = End02C/100 1;
if(SL1>LL_Y[Lin_Yn])
{
Lin_Yn ;
if(Lin_Yn==7)
{
for(II1=0;II1<=Lin_N1;II1 )
Lin_Dat[II1] /= 100;
Lin_N0 = 0;
Mode02 = 0x11;
}
else
{
Mode02 = 0x14;
}
}
}
if((LL_00>=LL_01)||(B_Stop))
{
//位移
LL_02 = LL_00;
//取最大力值
Test_End01 = End_Max;
Draw_Line();
if(B_Stop)
{
B_Stop = 0;
Mode_Test ;
End_Max = End02C;
End_Min = End02C;
}
}
}
else if(Mode_Test==CC4 ) //32 判断第一个波谷
{
if(B_AD)
{
B_AD = 0;
if(End02C>Ymax_Dat)
Ymax_Dat = End02C;
else if(End02C<Ymin_Dat)
Ymin_Dat = End02C;
if(End02C>End_Max)
End_Max = End02C;
else if(End02C<End_Min)
{
End_Max = End02C;
End_Min = End02C;
}
//判断是否满足停机条件,停止试验
if(End_Max-End_Min>=Set1_D[Test_MM][6]) //大于初始力值 转入下一个阶段
{
End_Max = End02C;
End_Min = End02C;
Mode_Test ;
}
if(CD_Vol1<CD_Vol4) //大于设定位移直接回位结束试验
{
Set_Speed = 0;
ET1 = 0;
TR1 = 0;
Mode_Mot = 0;
if(Set1_D[Test_MM][8]==0)
Mode_Test = 0xfa;
else
Mode_Test = 0xfb;
}
if(Lin_Yn<7)
SL1 = End02C;
else
SL1 = End02C/100 1;
if(SL1>LL_Y[Lin_Yn])
{
Lin_Yn ;
if(Lin_Yn==7)
{
for(II1=0;II1<=Lin_N1;II1 )
Lin_Dat[II1] /= 100;
Lin_N0 = 0;
Mode02 = 0x11;
}
else
{
Mode02 = 0x14;
}
}
}
if((LL_00>=LL_01)||(B_Stop))
{
//位移
LL_02 = LL_00;
Draw_Line();
}
}
else if(Mode_Test==CC4 ) //33 第二个波峰
{
if(B_AD)
{
B_AD = 0;
if(End02C>Ymax_Dat)
Ymax_Dat = End02C;
else if(End02C<Ymin_Dat)
Ymin_Dat = End02C;
if(End02C>End_Max)
End_Max = End02C;
else if(End02C<End_Min)
End_Min = End02C;
//判断是否满足停机条件,停止试验
if(B_FS) //大于初始力值
{
if(End_Max-End02C>Set_FF[1]) //停止试验
{
B_Stop = 0;
//取最大力值
Test_End02 = End_Max;
Mode_Test ;
End_Max = End02C;
End_Min = End02C;
// B_Line = 1;
// B_Stop = 1;
// Ymax_Dat = End02;
}
}
if(CD_Vol1<CD_Vol4) //大于设定位移直接回位结束试验
{
Set_Speed = 0;
ET1 = 0;
TR1 = 0;
Mode_Mot = 0;
Mode_Test = 0xf9; //存结果处理
}
if(Lin_Yn<7)
SL1 = End02C;
else
SL1 = End02C/100 1;
if(SL1>LL_Y[Lin_Yn])
{
Lin_Yn ;
if(Lin_Yn==7)
{
for(II1=0;II1<=Lin_N1;II1 )
Lin_Dat[II1] /= 100;
Lin_N0 = 0;
Mode02 = 0x11;
}
else
{
Mode02 = 0x14;
}
}
}
if((LL_00>=LL_01)||(B_Stop))
{
//位移
LL_02 = LL_00;
//取最大力值
Test_End02 = End_Max;
Draw_Line();
if(B_Stop)
{
B_Stop = 0;
Mode_Test ;
End_Max = End02C;
End_Min = End02C;
}
}
}
else if(Mode_Test==CC4 ) //34 判断第二个波谷
{
if(B_AD)
{
B_AD = 0;
if(End02C>Ymax_Dat)
Ymax_Dat = End02C;
else if(End02C<Ymin_Dat)
Ymin_Dat = End02C;
if(End02C>End_Max)
End_Max = End02C;
else if(End02C<End_Min)
{
End_Max = End02C;
End_Min = End02C;
}
//判断是否满足停机条件,停止试验
if(End_Max-End_Min>=Set1_D[Test_MM][6]) //大于初始力值 转入下一个阶段
{
End_Max = End02C;
End_Min = End02C;
Mode_Test ;
}
if(CD_Vol1<CD_Vol4) //大于设定位移直接回位结束试验
{
Set_Speed = 0;
ET1 = 0;
TR1 = 0;
Mode_Mot = 0;
Mode_Test = 0xf9; //存结果处理
}
if(Lin_Yn<7)
SL1 = End02C;
else
SL1 = End02C/100 1;
if(SL1>LL_Y[Lin_Yn])
{
Lin_Yn ;
if(Lin_Yn==7)
{
for(II1=0;II1<=Lin_N1;II1 )
Lin_Dat[II1] /= 100;
Lin_N0 = 0;
Mode02 = 0x11;
}
else
{
Mode02 = 0x14;
}
}
}
if((LL_00>=LL_01)||(B_Stop))
{
//位移
LL_02 = LL_00;
Draw_Line();
}
}
else if(Mode_Test==CC4 ) //35 第三个波峰
{
if(B_AD)
{
B_AD = 0;
if(End02C>Ymax_Dat)
Ymax_Dat = End02C;
else if(End02C<Ymin_Dat)
Ymin_Dat = End02C;
if(End02C>End_Max)
End_Max = End02C;
else if(End02C<End_Min)
End_Min = End02C;
//判断是否满足停机条件,停止试验
if(B_FS) //大于初始力值
{
if(End_Max-End02C>Set_FF[2]) //停止试验
{
B_Stop = 0;
//取最大力值
Test_End03 = End_Max;
Mode_Test ;
End_Max = End02C;
End_Min = End02C;
// B_Line = 1;
// B_Stop = 1;
// Ymax_Dat = End02;
}
}
if(CD_Vol1<CD_Vol4) //大于设定位移直接回位结束试验
{
Set_Speed = 0;
ET1 = 0;
TR1 = 0;
Mode_Mot = 0;
Mode_Test = 0xf9; //存结果处理
}
if(Lin_Yn<7)
SL1 = End02C;
else
SL1 = End02C/100 1;
if(SL1>LL_Y[Lin_Yn])
{
Lin_Yn ;
if(Lin_Yn==7)
{
for(II1=0;II1<=Lin_N1;II1 )
Lin_Dat[II1] /= 100;
Lin_N0 = 0;
Mode02 = 0x11;
}
else
{
Mode02 = 0x14;
}
}
}
if((LL_00>=LL_01)||(B_Stop))
{
//位移
LL_02 = LL_00;
Test_End05 = LL_02;
//取最大力值
Test_End03 = End_Max;
Draw_Line();
// if(B_Stop)
// {
// B_Stop = 0;
// Mode_Test ;
// End_Max = End02C;
// End_Min = End02C;
// }
}
}
else if(Mode_Test==CC4 ) //36 判断第三个波谷 用位移来判 5mm 后再取最大值
{
if(B_AD)
{
B_AD = 0;
if(End02C>Ymax_Dat)
Ymax_Dat = End02C;
else if(End02C<Ymin_Dat)
Ymin_Dat = End02C;
End_Max = End02C;
End_Min = End02C;
if(CD_Vol1<CD_Vol4) //大于设定位移直接回位结束试验
{
Set_Speed = 0;
ET1 = 0;
TR1 = 0;
Mode_Mot = 0;
Mode_Test = 0xf9; //存结果处理
}
if(Lin_Yn<7)
SL1 = End02C;
else
SL1 = End02C/100 1;
if(SL1>LL_Y[Lin_Yn])
{
Lin_Yn ;
if(Lin_Yn==7)
{
for(II1=0;II1<=Lin_N1;II1 )
Lin_Dat[II1] /= 100;
Lin_N0 = 0;
Mode02 = 0x11;
}
else
{
Mode02 = 0x14;
}
}
}
if((LL_00>=LL_01)||(B_Stop))
{
//位移
LL_02 = LL_00;
//判断是否满足停机条件,停止试验
if(LL_02-Test_End05>=500) //大于位移 转入下一个阶段
{
End_Max = End02C;
End_Min = End02C;
Mode_Test ;
}
Draw_Line();
}
}
else if(Mode_Test==CC4 ) //33 穿刺力最大值
{
if(B_AD)
{
B_AD = 0;
if(End02C>Ymax_Dat)
Ymax_Dat = End02C;
else if(End02C<Ymin_Dat)
Ymin_Dat = End02C;
if(End02C>End_Max)
End_Max = End02C;
else if(End02C<End_Min)
End_Min = End02C;
//判断是否满足停机条件,停止试验
if(1) //大于初始力值
{
if(CD_Vol1<CD_Vol4) //停止试验
{
B_Stop = 0;
//取最大力值
Test_End04 = End_Max;
Mode_Test ;
End_Max = End02C;
End_Min = End02C;
// B_Line = 1;
// B_Stop = 1;
// Ymax_Dat = End02;
Set_Speed = 0;
ET1 = 0;
TR1 = 0;
Mode_Mot = 0;
Mode_Test = 0xf9; //存结果处理
}
}
if(Lin_Yn<7)
SL1 = End02C;
else
SL1 = End02C/100 1;
if(SL1>LL_Y[Lin_Yn])
{
Lin_Yn ;
if(Lin_Yn==7)
{
for(II1=0;II1<=Lin_N1;II1 )
Lin_Dat[II1] /= 100;
Lin_N0 = 0;
Mode02 = 0x11;
}
else
{
Mode02 = 0x14;
}
}
}
if((LL_00>=LL_01)||(B_Stop))
{
//位移
LL_02 = LL_00;
//取最大力值
Test_End04 = End_Max;
Draw_Line();
}
}
else if(Mode_Test==0xf9) //处理结果
{
if(Test_N0<999999999)
Test_N0 ;
else
Test_N0 = 0;
UFL1.SL = Test_N0;
II1 = 0x0008;
CC2 = 0;
Write24c128(UFL1.UC[CC2 ],II1 );
Write24c128(UFL1.UC[CC2 ],II1 );
Write24c128(UFL1.UC[CC2 ],II1 );
Write24c128(UFL1.UC[CC2 ],II1 );
Write_Test(); //写入试验结果
U1T_Mode = 4; //发送试验结果
if(Set1_D[Test_MM][8]==0)
Mode_Test = 0xfa;
else
Mode_Test = 0xfb;
}
else if(Mode_Test==0xfb) //正在回位
{
if(Set_Speed==0) //回位有个延时
{
if(Time0-Time9>1000)
{
Set_Speed = Set1_D[Test_MM][7];
if((Test_MM==1)|(Test_MM==2)|(Test_MM==5)|(Test_MM==6))
Mot_DIRB = 1;
else
Mot_DIRB = 0;
Mode_Mot = 1;
}
}
if((Test_MM==1)|(Test_MM==2)|(Test_MM==5)|(Test_MM==6))
{
if(CD_Vol1<=CD_Vol3) //回位到位 试验结束 向下回位
{
Mode_Mot = 0;
ET1 = 0;
TR1 = 0;
Mode_Test = 0xfa;
}
}
else
{
if(CD_Vol1>=CD_Vol3) //回位到位 试验结束 向上回位
{
Mode_Mot = 0;
ET1 = 0;
TR1 = 0;
Mode_Test = 0xfa;
}
}
}
else if(Mode_Test==0xfa) //试验结束
{
}
}
void TR_Print(void) //打印
{
//可打英文 32 个字母 中文 16 个汉字
CC4 = 0;
if(PRT_Mode==CC4 )
{
}
else if(PRT_Mode==CC4 ) //打印
{
S4CON |= S4TI; //置位 S2TI 以方便下面使用
PRT_Mode ;
PrintC(0x1b);
PrintC(0x31);
PrintC(0x01);
if(Mode01==4)
PRT_Mode = 0x30;
}
else if(PRT_Mode==CC4 ) //打印年月日时分秒
{
CC1 = 0;
PrintL(" ");
PrintN5(20);
PrintN5(Time[CC1 ]);
PrintL("年");
PrintN5(Time[CC1 ]);
PrintL("月");
PrintN5(Time[CC1 ]);
PrintL("日");
PrintL(" ");
CC1 ;
PrintN5(Time[CC1 ]);
PrintC(':');
PrintN5(Time[CC1 ]);
PrintC(':');
PrintN5(Time[CC1 ]);
PrintC(0x0a);
PrintC(0x0d);
PrintC(0x0a);
PrintC(0x0d);
PRT_Mode ;
}
else if(PRT_Mode==CC4 ) //打印 Test_End04
{
if(Test_MM==4) //持续力平均值 02
{
PrintL("力值(F4): ");
PrintN6(Test_End04);
PrintL(" N");
PrintC(0x0a);
PrintC(0x0d);
}
else if(Test_MM==7) //最小力 02
{
PrintL(" 最小力 : ");
PrintN6(Test_End04);
PrintL(" N");
PrintC(0x0a);
PrintC(0x0d);
}
else if(Test_MM==8)
{
PrintL("是否合格: □是 □否");
PrintC(0x0a);
PrintC(0x0d);
}
else
{
}
PRT_Mode ;
}
else if(PRT_Mode==CC4 ) //打印 Test_End03
{
if(Test_MM==1) //启始力 02
{
PrintL("拉伸强度: ");
PrintN6(Test_End03);
PrintL(" MPa");
PrintC(0x0a);
PrintC(0x0d);
}
else if(Test_MM==4) //撕拉盖开启力 平均力值
{
PrintL("力值 F2 : ");
PrintN6(Test_End03);
PrintL(" N");
PrintC(0x0a);
PrintC(0x0d);
}
else if(Test_MM==7) //最小力 02
{
PrintL(" 最大力 : ");
PrintN6(Test_End03);
PrintL(" N");
PrintC(0x0a);
PrintC(0x0d);
}
else
{
}
PRT_Mode ;
}
else if(PRT_Mode==CC4 ) //打印 Test_End02
{
if(Test_MM==1) //拉伸强度
{
PrintL(" 伸长率 : ");
PrintN6(Test_End02);
PrintL(" %");
PrintC(0x0a);
PrintC(0x0d);
}
else if(Test_MM==2) //最小力值
{
PrintL("剥离强度: ");
PrintN6(Test_End02);
PrintL(" N/15mm");
PrintC(0x0a);
PrintC(0x0d);
}
else if(Test_MM==3) //剥离强度
{
PrintL("回拔力值: ");
PrintN6(Test_End02);
PrintL(" N");
PrintC(0x0a);
PrintC(0x0d);
}
else if(Test_MM==4) //持续最大力
{
PrintL("力值 F1 : ");
PrintN6(Test_End02);
PrintL(" N");
PrintC(0x0a);
PrintC(0x0d);
}
else if(Test_MM==5) //持续力 1
{
PrintL("最大力值: ");
PrintN6(Test_End02);
PrintL(" N");
PrintC(0x0a);
PrintC(0x0d);
}
else if(Test_MM==7) //最小力 02
{
PrintL(" 平均力 : ");
PrintN6(Test_End02);
PrintL(" N");
PrintC(0x0a);
PrintC(0x0d);
}
else if((Test_MM==8)||(Test_MM==9)) //持续最大力
{
PrintL("保压时间: ");
PrintN6(Test_End02);
PrintL(" s");
PrintC(0x0a);
PrintC(0x0d);
}
else
{
}
PRT_Mode ;
}
else if(PRT_Mode==CC4 ) //打印 Test_End01
{
if(Test_MM==1) //伸长率
{
PrintL(" 变形量 : ");
PrintN6(Test_End01);
PrintL(" mm");
PrintC(0x0a);
PrintC(0x0d);
}
else if(Test_MM==2)
{
PrintL("平均力值: ");
PrintN6(Test_End01);
PrintL(" N");
PrintC(0x0a);
PrintC(0x0d);
}
else if(Test_MM==3)
{
PrintL("最大力值: ");
PrintN6(Test_End01);
PrintL(" N");
PrintC(0x0a);
PrintC(0x0d);
}
else if(Test_MM==4) //启始力
{
PrintL("力值 F0 : ");
PrintN6(Test_End01);
PrintL(" N");
PrintC(0x0a);
PrintC(0x0d);
}
/* else if(Test_MM==5) //启始力
{
PrintL("最大位移: ");
PrintN6(Test_End01);
PrintL(" mm");
PrintC(0x0a);
PrintC(0x0d);
} */
else if(Test_MM==6) //最小力 02
{
PrintL("试验压力: ");
PrintN6(Test_End01);
PrintL(" N");
PrintC(0x0a);
PrintC(0x0d);
}
else if(Test_MM==7) //最小力 02
{
PrintL(" 启始力 : ");
PrintN6(Test_End01);
PrintL(" N");
PrintC(0x0a);
PrintC(0x0d);
}
else if(Test_MM==8) //最小力 02
{
PrintL("试验压力: ");
PrintN3(Test_End01);
PrintL(" Kpa");
PrintC(0x0a);
PrintC(0x0d);
}
else if((Test_MM==9)) //开启力
{
PrintL("位移变化: ");
PrintN6(Test_End01);
PrintL(" mm");
PrintC(0x0a);
PrintC(0x0d);
}
else
{
}
PRT_Mode ;
}
else if(PRT_Mode==CC4 ) //打印 Set1_D[Test_MM][3]
{
if(Test_MM==1) //试样厚度ABCDEFG
{
PrintL("试样厚度: ");
PrintN8(Set1_D[Test_MM][3]);
PrintL(" mm");
PrintC(0x0a);
PrintC(0x0d);
}
else if(Test_MM==2)
{
PrintL("试样宽度: ");
PrintN6(Set1_D[Test_MM][3]);
PrintL(" mm");
PrintC(0x0a);
PrintC(0x0d);
}
else if((Test_MM==8)||(Test_MM==9)) //试样宽度
{
PrintL("设定位移: ");
PrintN6(Set1_D[Test_MM][3]);
PrintL(" mm");
PrintC(0x0a);
PrintC(0x0d);
}
else
{
}
PRT_Mode ;
}
else if(PRT_Mode==CC4 ) //打印 Set1_D[Test_MM][2]
{
if(Test_MM==1) //试样宽度
{
PrintL("试样宽度: ");
PrintN6(Set1_D[Test_MM][2]);
PrintL(" mm");
PrintC(0x0a);
PrintC(0x0d);
}
else if(Test_MM==2)
{
PrintL("试验长度: ");
PrintN6(Set1_D[Test_MM][2]);
PrintL(" mm");
PrintC(0x0a);
PrintC(0x0d);
}
else if((Test_MM==8)||(Test_MM==9)) //试样宽度
{
PrintL("设定时间: ");
PrintN6(Set1_D[Test_MM][2]);
PrintL(" s");
PrintC(0x0a);
PrintC(0x0d);
}
else
{
}
PRT_Mode ;
}
else if(PRT_Mode==CC4 ) //打印 Set1_D[Test_MM][1]
{
if((Test_MM==1)||(Test_MM==3)||(Test_MM==4)) //试样长度
{
PrintL("试样长度: ");
PrintN6(Set1_D[Test_MM][1]);
PrintL(" mm");
PrintC(0x0a);
PrintC(0x0d);
}
else if(Test_MM==2) //试样长度
{
PrintL(" 头长度 : ");
PrintN6(Set1_D[Test_MM][1]);
PrintL(" mm");
PrintC(0x0a);
PrintC(0x0d);
}
else if((Test_MM==6)||(Test_MM==9)) //试验压力
{
PrintL("设定压力: ");
PrintN6(Set1_D[Test_MM][1]);
PrintL(" N");
PrintC(0x0a);
PrintC(0x0d);
}
else if (Test_MM==8)
{
PrintL("轴向压力: ");
PrintN3(Set1_D[Test_MM][1]);
PrintL(" kPa");
PrintC(0x0a);
PrintC(0x0d);
}
else
{
}
PRT_Mode ;
}
else if(PRT_Mode==CC4 ) //打印 Set1_D[Test_MM][0]
{
PrintL("试验速度: ");
PrintN3(Set1_D[Test_MM][0]);
PrintL(" mm/min");
PrintC(0x0a);
PrintC(0x0d);
PRT_Mode ;
}
else if(PRT_Mode==CC4 ) //打印 LL_02
{
PRT_Mode ;
}
else if(PRT_Mode==CC4 ) //打印 End_Max
{
PRT_Mode ;
}
else if(PRT_Mode==CC4 ) //打印试验模式
{
PrintL("试验模式: ");
CC1 = 1;
if(Test_MM==CC1 )
PrintL("拉伸试验"); //1
else if(Test_MM==CC1 )
PrintL("剥离试验"); //2
else if(Test_MM==CC1 )
PrintL("针尖穿刺试验"); //3
else if(Test_MM==CC1 )
PrintL("输液针穿刺力"); //4
else if(Test_MM==CC1 )
PrintL("拔开力试验"); //5
else if(Test_MM==CC1 )
PrintL("连接牢固度"); //6
else if(Test_MM==CC1 )
PrintL("滑动性试验"); //7
else if(Test_MM==CC1 )
PrintL("正压密合性"); //8
else if(Test_MM==CC1 )
PrintL("压缩试验"); //9
else
PrintL("试验模式");
PrintC(0x0a);
PrintC(0x0d);
PRT_Mode ;
}
else if(PRT_Mode==CC4 ) //打印 试验编号
{
PrintL("试验编号: ");
if(Mode01==1)
PrintN10(Test_N0);
else
PrintN10(Test_N0_Q);
PrintL(" ");
PrintC(0x0a);
PrintC(0x0d);
PrintC(0x0a);
PrintC(0x0d);
PRT_Mode ;
}
else if(PRT_Mode==CC4 ) //34 打印 试样批号
{
if(Sample_Serial[0]!=0xff)
{
PrintL(" 批 号 : ");
for(CC1=0;CC1<14;CC1 )
{
if(Sample_Serial[CC1]==0xff)
break;
else
PrintC(Sample_Serial[CC1]);
}
PrintC(0x0a);
PrintC(0x0d);
}
PRT_Mode ;
}
else if(PRT_Mode==CC4 ) //打印 试样来源
{
CC1 = 0;
PrintL("试样名称:---------------------");
PrintC(0x0a);
PrintC(0x0d);
PrintC(0x0a);
PrintC(0x0d);
PRT_Mode ;
}
else if(PRT_Mode==CC4 ) //打印 试验人员
{
CC1 = 0;
PrintL("试验人员:(");
PrintN7(CoustB);
PrintL(")--------------");
PrintC(0x0a);
PrintC(0x0d);
PrintC(0x0a);
PrintC(0x0d);
PRT_Mode ;
}
else if(PRT_Mode==CC4 ) //36 打印 设备序号
{
CC1 = 0;
PrintL("设备序号:");
cptr = ID_ADDR_ROM;
PrintN9(*cptr );
PrintN9(*cptr );
PrintN9(*cptr );
PrintN9(*cptr );
PrintN9(*cptr );
PrintN9(*cptr );
PrintN9(*cptr );
PrintC(0x0a);
PrintC(0x0d);
PRT_Mode ;
}
else if(PRT_Mode==CC4 ) //37 打印 设备型号
{
CC1 = 0;
PrintL(" 医疗器械性能测试仪 YYL-03");
PrintC(0x0a);
PrintC(0x0d);
PrintL("设备型号:");
PrintC(0x0a);
PrintC(0x0d);
PRT_Mode ;
}
else if(PRT_Mode==CC4 ) //打印 试验报告
{
CC1 = 0;
PrintC(0x0a);
PrintC(0x0d);
PrintL(" ***试验报告***");
PrintL(" \n \n \n");
PrintC(0x0d);
PRT_Mode = 0;
}
CC4 = 0x30;
if(PRT_Mode==CC4 ) //打印公司名称
{
PrintL(" 济南三泉中石实验仪器有限公司 ");
PrintC(0x0a);
PrintC(0x0d);
PrintC(0x0a);
PrintC(0x0d);
PRT_Mode ;
}
else if(PRT_Mode==CC4 ) //网址
{
PrintL("网址:www.sumspring.com");
PrintC(0x0a);
PrintC(0x0d);
PRT_Mode ;
}
else if(PRT_Mode==CC4 ) //电话
{
PrintL("电话:0531-67808296");
PrintC(0x0a);
PrintC(0x0d);
PrintC(0x0a);
PrintC(0x0d);
PRT_Mode ;
}
else if(PRT_Mode==CC4 ) //软件版本
{
// PrintL("软件版本:BHY-01_V1.0.0");
PrintL("软件版本:YYL-03-V3.0.1D"); //清零按钮功能修改
PrintC(0x0a);
PrintC(0x0d);
PRT_Mode ;
}
else if(PRT_Mode==CC4 ) //硬件版本
{
PrintL("硬件版本:SUMSPRING-01-E.PCB");
PrintC(0x0a);
PrintC(0x0d);
PRT_Mode ;
}
else if(PRT_Mode==CC4 ) //关于
{
PrintL(" 关 于 ");
PrintL(" \n \n \n");
PrintC(0x0d);
PRT_Mode = 0;
}
}
void Draw_Line(void) //
{
Send_U1(3); //发送实时数据
Lin_N1 ;
if (Lin_Yn<7)
SL1 = Ymax_Dat;
else
SL1 = Ymax_Dat/100;
if (SL1<0)
SL1 = 0;
Lin_Dat[Lin_N1] = SL1;
if(Lin_N1>=512)
{
Lin_Xn *= 4;
II2 = 1;
for (II1=1;II1<=512;II1 )
{
SI1 = Lin_Dat[II1];
for (CC3=0;CC3<3;CC3 )
{
II1 ;
if (SI1<Lin_Dat[II1])
SI1 = Lin_Dat[II1];
}
Lin_Dat[II2] = SI1;
II2 ;
}
Lin_N0 = 0;
Lin_N1 = 128;
Mode02 = 0x11;
}
LL_01 = Lin_Xn;
if(Mode_Test==0x0D)
{
Ymax_Dat = End02;
Ymin_Dat = End02;
}
else if((Test_MM==3)|(Test_MM==4)|(Test_MM==7)|(Test_MM==8)|(Test_MM==9))
{
Ymax_Dat = End02C;
Ymin_Dat = End02C;
}
else
{
Ymax_Dat = End02;
Ymin_Dat = End02;
}
}
void Line_Code01(void)
{
if(Lin_Yn<7)
SL1 = End02;
else
SL1 = End02/100 1;
if(SL1>LL_Y[Lin_Yn])
{
Lin_Yn ;
if(Lin_Yn==7)
{
for(II1=0;II1<=Lin_N1;II1 )
Lin_Dat[II1] /= 100;
Lin_N0 = 0;
Mode02 = 0x11;
}
else
{
Mode02 = 0x14;
}
}
if(End02>Ymax_Dat)
Ymax_Dat = End02;
else if(End02<Ymin_Dat)
Ymin_Dat = End02;
if(End02>End_Max)
End_Max = End02;
else if(End02<End_Min)
End_Min = End02;
}
void Line_Code02(void)
{
if(Lin_Yn<7)
SL1 = End02C;
else
SL1 = End02C/100 1;
if(SL1>LL_Y[Lin_Yn])
{
Lin_Yn ;
if(Lin_Yn==7)
{
for(II1=0;II1<=Lin_N1;II1 )
Lin_Dat[II1] /= 100;
Lin_N0 = 0;
Mode02 = 0x11;
}
else
{
Mode02 = 0x14;
}
}
if(End02C>Ymax_Dat)
Ymax_Dat = End02C;
else if(End02C<Ymin_Dat)
Ymin_Dat = End02C;
if(End02C>End_Max)
End_Max = End02C;
else if(End02C<End_Min)
End_Min = End02C;
}
void TR_U1(void) //处理接收命令
{
// DelayMs(5);
U1R_Mode = 0x00;
//校验是否是正确帧
CC1 = R1_Data[4] 2;
CC2 = 0;
for(CC3=2;CC3<CC1;CC3 )
CC2 = R1_Data[CC3];
if((CC2==R1_Data[CC1])&&(R1_Data[CC1 1]==0xa5)&&(R1_Data[CC1 2]==0xa5))
{
CC4 = R1_Data[5];
if(CC4==0) //空
{
}
else if(CC4==0x42) //查询最后一次结果
{
Test_N0_Q = Test_N0;
Mode01 = 0;
Mode02 = 0;
U1T_Mode = 0x82;
}
else if(CC4==0x43) //查询下一次结果
{
if(Test_N0_Q<Test_N0)
{
Test_N0_Q ;
Read_Test(Test_N0_Q);
U1T_Mode = 0x83;
}
else
U1T_Mode = 0x8f;
Mode01 = 0;
Mode02 = 0;
}
else if(CC4==0x44) //查询上一次结果
{
if(Test_N0<400)
{
if(Test_N0_Q>1)
{
Test_N0_Q--;
U1T_Mode = 0x84;
}
else
U1T_Mode = 0x8f;
}
else
{
if(Test_N0_Q>Test_N0-400 1)
{
Test_N0_Q--;
U1T_Mode = 0x84;
}
else
U1T_Mode = 0x8f;
}
Mode01 = 0;
Mode02 = 0;
}
else if(CC4==0x45) //登陆命令
{
CC1 = 6;
CC2 = 0;
UFL1.UC[CC2 ] = R1_Data[CC1 ];
UFL1.UC[CC2 ] = R1_Data[CC1 ];
UFL1.UC[CC2 ] = R1_Data[CC1 ];
UFL1.UC[CC2 ] = R1_Data[CC1 ];
SL2 = UFL1.SL;
CC2 = 0;
UFL1.UC[CC2 ] = R1_Data[CC1 ];
UFL1.UC[CC2 ] = R1_Data[CC1 ];
UFL1.UC[CC2 ] = R1_Data[CC1 ];
UFL1.UC[CC2 ] = R1_Data[CC1 ];
SL1 = UFL1.SL;
CC4 = 0;
if (SL2==0)
{
}
else if(SL2==Coustomer[0])
{
if(SL1==Coust_sec[0])
{
Coust = SL2;
CC4 = 0x10;
}
}
else
{
for(CC1=0;CC1<10;CC1 )
{
if(SL2==CoustomerB[CC1])
{
if(SL1==Coust_secB[CC1])
{
Coust = SL2;
CC4 = 0x10;
break;
}
}
if(SL2==CoustomerC[CC1])
{
if(SL1==Coust_secC[CC1])
{
Coust = SL2;
CC4 = 0x10;
break;
}
}
}
}
//写入返回帧
if(CC4==0)
U1T_Mode = 0x8f;
else
U1T_Mode = 0x85;
}
else if(CC4==0x47) //查询指定编号结果
{
CC1 = 0;
CC2 = 6;
UFL1.UC[CC1 ] = R1_Data[CC2 ];
UFL1.UC[CC1 ] = R1_Data[CC2 ];
UFL1.UC[CC1 ] = R1_Data[CC2 ];
UFL1.UC[CC1 ] = R1_Data[CC2 ];
if((UFL1.SL<=Test_N0)&&(UFL1.SL>=Test_N0-400))
{
Test_N0_Q = UFL1.SL;
Mode01 = 0;
Mode02 = 0;
U1T_Mode = 0x87;
}
else
{
U1T_Mode = 0x8f;
}
}
else if(CC4==0x90) //读取 EEPROM
{
U1T_Mode = 0X91;
}
else if(CC4==0x95) //读取 EEPROM
{
U1T_Mode = 0X96;
}
else
U1T_Mode = 0X8f;
}
}
void Send_U1(unsigned char a) //发送通信帧 与计算机通信
{
while(U1T_N0<U1T_N1)
{
_nop_();
}
U1T_Mode = 0x00;
U1T_N1 = 0;
CC1 = 0;
T1_Data[CC1 ] = 0xc0;
T1_Data[CC1 ] = 0xc0;
T1_Data[CC1 ] = IDC_S;
T1_Data[CC1 ] = 0x01;
T1_Data[CC1 ] = 0x06; //4 数据长度 在下面还需要修改!!!
T1_Data[CC1 ] = a; //5 数据帧状态定
if(a==0)
{
}
else if(a==1) //1 开机
{
T1_Data[4] = 0x06; //数据长度 在下面还需要修改!!!
U1T_N1 = T1_Data[4] 5; //发送数据个数
}
else if(a==10) //2 开始试验帧
{
CC1 = 6;
UFL1.SL = Test_N0 1; //试验编号
CC2 = 0;
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = Test_MM; //试验模式
UFL1.SL = 0;
CC2 = 0;
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[4] = 9 4; //数据长度 在下面还需要修改!!!
U1T_N1 = T1_Data[4] 5; //发送数据个数
U1T_Mode = 2; //发送完成后发送 参数
}
else if(a==2) //2 开始试验 发送参数 无参数
{
DelayMs(1);
CC1 = 6;
UFL1.SL = Test_N0 1; //试验编号
CC2 = 0;
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = Test_MM; //试验模式
UFL1.SL = Set1_D[Test_MM][0]; //速度
CC2 = 0;
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
UFL1.SL = Set1_D[Test_MM][1]; //模式
CC2 = 0;
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
UFL1.SL = Set1_D[Test_MM][2]; //方向
CC2 = 0;
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
UFL1.SL = Set1_D[Test_MM][3]; //方向
CC2 = 0;
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[4] = CC1-2; //数据长度
U1T_N1 = CC1 3; //发送数据个数
U1T_Mode = 0; //第一次数据要在参数发送完成后发送
}
else if(a==3) //3 实时数据
{
CC1 = 6;
UFL1.SL = Test_N0 1; //试验编号
CC2 = 0;
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = Test_MM; //试验模式 序号0 共用一个
UFL1.SL = LL_02; //实时位移
CC2 = 0;
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
// UFL1.SL = CR_N2; //实时力值
UFL1.SL = Ymax_Dat*10;
CC2 = 0;
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[4] = CC1-2; //数据长度
U1T_N1 = CC1 3; //发送数据个数
}
else if(a==4) //4 试验结果
{
CC1 = 6;
UFL1.SL = Test_N0; //试验编号
CC2 = 0;
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = Test_MM; //试验模式 序号0 共用一个
UFL1.SL = Test_End01; //结果 01
CC2 = 0;
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
UFL1.SL = Test_End02; //结果 02
CC2 = 0;
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
UFL1.SL = Test_End03; //结果 03
CC2 = 0;
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
UFL1.SL = Test_End04; //结果 04
CC2 = 0;
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
UFL1.SL = End_Max; //最大值
CC2 = 0;
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
UFL1.SL = LL_02; //最小值
CC2 = 0;
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
// UFL1.SL = End_Ave; //平均值
// CC2 = 0;
// T1_Data[CC1 ] = UFL1.UC[CC2 ];
// T1_Data[CC1 ] = UFL1.UC[CC2 ];
// T1_Data[CC1 ] = UFL1.UC[CC2 ];
// T1_Data[CC1 ] = UFL1.UC[CC2 ];
//试验时间
for(CC2=0;CC2<7;CC2 )
{
if(CC2==3)
CC2 ;
T1_Data[CC1 ] = Time[CC2];
}
//试样批号
for(CC2=0;CC2<14;CC2 )
T1_Data[CC1 ] = Sample_Serial[CC2];
T1_Data[4] = CC1-2; //数据长度
U1T_N1 = CC1 3; //发送数据个数
}
else if(a==0x82) // 最后一次数据
{
Test_N0_Q = Test_N0;
Read_Test(Test_N0);
CC1 = 6;
UFL1.SL = Test_N0; //试验编号
CC2 = 0;
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = Test_MM; //试验模式 序号0 共用一个
UFL1.SL = Test_End01; //结果 01
CC2 = 0;
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
UFL1.SL = Test_End02; //结果 02
CC2 = 0;
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
UFL1.SL = Test_End03; //结果 03
CC2 = 0;
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
UFL1.SL = Test_End04; //结果 04
CC2 = 0;
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
UFL1.SL = End_Max; //最大值
CC2 = 0;
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
UFL1.SL = LL_02; //位移
CC2 = 0;
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
UFL1.SL = Set1_D[Test_MM][0]; //速度
CC2 = 0;
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
UFL1.SL = Set1_D[Test_MM][1]; //模式
CC2 = 0;
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
UFL1.SL = Set1_D[Test_MM][2]; //方向
CC2 = 0;
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
UFL1.SL = Set1_D[Test_MM][3]; //方向
CC2 = 0;
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
// UFL1.SL = End_Ave; //平均值
// CC2 = 0;
// T1_Data[CC1 ] = UFL1.UC[CC2 ];
// T1_Data[CC1 ] = UFL1.UC[CC2 ];
// T1_Data[CC1 ] = UFL1.UC[CC2 ];
// T1_Data[CC1 ] = UFL1.UC[CC2 ];
//试验时间
for(CC2=0;CC2<7;CC2 )
{
if(CC2==3)
CC2 ;
T1_Data[CC1 ] = Time[CC2];
}
//试样批号
for(CC2=0;CC2<14;CC2 )
T1_Data[CC1 ] = Sample_Serial[CC2];
//发送试验人员
UFL1.SL = CoustB;
CC2 = 0;
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[4] = CC1-2; //数据长度
U1T_N1 = CC1 3; //发送数据个数
}
else if((a==0x83)||(a==0x84)) //查询数据
{
Read_Test(Test_N0_Q);
CC1 = 6;
UFL1.SL = Test_N0_Q; //试验编号
CC2 = 0;
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = Test_MM; //试验模式 序号0 共用一个
UFL1.SL = Test_End01; //结果 01
CC2 = 0;
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
UFL1.SL = Test_End02; //结果 02
CC2 = 0;
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
UFL1.SL = Test_End03; //结果 03
CC2 = 0;
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
UFL1.SL = Test_End04; //结果 04
CC2 = 0;
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
UFL1.SL = End_Max; //最大值
CC2 = 0;
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
UFL1.SL = LL_02; //最小值
CC2 = 0;
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
UFL1.SL = Set1_D[Test_MM][0]; //速度
CC2 = 0;
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
UFL1.SL = Set1_D[Test_MM][1]; //模式
CC2 = 0;
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
UFL1.SL = Set1_D[Test_MM][2]; //方向
CC2 = 0;
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
UFL1.SL = Set1_D[Test_MM][3]; //方向
CC2 = 0;
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
// UFL1.SL = End_Ave; //平均值
// CC2 = 0;
// T1_Data[CC1 ] = UFL1.UC[CC2 ];
// T1_Data[CC1 ] = UFL1.UC[CC2 ];
// T1_Data[CC1 ] = UFL1.UC[CC2 ];
// T1_Data[CC1 ] = UFL1.UC[CC2 ];
//试验时间
for(CC2=0;CC2<7;CC2 )
{
if(CC2==3)
CC2 ;
T1_Data[CC1 ] = Time[CC2];
}
//试样批号
for(CC2=0;CC2<14;CC2 )
T1_Data[CC1 ] = Sample_Serial[CC2];
//发送试验人员
UFL1.SL = CoustB;
CC2 = 0;
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[4] = CC1-2; //数据长度
U1T_N1 = CC1 3; //发送数据个数
}
else if(a==0x87) //查询数据
{
Read_Test(Test_N0_Q);
CC1 = 6;
UFL1.SL = Test_N0_Q; //试验编号
CC2 = 0;
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = Test_MM; //试验模式 序号0 共用一个
UFL1.SL = Test_End01; //结果 01
CC2 = 0;
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
UFL1.SL = Test_End02; //结果 02
CC2 = 0;
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
UFL1.SL = Test_End03; //结果 03
CC2 = 0;
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
UFL1.SL = Test_End04; //结果 04
CC2 = 0;
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
UFL1.SL = End_Max; //最大值
CC2 = 0;
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
UFL1.SL = LL_02; //最小值
CC2 = 0;
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
UFL1.SL = Set1_D[Test_MM][0]; //速度
CC2 = 0;
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
UFL1.SL = Set1_D[Test_MM][1]; //模式
CC2 = 0;
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
UFL1.SL = Set1_D[Test_MM][2]; //方向
CC2 = 0;
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
UFL1.SL = Set1_D[Test_MM][3]; //方向
CC2 = 0;
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
// UFL1.SL = End_Ave; //平均值
// CC2 = 0;
// T1_Data[CC1 ] = UFL1.UC[CC2 ];
// T1_Data[CC1 ] = UFL1.UC[CC2 ];
// T1_Data[CC1 ] = UFL1.UC[CC2 ];
// T1_Data[CC1 ] = UFL1.UC[CC2 ];
//试验时间
for(CC2=0;CC2<7;CC2 )
{
if(CC2==3)
CC2 ;
T1_Data[CC1 ] = Time[CC2];
}
//试样批号
for(CC2=0;CC2<14;CC2 )
T1_Data[CC1 ] = Sample_Serial[CC2];
//发送试验人员
UFL1.SL = CoustB;
CC2 = 0;
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[4] = CC1-2; //数据长度
U1T_N1 = CC1 3; //发送数据个数
}
else if(a==0x85)
{
CC1 = 6;
UFL1.SL = Coust;
CC2 = 0;
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
if(Coust==1)
{
UFL1.SL = Coust_sec[0];
CC2 = 0;
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = 1;
}
else
{
for(CC3=0;CC3<10;CC3 )
{
if(Coust==CoustomerB[CC3])
{
UFL1.SL = Coust_secB[CC3];
CC2 = 0;
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = 2;
break;
}
if(Coust==CoustomerC[CC3])
{
UFL1.SL = Coust_secC[CC3];
CC2 = 0;
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = UFL1.UC[CC2 ];
T1_Data[CC1 ] = 3;
break;
}
}
}
T1_Data[4] = CC1-2; //数据长度 在下面还需要修改!!!
U1T_N1 = CC1 3; //发送数据个数
}
else if(a==0x8f)
{
T1_Data[4] = 0x06; //数据长度 在下面还需要修改!!!
U1T_N1 = T1_Data[4] 5; //发送数据个数
}
else if(a==0x91)
{
CN_CON_ADD = 0x0000;
CC1 = 6;
T1_Data[CC1 ] = CN_CON_ADD>>8;
T1_Data[CC1 ] = CN_CON_ADD;
Read24c128_PG(CN_CON_ADD);
CC1 = 0x40;
T1_Data[4] = CC1-2; //数据长度 在下面还需要修改!!!
U1T_N1 = CC1 3; //发送数据个数
}
else if(a==0x96)
{
CN_CON_ADD = 0x40;
CC1 = 6;
T1_Data[CC1 ] = CN_CON_ADD>>8;
T1_Data[CC1 ] = CN_CON_ADD;
Read24c128_PG(CN_CON_ADD);
CC1 = 0x40;
T1_Data[4] = CC1-2; //数据长度 在下面还需要修改!!!
U1T_N1 = CC1 3; //发送数据个数
}
if(U1T_N1)
{
//计算校验和
CC3 = 0;
CC4 = U1T_N1-3;
for(CC2=2;CC2<CC4;CC2 )
{
CC3 = T1_Data[CC2];
}
T1_Data[CC4 ] = CC3;
T1_Data[CC4 ] = 0xa5;
T1_Data[CC4 ] = 0xa5;
U1T_N0 = 1;
SBUF = 0xc0;
}
}
void Write_Set(void) //写入参数
{
II1 = 0x0200;
for(CC1=1;CC1<11;CC1 )
{
for(CC2=0;CC2<10;CC2 )
{
UFL1.SL = Set1_D[CC1][CC2];
CC3 = 0;
Write24c128(UFL1.UC[CC3 ],II1 );
Write24c128(UFL1.UC[CC3 ],II1 );
Write24c128(UFL1.UC[CC3 ],II1 );
Write24c128(UFL1.UC[CC3 ],II1 );
}
}
}
void Write_Set_SG(unsigned char a)
{
II1 = 0x0200;
II1 = II1 40*(Test_MM-1) 4*a;
UFL1.SL = SL1;
CC1 = 0;
Write24c128(UFL1.UC[CC1 ],II1 );
Write24c128(UFL1.UC[CC1 ],II1 );
Write24c128(UFL1.UC[CC1 ],II1 );
Write24c128(UFL1.UC[CC1 ],II1 );
}
void Read_Set(void) //读出参数
{
II1 = 0x0008;
CC2 = 0;
UFL1.UC[CC2 ] = Read24c128(II1 );
UFL1.UC[CC2 ] = Read24c128(II1 );
UFL1.UC[CC2 ] = Read24c128(II1 );
UFL1.UC[CC2 ] = Read24c128(II1 );
Test_N0 = UFL1.SL;
Mode_Sensor = Read24c128(0x000e);
if(Mode_Sensor>7)
{
Mode_Sensor = 0;
Write24c128(0,0x000e);
}
II1 = 0x0200;
for(CC1=1;CC1<11;CC1 )
{
for(CC2=0;CC2<10;CC2 )
{
CC3 = 0;
UFL1.UC[CC3 ] = Read24c128(II1 );
UFL1.UC[CC3 ] = Read24c128(II1 );
UFL1.UC[CC3 ] = Read24c128(II1 );
UFL1.UC[CC3 ] = Read24c128(II1 );
Set1_D[CC1][CC2] = UFL1.SL;
}
}
II1 = 0X00D0;
for(CC1=0;CC1<4;CC1 )
{
CC2 = 0;
UFL1.UC[CC2 ] = 0;
UFL1.UC[CC2 ] = 0;
UFL1.UC[CC2 ] = Read24c128(II1 );
UFL1.UC[CC2 ] = Read24c128(II1 );
Set_FF[CC1] = UFL1.SL;
}
//第一次上电线路板上的EEPROM初始化
if((Set1_D[1][0]>1000)||(Set1_D[1][0]<0))
{
Test_N0 = 0;
II1 = 0x0008;
UFL1.SL = Test_N0;
CC1 = 0;
Write24c128(UFL1.UC[CC1 ],II1 );
Write24c128(UFL1.UC[CC1 ],II1 );
Write24c128(UFL1.UC[CC1 ],II1 );
Write24c128(UFL1.UC[CC1 ],II1 );
Mode_Sensor = 3;
Write24c128(3,0x000e);
for(CC1=1;CC1<11;CC1 )
{
CC2 = 0;
Set1_D[CC1][CC2 ] = 300; //试验速度
Set1_D[CC1][CC2 ] = 2000;//试样长度
Set1_D[CC1][CC2 ] = 100; //试样宽度
Set1_D[CC1][CC2 ] = 10; //试样厚度
Set1_D[CC1][CC2 ] = 100; //起始力值
Set1_D[CC1][CC2 ] = 50000; //保护力值
Set1_D[CC1][CC2 ] = 50; //破形判断
Set1_D[CC1][CC2 ] = 500; //回位速度
Set1_D[CC1][CC2 ] = 1; //是否自动回位
}
Set_FF[0] = 10;
Set_FF[1] = 10;
Set_FF[2] = 10;
Set_FF[3] = 10;
Write_Set();
}
}
void W_Set2(void) //写入用户名密码
{
II1 = 0x110;
//写入管理员用户密码
UFL1.SL = Coustomer[0];
CC1 = 0;
Write24c128(UFL1.UC[CC1 ],II1 );
Write24c128(UFL1.UC[CC1 ],II1 );
Write24c128(UFL1.UC[CC1 ],II1 );
Write24c128(UFL1.UC[CC1 ],II1 );
if(Coustomer==0)
UFL1.UL = 0;
else
UFL1.UL = Coust_sec[0];
CC1 = 0;
Write24c128(UFL1.UC[CC1 ],II1 );
Write24c128(UFL1.UC[CC1 ],II1 );
Write24c128(UFL1.UC[CC1 ],II1 );
Write24c128(UFL1.UC[CC1 ],II1 );
//写入 二级用户名 密码
for(CC2=0;CC2<10;CC2 )
{
UFL1.SL = CoustomerB[CC2];
CC1 = 0;
Write24c128(UFL1.UC[CC1 ],II1 );
Write24c128(UFL1.UC[CC1 ],II1 );
Write24c128(UFL1.UC[CC1 ],II1 );
Write24c128(UFL1.UC[CC1 ],II1 );
if(Coustomer==0)
UFL1.UL = 0;
else
UFL1.UL = Coust_secB[CC2];
CC1 = 0;
Write24c128(UFL1.UC[CC1 ],II1 );
Write24c128(UFL1.UC[CC1 ],II1 );
Write24c128(UFL1.UC[CC1 ],II1 );
Write24c128(UFL1.UC[CC1 ],II1 );
}
//写入 三级用户名 密码
for(CC2=0;CC2<10;CC2 )
{
UFL1.SL = CoustomerC[CC2];
CC1 = 0;
Write24c128(UFL1.UC[CC1 ],II1 );
Write24c128(UFL1.UC[CC1 ],II1 );
Write24c128(UFL1.UC[CC1 ],II1 );
Write24c128(UFL1.UC[CC1 ],II1 );
if(Coustomer==0)
UFL1.UL = 0;
else
UFL1.UL = Coust_secC[CC2];
CC1 = 0;
Write24c128(UFL1.UC[CC1 ],II1 );
Write24c128(UFL1.UC[CC1 ],II1 );
Write24c128(UFL1.UC[CC1 ],II1 );
Write24c128(UFL1.UC[CC1 ],II1 );
}
}
void Read_Set2(void) //读出用户名密码
{
II1 = 0x110;
CC2 = 0;
UFL1.UC[CC2 ] = Read24c128(II1 );
UFL1.UC[CC2 ] = Read24c128(II1 );
UFL1.UC[CC2 ] = Read24c128(II1 );
UFL1.UC[CC2 ] = Read24c128(II1 );
Coustomer[0] = UFL1.SL;
if(UFL1.SL==1) //读出所有用户名 密码
{
CC2 = 0;
UFL1.UC[CC2 ] = Read24c128(II1 );
UFL1.UC[CC2 ] = Read24c128(II1 );
UFL1.UC[CC2 ] = Read24c128(II1 );
UFL1.UC[CC2 ] = Read24c128(II1 );
Coust_sec[0] = UFL1.SL;
//二级用户
for(CC3=0;CC3<10;CC3 )
{
CC2 = 0;
UFL1.UC[CC2 ] = Read24c128(II1 );
UFL1.UC[CC2 ] = Read24c128(II1 );
UFL1.UC[CC2 ] = Read24c128(II1 );
UFL1.UC[CC2 ] = Read24c128(II1 );
CoustomerB[CC3] = UFL1.SL;
CC2 = 0;
UFL1.UC[CC2 ] = Read24c128(II1 );
UFL1.UC[CC2 ] = Read24c128(II1 );
UFL1.UC[CC2 ] = Read24c128(II1 );
UFL1.UC[CC2 ] = Read24c128(II1 );
Coust_secB[CC3] = UFL1.SL;
}
//三级用户
for(CC3=0;CC3<10;CC3 )
{
CC2 = 0;
UFL1.UC[CC2 ] = Read24c128(II1 );
UFL1.UC[CC2 ] = Read24c128(II1 );
UFL1.UC[CC2 ] = Read24c128(II1 );
UFL1.UC[CC2 ] = Read24c128(II1 );
CoustomerC[CC3] = UFL1.SL;
CC2 = 0;
UFL1.UC[CC2 ] = Read24c128(II1 );
UFL1.UC[CC2 ] = Read24c128(II1 );
UFL1.UC[CC2 ] = Read24c128(II1 );
UFL1.UC[CC2 ] = Read24c128(II1 );
Coust_secC[CC3] = UFL1.SL;
}
}
else //初始化所有用户名 密码
{
Coustomer[0] = 1;
Coust_sec[0] = 123456;
for(CC3=0;CC3<10;CC3 )
{
CoustomerB[CC3] = 0;
Coust_secB[CC3] = 0;
}
for(CC3=0;CC3<10;CC3 )
{
CoustomerC[CC3] = 0;
Coust_secC[CC3] = 0;
}
W_Set2();
}
}
void Write_Test(void) //写入试验记录
{
unsigned int x;
x = 0x0500 0x48*(Test_N0%400);
Write24c128(1,x ); //是否有记录
for(CC1=0;CC1<7;CC1 ) //写入试验时间
{
Write24c128(Time[CC1],x );
}
Write24c128(Test_MM,x ); //试验模式
for(CC1=0;CC1<4;CC1 ) //试验速度 及其它设置参数
{
UFL1.SL = Set1_D[Test_MM][CC1];
CC2 = 0;
Write24c128(UFL1.UC[CC2 ],x );
Write24c128(UFL1.UC[CC2 ],x );
Write24c128(UFL1.UC[CC2 ],x );
Write24c128(UFL1.UC[CC2 ],x );
}
UFL1.SL = Test_End01;
CC2 = 0;
Write24c128(UFL1.UC[CC2 ],x );
Write24c128(UFL1.UC[CC2 ],x );
Write24c128(UFL1.UC[CC2 ],x );
Write24c128(UFL1.UC[CC2 ],x );
UFL1.SL = Test_End02;
CC2 = 0;
Write24c128(UFL1.UC[CC2 ],x );
Write24c128(UFL1.UC[CC2 ],x );
Write24c128(UFL1.UC[CC2 ],x );
Write24c128(UFL1.UC[CC2 ],x );
UFL1.SL = Test_End03;
CC2 = 0;
Write24c128(UFL1.UC[CC2 ],x );
Write24c128(UFL1.UC[CC2 ],x );
Write24c128(UFL1.UC[CC2 ],x );
Write24c128(UFL1.UC[CC2 ],x );
UFL1.SL = Test_End04;
CC2 = 0;
Write24c128(UFL1.UC[CC2 ],x );
Write24c128(UFL1.UC[CC2 ],x );
Write24c128(UFL1.UC[CC2 ],x );
Write24c128(UFL1.UC[CC2 ],x );
UFL1.SL = End_Max;
CC2 = 0;
Write24c128(UFL1.UC[CC2 ],x );
Write24c128(UFL1.UC[CC2 ],x );
Write24c128(UFL1.UC[CC2 ],x );
Write24c128(UFL1.UC[CC2 ],x );
UFL1.SL = LL_02;
CC2 = 0;
Write24c128(UFL1.UC[CC2 ],x );
Write24c128(UFL1.UC[CC2 ],x );
Write24c128(UFL1.UC[CC2 ],x );
Write24c128(UFL1.UC[CC2 ],x );
//写入试样序号
for(CC1=0;CC1<14;CC1 ) //写入试
{
if(Sample_Serial[0]==0xff)
Write24c128(0xff,x );
else
Write24c128(Sample_Serial[CC1],x );
}
UFL1.SL = Coust;
CoustB = Coust;
CC2 = 0;
Write24c128(UFL1.UC[CC2 ],x );
Write24c128(UFL1.UC[CC2 ],x );
Write24c128(UFL1.UC[CC2 ],x );
Write24c128(UFL1.UC[CC2 ],x );
}
void Read_Test(long int a)
{
unsigned char m;
unsigned int x;
x = (a%400)*0x48 0x500;
m = Read24c128(x );
if(m!=1) //无记录
{
Test_MM = 1;
CoustB = 0;
for(CC1=0;CC1<7;CC1 ) //试验时间
Time[CC1] = 0;
Test_MM = 1;
for(CC1=0;CC1<4;CC1 )
Set1_D[Test_MM][CC1] = 0;
Test_End01 = 0;
Test_End02 = 0;
Test_End03 = 0;
Test_End04 = 0;
}
else
{
for(CC1=0;CC1<7;CC1 ) //试验时间
{
Time[CC1] = Read24c128(x );
}
Test_MM = Read24c128(x );
for(CC1=0;CC1<4;CC1 )
{
CC2 = 0;
UFL1.UC[CC2 ] = Read24c128(x );
UFL1.UC[CC2 ] = Read24c128(x );
UFL1.UC[CC2 ] = Read24c128(x );
UFL1.UC[CC2 ] = Read24c128(x );
Set1_D[Test_MM][CC1] = UFL1.SL;
}
CC2 = 0;
UFL1.UC[CC2 ] = Read24c128(x );
UFL1.UC[CC2 ] = Read24c128(x );
UFL1.UC[CC2 ] = Read24c128(x );
UFL1.UC[CC2 ] = Read24c128(x );
Test_End01 = UFL1.SL;
CC2 = 0;
UFL1.UC[CC2 ] = Read24c128(x );
UFL1.UC[CC2 ] = Read24c128(x );
UFL1.UC[CC2 ] = Read24c128(x );
UFL1.UC[CC2 ] = Read24c128(x );
Test_End02 = UFL1.SL;
CC2 = 0;
UFL1.UC[CC2 ] = Read24c128(x );
UFL1.UC[CC2 ] = Read24c128(x );
UFL1.UC[CC2 ] = Read24c128(x );
UFL1.UC[CC2 ] = Read24c128(x );
Test_End03 = UFL1.SL;
CC2 = 0;
UFL1.UC[CC2 ] = Read24c128(x );
UFL1.UC[CC2 ] = Read24c128(x );
UFL1.UC[CC2 ] = Read24c128(x );
UFL1.UC[CC2 ] = Read24c128(x );
Test_End04 = UFL1.SL;
CC2 = 0;
UFL1.UC[CC2 ] = Read24c128(x );
UFL1.UC[CC2 ] = Read24c128(x );
UFL1.UC[CC2 ] = Read24c128(x );
UFL1.UC[CC2 ] = Read24c128(x );
End_Max = UFL1.SL;
CC2 = 0;
UFL1.UC[CC2 ] = Read24c128(x );
UFL1.UC[CC2 ] = Read24c128(x );
UFL1.UC[CC2 ] = Read24c128(x );
UFL1.UC[CC2 ] = Read24c128(x );
LL_02 = UFL1.SL;
//读出试样序号
for(CC1=0;CC1<14;CC1 ) //试验时间 7
{
Sample_Serial[CC1] = Read24c128(x );
}
CC2 = 0;
UFL1.UC[CC2 ] = Read24c128(x );
UFL1.UC[CC2 ] = Read24c128(x );
UFL1.UC[CC2 ] = Read24c128(x );
UFL1.UC[CC2 ] = Read24c128(x );
CoustB = UFL1.SL;
}
}
void Write_CAL(void) //写入标定数据
{
II1 = 0x0010 0x18*Mode_Sensor;
UFL1.SL = XX_AD0;
CC1 = 0;
Write24c128(UFL1.UC[CC1 ],II1 );
Write24c128(UFL1.UC[CC1 ],II1 );
Write24c128(UFL1.UC[CC1 ],II1 );
Write24c128(UFL1.UC[CC1 ],II1 );
UFL1.SL = YY_Dat0;
CC1 = 0;
Write24c128(UFL1.UC[CC1 ],II1 );
Write24c128(UFL1.UC[CC1 ],II1 );
Write24c128(UFL1.UC[CC1 ],II1 );
Write24c128(UFL1.UC[CC1 ],II1 );
UFL1.SL = XX_AD1;
CC1 = 0;
Write24c128(UFL1.UC[CC1 ],II1 );
Write24c128(UFL1.UC[CC1 ],II1 );
Write24c128(UFL1.UC[CC1 ],II1 );
Write24c128(UFL1.UC[CC1 ],II1 );
UFL1.SL = YY_Dat1;
CC1 = 0;
Write24c128(UFL1.UC[CC1 ],II1 );
Write24c128(UFL1.UC[CC1 ],II1 );
Write24c128(UFL1.UC[CC1 ],II1 );
Write24c128(UFL1.UC[CC1 ],II1 );
UFL1.SL = YY_DY;
CC1 = 0;
Write24c128(UFL1.UC[CC1 ],II1 );
Write24c128(UFL1.UC[CC1 ],II1 );
Write24c128(UFL1.UC[CC1 ],II1 );
Write24c128(UFL1.UC[CC1 ],II1 );
UFL1.SL = YY_Max;
CC1 = 0;
Write24c128(UFL1.UC[CC1 ],II1 );
Write24c128(UFL1.UC[CC1 ],II1 );
Write24c128(UFL1.UC[CC1 ],II1 );
Write24c128(UFL1.UC[CC1 ],II1 );
}
void Read_CAL(void)
{
II1 = 0x0010 0x18*Mode_Sensor;
CC1 = 0;
UFL1.UC[CC1 ] = Read24c128(II1 );
UFL1.UC[CC1 ] = Read24c128(II1 );
UFL1.UC[CC1 ] = Read24c128(II1 );
UFL1.UC[CC1 ] = Read24c128(II1 );
if ((UFL1.SL==0xffffffff)||(UFL1.SL==0x00000000))
{
XX_AD0 = 0;
XX_AD1 = 600000;
YY_Dat0 = 0;
YY_Dat1 = 10000;
YY_DY = 0;
YY_Max = 10000;
Write_CAL();
}
II1 = 0x0010 0x18*Mode_Sensor;
CC1 = 0;
UFL1.UC[CC1 ] = Read24c128(II1 );
UFL1.UC[CC1 ] = Read24c128(II1 );
UFL1.UC[CC1 ] = Read24c128(II1 );
UFL1.UC[CC1 ] = Read24c128(II1 );
XX_AD0 = UFL1.SL;
CC1 = 0;
UFL1.UC[CC1 ] = Read24c128(II1 );
UFL1.UC[CC1 ] = Read24c128(II1 );
UFL1.UC[CC1 ] = Read24c128(II1 );
UFL1.UC[CC1 ] = Read24c128(II1 );
YY_Dat0 = UFL1.SL;
CC1 = 0;
UFL1.UC[CC1 ] = Read24c128(II1 );
UFL1.UC[CC1 ] = Read24c128(II1 );
UFL1.UC[CC1 ] = Read24c128(II1 );
UFL1.UC[CC1 ] = Read24c128(II1 );
XX_AD1 = UFL1.SL;
CC1 = 0;
UFL1.UC[CC1 ] = Read24c128(II1 );
UFL1.UC[CC1 ] = Read24c128(II1 );
UFL1.UC[CC1 ] = Read24c128(II1 );
UFL1.UC[CC1 ] = Read24c128(II1 );
YY_Dat1 = UFL1.SL;
CC1 = 0;
UFL1.UC[CC1 ] = Read24c128(II1 );
UFL1.UC[CC1 ] = Read24c128(II1 );
UFL1.UC[CC1 ] = Read24c128(II1 );
UFL1.UC[CC1 ] = Read24c128(II1 );
YY_DY = UFL1.SL;
CC1 = 0;
UFL1.UC[CC1 ] = Read24c128(II1 );
UFL1.UC[CC1 ] = Read24c128(II1 );
UFL1.UC[CC1 ] = Read24c128(II1 );
UFL1.UC[CC1 ] = Read24c128(II1 );
YY_Max = UFL1.SL;
FF1 = XX_AD1-XX_AD0;
FF2 = YY_Dat1-YY_Dat0;
KKK = FF2/FF1;
}
void PrintC(unsigned char a) //向打印机发送一个字符
{
while((S4CON&S4TI)==0) //等待上次的发送完成
{
}
S4CON &= ~S4TI; //清除S2TI位
S4BUF = a;
}
void PrintL(unsigned char *a) //发送一个长字符串,直到字符串结束符为至
{
while(*a!=0)
{
PrintC(*a);
a ;
}
}
/* void PrintN1(unsigned char a) //打印一个字节数据,三位数,左对齐
{
unsigned char m;
m = 0;
if(a/100)
{
m = 1;
PrintC(a/100 0x30);
}
// else
// PrintC(0x20);
a %= 100;
if(a/10)
PrintC(a/10 0x30);
else
{
if(m)
PrintC(0x30);
// else
// PrintC(0x20);
}
PrintC(a%10 0x30);
} */
/* void PrintN2(unsigned int a) //打印一个整型数据,五位数,左对齐
{
unsigned char m;
m = 0;
if(a/10000)
{
m = 1;
PrintC(a/10000 0x30);
}
// else
// PrintC(0x20);
a %= 10000;
if(a/1000)
{
PrintC(a/1000 0x30);
m ;
}
else
{
if(m)
PrintC(0x30);
// else
// PrintC(0x20);
}
a %= 1000;
if(a/100)
{
PrintC(a/100 0x30);
m ;
}
else
{
if(m)
PrintC(0x30);
// else
// PrintC(0x20);
}
a %= 100;
if(a/10)
{
PrintC(a/10 0x30);
m ;
}
else
{
if(m)
PrintC(0x30);
// else
// PrintC(0x20);
}
PrintC(a%10 0x30);
} */
void PrintN3(unsigned long int a) //长整数 前面补空格
{
unsigned char m;
m = 0;
if(a/1000000)
{
m = 1;
PrintC(a/1000000 0x30);
}
else
PrintC(0x20);
a %= 1000000;
if(a/100000)
{
PrintC(a/100000 0x30);
m ;
}
else
{
if(m)
PrintC(0x30);
else
PrintC(0x20);
}
a %= 100000;
if(a/10000)
{
PrintC(a/10000 0x30);
m ;
}
else
{
if(m)
PrintC(0x30);
else
PrintC(0x20);
}
a %= 10000;
if(a/1000)
{
PrintC(a/1000 0x30);
m ;
}
else
{
if(m)
PrintC(0x30);
else
PrintC(0x20);
}
a %= 1000;
if(a/100)
{
PrintC(a/100 0x30);
m ;
}
else
{
if(m)
PrintC(0x30);
else
PrintC(0x20);
}
a %= 100;
if(a/10)
{
PrintC(a/10 0x30);
m ;
}
else
{
if(m)
PrintC(0x30);
else
PrintC(0x20);
}
PrintC(a%10 0x30);
}
/* void PrintN4(long int a) //长整数,一位小数 为负数时有负号
{
unsigned char m;
unsigned char s;
m = 0;
if(a<0)
{
s = 5;
a = -a;
}
else
s = 3;
if(a/1000000)
{
m = 1;
if(s==5)
{
s = 0;
PrintC('-');
}
else if(s==3)
{
s = 0;
PrintC(' ');
}
PrintC(a/1000000 0x30);
}
else
PrintC(0x20);
a %= 1000000;
if(a/100000)
{
if(s==5)
{
s = 0;
PrintC('-');
}
else if(s==3)
{
s = 0;
PrintC(' ');
}
PrintC(a/100000 0x30);
m ;
}
else
{
if(m)
PrintC(0x30);
else
PrintC(0x20);
}
a %= 100000;
if(a/10000)
{
if(s==5)
{
s = 0;
PrintC('-');
}
else if(s==3)
{
s = 0;
PrintC(' ');
}
PrintC(a/10000 0x30);
m ;
}
else
{
if(m)
PrintC(0x30);
else
PrintC(0x20);
}
a %= 10000;
if(a/1000)
{
if(s==5)
{
s = 0;
PrintC('-');
}
else if(s==3)
{
s = 0;
PrintC(' ');
}
PrintC(a/1000 0x30);
m ;
}
else
{
if(m)
PrintC(0x30);
else
PrintC(0x20);
}
a %= 1000;
if(a/100)
{
if(s==5)
{
s = 0;
PrintC('-');
}
else if(s==3)
{
s = 0;
PrintC(' ');
}
PrintC(a/100 0x30);
m ;
}
else
{
if(m)
PrintC(0x30);
else
PrintC(0x20);
}
if(s==5)
{
s = 0;
PrintC('-');
}
else if(s==3)
{
s = 0;
PrintC(' ');
}
a %= 100;
PrintC(a/10 0x30);
PrintC(0x2e);
PrintC(a%10 0x30);
} */
void PrintN5(unsigned char a) //两位数字,年月日 时分秒 使用
{
a %= 100;
PrintC(a/10 0x30);
PrintC(a%10 0x30);
}
void PrintN6(long int a) //长整数,二位小数 为负数时有负号
{
unsigned char m;
unsigned char s;
m = 0;
if(a<0)
{
s = 5; //表示为负数
a = -a;
}
else
s = 3; //表示为正数
if(a>9999999)
a = 9999999;
if(a/1000000)
{
m = 1;
if(s==5)
{
s = 0;
PrintC('-');
}
else if(s==3)
{
s = 0;
PrintC(' ');
}
PrintC(a/1000000 0x30);
}
else
PrintC(0x20);
a %= 1000000;
if(a/100000)
{
if(s==5)
{
s = 0;
PrintC('-');
}
else if(s==3)
{
s = 0;
PrintC(' ');
}
PrintC(a/100000 0x30);
m ;
}
else
{
if(m)
PrintC(0x30);
else
PrintC(0x20);
}
a %= 100000;
if(a/10000)
{
if(s==5)
{
s = 0;
PrintC('-');
}
else if(s==3)
{
s = 0;
PrintC(' ');
}
PrintC(a/10000 0x30);
m ;
}
else
{
if(m)
PrintC(0x30);
else
PrintC(0x20);
}
a %= 10000;
if(a/1000)
{
if(s==5)
{
s = 0;
PrintC('-');
}
else if(s==3)
{
s = 0;
PrintC(' ');
}
PrintC(a/1000 0x30);
m ;
}
else
{
if(m)
PrintC(0x30);
else
PrintC(0x20);
}
a %= 1000;
if(s==5)
{
s = 0;
PrintC('-');
}
else if(s==3)
{
s = 0;
PrintC(' ');
}
PrintC(a/100 0x30);
m ;
PrintC(0x2e);
a %= 100;
PrintC(a/10 0x30);
PrintC(a%10 0x30);
}
void PrintN7(long int a) //打印一个整型数据,四位数,右边补零
{
if(a>99999)
a = 99999;
PrintC(a/10000 0x30);
a %= 10000;
PrintC(a/1000 0x30);
a %= 1000;
PrintC(a/100 0x30);
a %= 100;
PrintC(a/10 0x30);
PrintC(a%10 0x30);
}
void PrintN8(long int a) //长整数,三位小数 为负数时有负号
{
unsigned char m;
unsigned char s;
m = 0;
if(a<0)
{
s = 5;
a = -a;
}
else
s = 3;
if(a/1000000)
{
m = 1;
if(s==5)
{
s = 0;
PrintC('-');
}
else if(s==3)
{
s = 0;
PrintC(' ');
}
PrintC(a/1000000 0x30);
}
else
PrintC(0x20);
a %= 1000000;
if(a/100000)
{
if(s==5)
{
s = 0;
PrintC('-');
}
else if(s==3)
{
s = 0;
PrintC(' ');
}
PrintC(a/100000 0x30);
m ;
}
else
{
if(m)
PrintC(0x30);
else
PrintC(0x20);
}
a %= 100000;
if(a/10000)
{
if(s==5)
{
s = 0;
PrintC('-');
}
else if(s==3)
{
s = 0;
PrintC(' ');
}
PrintC(a/10000 0x30);
m ;
}
else
{
if(m)
PrintC(0x30);
else
PrintC(0x20);
}
a %= 10000;
if(s==5)
{
s = 0;
PrintC('-');
}
else if(s==3)
{
s = 0;
PrintC(' ');
}
PrintC(a/1000 0x30);
a %= 1000;
PrintC(0x2e);
PrintC(a/100 0x30);
a %= 100;
PrintC(a/10 0x30);
PrintC(a%10 0x30);
}
void PrintN9(unsigned char a) //打印一个字节,十六进制打印
{
CC1 = a>>4;
if(CC1>9)
PrintC(CC1 0x37);
else
PrintC(CC1 0x30);
CC1 = a&0x0f;
if(CC1>9)
PrintC(CC1 0x37);
else
PrintC(CC1 0x30);
}
void PrintN10(long int a) //打印试验编号
{
if(a>99999999)
a = 99999999;
else if(a<0)
a = 0;
CC1 = a/10000000;
a %= 10000000;
PrintC(CC1 0x30);
CC1 = a/1000000;
a %= 1000000;
PrintC(CC1 0x30);
CC1 = a/100000;
a %= 100000;
PrintC(CC1 0x30);
CC1 = a/10000;
a %= 10000;
PrintC(CC1 0x30);
CC1 = a/1000;
a %= 1000;
PrintC(CC1 0x30);
CC1 = a/100;
a %= 100;
PrintC(CC1 0x30);
CC1 = a;
PrintC(CC1/10 0x30);
PrintC(CC1%10 0x30);
}
/* void Delay500ns() //@22.1184MHz
{
unsigned char i;
i = 2;
while (--i);
} */
void Timer0Init(void) //1毫秒@22.1184MHz
{
AUXR |= 0x80; //定时器时钟1T模式
TMOD &= 0xF0; //设置定时器模式
TL0 = 0x9A; //设置定时初值
TH0 = 0xA9; //设置定时初值
TF0 = 0; //清除TF0标志
TR0 = 1; //定时器0开始计时
}
void UartInit(void) //串口初始化
{
//定时器 1 //57600bps@22.1184MHz
// AUXR |= 0x40; //定时器1时钟为Fosc,即1T
// TMOD &= 0x0F; //设定定时器1为16位自动重装方式
// TL1 = 0xA0; //设定定时初值
// TH1 = 0xFF; //设定定时初值
// ET1 = 0; //禁止定时器1中断
// TR1 = 1; //启动定时器1
//定时器 1 //115200bps@22.1184MHz
// AUXR |= 0x40; //定时器1时钟为Fosc,即1T
// TMOD &= 0x0F; //设定定时器1为16位自动重装方式
// TL1 = 0xd0; //设定定时初值
// TH1 = 0xFF; //设定定时初值
// ET1 = 0; //禁止定时器1中断
// TR1 = 1; //启动定时器1
//定时器 2 //115200bps@22.1184MHz
T2L = 0xD0; //设定定时初值
T2H = 0xFF; //设定定时初值
AUXR |= 0x04; //定时器2时钟为Fosc,即1T
AUXR |= 0x10; //启动定时器2
//定时器 4 //9600bps@22.1184MHz
T4T3M |= 0x20; //定时器4时钟为Fosc,即1T
T4L = 0xC0; //设定定时初值
T4H = 0xFD; //设定定时初值
T4T3M |= 0x80; //启动定时器4
//串口 1
SCON = 0x50; //8位数据,可变波特率
// AUXR &= 0xFE; //串口1选择定时器1为波特率发生器
AUXR |= 0x01; //串口1选择定时器2为波特率发生器
//串口 2
S2CON = 0x50; //8位数据,可变波特率
//串口 3
S3CON = 0x10; //8位数据,可变波特率
S3CON &= 0xBF; //串口3选择定时器2为波特率发生器
//串口 4
S4CON = 0x10; //8位数据,可变波特率
S4CON |= 0x40; //串口4选择定时器4为波特率发生器
P_SW2 |= 0x04; //选择 通道 2 输出
}
void DelayMs(unsigned int a) //@22.1184MHz
{
unsigned char i, j;
while(a--)
{
_nop_();
_nop_();
i = 22;
j = 128;
do
{
while (--j);
} while (--i);
}
}
void Int_EX0(void) interrupt 0 using 1
{
char n;
if((P32|P33)==0)
CD_00 = 0;
else if((P32&&P33)==1)
CD_00 = 2;
else if(P32)
CD_00 = 1;
else
CD_00 = 3;
n = CD_00-CD_01;
CD_01 = CD_00;
if((n==1)||(n==-3))
CD_N00 ;
else if((n==-1)||(n==3))
CD_N00--;
}
void Int_EX1(void) interrupt 2 using 1
{
char n;
if((P32|P33)==0)
CD_00 = 0;
else if((P32&&P33)==1)
CD_00 = 2;
else if(P32)
CD_00 = 1;
else
CD_00 = 3;
n = CD_00-CD_01;
CD_01 = CD_00;
if((n==1)||(n==-3))
CD_N00 ;
else if((n==-1)||(n==3))
CD_N00--;
}
void Int_Time0(void) interrupt 1
{
tt0 ;
}
void Int_Time1(void) interrupt 3
{
Mot_PUL = ~Mot_PUL;
}
void Int_Uart1(void) interrupt 4 using 1
{
unsigned char a;
if(RI)
{
RI = 0;
a = SBUF;
if(U1R_Mode==0)
{
if(a==0x12)
U1R_Mode = 0x80;
else if(a==0xc5)
U1R_Mode ;
}
else if(U1R_Mode<0x7a)
{
R1_Data[U1R_Mode] = a;
if(U1R_Mode==1)
{
if(a!=0xc5)
U1R_Mode = 0;
}
else if(U1R_Mode==2)
{
if((a!=IDC_S)&&(a!=0xff))
U1R_Mode = 0;
}
else if(U1R_Mode==3)
{
if((a!=ID_Address)&&(a!=0xff))
U1R_Mode = 0;
}
else if(U1R_Mode==R1_Data[4] 4)
{
U1R_Mode = 0x79;
}
if(U1R_Mode)
U1R_Mode ;
}
else if(U1R_Mode==0x7a) //接收完成,等待处理
{
}
else if(U1R_Mode<0x80)
{
U1R_Mode = 0x00;
}
else if(U1R_Mode<0x88)
{
if(U1R_Mode==0x80)
{
if(a==0x34)
U1R_Mode ;
else
U1R_Mode = 0x00;
}
else if(U1R_Mode==0x81)
{
if(a==0x56)
U1R_Mode ;
else
U1R_Mode = 0x00;
}
else if(U1R_Mode==0x82)
{
if(a==0x78)
U1R_Mode ;
else
U1R_Mode = 0x00;
}
else if(U1R_Mode==0x83)
{
if(a==0x90)
U1R_Mode ;
else
U1R_Mode = 0x00;
}
else if(U1R_Mode==0x84)
{
if(a==0xab)
U1R_Mode ;
else
U1R_Mode = 0x00;
}
else if(U1R_Mode==0x85)
{
if(a==0xcd)
U1R_Mode ;
else
U1R_Mode = 0x00;
}
else if(U1R_Mode==0x86)
{
if(a==0xef)
{
B_Res = 1;
U1R_Mode ;
}
else if(a==0xe0)
U1R_Mode = 0x88;
else if(a==0xe2)
U1R_Mode = 0x89;
else
U1R_Mode = 0x00;
}
}
else if(U1R_Mode==0x87)
{
}
else if(U1R_Mode==0x88)
{
}
else if(U1R_Mode==0x89)
{
}
}
if(TI)
{
TI = 0;
if(U1T_N0<U1T_N1)
{
SBUF = T1_Data[U1T_N0];
}
else
{
U1T_Mode = 0;
}
if(U1T_N0<200)
U1T_N0 ;
}
}
//UART2 中断服务程序
void Int_Uart2(void) interrupt 8 using 1
{
unsigned char m,n;
if (S2CON & S2RI)
{
S2CON &= ~S2RI; //清除S2RI位
if(U2R_N0<40)
{
U2R_N0 ;
if(U2R_Mode==0) //接收按键动作
{
R2_Data[U2R_N0] = S2BUF;
if(U2R_N0>4)
{
if(U2R_N0==R2_Data[3] 3)
{
R2_Data[U2R_N0 1] = 0xff; //输入字符串时多加一个结束符号R2_Data[U2R_N0 1] = 0xff; //输入字符串时多加一个结束符号
U2R_Mode = 1;
}
}
}
else if(U2R_Mode==1) //等待主程序处理接收的液晶回送数据帧
{
}
else if(U2R_Mode==2)
{
m = S2BUF;
n = m&0x0f;
m >>= 4;
m = m*10 n;
if(U2R_N0==7)
Time[0] = m;
else if(U2R_N0==8)
Time[1] = m;
else if(U2R_N0==9)
Time[2] = m;
else if(U2R_N0==10)
Time[3] = m;
else if(U2R_N0==11)
Time[4] = m;
else if(U2R_N0==12)
Time[5] = m;
else if(U2R_N0==13)
Time[6] = m;
else if(U2R_N0==14)
{
U2R_Mode = 0;
U2R_N0 = 0;
}
}
}
else
{
U2R_Mode = 0;
U2R_N0 = 0;
// R2_Data[U2R_N0] = S2BUF;
}
}
if (S2CON & S2TI)
{
S2CON &= ~S2TI; //清除S2TI位
if(U2T_N0<U2T_N1)
{
S2BUF = T2_Data[U2T_N0];
}
U2T_N0 ;
}
}
//UART3 中断服务程序
void Int_Uart3(void) interrupt 17 using 1
{
unsigned char a;
if (S3CON & S3RI)
{
S3CON &= ~S3RI; //清除S3RI位
a = S3BUF;
if(U3R_Mode==0)
{
if(a==0xaa)
U3R_Mode ;
}
else if(U3R_Mode==1)
{
if(a==0xaa)
U3R_Mode ;
else
U3R_Mode = 0;
}
else if(U3R_Mode<26)
{
R3_Data[U3R_Mode ] = a;
}
else if(U3R_Mode<28)
{
if(a==0xbb)
U3R_Mode ;
else
U3R_Mode = 0;
}
else if(U3R_Mode==0x28) //等待主程序处理
{
}
}
if (S3CON & S3TI)
{
S3CON &= ~S3TI; //清除S3TI位
}
}
//Pwm中断
void Int_PWM(void) interrupt 22 using 2
{
}
标签: 设备
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明


网友评论
我要评论