您好,登錄后才能下訂單哦!
小編給大家分享一下壓力傳感器HX711的C函數(shù)怎么用,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
內(nèi)容所有權(quán)屬于:http://www.xinduofen.com/
#define ADDO P1_2
#define ADSK P1_3
#define AdCnt 10//定義AD采樣平均值的次數(shù)(AdCnt>2)
//讀HX711的AD轉(zhuǎn)換數(shù)據(jù)函數(shù)
unsigned long ReadAdValue(void)
{
unsigned long Count = 0;
unsigned char i;
ADDO=1;
ADSK=0;
Count=0;
while(ADDO);
for(i=0;i<24;i++)//讀取24位數(shù)據(jù)并發(fā)送24個(gè)脈沖
{
ADSK=1;
Count=Count<<1;
ADSK=0;
if(ADDO)Count++;
}
ADSK=1;//發(fā)送第25個(gè)脈沖
delay_us(1);
ADSK=0;
return(Count);
}
signed long getAdcValue(){//獲得一次體重秤的AD值函數(shù)
unsigned char k;
unsigned long adValue;//將要讀取的單個(gè)AD值緩存區(qū)(二進(jìn)制補(bǔ)碼)
signed long adValueY;//將讀取的單個(gè)AD值轉(zhuǎn)換成原碼的緩存區(qū)
signed long adMinValue;//用于存儲(chǔ)AdCnt次AD值當(dāng)中的最小值,初始化為‘第一個(gè)AD采樣值’
signed long adMaxValue;//用于存儲(chǔ)AdCnt次AD值當(dāng)中的最大值,初始化為‘第一個(gè)AD采樣值’
signed long adValueAll = 0;//將要讀取的AdCnt次AD值總和緩存區(qū),初始化為‘0’
for(k=0;k<AdCnt;k++){
adValue = ReadAdValue();
if(adValue&0x00800000){//如果為負(fù)數(shù)的補(bǔ)碼,將負(fù)數(shù)的補(bǔ)碼轉(zhuǎn)換成正數(shù)(正數(shù)的補(bǔ)嗎就是原碼)
adValue=((~adValue)+1)&0x007FFFFF;
adValueY = -adValue;
}else{//如果為正數(shù)的補(bǔ)碼,正數(shù)的補(bǔ)碼就是原碼
adValueY = adValue;
}
if(k==0){//如果為第一個(gè)AD采樣值
adMinValue = adValueY;//初始化最小值
adMaxValue = adValueY;//初始化最大值
}else{
if(adValueY<adMinValue){
adMinValue = adValueY;//更新最小值
}
if(adValueY>adMaxValue){
adMaxValue = adValueY;//更新最大值
}
}
adValueAll = adValueAll + adValueY;//累計(jì)10次AD值的總和
}
adValueAll = adValueAll - adMinValue - adMaxValue;//去掉一個(gè)最小值和一個(gè)最大值
adValueY = adValueAll/(AdCnt-2);//取(AdCnt-2)次AD值的平均值
return adValueY;//返回AD值
}
以上是“壓力傳感器HX711的C函數(shù)怎么用”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。