📄 progm.c
字号:
sprint(0x52);sprint(0x3d);//R=
for(i=0;i<7;i++) //打印电阻数值
//打印电压数值
for(i=0;i<7;i++) //打印电压数值
sprint(daRTmpBuf[i]);
sprint(0x0d); //回车
sprint(0x49);sprint(0x3d);//I=
for(i=0;i<6;i++) //打印电流数值
sprint(daiTmpBuf[i]);
sprint(0x0d); //回车
//打印“**********”
for(i=0;i<16;i++)
sprint(0x2d);//打印“*************”
sprint(0x0d); //回车
sprint(0x1b);sprint(0x38);sprint(0x04);//选择汉字
//打印“测试员:”
for(i=0;i<5;i++) //打印“系统:”
sprint(ch4[i]);
sprint(0x0d); //回车
sprint(0x1b);
sprint(0x66);
sprint(0x01);
sprint(0x01);
sprint(0x0d); //回车
}
void print()//打印结果
{
daima();
dayin();
}
void test()
{
uchar i,cishu;
uchar tmpe;
START=1;
SELC=1;
SELC=1;
SELC=1;
lcd_init();
disanping();//显示正在测试中,请稍候。。。
FM=1;
SELC=0;
delay1ms(255);
delay1ms(255);
FM=0;
delay1ms(255);
delay1ms(255);
delay1ms(255);
cedianliu();//测试电路回路,功能:用于故障判断
liangcheng();//选择电压回路的量程
for(i=0;i<10;i++)
{
for(cishu=0;cishu<1;cishu++)
{
FM=1;
cedianliu();//测试电路回路,功能:用于故障判断
ceshidianzu();//交替测试电流和电压回路,并计算电阻值
//delay1ms(20);
FM=0;
delay1ms(255);
delay1ms(255);
}
tmpe=120-i*8;
df(2,tmpe,23,0);
}
SELC=1; //关闭恒流源
FM=1;
delay1ms(255);
delay1ms(255);
FM=0;
showceshijieguo();//测试结束,结果显示
while(1)
{
if(namekey()== 6)
print();
}
}
void xianshi_xiao()//显示校正
{
lcd_init();
dh(0,16,7,0); //电流:1.0000
dh(0,32,20,0);
df(0,56,17,0);
df(0,64,xiaozhen[0],1);
df(0,72,21,0);
df(0,80,xiaozhen[1],0);
df(0,88,xiaozhen[2],0);
df(0,96,xiaozhen[3],0);
df(0,104,xiaozhen[4],0);
dh(2,16,7,0); //电阻1:1.0000
dh(2,32,8,0);
df(2,48,1,0);
df(2,56,17,0);
df(2,64,xiaozhen[5],0);
df(2,72,21,0);
df(2,80,xiaozhen[6],0);
df(2,88,xiaozhen[7],0);
df(2,96,xiaozhen[8],0);
df(2,104,xiaozhen[9],0);
dh(4,16,7,0); //电阻2:1.0000
dh(4,32,8,0);
df(4,48,2,0);
df(4,56,17,0);
df(4,64,xiaozhen[10],0);
df(4,72,21,0);
df(4,80,xiaozhen[11],0);
df(4,88,xiaozhen[12],0);
df(4,96,xiaozhen[13],0);
df(4,104,xiaozhen[14],0);
dh(6,16,7,0); //电阻3:1.0000
dh(6,32,8,0);
df(6,48,3,0);
df(6,56,17,0);
df(6,64,xiaozhen[15],0);
df(6,72,21,0);
df(6,80,xiaozhen[16],0);
df(6,88,xiaozhen[17],0);
df(6,96,xiaozhen[18],0);
df(6,104,xiaozhen[19],0);
}
void chuandi()//将电压电流误差系数传入内存
{
AT24C64_R(xiaozhen,0,20);//电压电流误差系数已预先存入24c64的首20个字节里
DIANLIUXIAO=xiaozhen[0]+xiaozhen[1]*0.1+xiaozhen[2]*0.01+xiaozhen[3]*0.001+xiaozhen[4]*0.0001;
DIANZUXIAO1=xiaozhen[5]+xiaozhen[6]*0.1+xiaozhen[7]*0.01+xiaozhen[8]*0.001+xiaozhen[9]*0.0001;
DIANZUXIAO2=xiaozhen[10]+xiaozhen[11]*0.1+xiaozhen[12]*0.01+xiaozhen[13]*0.001+xiaozhen[14]*0.0001;
DIANZUXIAO3=xiaozhen[15]+xiaozhen[16]*0.1+xiaozhen[17]*0.01+xiaozhen[18]*0.001+xiaozhen[19]*0.0001;
}
uchar code Ymp[20]={64,80,88,96,104,64,80,88,96,104,64,80,88,96,104,64,80,88,96,104}; //调试参数设置界面列号
uchar code Xmp[20]={0,0,0,0,0,2,2,2,2,2,4,4,4,4,4,6,6,6,6,6};
//修改调试参数函数
#pragma disable
void xiao_Modify()
{
uchar idata KeyP = 0; //该数据值 保存着要修改的 数值信息,光标起始位置在0列
uchar idata keydata = 0;
while (1)
{
keydata = namekey(); //读键值
switch ( keydata)
{
case 1 : //上键,增加数字
switch ( KeyP )//光标起始位置
{
case 0: //光标在年的十位
if ( xiaozhen[0] == 9 ) //9+1=0
xiaozhen[0] = 0;
else
xiaozhen[0]++;
df(Xmp[KeyP],Ymp[KeyP],xiaozhen[0],1);
break;
case 1: //光标在年的个位
if ( xiaozhen[1] == 9 ) //9+1=0
xiaozhen[1] = 0;
else
xiaozhen[1]++;
df(Xmp[KeyP],Ymp[KeyP],xiaozhen[1],1);
break;
case 2: //光标在月的十位
if ( xiaozhen[2] == 9 ) //9+1=0
xiaozhen[2] = 0;
else
xiaozhen[2]++;
df(Xmp[KeyP],Ymp[KeyP],xiaozhen[2],1);
break;
case 3: //光标在月的个位
if ( xiaozhen[3] == 9 ) //9+1=0
xiaozhen[3] = 0;
else
xiaozhen[3]++;
df(Xmp[KeyP],Ymp[KeyP],xiaozhen[3],1);
break;
case 4: //光标在日的十位
if ( xiaozhen[4] == 9 ) //9+1=0
xiaozhen[4] = 0;
else
xiaozhen[4]++;
df(Xmp[KeyP],Ymp[KeyP],xiaozhen[4],1);
break;
case 5: //光标在日的个位
if ( xiaozhen[5] == 9 ) //9+1=0
xiaozhen[5] = 0;
else
xiaozhen[5]++;
df(Xmp[KeyP],Ymp[KeyP],xiaozhen[5],1);
break;
case 6: //光标在时的十位
if ( xiaozhen[6] == 9 ) //9+1=0
xiaozhen[6] = 0;
else
xiaozhen[6]++;
df(Xmp[KeyP],Ymp[KeyP],xiaozhen[6],1);
break;
case 7: //光标在时的个位
if ( xiaozhen[7] == 9 ) //9+1=0
xiaozhen[7] = 0;
else
xiaozhen[7]++;
df(Xmp[KeyP],Ymp[KeyP],xiaozhen[7],1);
break;
case 8: //光标在分的十位
if ( xiaozhen[8] == 9 ) //9+1=0
xiaozhen[8] = 0;
else
xiaozhen[8]++;
df(Xmp[KeyP],Ymp[KeyP],xiaozhen[8],1);
break;
case 9: //光标在分的个位
if ( xiaozhen[9] == 9 ) //9+1=0
xiaozhen[9] = 0;
else
xiaozhen[9]++;
df(Xmp[KeyP],Ymp[KeyP],xiaozhen[9],1);
break;
case 10: //光标在分的个位
if ( xiaozhen[10] == 9 ) //9+1=0
xiaozhen[10] = 0;
else
xiaozhen[10]++;
df(Xmp[KeyP],Ymp[KeyP],xiaozhen[10],1);
break;
case 11: //光标在分的个位
if ( xiaozhen[11] == 9 ) //9+1=0
xiaozhen[11] = 0;
else
xiaozhen[11]++;
df(Xmp[KeyP],Ymp[KeyP],xiaozhen[11],1);
break;
case 12: //光标在分的个位
if ( xiaozhen[12] == 9 ) //9+1=0
xiaozhen[12] = 0;
else
xiaozhen[12]++;
df(Xmp[KeyP],Ymp[KeyP],xiaozhen[12],1);
break;
case 13: //光标在分的个位
if ( xiaozhen[13] == 9 ) //9+1=0
xiaozhen[13] = 0;
else
xiaozhen[13]++;
df(Xmp[KeyP],Ymp[KeyP],xiaozhen[13],1);
break;
case 14: //光标在分的个位
if ( xiaozhen[14] == 9 ) //9+1=0
xiaozhen[14] = 0;
else
xiaozhen[14]++;
df(Xmp[KeyP],Ymp[KeyP],xiaozhen[14],1);
break;
case 15: //光标在分的个位
if ( xiaozhen[15] == 9 ) //9+1=0
xiaozhen[15] = 0;
else
xiaozhen[15]++;
df(Xmp[KeyP],Ymp[KeyP],xiaozhen[15],1);
break;
case 16: //光标在分的个位
if ( xiaozhen[16] == 9 ) //9+1=0
xiaozhen[16] = 0;
else
xiaozhen[16]++;
df(Xmp[KeyP],Ymp[KeyP],xiaozhen[16],1);
break;
case 17: //光标在分的个位
if ( xiaozhen[17] == 9 ) //9+1=0
xiaozhen[17] = 0;
else
xiaozhen[17]++;
df(Xmp[KeyP],Ymp[KeyP],xiaozhen[17],1);
break;
case 18: //光标在分的个位
if ( xiaozhen[18] == 9 ) //9+1=0
xiaozhen[18] = 0;
else
xiaozhen[18]++;
df(Xmp[KeyP],Ymp[KeyP],xiaozhen[18],1);
break;
case 19: //光标在分的个位
if ( xiaozhen[19] == 9 ) //9+1=0
xiaozhen[19] = 0;
else
xiaozhen[19]++;
df(Xmp[KeyP],Ymp[KeyP],xiaozhen[19],1);
break;
}
break;
case 2 : //下键,减少数字
switch ( KeyP )
{
case 0: //光标在年的十位
if ( xiaozhen[0] == 0 ) //9+1=0
xiaozhen[0] = 9;
else
xiaozhen[0]--;
df(Xmp[KeyP],Ymp[KeyP],xiaozhen[0],1);
break;
case 1: //光标在年的个位
if ( xiaozhen[1] == 0 ) //9+1=0
xiaozhen[1] = 9;
else
xiaozhen[1]--;
df(Xmp[KeyP],Ymp[KeyP],xiaozhen[1],1);
break;
case 2: //光标在月的十位
if ( xiaozhen[2] == 0 ) //9+1=0
xiaozhen[2] = 9;
else
xiaozhen[2]--;
df(Xmp[KeyP],Ymp[KeyP],xiaozhen[2],1);
break;
case 3: //光标在月的个位
if ( xiaozhen[3] == 0 ) //9+1=0
xiaozhen[3] = 9;
else
xiaozhen[3]--;
df(Xmp[KeyP],Ymp[KeyP],xiaozhen[3],1);
break;
case 4: //光标在日的十位
if ( xiaozhen[4] == 0 ) //9+1=0
xiaozhen[4] = 9;
else
xiaozhen[4]--;
df(Xmp[KeyP],Ymp[KeyP],xiaozhen[4],1);
break;
case 5: //光标在日的个位
if ( xiaozhen[5] == 0 ) //9+1=0
xiaozhen[5] = 9;
else
xiaozhen[5]--;
df(Xmp[KeyP],Ymp[KeyP],xiaozhen[5],1);
break;
case 6: //光标在时的十位
if ( xiaozhen[6] == 0 ) //9+1=0
xiaozhen[6] = 9;
else
xiaozhen[6]--;
df(Xmp[KeyP],Ymp[KeyP],xiaozhen[6],1);
break;
case 7: //光标在时的个位
if ( xiaozhen[7] == 0 ) //9+1=0
xiaozhen[7] = 9;
else
xiaozhen[7]--;
df(Xmp[KeyP],Ymp[KeyP],xiaozhen[7],1);
break;
case 8: //光标在分的十位
if ( xiaozhen[8] == 0 ) //9+1=0
xiaozhen[8] = 9;
else
xiaozhen[8]--;
df(Xmp[KeyP],Ymp[KeyP],xiaozhen[8],1);
break;
case 9: //光标在分的个位
if ( xiaozhen[9] == 0 ) //9+1=0
xiaozhen[9] = 9;
else
xiaozhen[9]--;
df(Xmp[KeyP],Ymp[KeyP],xiaozhen[9],1);
break;
case 10: //光标在分的个位
if ( xiaozhen[10] == 0 ) //9+1=0
xiaozhen[10] = 9;
else
xiaozhen[10]--;
df(Xmp[KeyP],Ymp[KeyP],xiaozhen[10],1);
break;
case 11: //光标在分的个位
if ( xiaozhen[11] == 0 ) //9+1=0
xiaozhen[11] = 9;
else
xiaozhen[11]--;
df(Xmp[KeyP],Ymp[KeyP],xiaozhen[11],1);
break;
case 12: //光标在分的个位
if ( xiaozhen[12] == 0 ) //9+1=0
xiaozhen[12] = 9;
else
xiaozhen[12]--;
df(Xmp[KeyP],Ymp[KeyP],xiaozhen[12],1);
break;
case 13: //光标在分的个位
if ( xiaozhen[13] == 0 ) //9+1=0
xiaozhen[13] = 9;
else
xiaozhen[13]--;
df(Xmp[KeyP],Ymp[KeyP],xiaozhen[13],1);
break;
case 14: //光标在分的个位
if ( xiaozhen[14] == 0 ) //9+1=0
xiaozhen[14] = 9;
else
xiaozhen[14]--;
df(Xmp[KeyP],Ymp[KeyP],xiaozhen[14],1);
break;
case 15: //光标在分的个位
if ( xiaozhen[15] == 0 ) //9+1=0
xiaozhen[15] = 9;
else
xiaozhen[15]--;
df(Xmp[KeyP],Ymp[KeyP],xiaozhen[15],1);
break;
case 16: //光标在分的个位
if ( xiaozhen[16] == 0 ) //9+1=0
xiaozhen[16] = 9;
else
xiaozhen[16]--;
df(Xmp[KeyP],Ymp[KeyP],xiaozhen[16],1);
break;
case 17: //光标在分的个位
if ( xiaozhen[17] == 0 ) //9+1=0
xiaozhen[17] = 9;
else
xiaozhen[17]--;
df(Xmp[KeyP],Ymp[KeyP],xiaozhen[17],1);
break;
case 18: //光标在分的个位
if ( xiaozhen[18] == 0 ) //9+1=0
xiaozhen[18] = 9;
else
xiaozhen[18]--;
df(Xmp[KeyP],Ymp[KeyP],xiaozhen[18],1);
break;
case 19: //光标在分的个位
if ( xiaozhen[19] == 0 ) //9+1=0
xiaozhen[19] = 9;
else
xiaozhen[19]--;
df(Xmp[KeyP],Ymp[KeyP],xiaozhen[19],1);
break;
}
break;
case 3 : //右移键
if ( KeyP == 19) //光标停留在分的个位
{
df(Xmp[KeyP],Ymp[KeyP],xiaozhen[KeyP],0); //将该位数字正显
KeyP = 0; //该值复0,即将光标移到首位(年之十位)
df(Xmp[KeyP],Ymp[KeyP],xiaozhen[KeyP],1);//将首位数字反显
break ;
}
else
{
df(Xmp[KeyP],Ymp[KeyP],xiaozhen[KeyP],0); //将该位数字正显
KeyP++;
df(Xmp[KeyP],Ymp[KeyP],xiaozhen[KeyP],1); //将该位数字反显
break;
}
case 7: AT24C64_W(xiaozhen,0,20);
return;
}
}
}
void design()
{
AT24C64_R(xiaozhen,0,20);//电压电流误差系数已预先存入24c64的首20个字节里
xianshi_xiao();//显示校正
xiao_Modify();//进行校正
}
void main()
{
FM=0;
AV1=AV2=0;
SELC=1;
if(namekey()==4)design();//修正系数调整
chuandi();//将电压电流误差系数传入内存
lcd_init();
diyiping();
while(namekey()!=7);//测试键
lcd_init();
dierping();
SELC=1;
SELC=1;
while(namekey()!=7);//测试键
test();
while(1);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -