我把那点儿程序截取下来看看:
unsigned long VOL; //存采集电压的平方值
float SUM=0; //累加求和
uint number=1; //采集次数
uint Ueff; //电压均方根值
int voltage; //每1ms采集到的电压瞬时值
extern uint U; //经内部转化产生10位二进制数
/*****定时器0 1ms 中断*****/
void timer0IntProc() interrupt 1
{
TL0 = TIMER_LOW; //方式1,产生1ms定时的初值。晶振11.0592MHz
TH0 = TIMER_HIGHT;
voltage=U*17-8453; //电压转换公式计算后的结果:[3302×0.512×(5U/1024-5/2)]/5,再乘以10,四舍五入而得
VOL=voltage*voltage;
SUM=VOL+SUM;
number++;
if(number==1001)
{
number=1;
SUM=SUM/1000;
Ueff=sqrt(SUM);
SUM=0;
}
}
Ueff拿去再给12864作显示用。
|