ad0804 采样程序 交流有效值
时间:10-02
整理:3721RD
点击:
现在的问题是
1:采集到的数据总是在变化。
2.因为0804 只能采集0-5v之内的数,本人用直流2.5v将交流信号 保证在0-5v之内,是不是等我求出来的数据得减去2.5
下面是程序,你们帮忙看看。
1 定时器函数
void start_T0()
{
TMOD=0x01;//用定时器0;
TH0=0xfb; //定时1250us
TL0=0x1e;
TR0=1;//启动定时器0
EA=1; //打开中断
ET0=1; //打开定时器0中断
}
2 中断函数
void ck_t0() interrupt 1
{
ET0=0;//关闭中断
TR0=0;//启动定时器0
AD_init0804(); //采样 存到a里
while(adint==0);
ad[ck]=(a-128);//存入数组,减去128是用直流抬的电压,保证交流信号在0-5v之内,
TR0=1;//启动定时器0
ck++;
if(ck==16)
{ ET0=0;
flag=1;
}
TH0=0xfb; //定时1250us
TL0=0x1e;
ET0=1;
}
算法
for(u=0;u<16;u++)
{
jieguo=ad*ad;
}
for(i=1;i<16;i++)
{
jieguo1+=jieguo;
}
jieguo2=jieguo1/15;
jieguo2=sqrt(jieguo2);
jieguo2=jieguo2;
m=jieguo2/100;
n=jieguo2%100;
k=n/10;
l=n%10;
v_char(shuzi+m*16,1,0,0x40,0xbe) ; //百位
v_char(shuzi+k*16,1,0,0x48,0xbe) ; //十位
// v_char(dian,1,0,0x50,0xbe) ;
v_char(shuzi+l*16,1,0,0x50,0xbe) ; //个位
1:采集到的数据总是在变化。
2.因为0804 只能采集0-5v之内的数,本人用直流2.5v将交流信号 保证在0-5v之内,是不是等我求出来的数据得减去2.5
下面是程序,你们帮忙看看。
1 定时器函数
void start_T0()
{
TMOD=0x01;//用定时器0;
TH0=0xfb; //定时1250us
TL0=0x1e;
TR0=1;//启动定时器0
EA=1; //打开中断
ET0=1; //打开定时器0中断
}
2 中断函数
void ck_t0() interrupt 1
{
ET0=0;//关闭中断
TR0=0;//启动定时器0
AD_init0804(); //采样 存到a里
while(adint==0);
ad[ck]=(a-128);//存入数组,减去128是用直流抬的电压,保证交流信号在0-5v之内,
TR0=1;//启动定时器0
ck++;
if(ck==16)
{ ET0=0;
flag=1;
}
TH0=0xfb; //定时1250us
TL0=0x1e;
ET0=1;
}
算法
for(u=0;u<16;u++)
{
jieguo=ad*ad;
}
for(i=1;i<16;i++)
{
jieguo1+=jieguo;
}
jieguo2=jieguo1/15;
jieguo2=sqrt(jieguo2);
jieguo2=jieguo2;
m=jieguo2/100;
n=jieguo2%100;
k=n/10;
l=n%10;
v_char(shuzi+m*16,1,0,0x40,0xbe) ; //百位
v_char(shuzi+k*16,1,0,0x48,0xbe) ; //十位
// v_char(dian,1,0,0x50,0xbe) ;
v_char(shuzi+l*16,1,0,0x50,0xbe) ; //个位