hx711芯片c语言程序,压力传感器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
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 = 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语言程序,压力传感器HX711的C函数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 视频教程-清华-尹成老师-java基础-
- 下一篇: 学分信息管理系统C语言代码,C语言学分管