NTC温度探头的采集计算方程 我要stm32的案例,精确采集的方程案例谢谢!

NTC温度探头的采集计算方程 我要stm32的案例,精确采集的方程案例谢谢!,第1张

1000temp-1430)/43+25,应该主要是因为这个式子,这个式子里面用到了很多的近似值,像1430啊,43,1000啊,这些都是一个估计值,你看下或者网上搜下,把这几个数字改下,可能会好些把,我是菜菜鸟一个,不晓得其他的什么原因了。。。

热敏电阻测温度(程序+仿真)

#include<reg52h>

#include<intrinsh>

#include<mathh>

typedef unsignedchar uchar;

typedef unsignedint uint;

sbit CE = P1^1;

sbit STS=P1^0;

sbit RC=P1^4;

sbit A0=P1^3;

sbit CS=P1^2;

sbit RS = P1^5 ;

sbit RW = P1^6 ;

sbit EN = P1^7 ;

void delay_ms(uintz)

{

uint x,y;

for(x=z;x>0;x--)

for(y=110;y>0;y--);

}

uintAD1674_Read(void)

{

uint temp;

uchar temp1,temp2;

CS=1; //片选信号

CE=0; //初始化,关闭数据采集

CS=0;

A0=0;

RC=0;

CE=1;//CE=1,CS=0,RC=0,A0=0启动12位温度转换

_nop_();

while(STS==1); //等待数据采集结束

CE=0; //芯片使能关闭

RC=1;

A0=0;

CE=1;//CE=1,CS=0,RC=1,12/8=1,A0=0 允许高八位数据并行输出

_nop_();

temp1=P0; //读取转换结果的高八位

CE=0; //芯片使能关闭

RC=1;

A0=1;

CE=1;//CE=1,CS=0,RC=1,12/8=0,A0=1 允许低四位数据 并行输出

_nop_();

temp2=P0; //读取转换结果的第四位

temp=((temp1<<4)|(temp2&0X0F)); //高位和低位合成实际温度,temp2为PO口的高四位

return (temp); //还回转换结果,右移四位是因为temp2为P0口的高四位

}

/

写数据

/

voidw_dat(unsigned char dat)

{

RS = 1;

//EN = 0;

P2 = dat;

delay_ms(5);

RW = 0;

EN = 1;

EN = 0;

}

/

写命令

/

voidw_cmd(unsigned char cmd)

{

RS = 0;

// EN = 0;

P2 = cmd;

delay_ms(5);

RW = 0;

EN = 1;

EN = 0;

}

/

发送字符串到LCD

/

voidw_string(unsigned char addr_start, unsigned char p)

{

unsigned char pp;

pp = p;

w_cmd(addr_start);

while (pp != '\0')

{

w_dat(pp++);

}

}

/

初始化1602

/

voidInit_LCD1602(void)

{

EN = 0;

w_cmd(0x38); // 162显示,57点阵,8位数据接口

w_cmd(0x0C); // 显示器开、光标开、光标允许闪烁

w_cmd(0x06); // 文字不动,光标自动右移

w_cmd(0x01); // 清屏

}

void process(uintdate,uchar add)

{

uchar A[7];

A[0]=date/1000%10+'0';

A[1]=date/100%10+'0';

A[2]='';

A[3]=date/10%10+'0';

A[4]=date%10+'0';

A[5]='C';

w_string(add,A);

}

void main()

{

uintVOL[25]={343,339,332,328,320,316,312,304,300,292,289,285,277,273,265,261,257,250,246,242,234,230,226,222,218};

uintTemper[25]={100,200,300,400,500,600,700,800,900,1000,1100,1200,1300,1400,1500,1600,1700,1800,1900,2000,2100,2200,2300,2400,2500};

uchar i,flag=0;

uint result,temp1,temp2;

float res;

Init_LCD1602();

w_string(0x80,"Temper:");

// w_string(0xC0,word2);

while (1)

{

res=(float)(AD1674_Read());

result=(uint)((res/20480-10)5000);

temp1=abs(result-VOL[0]);

for(i=1;i<25;i++)

{

temp2=abs(result-VOL);

if(temp1>=temp2)

{

temp1=temp2;

flag=i;

}

}

process(Temper[flag],0x80+7);

//process(result,0xc0);

//delay_ms(1000);

}

}

以上就是关于NTC温度探头的采集计算方程 我要stm32的案例,精确采集的方程案例谢谢!全部的内容,包括:NTC温度探头的采集计算方程 我要stm32的案例,精确采集的方程案例谢谢!、在proteus如何仿真ntc热敏电阻、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9640323.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-30
下一篇 2023-04-30

发表评论

登录后才能评论

评论列表(0条)

保存