基本信息
源码名称:撕拉力试验仪(医疗设备)控制程序
源码大小:4.78M
文件格式:.rar
开发语言:C/C++
更新时间:2019-07-30
友情提示:(无需注册或充值,赞助后即可获取资源下载链接)
嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300
本次赞助数额为: 2 元×
微信扫码支付:2 元
×
请留下您的邮箱,我们将在2小时内将文件发到您的邮箱
源码介绍
#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 { }