久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
PL3201測電流測電壓,測有功測無功!
[打印本頁]
作者:
xuwei
時間:
2015-6-13 15:54
標題:
PL3201測電流測電壓,測有功測無功!
/*
%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%
Features: ATT7053BU.C
Description: NONE
Author: 小ARM菜菜
Time: 2013/04
Version: NONE
Q Q :925295580
%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%
*/
#include <PL3201_Addr_Map.h>
#include "ATT7053BU.h"
sbit ATT7053BU_REST=P3^2;
sbit AT_CS=P2^2; //AT93C56
sbit SCLK=P1^5 ;
sbit SDI=P1^4;//sbit SDI=P1^6;
sbit SDO=P1^7;
sbit CS=P2^1;
//如有疑問請參閱王建華的PCB之終端板為依據
//2013年
//小ARM菜菜
void delay1ms(uint32_t t)
{
unsigned char a,b;
while(t)
{t--;
for(b=44;b>0;b--)
for(a=53;a>0;a--);
}
}
void delay10us(void)
{
unsigned char a;
for(a=22;a>0;a--);
}
static void ATT7035BU_Write(uint8_t addr,uint32_t dat)
{
unsigned char i,j;
uint8_t temp[3];
addr|=0x80; //寫所以要置高位為1
dat&=0x00ffffff; //強制首位字節為0,因為無效,只有24個比特,3個字節有效
temp[2] = dat; //低8為
dat>>=8 ;
temp[1] = dat; //中8為
dat>>=8 ;
temp[0] = dat; //高8為
SCLK=0;
CS=0;
AT_CS=0;//must be 0!
//寫命令
for (i = 0; i < 8; i++)
{
if (addr & 0x80)
SDI=1;
else
SDI=0;
addr <<= 1;
delay10us();
SCLK=1;
delay10us();
SCLK=0;
delay10us();
}
//寫應用數據,從高位開始
for(j=0;j<3;j++)
{
for (i = 0; i < 8; i++)
{
if (temp[j] & 0x80)
SDI=1;
else
SDI=0;
temp[j] <<= 1;
delay10us();
SCLK=1;
delay10us();
SCLK=0;
delay10us();
}
}
CS=1;
SCLK=1;
}
static uint32_t ATT7035BU_Read(uint8_t addr)
{
unsigned char i,j;
uint32_t temp=0;
uint8_t dat;
addr&=0x7f;//高位強制為0.
SCLK=0;
CS=0;
AT_CS=0;//must be 0!
//寫ADDR
for (i = 0; i < 8; i++)
{
if (addr & 0x80)
SDI=1;
else
SDI=0;
addr <<= 1;
delay10us();
SCLK=1;
delay10us();
SCLK=0;
delay10us();
}
//讀取數據
for(j=0;j<3;j++)
{
for (i = 0; i < 8; i++)
{
if (dat & 0x80)
SDI=1;
else
SDI=0;
dat <<= 1;
delay10us();
SCLK=1;
delay10us();
if (SDO==1)
dat |= 0x01;
else
dat &= 0xfe;
SCLK=0;
delay10us();
}
temp|=dat ;//接收
temp<<=8; //next
// val[i]= dat;//val[0]高位24,val[2]地位0,
}
CS=1;
SCLK=1;
return temp; //返回數據
}
void Init_ATT7053BU(void)
{
/*
reset ATTA7053B
*/
ATT7053BU_REST=0;
delay1ms(5) ;
ATT7053BU_REST=1;
}
extern void SendOneByte(unsigned char c) ;
char Read_AC_Frequency (void)
{
uint32_t xdata temp;
uint16_t xdata l,m;
/*
Read the frequency of the alternating current
*/
temp = ATT7035BU_Read( Freq_U);
m = temp>>16 ;
m&=0x00ff;
l= temp>>8 ;
l&=0x00ff;
m<<=8;
m=m+l;
return (500000/m);
}
uint16_t Read_AC_voltage_RMS(void)
{
uint32_t xdata temp;
/*
Calculating AC voltage values, voltage returns a hexadecimal value,
of course, necessary in the case of digital filtering should be considered
by 小ARM 菜菜
*/
temp = ATT7035BU_Read( Rms_U );
temp>>=8;
return (temp/k);//計算電壓
}
uint32_t Read_AC_Current (uint8_t chanl)
{
uint32_t temp;
if(chanl==1)
{
ATT7035BU_Write(WPREG,OWP_40);
ATT7035BU_Write( ANAEN,OPEN_ALL_ADC);
ATT7035BU_Write( EMUCFG,MEASUREMENT_CHANNEL_1 ); //計量通道choose
ATT7035BU_Write(WPREG,CWP_40);
temp = ATT7035BU_Read( Rms_I1 ); //通道2電流值
temp>>=8;
temp=KI*temp ;
return temp;
}
else
if(chanl==2)
{
ATT7035BU_Write(WPREG,OWP_40);
ATT7035BU_Write( ANAEN,OPEN_ALL_ADC);
ATT7035BU_Write( EMUCFG,MEASUREMENT_CHANNEL_2 ); //計量通道choose
ATT7035BU_Write(WPREG,CWP_40);
temp = ATT7035BU_Read( Rms_I2 ); //通道2電流值
temp>>=8;
temp=KI*temp ;
return temp;
}
}
/*
Calculated active power is actually identified from manual to read data register by 小ARM菜菜
*/
uint32_t Active_Power_Calculation (uint8_t channl)
{
uint32_t temp;
if(channl==1)
{
temp = ATT7035BU_Read( PowerP1 );//第一通道的有功功率
return temp>>=8;
}
else
if(channl==2)
{
temp = ATT7035BU_Read( PowerP2 );//第一通道的有功功率
return temp>>=8;
}
}
/*無功功率測量*/
uint32_t Reactive_power_measurement(uint8_t channl)
{
uint32_t temp;
if(channl==1)
{
temp = ATT7035BU_Read( PowerQ1 );//第一通道的有功功率
return temp>>=8;
}
else
if(channl==2)
{
temp = ATT7035BU_Read( PowerQ2 );//第一通道的有功功率
return temp>>=8;
}
}
/*視在功率測量*/
uint32_t Apparent_power_measurement (uint8_t channl)
{
uint32_t temp;
if(channl==1)
{
ATT7035BU_Write(WPREG,OWP_40);
ATT7035BU_Write( ANAEN,OPEN_ALL_ADC);
ATT7035BU_Write( EMUCFG,MEASUREMENT_CHANNEL_1 ); //計量通道choose
ATT7035BU_Write(WPREG,CWP_40);
temp = ATT7035BU_Read( Power_S );//第一通道的有功功率
return temp>>=8;
}
else
if(channl==2)
{
ATT7035BU_Write(WPREG,OWP_40);
ATT7035BU_Write( ANAEN,OPEN_ALL_ADC);
ATT7035BU_Write( EMUCFG,MEASUREMENT_CHANNEL_2 ); //計量通道choose
ATT7035BU_Write(WPREG,CWP_40);
temp = ATT7035BU_Read( Power_S );//第二通道的有功功率
return temp>>=8;
}
復制代碼
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
欧美午夜在线
|
免费三级网站
|
欧美精品一区在线
|
国产免费麻豆视频
|
亚洲综合色视频在线观看
|
亚洲综合色丁香婷婷六月图片
|
色网在线看
|
欧美日韩亚洲国产
|
国产精品久久久久久久久久
|
www国产亚洲精品
|
女朋友的闺蜜3韩国三级
|
久久久久一区二区三区
|
日本三级在线
|
精品国产91亚洲一区二区三区www
|
国产精品久久久久久久久久尿
|
亚洲情侣视频
|
97av
|
91色啪
|
香蕉av免费
|
成人精品一区二区
|
日韩中文字幕一区二区
|
成人精品一区二区三区中文字幕
|
亚洲精品乱码久久久久久按摩
|
亚洲视频 欧美视频
|
国产精品永久久久久久久www
|
96国产精品久久久久aⅴ四区
|
国产一区二区
|
国产精品毛片无码
|
成人在线视频观看
|
国产91网站在线观看
|
国内成人免费视频
|
四虎影院新网址
|
美女爽到呻吟久久久久
|
在线色网站
|
日韩欧美一二三区
|
情侣黄网站免费看
|
日韩精品在线观看一区二区三区
|
国产一区二区三区免费观看在线
|
欧美另类视频
|
91免费视频
|
亚洲va欧美va人人爽午夜
|