📄 ade7758_dx.c.svn-base
字号:
key_z = 0;
while (key_z == 0)
{
Process_PCF8574();
Clrwdt();
sum = Read_Period(0,2);
Dian_Neng();
}
if (key_z == KEY4)
{
if (bs==1) bs = 10;
else if (bs==10) bs = 20;
else if (bs==20) bs = 1;
}
if (key_z == KEY1)
{
if(bs==1)
{
temp += 1*bs;
}
else
{
temp += 2*bs;
}
}
if (key_z == KEY2)
{
if(bs==1)
{
temp -= 1*bs;
}
else
{
temp -= 2*bs;
}
}
spi_buf[0] = temp;
Write_ADE7758(reg1,1);
i2c_buf[0] = temp;
Write_2408((phase+PHCAL_ADDR),1); //保存PHCAL值
}
}
/**********************
**名称: 标定有功电量
**第三步:条件:220V,0.075A,COS=1.0
***********************/
Beep(1000);
YG3(); //显示 有功电能 3步
while(key_z != KEY4) {Process_PCF8574(); Delay_Ms_Stop(100); Clrwdt();}
key_z = 0;
spi_buf[0] = 0;
spi_buf[1] = 0x64;
Write_ADE7758(APCFNUM,2);
for (phase=0;phase<3;phase++)
{
if (phase==0){reg1 = AWATTOS; reg2 = 0x04; curr[8]=0x41;}
if (phase==1){reg1 = BWATTOS; reg2 = 0x08; curr[8]=0x42;}
if (phase==2){reg1 = CWATTOS; reg2 = 0x10; curr[8]=0x43;}
spi_buf[0] = 0; //恢复为初始状态
spi_buf[1] = 0;
Write_ADE7758(reg1,2);
spi_buf[0] = reg2; //3P4L
Write_ADE7758(COMPMODE,1);
temp = 0;
bs = 1;
key_z = 0;
while (key_z != KEY3)
{
key_z = 0;
while (key_z == 0)
{
Process_PCF8574();
Clrwdt();
sum = Read_Period(0,2);
Dian_Neng();
}
if (key_z == KEY4)
{
if (bs==1) bs = 10;
else if (bs==10) bs = 20;
else if (bs==20) bs = 1;
}
if (key_z == KEY1)
{
if(bs==1)
{
temp += 1*bs;
}
else
{
temp += 2*bs;
}
}
if (key_z == KEY2)
{
if(bs==1)
{
temp -= 1*bs;
}
else
{
temp -= 2*bs;
}
}
Save_Reg(temp,reg1,(phase*2+WATTOS_ADDR)); //保存WATTOS值
}
}
/**********************
**名称: 标定无功电量
**第一步:条件:220V,1.5A,COS0=0
***********************/
Beep(1000);
WG1(); //显示 无功电能 1步
while(key_z != KEY4) { Process_PCF8574();
//Delay_Ms_Stop(100);
Clrwdt();}
key_z = 0;
spi_buf[0] = 0; //恢复为初始状态
spi_buf[1] = 0x3F;
Write_ADE7758(VARCFDEN,2);
spi_buf[0] = 0;
spi_buf[1] = 0x0A;
Write_ADE7758(VARCFNUM,2);
for (phase=0;phase<3;phase++)
{
if (phase==0){reg1 = AVARG; reg2 = 0x04; curr[8]=0x41;}
if (phase==1){reg1 = BVARG; reg2 = 0x08; curr[8]=0x42;}
if (phase==2){reg1 = CVARG; reg2 = 0x10; curr[8]=0x43;}
spi_buf[0] = 0; //恢复为初始状态
spi_buf[1] = 0;
Write_ADE7758(reg1,2);
spi_buf[0] = reg2; //3P4L
Write_ADE7758(COMPMODE,1);
if (phase==0)
{
sum = Read_Period(1,2);
if (sum == 0) sum = 1;
temp = 3409 * 0x3F / sum;
if (temp>0xFFF) temp = 0xFFF; //12bit
Save_Reg(temp,VARCFDEN,VARCFDEN_ADDR); //保存VARCFDEN值
}
temp = 0;
bs = 1;
key_z = 0;
while (key_z != KEY3)
{
key_z = 0;
while (key_z == 0)
{
Process_PCF8574();
Clrwdt();
sum = Read_Period(1,2);
Dian_Neng();
}
if (key_z == KEY4)
{
if (bs==1) bs = 10;
else if (bs==10) bs = 20;
else if (bs==20) bs = 1;
}
if (key_z == KEY1)
{
if(bs==1)
{
temp += 1*bs;
}
else
{
temp += 2*bs;
}
}
if (key_z == KEY2)
{
if(bs==1)
{
temp -= 1*bs;
}
else
{
temp -= 2*bs;
}
}
Save_Reg(temp,reg1,(phase*2+VARG_ADDR)); //保存VARG值
}
}
/**********************
**名称: 标定无功电量
**第二步:220V,0.075A,COS=0
***********************/
Beep(1000);
WG2(); //显示 无功电能 2步
while(key_z != KEY4) {Process_PCF8574();
//Delay_Ms_Stop(100);
Clrwdt();}
key_z = 0;
spi_buf[0] = 0;
spi_buf[1] = 0x64;
Write_ADE7758(VARCFNUM,2);
for (phase=0;phase<3;phase++)
{
if (phase==0){reg1 = AVAROS; reg2 = 0x04; curr[8]=0x41;}
if (phase==1){reg1 = BVAROS; reg2 = 0x08; curr[8]=0x42;}
if (phase==2){reg1 = CVAROS; reg2 = 0x10; curr[8]=0x43;}
spi_buf[0] = 0; //恢复为初始状态
spi_buf[1] = 0;
Write_ADE7758(reg1,2);
spi_buf[0] = reg2; //3P4L
Write_ADE7758(COMPMODE,1);
temp = 0;
bs = 1;
key_z = 0;
while (key_z != KEY3)
{
key_z = 0;
while (key_z == 0)
{
Process_PCF8574();
Clrwdt();
sum = Read_Period(1,2);
Dian_Neng();
}
if (key_z == KEY4)
{
if (bs==1) bs = 10;
else if (bs==10) bs = 20;
else if (bs==20) bs = 1;
}
if (key_z == KEY1)
{
if(bs==1)
{
temp += 1*bs;
}
else
{
temp += 2*bs;
}
}
if (key_z == KEY2)
{
if(bs==1)
{
temp -= 1*bs;
}
else
{
temp -= 2*bs;
}
}
Save_Reg(temp,reg1,(phase*2+VAROS_ADDR)); //保存VAROS值
}
}
Beep(1000);
/**********************
**名称: 标定视在电量
**第一步:条件:220V,1.5A,COS0=1
***********************/
Beep(1000);
SZ1(); //显示 有无功电能 1步
while(key_z != KEY4) {Process_PCF8574();
//Delay_Ms_Stop(100);
Clrwdt();}
key_z = 0;
spi_buf[0] = 0;
spi_buf[1] = 0x0A;
Write_ADE7758(VARCFNUM,2);
spi_buf[0] = 0x80;
Write_ADE7758(WAVMODE,1);
for (phase=0;phase<3;phase++)
{
if (phase==0){reg1 = AVAG; reg2 = 0x04; curr[8]=0x41;}
if (phase==1){reg1 = BVAG; reg2 = 0x08; curr[8]=0x42;}
if (phase==2){reg1 = CVAG; reg2 = 0x10; curr[8]=0x43;}
spi_buf[0] = 0; //恢复为初始状态
spi_buf[1] = 0;
Write_ADE7758(reg1,2);
spi_buf[0] = reg2; //3P4L
Write_ADE7758(COMPMODE,1);
temp = 0;
bs = 1;
key_z = 0;
while (key_z != KEY3)
{
key_z = 0;
while (key_z == 0)
{
Process_PCF8574();
Clrwdt();
sum = Read_Period(1,2);
Dian_Neng();
}
if (key_z == KEY4)
{
if (bs==1) bs = 10;
else if (bs==10) bs = 20;
else if (bs==20) bs = 1;
}
if (key_z == KEY1)
{
if(bs==1)
{
temp += 1*bs;
}
else
{
temp += 2*bs;
}
}
if (key_z == KEY2)
{
if(bs==1)
{
temp -= 1*bs;
}
else
{
temp -= 2*bs;
}
}
Save_Reg(temp,reg1,(phase*2+VAG_ADDR)); //保存VAG值
}
}
//*/
//-------------------
i2c_buf[0] = 0x55;
i2c_buf[1] = 0x55;
Write_2408(FINISH_FLAG_ADDR,2); //写校表结束标志
//--------备份校表数据-------
Read_2408(FINISH_FLAG_ADDR,2);
Write_2408(FINISH_FLAG_ADDR+BANK1,2);
Read_2408(FINISH_FLAG_ADDR,2);
Write_2408(FINISH_FLAG_ADDR+BANK2,2); //校表标志
Read_2408(IRMSOS_ADDR,16);
Write_2408(IRMSOS_ADDR+BANK1,16);
Read_2408(IRMSOS_ADDR,16);
Write_2408(IRMSOS_ADDR+BANK2,16); //电流相关的寄存器
Read_2408(VRMSOS_ADDR,16);
Write_2408(VRMSOS_ADDR+BANK1,16);
Read_2408(VRMSOS_ADDR,16);
Write_2408(VRMSOS_ADDR+BANK2,16); //电压相关的寄存器
Read_2408(APCFDEN_ADDR,16);
Write_2408(APCFDEN_ADDR+BANK1,16);
Read_2408(APCFDEN_ADDR,16);
Write_2408(APCFDEN_ADDR+BANK2,16); //有功电量相关的寄存器
Read_2408(VARCFDEN_ADDR,16);
Write_2408(VARCFDEN_ADDR+BANK1,16);
Read_2408(VARCFDEN_ADDR,16);
Write_2408(VARCFDEN_ADDR+BANK2,16); //无功电量相关的寄存器
Read_2408(VAG_ADDR,16);
Write_2408(VAG_ADDR+BANK1,16);
Read_2408(VAG_ADDR,16);
Write_2408(VAG_ADDR+BANK2,16); //视在功率和相位偏差的寄存器
//------------------
Beep(1000); //提示校表结束
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -