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);
}
總結
以上是生活随笔為你收集整理的hx711c语言滤波函数,模数转换芯片hx711 c驱动程序的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 得到app文稿导出_我是如何使用得到Ap
- 下一篇: hx711基准电压_hx711中文资料汇