⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 非线性校正与温度补偿.txt

📁 本研究设计的智能压力传感器系统具有成本低、可靠性好、响应速度快、智能化程度高等特点
💻 TXT
字号:
#include"user.h"
sbit
AdjPort=P1^6;
#define ZERO_VAL 0
struct LINE{
float k;
float b;
};
#define TEMP_DEPTH 7 //温度级数
struct LINE code
L[TEMP_DEPTH]={{2.6867,0},{2.8169,0},{2.9580,0},{2.9726,0},{3.0788,0},{3.2063,0},{3.3220,0}};
float code t[TEMP_DEPTH]={-10,0,10,20,30,40,50};
float f[TEMP_DEPTH];
float AA[TEMP_DEPTH];
int
Offset=0;
//零点校准
void AdjOffset(int val){
if(AdjPort==0){
Offset=ZERO_VAL-val;
}
}
int PRS(WORD AdcVal,int TempVal){
BYTE index,JcIdx;
float Prs,tmp;
//计算不同温度对应压强值
for(index=0;index<TEMP_DEPTH;index++){
f[index]=L[index].k;
display();
}
//牛顿插值计算
AA[0]=f[0];
for(index=1;index<TEMP_DEPTH;index++){
for(JcIdx=index;JcIdx<TEMP_DEPTH;JcIdx++){
AA[JcIdx]=(f[JcIdx]-f[JcIdx-1])/(t[JcIdx]-t[JcIdx-index]);
display();
}
for(JcIdx=index;JcIdx<TEMP_DEPTH;JcIdx++){
f[JcIdx]=AA[JcIdx];display();
}
}
Prs=0;
for(index=0;index<TEMP_DEPTH;index++){
tmp=AA[index];
for(JcIdx=0;JcIdx<index;JcIdx++){
tmp*=(TempVal-t[JcIdx]);display();
}
Prs+=tmp;
}
//计算去掉零点的压强值
AA[0]=Prs;
Prs=AA[0]*(float)AdcVal;
AdjOffset((int)Prs);
Prs+=Offset;
if(Prs<0)Prs=0;
return (int)Prs;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -