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