hx711c语言滤波函数,模数转换芯片hx711 c驱动程序

电子天平专用高精度的模数转换芯片 HX711 的c语言驱动程序,讲解详细,一看就会。

bugAD_F(void)

{

u8 str[26];

int i=0,j=0,k=0;

delay_init(72);

UsartConf(9600);

ADInit();

BUFInit();//往队列数组BUF里面存入N个采样值,初始化SUM为N个采样值的和。

while(1)

{

IntToStr(filter(),str); //IntToStr()函数在进行形参传递时,把filter()函数返回的浮点数转化为了整型数,

//所以,此处调用IntToStr()函数不会出错。

for(i=0;str[i]!='\0';i++); //计算数字是几位数。

if(i == 7) //如果只有7位数,前面用一个空格补齐8位。

USendStr(" ");

USendStr(str);

USendStr(" ");

j++; //j实现输出数字个数的计数,每输出6个数字,换2行。

if(j == 6)

{

j = 0;

USendStr("\n");

USendStr("\n");

}

k++;

if(k == 100)break; //输出100个数据后,结束调试。

delay_ms(500);

}

}

void BUFInit(void) //初始化队列数组BUF和SUM,即,往里面先存入N个采样值,SUM为N个采用值的和。

{

int j=0;

for(j=0;j

{

BUF[j] = ReadAD();

SUM+=BUF[j];

}

}

long double filter(void) //滑动均值滤波法的函数。

{

unsigned long temp=0,max=0,min=0;

int j=0;

temp = ReadAD();

/*下面一句不使用SUM+=temp-BUF[i]的形式,是为了避免temp-BUF[i]的运算,以免产生

负数,引起误差。*/

SUM = SUM+temp-BUF[i];

BUF[i]=temp;

i++;

if(i == N)

i=0;

max=BUF[0];

min=BUF[0];

for(j=0;j

{

if(max

if(min>BUF[j])min=BUF[j];

}

/*下面一句中的(SUM-max-min)/(N-2),不能用SUM=SUM-max-min; SUM/(N-2);

这两句来替代,因为,这样会改变SUM的值,越减越小,到最后,会出现负数了。*/

return (SUM-max-min)/(N-2);

}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值