标题:
ADE7758三相电能表读写程序和初始化 单片机程序
[打印本页]
作者:
zhouxiu
时间:
2019-11-26 14:30
标题:
ADE7758三相电能表读写程序和初始化 单片机程序
/*file name :DB_ADE7758_OREG.C*/
/*Function :Read ADE7758 register and Write ADE7758 register */
#include<AM80C52.H>
#include "DB_ADE7758_OREG.H"
sbit DB_CS_A=0x90;
sbit DB_CS_B=0x91;
sbit DB_CS_C=0x92;
sbit Dout=0x97;
sbit Din =0x96;
sbit Sclk=0x95;
#define DB_X5045_CS0 P1=P1&0x0f8
#define DB_ADE7758_CS1 P1=P1|0x01;P1=P1&0x0f9
#define DB_LED_CS2 P1=P1|0x02;P1=P1&0x0fa
#define DB_LED_CS3 P1=P1|0x03;P1=P1&0x0fb
#define DB_DS1302_CS4 P1=P1|0x04;P1=P1&0x0fc
#define DB_Uselct_CS P1=P1|0x07
unsigned char ADE7758_ReadData(void)
{
unsigned char ReadData;
unsigned int i;
ReadData=0x0;
Dout = 1;
for(i=0;i<8;i++)
{
ReadData=ReadData<<1;
Sclk=0;
YS();
Sclk=1;
YS();
if(Dout)
{
ReadData=ReadData | 0x01;
}
else
{
ReadData=ReadData & 0xfe;
}
YS();
}
Sclk=0;
return ReadData;
}
void ADE7758_WriteDatain(unsigned char Datain)
{
unsigned char i;
unsigned char Temp_Data;
Temp_Data=Datain;
Sclk=0;
i=0;
for(i=0;i<8;i++)
{
Sclk = 1;
YS();
if((Temp_Data & 0x80)==0x80)
{
Din = 1;
}
else
{
Din = 0;
}
Sclk = 0;
YS();
Temp_Data=Temp_Data<<1;
}
}
void ADE7758_InitA()
{
/*写相应寄存器*/
/*写12位是先写入高4位,再写入低8位*/
DB_ADE7758_CS1;
ADE7758_WriteDatain(0x80);
DB_Uselct_CS;
/*使能输出脉冲*/
DB_ADE7758_CS1;
ADE7758_WriteDatain(OPMODE_W8);
ADE7758_WriteDatain(0x00);
DB_Uselct_CS;
DB_ADE7758_CS1;
ADE7758_WriteDatain(GAIN_W8);
ADE7758_WriteDatain(0x00);
DB_Uselct_CS;
/*设置VARCF为无功功率输出脉冲*/
DB_ADE7758_CS1;
ADE7758_WriteDatain(WAVMODE_W8);
ADE7758_WriteDatain(0x00);
DB_Uselct_CS;
/*设置有功增益*/
DB_ADE7758_CS1;
ADE7758_WriteDatain(AWG_W12);
ADE7758_WriteDatain(ref[133]);
ADE7758_WriteDatain(ref[132]);
DB_Uselct_CS;
DB_ADE7758_CS1;
ADE7758_WriteDatain(BWG_W12);
ADE7758_WriteDatain(ref[135]);
ADE7758_WriteDatain(ref[134]);
DB_Uselct_CS;
DB_ADE7758_CS1;
ADE7758_WriteDatain(CWG_W12);
ADE7758_WriteDatain(ref[137]);
ADE7758_WriteDatain(ref[136]);
DB_Uselct_CS;
/*设置无功增益为默认1*/
DB_ADE7758_CS1;
ADE7758_WriteDatain(AVARG_W12);
ADE7758_WriteDatain(ref[139]);
ADE7758_WriteDatain(ref[138]);
DB_Uselct_CS;
DB_ADE7758_CS1;
ADE7758_WriteDatain(BVARG_W12);
ADE7758_WriteDatain(ref[141]);
ADE7758_WriteDatain(ref[140]);
DB_Uselct_CS;
DB_ADE7758_CS1;
ADE7758_WriteDatain(CVARG_W12);
ADE7758_WriteDatain(ref[143]);
ADE7758_WriteDatain(ref[142]);
DB_Uselct_CS;
/*设置输出脉冲累计的是单相还是三相*/
DB_ADE7758_CS1;
ADE7758_WriteDatain(COMPMODE_W8);
ADE7758_WriteDatain(0xbC);
DB_Uselct_CS;
DB_ADE7758_CS1;
ADE7758_WriteDatain(LCYCMODE_W8);
ADE7758_WriteDatain(0x3f);
DB_Uselct_CS;
DB_ADE7758_CS1;
ADE7758_WriteDatain(LINECYC_W16);
ADE7758_WriteDatain(0x0f);
ADE7758_WriteDatain(0xff);
DB_Uselct_CS;
DB_ADE7758_CS1;
ADE7758_WriteDatain(WDIV_W8);
ADE7758_WriteDatain(0x32);
DB_Uselct_CS;
DB_ADE7758_CS1;
ADE7758_WriteDatain(VARDIV_W8);
ADE7758_WriteDatain(0x32);
DB_Uselct_CS;
DB_ADE7758_CS1;
ADE7758_WriteDatain(VADIV_W8);
ADE7758_WriteDatain(0x32);
DB_Uselct_CS;
/*设置有功输出脉冲分频系数*/
DB_ADE7758_CS1;
ADE7758_WriteDatain(APCFNUM_W16);
ADE7758_WriteDatain(0x00);
ADE7758_WriteDatain(0x00);
DB_Uselct_CS;
DB_ADE7758_CS1;
ADE7758_WriteDatain(APCFDEN_W12);
ADE7758_WriteDatain(ref[57]);
ADE7758_WriteDatain(ref[56]);
DB_Uselct_CS;
/*设置无功输出脉冲分频系数*/
DB_ADE7758_CS1;
ADE7758_WriteDatain(VARCFNUM_W16);
ADE7758_WriteDatain(0x00);
ADE7758_WriteDatain(0x00);
DB_Uselct_CS;
DB_ADE7758_CS1;
ADE7758_WriteDatain(VARCFDEN_W12);
ADE7758_WriteDatain(ref[59]);
ADE7758_WriteDatain(ref[58]);
DB_Uselct_CS;
/*相位补偿*/
DB_ADE7758_CS1;
ADE7758_WriteDatain(APHCAL_W7);
ADE7758_WriteDatain(ref[144]);
DB_Uselct_CS;
DB_ADE7758_CS1;
ADE7758_WriteDatain(BPHCAL_W7);
ADE7758_WriteDatain(ref[146]);
DB_Uselct_CS;
DB_ADE7758_CS1;
ADE7758_WriteDatain(CPHCAL_W7);
ADE7758_WriteDatain(ref[148]);
DB_Uselct_CS;
/*电压补偿*/
/*DB_ADE7758_CS1;
ADE7758_WriteDatain(AVRMSOS_W12);
ADE7758_WriteDatain(ref[13]);
ADE7758_WriteDatain(ref[12]);
DB_Uselct_CS;
DB_ADE7758_CS1;
ADE7758_WriteDatain(BVRMSOS_W12);
ADE7758_WriteDatain(ref[15]);
ADE7758_WriteDatain(ref[14]);
DB_Uselct_CS;
DB_ADE7758_CS1;
ADE7758_WriteDatain(CVRMSOS_W12);
ADE7758_WriteDatain(ref[17]);
ADE7758_WriteDatain(ref[16]);
DB_Uselct_CS; */
/*电流增益*/
DB_ADE7758_CS1;
ADE7758_WriteDatain(AIGAIN_W12);
ADE7758_WriteDatain(ref[19]);
ADE7758_WriteDatain(ref[18]);
DB_Uselct_CS;
DB_ADE7758_CS1;
ADE7758_WriteDatain(BIGAIN_W12);
ADE7758_WriteDatain(ref[21]);
ADE7758_WriteDatain(ref[20]);
DB_Uselct_CS;
DB_ADE7758_CS1;
ADE7758_WriteDatain(CIGAIN_W12);
ADE7758_WriteDatain(ref[23]);
ADE7758_WriteDatain(ref[22]);
DB_Uselct_CS;
}
void YS()
{
unsigned char i;
for(i=0;i<0xff;i++);
}
复制代码
作者:
admin
时间:
2019-11-26 14:37
本帖需要重新编辑补全电路原理图,源码,详细说明与图片即可获得100+黑币(帖子下方有编辑按钮)
作者:
eihf
时间:
2019-11-26 17:02
我觉得还不错
作者:
2992179673
时间:
2019-11-26 19:10
我觉得也是
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1