热电偶转换C语言程序
C51单片机数字温度计汇编程序及说明书
1绪论1.1选题背景随着人们生活水平的不断提高,单片机控制无疑是人们追求的目标之一,它所给人带来的方便也是不可否定的,其中数字温度计就是一个典型的例子,但人们对它的要求越来越高,要为现代人工作、科研、生活提供更好的更方便的设施就需要从单片机技术入手,一切向着数字化控制,智能化控制方向发展。
温度测量在物理实验、医疗卫生、食品生产等领域,尤其在热学试验(如:物体的比热容、汽化热、热功当量、压强温度系数等教学实验)中,有特别重要的意义。
现在所使用的温度计通常都是精度为1℃和0.1℃的水银、煤油或酒精温度计。
这些温度计的刻度间隔通常都很密,不容易准确分辨,读数困难,而且他们的热容量还比较大,达到热平衡所需的时间较长,因此很难读准,并且使用非常不方便。
本设计所介绍的数字温度计与传统的温度计相比,具有读数方便,测温范围广,测温准确等优点,其输出温度采用数字显示,主要用于对测温比较准确的场所,或科研实验室使用。
因此本课题就尝试通过编程与芯片的结合来解决传统数字温度计的弊端,设计出新型数字温度计。
1.2课题现状分析及研究意义温度传感器的发展现状:温度传感器使用范围广,数量多,居各种传感器之首,其发展大致经历了以下3个阶段:①传统的分立式温度传感器(含敏感元件)——热电偶传感器,主要是能够进行非电量和电量之间转换。
②模拟集成温度传感器/控制器。
集成传感器是采用硅半导体集成工艺制成的,因此亦称硅传感器或单片集成温度传感器。
③智能温度传感器。
它是微电子技术、计算机技术和自动测试技术(ATE_)的结晶。
智能温度传感器内部包含温度传感器、A/D传感器、信号处理器、存储器(或寄存器)和接口电路。
本课题的研究可以应用领域生产、生活等很多领域。
对于家用电器从洗衣机、微波炉到音响等等到处都可以用到温度控制器来方便大家的日常生活。
开发此产品后也可方便应用安装在小至家庭大到工厂车间,小至一个芯片大到一个机械设备。
例如在家庭客厅卧室等必要地方显示室温,可防止家里食物是否变质及早采取措施。
转换进制程序C语言,C语言各进制转换源代码
转换进制程序C语⾔,C语⾔各进制转换源代码#include#include#includevoid ten_two(int);void ten_eight(int);void ten_sixten(int);void two_ten(int);void two_eight(int);void two_sixten(int);void eight_two(int);void eight_ten(int);void eight_sixten(int);void sixten_two(char r[], int k);void sixten_ten(char r[], int k);void sixten_eight(char r[], int k);int main(void){int i, j, number = 0;int temp;char change[10];printf("=============================================================\n");printf(" 欢 迎 使 ⽤ 进 制 转 换 程 序 \n");printf(" 作 者:李 研 时 间:2009 年7 ⽉5 ⽇ \n");printf("=============================================================\n");do{temp = 0;//fflush(stdin);printf("\n请选择转换前的进制:\n2⼆进制\n8⼋进制\n10⼗进\n16⼗六进制\n0退出\n");printf("转换前的进制是:");scanf("%d", &i);case 2:printf("\n请选择转换后的进制:\n2⼆进制\n8⼋进制\n10⼗进\n16⼗六进制\n0退出\n"); printf("转换后的进制是:");scanf("%d", &j);switch(j){case 2:printf("\n同进制之间不⽤转化!\n");temp = 1;break;case 8:printf("\n请输⼊您想要转化的数:");scanf("%d", &number);two_eight(number);temp = 1;break;case 10:printf("\n请输⼊您想要转化的数:");scanf("%d", &number);two_ten(number);temp = 1;break;case 16:printf("\n请输⼊您想要转化的数:");scanf("%d", &number);two_sixten(number);temp = 1;break;case 0:printf("谢谢使⽤!!");}break;printf("转换后的进制是:");scanf("%d", &j);switch(j){case 8:printf("\n同进制之间不⽤转化!\n");temp = 1;break;case 2:printf("\n请输⼊您想要转化的数:");scanf("%d", &number);eight_two(number);temp = 1;break;case 10:printf("\n请输⼊您想要转化的数:");scanf("%d", &number);eight_ten(number);temp = 1;break;case 16:printf("\n请输⼊您想要转化的数:");scanf("%d", &number);eight_sixten(number);temp = 1;break;case 0:printf("谢谢使⽤!!");}break;case 10:printf("\n请选择转换后的进制:\n2⼆进制\n8⼋进制\n10⼗进\n16⼗六进制\n0退出\n");{case 10:printf("\n同进制之间不⽤转化!\n");temp = 1;break;case 2:printf("\n请输⼊您想要转化的数:");scanf("%d", &number);ten_two(number);temp = 1;break;case 8:printf("\n请输⼊您想要转化的数:");scanf("%d", &number);ten_eight(number);temp = 1;break;case 16:printf("\n请输⼊您想要转化的数:");scanf("%d", &number);ten_sixten(number);temp = 1;break;case 0:printf("谢谢使⽤!!");}break;case 16:printf("\n请选择转换后的进制:\n2⼆进制\n8⼋进制\n10⼗进\n16⼗六进制\n0退出\n"); printf("转换后的进制是:");scanf("%d", &j);printf("\n同进制之间不⽤转化!\n"); temp = 1;break;case 2:printf("\n请输⼊您想要转化的数:"); fflush(stdin);gets(change);for(number = 0;; number++){if(change[number] == '\0') break;}sixten_two(change, number);temp = 1;break;case 8:printf("\n请输⼊您想要转化的数:"); fflush(stdin);gets(change);for(number = 0;; number++){if(change[number] == '\0') break;}sixten_eight(change, number); temp = 1;break;case 10:printf("\n请输⼊您想要转化的数:"); fflush(stdin);gets(change);if(change[number] == '\0')break;}sixten_ten(change, number);temp = 1;break;case 0:printf("谢谢使⽤!!");}break;case 0:printf("\n谢谢使⽤!\n");}}while(temp == 1);return 0;}/*以下为: ⼆进制转换为⼗进制,⼋进制,⼗六进制.*/ void two_ten(int a){int i, s = 0;int result = 0;for(i = 1; a != 0; i *= 2){if(a % 10 > 1){s = 1;break;}else{result += (a % 10) * i;}if(s == 1)printf("您的输⼊有误!请重新输⼊\n"); elseprintf("\n转换后的数为:%d\n", result); }void two_eight(int a){int i, j, k, s = 0;int p[30];int result = 0;for(i = 1; a != 0; i *= 2){if(a % 10 > 1){s = 1;break;}else{result += (a % 10) * i;a = a / 10;}}for(j = 0; result != 0; j++){p[j] = result % 8;result = result / 8;}if(s == 1)printf("It is wrong\n");elsefor(k = j - 1; k >= 0; k--) {printf("%d", p[k]);}printf("\n");}}void two_sixten(int a){int i, j, k, s = 0;char p[30];int result = 0;for(i = 1; a != 0; i *= 2){if(a % 10 > 1){s = 1;break;}else{result += (a % 10) * i;a = a / 10;}}for(j = 0; result != 0; j++) {p[j] = result % 16;result = result / 16;if (p[j] > 10){switch(p[j])p[j] = 'A';break;case 11:p[j] = 'B';break;case 12:p[j] = 'C';break;case 13:p[j] = 'D';break;case 14:p[j] = 'E';break;case 15:p[j] = 'F';break;}}else p[j] += 48;}if(s == 1)printf("It is wrong\n"); else{printf("\n转换后的数为:"); for(k = j - 1; k >= 0; k--) {printf("%c", p[k]);}printf("\n");}void eight_two(int a){int i, j, k, s = 0;int result = 0;int p[30];for(i = 1; a != 0; i *= 8){if(a % 10 > 7){s = 1;break;}else{result += (a % 10) * i;a = a / 10;}}for(j = 0; result != 0; j++) {p[j] = result % 2;result = result / 2;}if(s == 1)printf("It is wrong\n"); else{printf("\n转换后的数为:"); for(k = j - 1; k >= 0; k--) {printf("%d", p[k]);}}void eight_ten(int a){int i, s = 0;int result = 0;for(i = 1; a != 0; i *= 8){if(a % 10 > 7){s = 1;break;}else{result += (a % 10) * i;a = a / 10;}}if(s == 1)printf("It is wrong\n");else{printf("\n转换后的数为:%d\n", result); }}void eight_sixten(int a){int i, j, k, s = 0;char p[30];int result = 0;for(i = 1; a != 0; i *= 8){}else{result += (a % 10) * i;a = a / 10;}}for(j = 0; result != 0; j++) {p[j] = result % 16;result = result / 16;if(p[j]p[j] += 48;else{switch(p[j]){case 10:p[j] = 'A';break;case 11:p[j] = 'B';break;case 12:p[j] = 'C';break;case 13:p[j] = 'D';break;case 14:}}}if(s == 1)printf("It is wrong\n");else{printf("\n转换后的数为:");for(k = j - 1; k >= 0; k--){printf("%c", p[k]);}printf("\n");}}/*以下为: ⼗六进制转换为⼗进制,⼆进制,⼋进制.*/ void sixten_ten(char a[], int k){int i, j, s = 0;int result = 0;int b[50];for(i = 0; i{if(a[i] <= '9' && a[i] >= '1'){b[i] = a[i] - 48;}else{case 'B': b[i] = 11; break; case 'C': b[i] = 12; break; case 'D': b[i] = 13; break; case 'E': b[i] = 14; break; case 'F': b[i] = 15; break; case 'a': b[i] = 10; break; case 'b': b[i] = 11; break; case 'c': b[i] = 12; break; case 'd': b[i] = 13; break; case 'e': b[i] = 14;s = 1;}}}for(i = 1, j = k - 1; j >= 0; j--, i *= 16) {result += b[j] * i;}if(s == 1)printf("It is wrong\n");else{printf("\n转换后的数为:%d", result); }}void sixten_two(char a[], int k){int i, j, s = 0;int result = 0;int b[50];int p[30];for(i = 0; i{if(a[i] <= '9' && a[i] >= '1')b[i] = a[i] - 48;else{switch(a[i]){break; case 'C': b[i] = 12; break; case 'D': b[i] = 13; break; case 'E': b[i] = 14; break; case 'F': b[i] = 15; break; case 'a': b[i] = 10; break; case 'b': b[i] = 11; break; case 'c': b[i] = 12; break; case 'd': b[i] = 13; break; case 'e': b[i] = 14; break; case 'f':}}}for(j = k - 1, i = 1; j >= 0; j--, i *= 16) {result += b[j] * i;}for(j = 0; result != 0; j++){p[j] = result % 2;result = result / 2;}if(s == 1)printf("It is wrong\n");else{printf("\n转换后的数为:");for(k = j - 1; k >= 0; k--){printf("%d", p[k]);}printf("\n");}}void sixten_eight(char a[], int k){int i, j, s = 0;int result = 0;int b[30];int p[30];if(a[i] <= '9' && a[i] >= '1') b[i] = a[i] - 48;else{switch(a[i]){case 'A':b[i] = 10;break;case 'B':b[i] = 11;break;case 'C':b[i] = 12;break;case 'D':b[i] = 13;break;case 'E':b[i] = 14;break;case 'F':b[i] = 15;break;case 'a':b[i] = 10;break;case 'b':b[i] = 11;break;case 'c':b[i] = 12;b[i] = 13;break;case 'e':b[i] = 14;break;case 'f':b[i] = 15;break;default:s = 1;}}}for(j = k - 1, i = 1; j >= 0; j--, i *= 16) {result += b[j] * i;}for(j = 0; result != 0; j++){p[j] = result % 8;result = result / 8;}if(s == 1)printf("It is wrong\n");else{printf("\n转换后的数为:");for(k = j - 1; k >= 0; k--){printf("%d", p[k]);}printf("\n");/*以下为: ⼗进制转换为⼆进制,⼋进制,⼗六进制.*/ void ten_two(int a){int j, k;int p[30];for(j = 0; a != 0; j++){p[j] = a % 2;a = a / 2;}printf("\n转换后的数为:");for(k = j - 1; k >= 0; k--){printf("%d", p[k]);}printf("\n");}void ten_eight(int a){int j, k;int p[30];for(j = 0; a != 0; j++){p[j] = a % 8;a = a / 8;}printf("\n转换后的数为:");for(k = j - 1; k >= 0; k--){printf("%d", p[k]);}printf("\n");{int j, k;int p[30];for(j = 0; a != 0; j++) {p[j] = a % 16;a = a / 16;if(p[j]p[j] += 48;else{switch(p[j]){case 10:p[j] = 'A';break;case 11:p[j] = 'B';break;case 12:p[j] = 'C';break;case 13:p[j] = 'D';break;case 14:p[j] = 'E';break;case 15:p[j] = 'F';break;}}}printf("\n转换后的数为:"); for(k = j - 1; k >= 0; k--) {printf("%c", p[k]);}printf("\n");}。
MAX热电偶测温单片机C语言程序
MAX热电偶测温—单片机C语言程序/************************************************************************* 亲测可用,误差1-2摄氏度,元件是k型热电偶,51单片机,晶振11.0592,4位共阴数码管显示**************************************************************************/ #include <reg51.h>//头文件#include "intrins.h"//_nop_();延时函数用#define uchar unsigned char //用uchar代替unsigned char,1字节0-255#define uint unsigned int //用uint代替nsigned int,2字节0-26653sbit SO=P1^0; //P1.0口与SO相连sbit CS=P1^1; //P1.1口与CS相连sbit SCK=P1^2; //P1.2口与SCK相连sbit dula=P2^6;//段选sbit wela=P2^7;//位选uint j,h;float wendu;//4字节(6位数字)uint Re_Convert();//热电偶数据读取,返回温度void Disp_temp();//温度显示uchar qian=0,bai=0,shi=0,ge=0,xiao=0;uint P_Temp;uint temp;uchar code table3[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, //共阴数码管0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};void delay(unsigned int z)//延时{unsigned int x,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}uint Re_Convert() //热电偶数据读取,返回温度{ uchar i;unsigned long Temp_2;Temp_2=0;SCK=0;_nop_();_nop_();//这个_nop_()等效与汇编里面的NOP指令,也就是空一个机器周期,//在51单片机中_nop_()等于空12个时钟周期【即一个机器周期】CS=0;for(i=0;i<16;i++)//16位数据读取{Temp_2<<=1;//向右移一位_nop_();SCK=1;//上升if(SO==1){Temp_2=Temp_2|0x01;}else Temp_2=Temp_2|0x00;_nop_();SCK=0;_nop_();}CS=1; //读取完后对CS置1进行温度转换!MAX6675的转换时间是典型值:0.17s,最大值0.22s。
热电偶温度表测量电路的设计
热电偶温度表测量电路的设计热电偶温度表由配套热电偶、外壳和核心测量电路等组成,其核心电路由三大部分组成:(1)测量放大电路;(2)A/D转换电路;(3)显示电路。
一般用单片机作为信号处理和控制的核心,图10.6.1所示为市场上常见的热电偶测温表。
若对电路稍作改进也可变成温度控制器或兼具温度控制与报警双重功能。
图10.6.1 热电偶温度表1 温度表硬件电路设计1.1 热电偶温度传感器及其冷端补偿方法的选择可根据测量温度高低来选择,尽量选用贱金属型热电偶,以降低成本。
如铁—康铜型热电偶,被测温度范围可达-100~1 100℃,冷端补偿采用补偿电桥法,采用不平衡电桥产生的电势来补偿热电偶因冷端温度变化而引起的热电势变化值。
不平衡电桥由电阻R1、R2、R3(锰铜丝绕制)、R cu(铜丝绕制)四桥臂和桥路稳压源组成,串联在热电偶回路中。
R cu 与热电偶冷端同处于±0℃,而R1=R2=R3=1Ω,桥路电源电压为4V,由稳压电源供电,R s为限流电阻,其阻值因热电偶不同而不同,电桥通常取在20℃时平衡,这时电桥的四个桥臂电阻R1=R2=R3=R cu,a、b端无输出。
当冷端温度偏离20℃时,例如升高时,R cu增大,而热电偶的热电势却随着冷端温度的升高而减小。
U ab与热电势减小量相等,U ab与热电势迭加后输出电势则保持不变,从而达到了冷端补偿的自动完成。
1.2 测量放大电路及其芯片实际电路中,从热电偶输出的信号最多不过几十毫伏(<30mV),且其中包含工频、静电和磁偶合等共模干扰,对这种电路放大就需要放大电路具有很高的共模抑制比以及高增益、低噪声和高输入阻抗,因此宜采用测量放大电路。
测量放大器又称数据放大器、仪表放大器和桥路放大器,它的输入阻抗高,易于与各种信号源匹配,而它的输入失调电压和输入失调电流及输入偏置电流小,并且温漂较小。
由于时间温漂小,因而测量放大器的稳定性好。
由三运放组成测量放大器,差动输入端R1和R2分别接到A1和A2的同相端。
c语言编程题 类似摄氏华氏温度转换
C语言编程题:摄氏华氏温度转换摘要:在本文中,我将深入探讨C语言编程题中的摄氏华氏温度转换问题。
文章将从简到繁地介绍这一主题,通过实际代码示例和解析,帮助您更深入地理解这一常见的C语言编程问题。
本文将分为以下几个部分:摄氏华氏温度转换的基本概念、实现摄氏华氏温度转换的C 语言代码、个人对这一主题的理解和总结。
1. 摄氏华氏温度转换的基本概念摄氏温度和华氏温度是我们日常生活中常用的温度计量单位。
摄氏度(℃)是国际上常用的温度计量单位,而华氏度(℉)则是在一些国家和地区常用的温度计量单位。
摄氏温度和华氏温度之间的转换是一个常见的问题,尤其在编程领域中。
在C语言编程中,实现摄氏华氏温度转换是一个基础而重要的练习题目。
2. 实现摄氏华氏温度转换的C语言代码在C语言中,实现摄氏华氏温度转换通常使用以下公式:```c// 摄氏度转换为华氏度的公式fahrenheit = (celsius * 1.8) + 32;// 华氏度转换为摄氏度的公式celsius = (fahrenheit - 32) / 1.8;```通过以上公式,我们可以很容易地编写C语言代码来实现摄氏华氏温度转换。
下面是一个简单的示例代码:```c#include <stdio.h>int main() {float celsius, fahrenheit;// 输入摄氏温度printf("请输入摄氏温度:");scanf("%f", &celsius);// 转换为华氏温度fahrenheit = (celsius * 1.8) + 32;printf("摄氏温度 %.2f 对应的华氏温度为 %.2f\n", celsius, fahrenheit);return 0;}```3. 个人对这一主题的理解和观点摄氏华氏温度转换是一个非常基础的编程问题,但在实际的软件开发中,却有着广泛的应用。
MAX6675热电偶测温—51单片机C语言程序.c
CS=0;
for(i=0;i<16;i++)//16位数据读取
{
Temp_2<<=1;//向右移一位
_nop_();
SCK=1;//上升
if(SO==1){Temp_2=Temp_2|0x01;}
P0=table3[ge];
dula=1; dula=来自; wela=0; P0=0x7b;
wela=1;
wela=0;
delay(1);
dula=0;
P0=table3[xiao];
dula=1;
dula=0;
else Temp_2=Temp_2|0x00;
_nop_();
SCK=0;
_nop_();
}
CS=1; //读取完后对CS置1进行温度转换!MAX6675的转换时间是典型值:0.17s,最大值0.22s。
wela=0;
P0=0x77;
wela=1;
wela=0;
delay(1);
}
void main()//主程序
{
while(1)
{
for(j=250;j>0;j--)
{
if(j==250){wendu=Re_Convert();}
temp=temp/10;
shi =temp%10;//取十位数字
bai =temp/10;//去百位数字
//动态扫描显示各位数字
dula=0;
P0=table3[bai];
dula=1;
热电偶温度传感器设计报告
热电偶温度传感器设计报告热电偶温度传感器是一种将温度变化转化为电能输出的装置,其设计的主要目标是实现温度的准确测量和控制。
本设计报告将详细介绍热电偶温度传感器的设计过程,包括原理分析、材料选择、结构设计、制造工艺以及测试验证等方面。
热电偶温度传感器是基于塞贝克效应(Seebeck effect)工作的。
塞贝克效应是指两种不同材料组成的闭合回路中,当两个接触点处的温度不同时,回路中会产生电动势。
热电偶温度传感器就是利用这一原理,将温度变化转化为电动势变化,从而实现温度的测量。
热电偶温度传感器的主要材料包括热电偶丝和连接导线。
热电偶丝是实现温度测量的关键元件,需要具备高灵敏度、良好的稳定性和抗氧化性等特性。
常见的热电偶丝有镍铬合金、铜镍合金和铂等。
连接导线主要用于连接热电偶丝和测量仪表,应具备耐高温、抗氧化和良好的导电性能等特性。
热电偶温度传感器的结构设计应考虑测量范围、精度和稳定性等因素。
常见的热电偶温度传感器结构有铠装式和非铠装式两种。
铠装式结构具有较高的抗振性和耐磨性,适用于恶劣环境下的温度测量。
非铠装式结构则具有较小的体积和重量,适用于实验室和工业生产中的温度测量。
热电偶温度传感器的制造工艺主要包括焊接、保护涂层和校准等环节。
焊接工艺应保证热电偶丝和连接导线之间的可靠连接;保护涂层能够有效保护传感器免受腐蚀和氧化;校准环节则确保了传感器的测量精度和稳定性。
为了验证热电偶温度传感器的性能指标是否达到设计要求,需要进行一系列的测试验证。
这些测试包括灵敏度测试、线性度测试、重复性测试和稳定性测试等。
通过这些测试,可以评估传感器的测量精度、响应时间和长期稳定性等性能指标。
本文对热电偶温度传感器的设计进行了详细的介绍和分析。
通过原理分析、材料选择、结构设计、制造工艺以及测试验证等方面的探讨,我们成功地设计出一款具有高灵敏度、良好稳定性和抗氧化性的热电偶温度传感器。
该传感器能够广泛应用于各种温度测量场合,为工业自动化、实验室研究和环境监测等领域提供重要的技术支持。
热处理炉温度控制系统
位置式PID算法
• 由于计算机控制是一种采样控制,它只能根据采样时刻的 偏差计算控制量,而不能像模拟控制那样连续输出控制量 量,进行连续控 • 增量式PID算法
增量式PID
• 所谓增量式PID是指数字控制器的输出只是控制量的增量 kuΔ。当执行机构需要的控制量是增量,而不是位置量的 绝对数值时,可以使用增量式PID控制算法进行控制。 •
题目要求
• 电热棒直接加热,温度控制在1000℃, • 控制精度 1% • 对检测环节、控制环节、执行机构、控制规律选择、PID 参数的整定
设计思想
• 本设计采用STC12C5A60S2单片机为热处理炉温度控制系统 的核心器件。 • 温度检测环节采用热电偶传感器。 • 执行机构采用晶闸管。 • 控制算法采用 C语言PID调节。
• • •
热处理炉温度控制系统概括
• 温度变化通过热电偶传感器转换成电势变化经过处理转换 成0到5V电压信号 • STC12C5A60S2 10AD位采样电压 • C语言 增量式 PID 调节 输出晶闸管的触发脉冲相位 • 晶闸管控制电热棒功率大小达到控制炉温的要求
热处理炉温度控制系统方框图
元器件清单
热电偶要求
• ① 组成温度传感器热电偶的两个热电极的焊接必须牢固; ② 两个热电极彼此之间应很好地绝缘,以防短路; ③ 补偿导线与温度传感器热电偶自由端的连接要方便可靠 ; ④ 保护套管应能保证热电极与有害介质充分隔离。
热电偶传感器
• 热电偶传感器是一种将温度变化转换为电势变化的传感器 。在工业生产中,热电偶是应用最广泛的测温元件之一, 其主要优点是测温范围广可以在1K至2800‘C的范围内使用 ,精度高性能稳定,结构简单,动态性能好,把温度转换 为电势信号便于处理和远距离传输。
基于 MCS51 单片机的热电偶测温系统
济南大学自动化与电气工程学院专业综合实训报告综合实训题目:基于MCS51单片机的热电偶测温系统所属实训环节:电气信息类专业综合实训学生姓名宁刚学号:20120321203班级:自动化1201指导教师:王新江计划实训时间:2015.10.12~2015.11.06自动化与电气工程学院制基于MCS51单片机的热电偶测温系统摘要:k型热电偶由两种不同成份的导体(称为K型丝材或热电极)两端接合成回路,当接合点的温度不同时,在回路中就会产生电动势,从而把温度信号转换为电压信号。
本次实训利用这一原理,通过单片机AT89C51实现温度检测、1602显示与声光报警。
关键词:k型热电偶 AT89C51 1602 声光报警Thermocouple temperature measurement systemAbstract: k type thermocouple consists of two kinds of different ingredients of conductor (called k type wire or hot electrode) synthesis loop at both ends, when the junction temperature is not at the same time, in the circuit will generate electromotive force, so as to convert temperature signal to voltage signal. The practical use of this principle, by SCM AT89C51 temperature detection, display and sound and light alarm 1602.Keywords: k type thermocouple ; AT89C51 ;1602 ;sound and light alarm一、技术指标 (3)1、基本要求 (3)2、发挥部分 (3)二、系统整体框图 (3)三、实训内容 (4)四、硬件电路设计 (4)1、主控模块 (5)2、温度信号二级放大模块 (5)3、A/D转换模块 (6)4、显示模块 (7)5、声光报警模块 (8)6、按键模块 (9)7、电路总图 (10)五、系统软件设计 (11)1、设计思想 (11)2、程序设计 (11)六、系统测试与分析 (24)七、操作说明 (24)八、实物图 (25)九、实训总结 (28)一、技术指标1、基本要求1)用K型热电偶测温,测温范围为0—1370°C,对应电压0~54.8186mVDC。
c语言不同变量类型的自动转化
c语言不同变量类型的自动转化英文回答:In C language, there are various data types, each with its own properties and uses. When dealing with expressions involving different data types, the compiler might perform implicit type conversion, also known as automatic type coercion, to ensure compatibility and produce meaningful results.Integral Types Promotion:When operands of different integral types (char, short, int, long, long long) are involved in an expression, the compiler promotes them to a common type. The rules for promotion are:char and short are promoted to int.int and long are promoted to long int.long int and long long int remain unchanged.Floating-Point Conversion:When one operand is a floating-point type (float or double) and the other is an integral type, the integral type is converted to floating-point.Mixed-Mode Arithmetic:When an expression contains both integral and floating-point values, the integral values are converted tofloating-point to perform the arithmetic operations. The result is also of floating-point type.Casting:In addition to automatic type conversion, C also allows explicit type casting using the `(type_name)` syntax. Casting involves manually converting an expression to a different data type.Consequences of Type Conversion:Loss of Precision: When converting from a higher-precision type to a lower-precision type, some precision can be lost.Overflow and Underflow: Converting from a smaller-range type to a larger-range type can result in overflow or underflow.Undefined Behavior: In some cases, type conversion can lead to undefined behavior, which should be avoided.Example:c.int x = 10;float y = 2.5;float z = x + y; // x is promoted to float, z becomes float.中文回答:在C语言中,存在各种数据类型,每种数据类型都有自己的属性和用途。
3950ntc 温度c语言
3950ntc 温度c语言
在C语言中,我们可以使用函数库中的`<>`和`<>`来实现将NTC热敏电阻的温度值从Kelvin转换为摄氏度。
下面是一个示例程序,它接受一个Kelvin温度值作为输入,并输出相应的摄氏度温度值。
```c
include <>
include <>
int main() {
double kelvin_temp, celsius_temp;
printf("请输入温度值(Kelvin):");
scanf("%lf", &kelvin_temp);
// 将Kelvin温度转换为摄氏度
celsius_temp = kelvin_temp - ;
printf("温度值(摄氏度):%lf\n", celsius_temp);
return 0;
}
```
在这个程序中,我们首先包含了`<>`和`<>`头文件。
然后,我们定义了两个变量`kelvin_temp`和`celsius_temp`来存储用户输入的Kelvin温度值和计算出的摄氏度温度值。
接下来,我们使用`printf()`函数提示用户输入温度值,并使用`scanf()`函数读取用户输入的值。
然后,我们使用公式`celsius_temp = kelvin_temp - `将Kelvin温度转换为摄氏度。
最后,我们使用`printf()`函数输出计算得到的摄氏度温度值。
热电偶分度表自动查询系统的设计
遮 盛墨
( nin d ln wod u s e o g D r ; g
n r [] itW od2;
) T as r rnf ; e
Trnfr a se. Dwod r=GeT g t a DW od “ d tp c r ( Fl aa ak” ) ; Trn fr od 0=( rn frDwo d x 0 0 F F ; a se. r [] T a se . W r&0 00 F F )
一
【1西 门 子 公 司 .W iCC 手 册 ht: www.dsmime sc m.ad 5 n t / p/ a .i e n .o c/ o wno d If/0 01N0 71 d 0 0 la /no0 0 / 2  ̄2 0 . p
[】谭浩强 . 6 C语言 程序设计 ( 第二版)[ . M】 北京:清华大学出 版社。2 0 . 00 [】邹彤 .WiC 7 n C组态 软件 的编程 技巧 化 工 自动化 及仪 表。 20 , 01
参考文献
[】陈伯时 . I 电力拖动 自 控制系统 ( 2版) [ . 动 第 M】 北京:机 械工业出
版 社 , 20 . 0 3
【】西门子 ( 2 中国)有 限公司 自动 化与驱动 集团 . 空航天大学 出版 社, 2 0 . 0 P C[ . O4
该文档贡献者很忙什么也没留下
维普资讯
/
仪器仪表用户
控机的硬盘或 内存 中,在需要时对归档数据进行调用。该数据库 以 循环刷新方式存储历史数据和报 警信 息,是动态数据。记录下来的 归 档 数 据 , 可 以利 用 图 形 编 辑 器 中 的 WiCC nie a l n o l tbe n c nrl WiC o l e t n o to 控件,以表格和 曲线的形 o to 、 n C ni r d c nrl n e 式显示于监控画面上或 由打印机输出。图 3 所示为系统工作 时的变 频器输出频率 曲线。
热电偶转换C语言程序
#include<string.h>#include <math.h>#define ERROR -100#define uchar unsigned charfloat tmp = 0;// S型温度转电压系数float code Var_TtoV_S[3][9]={{0, 5.40313309/1e3, 1.25934290/1e5, -2.32477969/1e8, 3.22028823/1e11,-3.31465196/1e14, 2.55744252/1e17, -1.25068871/1e20, 2.71443176/1e24},{1.32900444, 3.34509311/1e3, 6.54805193/1e6, -1.64856259/1e9,1.29989605/1e14, 0, 0, 0, 0},{1.46628233e2, -2.58430517/1e1, 1.63693575/1e4, -3.30439047/1e8,-9.43223691/1e15, 0, 0, 0, 0}};// R型温度转电压系数float code Var_TtoV_R[3][10]={{0, 5.28961730/1e3, 1.39166590/1e5, -2.38855693/1e8, 3.56916001/1e11,-4.62347666/1e14, 5.00777441/1e17, -3.73105886/1e20, 1.57716482/1e23,-2.81038625/1e27},{2.95157925, -2.52061251/1e3, 1.59564502/1e5, -7.64085948/1e9,2.05305291/1e12, -2.93359668/1e16},{1.52232118e2, -2.68819889/1e1, 1.71280280/1e4, -3.45895706/1e8,-9.34633971/1e15}};// B型温度转电压系数float code Var_TtoV_B[2][9]={{0, -2.46508183/1e4, 5.90404212/1e6, -1.32579316/1e9, 1.56682919/1e12,-1.69445292/1e15,6.29903471/1e19},{-3.89381686, 2.85717475/1e2, -8.48851048/1e5, 1.57852802/1e7,-1.68353449/1e10, 1.11097940/1e13, -4.45154310/1e17, 9.89756408/1e21,-9.37913303/1e25}};// K型温度转电压系数float code Var_TtoV_K[3][11]={{0, 3.9450128025/1e2, 2.3622373598/1e5, -3.2858906784/1e7, -4.9904828777/1e9, -6.7509059173/1e11, -5.7410327428/1e13, -3.1088872894/1e15,-1.0451609365/1e17, -1.9889266878/1e20, -1.6322697486/1e23},{-1.7600413686/1e2, 3.8921204975/1e2, 1.8558770032/1e5, -9.9457592874/1e8,3.1840945719/1e10, -5.6072844889/1e13, 5.6075059059/1e16,-3.2020720003/1e19, 9.7151147152/1e23, -1.2104721275/1e26},{1.185976/1e1,-1.183432/1e4}};// N型温度转电压系数float code Var_TtoV_N[2][11]={{0, 2.61591060/1e2, 1.09574842/1e5, -9.38411116/1e8, -4.64120398/1e11,-2.63033577/1e12, -2.26534380/1e14, -7.60893008/1e17, -9.34196678/1e20},{0, 2.59293946/1e2, 1.57101419/1e5, 4.38256272/1e8, -2.52611698/1e10,6.43118193/1e13, -1.00634715/1e15, 9.97453390/1e19,-6.08632456/1e22,2.08492293/1e25, -3.06821962/1e29}};// E型温度转电压系数float code Var_TtoV_E[2][14]={{0, 5.8665508708/1e2, 4.5410977124/1e5, -7.7998048686/1e7,-2.5800160843/1e8, -5.9452583057/1e10, -9.3214058667/1e12,-1.028*******/1e13, -8.0370123621/1e16, -4.3979497391/1e18,-1.6414776355/1e20, -3.9673619516/1e23, -5.5827328721/1e26,-3.4657842013/1e29},{0, 5.8665508710/1e2, 4.5032275582/1e5, 2.8908407212/1e8,-3.3056896652/1e10, 6.50244033/1e13, -1.9197495594/1e16, -1.2536600497/1e18, 2.1489217569/1e21,-1.4388041782/1e24,3.5960899481/1e28}};// J型温度转电压系数float code Var_TtoV_J[2][9]={{0, 5.03811878/1e2, 3.04758370/1e5, -8.56810657/1e8, 1.32281953/1e10,-1.70529583/1e13, 2.09480907/1e16, -1.25383953/1e19, 1.56317256/1e23},{2.96456257e2, -1.49761278, 3.17871039/1e3, -3.18476867/1e6,1.57208190/1e9, -3.06913691/1e13}};// T型温度转电压系数float code Var_TtoV_T[2][15]={{0, 3.8748106364/1e2, 4.4194434347/1e5, 1.1844323105/1e7,2.0032973554/1e8, 9.0138019559/1e10, 2.2651156593/1e11,3.6071154205/1e13, 3.8493939883/1e15, 2.8213521925/1e17,1.4251594779/1e19, 4.8768662286/1e22, 1.0795539270/1e24,1.3945027062/1e27, 7.9795153927/1e31},{0, 3.8748106364/1e2, 3.3292227880/1e5, 2.0618243404/1e7,-2.1882256846/1e9,1.0996880928/1e11,-3.0815758772/1e14,4.5479135290/1e17, -2.7512901673/1e20}};//-----------------------------------// S型电压转温度系数float code Var_VtoT_S[4][10]={{0, 1.8494946e2, -8.0050406e1, 1.0223743e2, -1.5224859e2, 1.8882134e2,-1.5908594e2, 8.2302788e1, -2.3418194e1, 2.7978626},{1.2915072e1, 1.4662989e2, -1.5347134e1, 3.1459460, -4.1632578/1e1,3.1879638/1e2, -1.2916375/1e3, 2.1834751/1e5, -1.4473795/1e7,8.2112721/1e9},{-8.0878011e1, 1.6215731e2, -8.5368695, 4.7196870/1e1, -1.4416937/1e2,2.0816189/1e4},{5.3338751e4, -1.2358923e4, 1.0926576e3, -4.2656937e1, 6.2472054/1e1}};// R型电压转温度系数float code Var_VtoT_R[4][11]={{0, 1.8891380e2, -9.3835290e1, 1.3068619e2, -2.2703580e2, 3.5145659e2,-3.8953900e2, 2.8239471e2, -1.2607281e2, 3.1353611e1, -3.3187769},{1.3345845e1, 1.4726446e2, -1.8440248e1, 4.0311297, -6.2494284/1e1,6.4684120/1e2, -4.4587504/1e3, 1.9947101/1e4, -5.3134018/1e6,6.4819762/1e8},{-8.1995994e1, 1.5539620e2, -8.3421977, 4.2794335/1e1,-1.1915780/1e2, 1.4922901/1e4},{3.4061778e4, -7.0237292e3, 5.5829038e2, -1.9523946e1, 2.5607402/1e1}};// B型电压转温度系数float code Var_VtoT_B[2][9]={{9.8423321e1, 6.9971500e2, -8.4765304e2, 1.0052644e3, -8.3345952e2,4.5508542e2, -1.5523037e2, 2.9886750e1, -2.4742860},{2.1315071e2, 2.8510504e2, -5.2742887e1, 9.9160804, -1.2965303,1.1195870/1e1, -6.0625199/1e3, 1.8661696/1e4, -2.4878585/1e6}};// K型电压转温度系数float code Var_VtoT_K[3][10]={{0, 2.5173462e1, -1.1662878, -1.0833638, -8.9773540/1e1, -3.7342377/1e1, -8.6632643/1e2, -1.0450598/1e2, -5.1920577/1e4},{0, 2.508355e1, 7.860106/1e2, -2.503131/1e1, 8.315270/1e2,-1.228034/1e2, 9.804036/1e4, -4.413030/1e5, 1.057734/1e6, -1.052755/1e8}, {-1.318058e2, 4.830222e1, -1.646031, 5.464731/1e2, -9.650715/1e4,8.802193/1e6, -3.110810/1e8}};// N型电压转温度系数float code Var_VtoT_N[3][10]={{0, 3.8436847e1, 1.1010485, 5.2229312, 7.2060525, 5.8488586,2.7754916, 7.7075166/1e1, 1.1582665/1e1, 7.3138868/1e3},{0, 3.86896e1, -1.08267, 4.70205/1e2, -2.12169/1e6, -1.17272/1e4,5.39280/1e6, -7.98156/1e8},{1.972485e1, 3.300943e1, -3.915159/1e1, 9.855391/1e3,-1.274371/1e4, 7.767022/1e7}};// E型电压转温度系数float code Var_VtoT_E[2][10]={{0, 1.6977288e1, -4.3514970/1e1, -1.5859697/1e1, -9.2502871/1e2,-2.6084314/1e2, -4.1360199/1e3, -3.4034030/1e4, -1.1564890/1e5},{0, 1.7057035e1, -2.3301759/1e1, 6.5435585/1e3, -7.3562749/1e5,-1.7896001/1e6, 8.4036165/1e8, -1.3735879/1e9,1.0629823/1e11, -3.2447087/1e14}};// J型电压转温度系数float code Var_VtoT_J[3][9]={{0, 1.9528268e1, -1.2286185, -1.0752178, -5.9086933/1e1,-1.7256713/1e1, -2.8131513/1e2, -2.3963370/1e3, -8.3823321/1e5},{0, 1.978425e1, -2.001204/1e1, 1.036969/1e2, -2.549687/1e4,3.585153/1e6, -5.344285/1e8, 5.099890/1e10},{-3.1135819e3, 3.0054368e2, -9.9477323, 1.7027663/1e1,-1.4303347/1e3, 4.7388608/1e6}};// T型电压转温度系数float code Var_VtoT_T[2][8]={{0, 2.5949192e1, -2.1316967/1e1, 7.9018692/1e1, 4.2527777/1e1,1.3304473/1e1,2.0241446/1e2, 1.2668171/1e3},{0, 2.592800e1, -7.602961/1e1, 4.637791/1e2, -2.165394/1e3,6.048144/1e5, -7.293422/1e7}};/****************************************************************************** *函数描述:S型温度转电压(冷端温度为0)温度范围:-50C° ~ +1760C°毫伏范围:-0.2355 ~ +18.6092*输入变量:T 温度*返回变量:value 毫伏******************************************************************************/float S_TtoV(float T){uchar i = 0;float value = 0;if((T < -50) || (T > 1760.0)){return ERROR;}else if((T >= -50) && (T < 1064.18)){value = Var_TtoV_S[0][8];for(i = 8; i > 0; i--)value = T * value + Var_TtoV_S[0][i-1];}else if(T >= 1064.18 && T < 1664.5){value = Var_TtoV_S[1][4];for(i = 4;i > 0;i--)value = T * value + Var_TtoV_S[1][i-1];}else // if(T >= 1664.5 && T <= 1768.1){value = Var_TtoV_S[2][4];for(i=4; i > 0; i--)value=T * value + Var_TtoV_S[2][i-1];}return value;}/****************************************************************************** *函数描述:R型温度转电压(冷端温度为0)温度范围:-50C° ~ +1760C°毫伏范围:-0.2264 ~ +21.0026*输入变量:T 温度*返回变量:value 毫伏******************************************************************************/ float R_TtoV(float T){uchar i = 0;float value = 0;if((T < -50) || (T > 1760.0)){return ERROR;}else if(T >= -50 && T < 1064.18){value = Var_TtoV_R[0][9];for(i = 9; i > 0; i--)value = T * value + Var_TtoV_R[0][i-1];}else if(T >= 1064.18 && T < 1664.5){value = Var_TtoV_R[1][5];for(i = 5; i > 0; i--)value = T * value + Var_TtoV_R[1][i-1];}else //if(T >= 1664.5 && T <= 1768.1){value = Var_TtoV_R[2][4];for(i = 4; i > 0; i--)value = T * value + Var_TtoV_R[2][i-1];}return value;}/****************************************************************************** *函数描述:B型温度转电压(冷端温度为0)温度范围:+100C° ~ +1820C°毫伏范围:-0.0332 ~ +13.8202*输入变量:T 温度*返回变量:value 毫伏******************************************************************************/ float B_TtoV(float T){uchar i = 0;float value = 0;if((T < 0) || (T > 1820.0)){return ERROR;else if(T < 100){value = 0;}else if(T >= 100 && T < 630.615){value = Var_TtoV_B[0][6];for(i = 6; i > 0; i--)value = T * value + Var_TtoV_B[0][i-1];}else // ifif(T >= 630.615 && T <= 1820){value = Var_TtoV_B[1][8];for(i = 8; i > 0; i--)value = T * value + Var_TtoV_B[1][i-1];}return value;}/****************************************************************************** *函数描述:K型温度转电压(冷端温度为0)温度范围:-270C° ~ +1370C°毫伏范围:-6.4577 ~ +54.8185*输入变量:T 温度*返回变量:value 毫伏******************************************************************************/ float K_TtoV(float T){uchar i = 0;float value = 0;if((T < -270) || (T > 1370.0)){return ERROR;}else if(T < 0){value = Var_TtoV_K[0][10];for(i = 10; i > 0; i--)value = T * value + Var_TtoV_K[0][i-1];value += Var_TtoV_K[2][0] * exp(Var_TtoV_K[2][1]*(T - 126.9686)*(T - 126.9686)); }else // if(T >= 0 && T <= 1372){value = Var_TtoV_K[1][9];for(i = 9; i > 0; i--)value = T * value + Var_TtoV_K[1][i-1];value += Var_TtoV_K[2][0] * exp(Var_TtoV_K[2][1]*(T-126.9686)*(T-126.9686)); }return value;}/*******************************************************************************函数描述:N型温度转电压(冷端温度为0)温度范围:-270C° ~ +1300C°毫伏范围:-4.3451 ~ +47.5125*输入变量:T 温度*返回变量:value 毫伏******************************************************************************/ float N_TtoV(float T){uchar i = 0;float value = 0;if((T < -270) || (T > 1300.0)){return ERROR;}else if(T < 0){value = Var_TtoV_N[0][8];for(i = 8; i > 0; i--)value = T * value + Var_TtoV_N[0][i-1];}else{value = Var_TtoV_N[1][10];for(i = 10; i > 0; i--)value = T * value + Var_TtoV_N[1][i-1];return value;}/****************************************************************************** *函数描述:E型温度转电压(冷端温度为0)温度范围:-270C° ~ +1000C°毫伏范围:-9.8294 ~ +76.3279*输入变量:T 温度*返回变量:value 毫伏******************************************************************************/ float E_TtoV(float T){uchar i = 0;float value = 0;if((T < -270) || (T > 1000.0)){return ERROR;}else if(T < 0){value = Var_TtoV_E[0][13];for(i = 13; i > 0; i--)value = T * value + Var_TtoV_E[0][i-1];}else{value = Var_TtoV_E[1][10];for(i = 10; i > 0; i--)value = T * value + Var_TtoV_E[1][i-1];}return value;}/****************************************************************************** *函数描述:J型温度转电压(冷端温度为0)温度范围:-210C° ~ +1200C°毫伏范围:-8.0953 ~ +69.5531*输入变量:T 温度*返回变量:value 毫伏******************************************************************************/float J_TtoV(float T){uchar i = 0;float value = 0;if((T < -210) || (T > 1200.0)){return ERROR;}else if(T >= -210 && T < 760){value = Var_TtoV_J[0][8];for(i = 8; i > 0; i--)value = T * value + Var_TtoV_J[0][i-1];}else{value = Var_TtoV_J[1][5];for(i = 5; i > 0; i--)value = T * value + Var_TtoV_J[1][i-1];}return value;}/****************************************************************************** *函数描述:T型温度转电压(冷端温度为0)温度范围:-270C° ~ +400C°毫伏范围:-6.2748 ~ +20.8719*输入变量:T 温度*返回变量:value 毫伏******************************************************************************/ float T_TtoV(float T){uchar i = 0;float value = 0;if((T < -270) || (T > 400.0)){return ERROR;}else if(T < 0){for(i = 14; i > 0; i--)value = T * value + Var_TtoV_T[0][i-1];}else{value = Var_TtoV_T[1][8];for(i = 8; i > 0;i--)value = T * value + Var_TtoV_T[1][i-1];}return value;}/****************************************************************************** *函数描述:S型电压转温度(冷端温度为0)毫伏范围:-0.236 ~ +18.609温度范围:-50.091C° ~ +1759.965C°*输入变量:mV 毫伏*返回变量:value 温度******************************************************************************/ float S_VtoT(float mV){uchar i = 0;float value = 0;if(mV >= -0.245 && mV < 1.874){value = Var_VtoT_S[0][9];for(i = 9; i > 0; i--)value = mV * value + Var_VtoT_S[0][i-1];}else if(mV >= 1.874 && mV < 11.950){value = Var_VtoT_S[1][9];for(i = 9; i > 0; i--)value = mV * value + Var_VtoT_S[1][i-1];}else if(mV >= 11.950 && mV < 17.536){for(i = 5; i > 0; i--)value = mV * value + Var_VtoT_S[2][i-1];}else{value = Var_VtoT_S[3][4];for(i = 4; i > 0; i--)value = mV * value + Var_VtoT_S[3][i-1];}return value;}/****************************************************************************** *函数描述:R型电压转温度(冷端温度为0)毫伏范围:-0.226 ~ +21.003温度范围:-49.856C° ~ +1760.035C°*输入变量:mV 毫伏*返回变量:value 温度******************************************************************************/ float R_VtoT(float mV){uchar i = 0;float value = 0;if(mV >= -0.240 && mV < 1.923){value = Var_VtoT_R[0][10];for(i = 10; i > 0; i--)value = mV * value + Var_VtoT_R[0][i-1];}else if(mV >= 1.923 && mV < 13.228){value = Var_VtoT_R[1][9];for(i = 9; i > 0;i--)value = mV * value + Var_VtoT_R[1][i-1];}else if(mV >= 11.361 && mV < 19.739){value = Var_VtoT_R[2][5];for(i = 5; i > 0; i--)value = mV * value + Var_VtoT_R[2][i-1];}else{value = Var_VtoT_R[3][4];for(i = 4; i > 0; i--)value = mV * value + Var_VtoT_R[3][i-1];}return value;}/****************************************************************************** *函数描述:B型电压转温度(冷端温度为0)毫伏范围:+0.178 ~ +13.820温度范围:+201.024C° ~ +1819.963C°*输入变量:mV 毫伏*返回变量:value 温度******************************************************************************/ float B_VtoT(float mV){uchar i = 0;float value = 0;if(mV >= 0.033 && mV < 1.978){value = Var_VtoT_B[0][8];for(i = 8; i > 0; i--)value = mV * value + Var_VtoT_B[0][i-1];}else{value = Var_VtoT_B[1][8];for(i = 8; i > 0; i--)value = mV * value + Var_VtoT_B[1][i-1];}return value;}/****************************************************************************** *函数描述:K型电压转温度(冷端温度为0)毫伏范围:-5.891 ~ +54.819温度范围:-199.933C° ~ +1370.057C°*输入变量:mV 毫伏*返回变量:value 温度******************************************************************************/ float K_VtoT(float mV){uchar i = 0;float value = 0;if(mV >= -6.478 && mV < 0){value = Var_VtoT_K[0][8];for(i = 8; i >0; i--)value = mV * value + Var_VtoT_K[0][i-1];}else if(mV >= 0 && mV < 20.644){value = Var_VtoT_K[1][9];for(i = 9; i >0; i--)value = mV * value + Var_VtoT_K[1][i-1];}else if(mV >= 20.644 && mV <= 54.900){value = Var_VtoT_K[2][6];for(i = 6; i >0; i--)value = mV * value + Var_VtoT_K[2][i-1];}return value;}/****************************************************************************** *函数描述:N型电压转温度(冷端温度为0)毫伏范围:-3.990 ~ +47.513温度范围:-199.935C° ~ +1299.968C°*输入变量:mV 毫伏*返回变量:value 温度******************************************************************************/ float N_VtoT(float mV){uchar i = 0;float value = 0;if(mV >= -4.365 && mV<0){value = Var_VtoT_N[0][9];for(i = 9; i >0; i--)value = mV * value + Var_VtoT_N[0][i-1];}else if(mV >= 0 && mV < 20.613){value = Var_VtoT_N[1][7];for(i = 7; i >0; i--)value = mV * value + Var_VtoT_N[1][i-1];}else if(mV>=20.613 && mV<=47.533){value = Var_VtoT_N[2][5];for(i = 5; i > 0; i--)value = mV * value + Var_VtoT_N[2][i-1];}return value;}/****************************************************************************** *函数描述:E型电压转温度(冷端温度为0)毫伏范围:-8.825 ~ +76.373温度范围:-199.994C° ~ +1000.021C°*输入变量:mV 毫伏*返回变量:value 温度******************************************************************************/ float E_VtoT(float mV){uchar i = 0;float value = 0;if(mV >= -9.845 && mV < 0){value = Var_VtoT_E[0][8];for(i = 8; i > 0; i--)value = mV * value + Var_VtoT_E[0][i-1];else if(mV>=0 && mV<=76.393){value = Var_VtoT_E[1][9];for(i = 9; i > 0; i--)value = mV * value + Var_VtoT_E[1][i-1];}return value;}/****************************************************************************** *函数描述:J型电压转温度(冷端温度为0)毫伏范围:-8.095 ~ +69.553温度范围:-209.954C° ~ +1199.96C°*输入变量:mV 毫伏*返回变量:value 温度******************************************************************************/ float J_VtoT(float mV){uchar i = 0;float value = 0;if(mV>=-8.105 && mV<0){value = Var_VtoT_J[0][8];for(i = 8; i > 0; i--)value = mV * value + Var_VtoT_J[0][i-1];}else if(mV >= 0 && mV < 42.919){value = Var_VtoT_J[1][7];for(i = 7; i > 0; i--)value = mV * value + Var_VtoT_J[1][i-1];}else if(mV>=42.919 && mV<=69.563){value = Var_VtoT_J[2][5];for(i = 5; i > 0; i--)value = mV * value + Var_VtoT_J[2][i-1];}return value;}/****************************************************************************** *函数描述:T型电压转温度(冷端温度为0)毫伏范围:-5.603 ~ +20.872温度范围:-199.964C° ~ +399.975C°*输入变量:mV 毫伏*返回变量:value 温度******************************************************************************/ float T_VtoT(float mV){uchar i = 0;float value = 0;if(mV >= -6.268 && mV < 0){value = Var_VtoT_T[0][7];for(i = 7; i >0; i--)value = mV * value + Var_VtoT_T[0][i-1];}else if(mV >= 0 && mV <= 20.882){value = Var_VtoT_T[1][6];for(i = 6; i >0; i--)value = mV * value + Var_VtoT_T[1][i-1];}return value;}/****************************************************************************** *函数描述:主函数******************************************************************************/ int main(){//tmp = J_TtoV(700.5);//tmp = K_TtoV(500.5);tmp = E_VtoT(40.23);while(1);}。
stm32单片机利用ntc热敏电阻温度转换公式C语言版
stm32单⽚机利⽤ntc热敏电阻温度转换公式C语⾔版⾸先我们需要明确电路结构热敏电阻的原理就不再赘述,本⽂不凑字数,只讲⼲货必须要知道的就是串联电阻R9程序中定义为resistanceInSeries ,精度越⾼越好为了⽅便,先在程序中定义好你的热敏类型和相关参数float resistanceInSeries = 10000.0; //ntc的串联电阻float ntcBvalue = 3950.0; //B值float ntcR25 = 100000.0; //25度时电阻float KelvinsZero = 273.15; //绝对零度uint16_t systemPowerVoltage = 3300;uint16_t adcValue;float resolution = 0.805664;float T25 = 298.15; //25 =KelvinsZero+25具体计算办法先通过NTC的电压推算出串联电阻的分压然后再计算出线路电流再计通过欧姆定律从计算出热敏电阻当前的阻值最后计算出温度这些计算,需要引⼊math.h务必注意uint16_t ntcVoltage = adcValue * resolution;float ntcCurrent = (sysPowerVoltage- ntcVoltage)/ resistanceInSeries; //计算NTC的电流(A)float ntcResistance = ntcVoltage / ntcCurrent; //计算当前电阻值float temperature = (ntcBvalue * T25)/ (T25 * (log(ntcResistance) - log(ntcR25)) + ntcBvalue);temperature -= KelvinsZero; //计算最终温度这个计算办法,消耗内存少,消耗FLASH也少,即使⼩容量单⽚机也可以⽤先来看⼀下屏蔽这段代码后的程序占⽤容量在看⼀下执⾏这段代码后的程序占⽤消耗了⼤概120多个字节的RAM和,flash占⽤10kb左右。
基于热电偶的温度测试仪设计
基于热电偶的温度测试仪设计摘要:基于热电偶的温度测试仪,该仪器是以AT89C51单片机为核心,由AD590,由热电偶测量热端温度T,该热电偶采用K型热集成温度传感器测量冷端温度T电偶(镍铬-镍硅热电偶)。
它们分别经过I/V转换和线性放大,分时进行A/D转换,转换后的数字信号送入AT89C51单片机,经单片机运算处理,转换成ROM地址,再通过二次查表法计算出实际温度值,此值送4位共阴极LED数码管显示。
该热电偶测温仪的软件用C语言编写,采用模块化结构设计。
关键词:热电偶,冷端温度补偿,89C51单片机,ADC0809,线性化标度变换Abstract:Thermocouple-based temperature testing instrument, the instrument is based on AT89C51 microcontroller as the core, from AD590 integrated temperature sensor measures the cold junction temperature T0, measured by the thermocouple hot-side temperature T, the use of K-Thermocouple Thermocouple ( Ni-Cr - Ni-Si thermocouple). They are through the I / V conversion and linear amplification, time for A / D conversion, the converted digital signal into the AT89C51 microcontroller, microcontroller operation after processing into ROM address, and then through the second look-up table method to calculate the actual temperature value, this value is sent to four common cathode LED digital tube display. The thermocouple thermometer software with C language, using a modular structure design.Keywords:Thermocouple, cold junction temperature compensation, 89C51 microcontroller, ADC0809, linear scale transformation目录1 前言 (1)2 整体方案设计 (2)2.1方案论证 (2)2.2方案比较 (3)3 单元模块设计 (4)3.1冷端采集和补偿电路模块 (4)3.1.1 AD590介绍 (4)3.1.2冷端采集和补偿电路分析 (6)3.2热端放大电路模块 (6)3.3A/D转换器ADC0809 (7)3.4单片机模块 (8)3.5LED显示模块 (11)4 软件设计 (13)4.1主程序 (13)4.2A/D转换子程序 (13)4.3线性化标度变换子程序 (15)5 系统调试 (18)5.1调试软件介绍 (18)5.1.1 ISIS简介 (18)5.1.2 Keil C51简介 (18)5.2硬件调试 (18)5.3软件调试 (19)5.4硬件软件联调 (20)6系统技术指标及精度和误差分析 (21)7设计小结 (22)8总结与体会 (23)9参考文献 (24)附录1:电路总图 (25)附录2:软件代码 (26)1 前言温度是表征物体冷热程度的物理量,温度传感器是通过物体随温度变化而改变某种特性来间接测量的。
matlab热电偶换算程序
将热电偶电势转换为温度的程序称为热电偶换算程序。
下面是一个MATLAB 热电偶换算程序的示例,它使用类型K 热电偶的电势与温度转换方程:```matlabfunction T = tc2temp(tc)# 将类型K 热电偶的电势转换为温度# 热电偶的电势系数a = [0.000000000000E+00, 2.5173462E+01, -1.1662878E+00, -1.0833638E+00,-8.9773540E-01, -3.7342377E-01, -8.6632643E-02, -1.0450598E-02,-5.1920577E-04, 0.0000000E+00];# 温度的区间范围Tmin = -270.0;Tmax = 1372.0;# 如果电势超出了热电偶的温度范围,则返回NaN。
if tc < -6.4 || tc > 54.9T = NaN;returnend# 根据热电偶电势计算温度t = tc - 0.0180*tc*tc + a(2)*exp(a(3)*(tc - a(4))*(tc - a(4))) + ...a(5)*exp(a(6)*(tc - a(7))*(tc - a(7))) + a(8)*exp(a(9)*(tc - a(10))*(tc - a(10)));# 如果计算出的温度超出了热电偶的温度范围,则返回NaN。
if t < Tmin || t > TmaxT = NaN;returnendT = t;end```这个程序的输入参数是热电偶的电势`tc`,输出是对应的温度值`T`,单位是摄氏度。
该程序使用了K 型热电偶的电势与温度转换方程。
在程序中,线性系数和指数项是预先计算好的,可以直接使用。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
#include<string.h>#include <math.h>#define ERROR -100#define uchar unsigned charfloat tmp = 0;// S型温度转电压系数float code Var_TtoV_S[3][9]={{0, 5.40313309/1e3, 1.25934290/1e5, -2.32477969/1e8, 3.22028823/1e11,-3.31465196/1e14, 2.55744252/1e17, -1.25068871/1e20, 2.71443176/1e24},{1.32900444, 3.34509311/1e3, 6.54805193/1e6, -1.64856259/1e9,1.29989605/1e14, 0, 0, 0, 0},{1.46628233e2, -2.58430517/1e1, 1.63693575/1e4, -3.30439047/1e8,-9.43223691/1e15, 0, 0, 0, 0}};// R型温度转电压系数float code Var_TtoV_R[3][10]={{0, 5.28961730/1e3, 1.39166590/1e5, -2.38855693/1e8, 3.56916001/1e11,-4.62347666/1e14, 5.00777441/1e17, -3.73105886/1e20, 1.57716482/1e23,-2.81038625/1e27},{2.95157925, -2.52061251/1e3, 1.59564502/1e5, -7.64085948/1e9,2.05305291/1e12, -2.93359668/1e16},{1.52232118e2, -2.68819889/1e1, 1.71280280/1e4, -3.45895706/1e8,-9.34633971/1e15}};// B型温度转电压系数float code Var_TtoV_B[2][9]={{0, -2.46508183/1e4, 5.90404212/1e6, -1.32579316/1e9, 1.56682919/1e12,-1.69445292/1e15,6.29903471/1e19},{-3.89381686, 2.85717475/1e2, -8.48851048/1e5, 1.57852802/1e7,-1.68353449/1e10, 1.11097940/1e13, -4.45154310/1e17, 9.89756408/1e21,-9.37913303/1e25}};// K型温度转电压系数float code Var_TtoV_K[3][11]={{0, 3.9450128025/1e2, 2.3622373598/1e5, -3.2858906784/1e7, -4.9904828777/1e9, -6.7509059173/1e11, -5.7410327428/1e13, -3.1088872894/1e15,-1.0451609365/1e17, -1.9889266878/1e20, -1.6322697486/1e23},{-1.7600413686/1e2, 3.8921204975/1e2, 1.8558770032/1e5, -9.9457592874/1e8,3.1840945719/1e10, -5.6072844889/1e13, 5.6075059059/1e16,-3.2020720003/1e19, 9.7151147152/1e23, -1.2104721275/1e26},{1.185976/1e1,-1.183432/1e4}};// N型温度转电压系数float code Var_TtoV_N[2][11]={{0, 2.61591060/1e2, 1.09574842/1e5, -9.38411116/1e8, -4.64120398/1e11,-2.63033577/1e12, -2.26534380/1e14, -7.60893008/1e17, -9.34196678/1e20},{0, 2.59293946/1e2, 1.57101419/1e5, 4.38256272/1e8, -2.52611698/1e10,6.43118193/1e13, -1.00634715/1e15, 9.97453390/1e19,-6.08632456/1e22,2.08492293/1e25, -3.06821962/1e29}};// E型温度转电压系数float code Var_TtoV_E[2][14]={{0, 5.8665508708/1e2, 4.5410977124/1e5, -7.7998048686/1e7,-2.5800160843/1e8, -5.9452583057/1e10, -9.3214058667/1e12,-1.028*******/1e13, -8.0370123621/1e16, -4.3979497391/1e18,-1.6414776355/1e20, -3.9673619516/1e23, -5.5827328721/1e26,-3.4657842013/1e29},{0, 5.8665508710/1e2, 4.5032275582/1e5, 2.8908407212/1e8,-3.3056896652/1e10, 6.50244033/1e13, -1.9197495594/1e16, -1.2536600497/1e18, 2.1489217569/1e21,-1.4388041782/1e24,3.5960899481/1e28}};// J型温度转电压系数float code Var_TtoV_J[2][9]={{0, 5.03811878/1e2, 3.04758370/1e5, -8.56810657/1e8, 1.32281953/1e10,-1.70529583/1e13, 2.09480907/1e16, -1.25383953/1e19, 1.56317256/1e23},{2.96456257e2, -1.49761278, 3.17871039/1e3, -3.18476867/1e6,1.57208190/1e9, -3.06913691/1e13}};// T型温度转电压系数float code Var_TtoV_T[2][15]={{0, 3.8748106364/1e2, 4.4194434347/1e5, 1.1844323105/1e7,2.0032973554/1e8, 9.0138019559/1e10, 2.2651156593/1e11,3.6071154205/1e13, 3.8493939883/1e15, 2.8213521925/1e17,1.4251594779/1e19, 4.8768662286/1e22, 1.0795539270/1e24,1.3945027062/1e27, 7.9795153927/1e31},{0, 3.8748106364/1e2, 3.3292227880/1e5, 2.0618243404/1e7,-2.1882256846/1e9,1.0996880928/1e11,-3.0815758772/1e14,4.5479135290/1e17, -2.7512901673/1e20}};//-----------------------------------// S型电压转温度系数float code Var_VtoT_S[4][10]={{0, 1.8494946e2, -8.0050406e1, 1.0223743e2, -1.5224859e2, 1.8882134e2,-1.5908594e2, 8.2302788e1, -2.3418194e1, 2.7978626},{1.2915072e1, 1.4662989e2, -1.5347134e1, 3.1459460, -4.1632578/1e1,3.1879638/1e2, -1.2916375/1e3, 2.1834751/1e5, -1.4473795/1e7,8.2112721/1e9},{-8.0878011e1, 1.6215731e2, -8.5368695, 4.7196870/1e1, -1.4416937/1e2,2.0816189/1e4},{5.3338751e4, -1.2358923e4, 1.0926576e3, -4.2656937e1, 6.2472054/1e1}};// R型电压转温度系数float code Var_VtoT_R[4][11]={{0, 1.8891380e2, -9.3835290e1, 1.3068619e2, -2.2703580e2, 3.5145659e2,-3.8953900e2, 2.8239471e2, -1.2607281e2, 3.1353611e1, -3.3187769},{1.3345845e1, 1.4726446e2, -1.8440248e1, 4.0311297, -6.2494284/1e1,6.4684120/1e2, -4.4587504/1e3, 1.9947101/1e4, -5.3134018/1e6,6.4819762/1e8},{-8.1995994e1, 1.5539620e2, -8.3421977, 4.2794335/1e1,-1.1915780/1e2, 1.4922901/1e4},{3.4061778e4, -7.0237292e3, 5.5829038e2, -1.9523946e1, 2.5607402/1e1}};// B型电压转温度系数float code Var_VtoT_B[2][9]={{9.8423321e1, 6.9971500e2, -8.4765304e2, 1.0052644e3, -8.3345952e2,4.5508542e2, -1.5523037e2, 2.9886750e1, -2.4742860},{2.1315071e2, 2.8510504e2, -5.2742887e1, 9.9160804, -1.2965303,1.1195870/1e1, -6.0625199/1e3, 1.8661696/1e4, -2.4878585/1e6}};// K型电压转温度系数float code Var_VtoT_K[3][10]={{0, 2.5173462e1, -1.1662878, -1.0833638, -8.9773540/1e1, -3.7342377/1e1, -8.6632643/1e2, -1.0450598/1e2, -5.1920577/1e4},{0, 2.508355e1, 7.860106/1e2, -2.503131/1e1, 8.315270/1e2,-1.228034/1e2, 9.804036/1e4, -4.413030/1e5, 1.057734/1e6, -1.052755/1e8}, {-1.318058e2, 4.830222e1, -1.646031, 5.464731/1e2, -9.650715/1e4,8.802193/1e6, -3.110810/1e8}};// N型电压转温度系数float code Var_VtoT_N[3][10]={{0, 3.8436847e1, 1.1010485, 5.2229312, 7.2060525, 5.8488586,2.7754916, 7.7075166/1e1, 1.1582665/1e1, 7.3138868/1e3},{0, 3.86896e1, -1.08267, 4.70205/1e2, -2.12169/1e6, -1.17272/1e4,5.39280/1e6, -7.98156/1e8},{1.972485e1, 3.300943e1, -3.915159/1e1, 9.855391/1e3,-1.274371/1e4, 7.767022/1e7}};// E型电压转温度系数float code Var_VtoT_E[2][10]={{0, 1.6977288e1, -4.3514970/1e1, -1.5859697/1e1, -9.2502871/1e2,-2.6084314/1e2, -4.1360199/1e3, -3.4034030/1e4, -1.1564890/1e5},{0, 1.7057035e1, -2.3301759/1e1, 6.5435585/1e3, -7.3562749/1e5,-1.7896001/1e6, 8.4036165/1e8, -1.3735879/1e9,1.0629823/1e11, -3.2447087/1e14}};// J型电压转温度系数float code Var_VtoT_J[3][9]={{0, 1.9528268e1, -1.2286185, -1.0752178, -5.9086933/1e1,-1.7256713/1e1, -2.8131513/1e2, -2.3963370/1e3, -8.3823321/1e5},{0, 1.978425e1, -2.001204/1e1, 1.036969/1e2, -2.549687/1e4,3.585153/1e6, -5.344285/1e8, 5.099890/1e10},{-3.1135819e3, 3.0054368e2, -9.9477323, 1.7027663/1e1,-1.4303347/1e3, 4.7388608/1e6}};// T型电压转温度系数float code Var_VtoT_T[2][8]={{0, 2.5949192e1, -2.1316967/1e1, 7.9018692/1e1, 4.2527777/1e1,1.3304473/1e1,2.0241446/1e2, 1.2668171/1e3},{0, 2.592800e1, -7.602961/1e1, 4.637791/1e2, -2.165394/1e3,6.048144/1e5, -7.293422/1e7}};/****************************************************************************** *函数描述:S型温度转电压(冷端温度为0)温度范围:-50C° ~ +1760C°毫伏范围:-0.2355 ~ +18.6092*输入变量:T 温度*返回变量:value 毫伏******************************************************************************/float S_TtoV(float T){uchar i = 0;float value = 0;if((T < -50) || (T > 1760.0)){return ERROR;}else if((T >= -50) && (T < 1064.18)){value = Var_TtoV_S[0][8];for(i = 8; i > 0; i--)value = T * value + Var_TtoV_S[0][i-1];}else if(T >= 1064.18 && T < 1664.5){value = Var_TtoV_S[1][4];for(i = 4;i > 0;i--)value = T * value + Var_TtoV_S[1][i-1];}else // if(T >= 1664.5 && T <= 1768.1){value = Var_TtoV_S[2][4];for(i=4; i > 0; i--)value=T * value + Var_TtoV_S[2][i-1];}return value;}/****************************************************************************** *函数描述:R型温度转电压(冷端温度为0)温度范围:-50C° ~ +1760C°毫伏范围:-0.2264 ~ +21.0026*输入变量:T 温度*返回变量:value 毫伏******************************************************************************/ float R_TtoV(float T){uchar i = 0;float value = 0;if((T < -50) || (T > 1760.0)){return ERROR;}else if(T >= -50 && T < 1064.18){value = Var_TtoV_R[0][9];for(i = 9; i > 0; i--)value = T * value + Var_TtoV_R[0][i-1];}else if(T >= 1064.18 && T < 1664.5){value = Var_TtoV_R[1][5];for(i = 5; i > 0; i--)value = T * value + Var_TtoV_R[1][i-1];}else //if(T >= 1664.5 && T <= 1768.1){value = Var_TtoV_R[2][4];for(i = 4; i > 0; i--)value = T * value + Var_TtoV_R[2][i-1];}return value;}/****************************************************************************** *函数描述:B型温度转电压(冷端温度为0)温度范围:+100C° ~ +1820C°毫伏范围:-0.0332 ~ +13.8202*输入变量:T 温度*返回变量:value 毫伏******************************************************************************/ float B_TtoV(float T){uchar i = 0;float value = 0;if((T < 0) || (T > 1820.0)){return ERROR;else if(T < 100){value = 0;}else if(T >= 100 && T < 630.615){value = Var_TtoV_B[0][6];for(i = 6; i > 0; i--)value = T * value + Var_TtoV_B[0][i-1];}else // ifif(T >= 630.615 && T <= 1820){value = Var_TtoV_B[1][8];for(i = 8; i > 0; i--)value = T * value + Var_TtoV_B[1][i-1];}return value;}/****************************************************************************** *函数描述:K型温度转电压(冷端温度为0)温度范围:-270C° ~ +1370C°毫伏范围:-6.4577 ~ +54.8185*输入变量:T 温度*返回变量:value 毫伏******************************************************************************/ float K_TtoV(float T){uchar i = 0;float value = 0;if((T < -270) || (T > 1370.0)){return ERROR;}else if(T < 0){value = Var_TtoV_K[0][10];for(i = 10; i > 0; i--)value = T * value + Var_TtoV_K[0][i-1];value += Var_TtoV_K[2][0] * exp(Var_TtoV_K[2][1]*(T - 126.9686)*(T - 126.9686)); }else // if(T >= 0 && T <= 1372){value = Var_TtoV_K[1][9];for(i = 9; i > 0; i--)value = T * value + Var_TtoV_K[1][i-1];value += Var_TtoV_K[2][0] * exp(Var_TtoV_K[2][1]*(T-126.9686)*(T-126.9686)); }return value;}/*******************************************************************************函数描述:N型温度转电压(冷端温度为0)温度范围:-270C° ~ +1300C°毫伏范围:-4.3451 ~ +47.5125*输入变量:T 温度*返回变量:value 毫伏******************************************************************************/ float N_TtoV(float T){uchar i = 0;float value = 0;if((T < -270) || (T > 1300.0)){return ERROR;}else if(T < 0){value = Var_TtoV_N[0][8];for(i = 8; i > 0; i--)value = T * value + Var_TtoV_N[0][i-1];}else{value = Var_TtoV_N[1][10];for(i = 10; i > 0; i--)value = T * value + Var_TtoV_N[1][i-1];return value;}/****************************************************************************** *函数描述:E型温度转电压(冷端温度为0)温度范围:-270C° ~ +1000C°毫伏范围:-9.8294 ~ +76.3279*输入变量:T 温度*返回变量:value 毫伏******************************************************************************/ float E_TtoV(float T){uchar i = 0;float value = 0;if((T < -270) || (T > 1000.0)){return ERROR;}else if(T < 0){value = Var_TtoV_E[0][13];for(i = 13; i > 0; i--)value = T * value + Var_TtoV_E[0][i-1];}else{value = Var_TtoV_E[1][10];for(i = 10; i > 0; i--)value = T * value + Var_TtoV_E[1][i-1];}return value;}/****************************************************************************** *函数描述:J型温度转电压(冷端温度为0)温度范围:-210C° ~ +1200C°毫伏范围:-8.0953 ~ +69.5531*输入变量:T 温度*返回变量:value 毫伏******************************************************************************/float J_TtoV(float T){uchar i = 0;float value = 0;if((T < -210) || (T > 1200.0)){return ERROR;}else if(T >= -210 && T < 760){value = Var_TtoV_J[0][8];for(i = 8; i > 0; i--)value = T * value + Var_TtoV_J[0][i-1];}else{value = Var_TtoV_J[1][5];for(i = 5; i > 0; i--)value = T * value + Var_TtoV_J[1][i-1];}return value;}/****************************************************************************** *函数描述:T型温度转电压(冷端温度为0)温度范围:-270C° ~ +400C°毫伏范围:-6.2748 ~ +20.8719*输入变量:T 温度*返回变量:value 毫伏******************************************************************************/ float T_TtoV(float T){uchar i = 0;float value = 0;if((T < -270) || (T > 400.0)){return ERROR;}else if(T < 0){for(i = 14; i > 0; i--)value = T * value + Var_TtoV_T[0][i-1];}else{value = Var_TtoV_T[1][8];for(i = 8; i > 0;i--)value = T * value + Var_TtoV_T[1][i-1];}return value;}/****************************************************************************** *函数描述:S型电压转温度(冷端温度为0)毫伏范围:-0.236 ~ +18.609温度范围:-50.091C° ~ +1759.965C°*输入变量:mV 毫伏*返回变量:value 温度******************************************************************************/ float S_VtoT(float mV){uchar i = 0;float value = 0;if(mV >= -0.245 && mV < 1.874){value = Var_VtoT_S[0][9];for(i = 9; i > 0; i--)value = mV * value + Var_VtoT_S[0][i-1];}else if(mV >= 1.874 && mV < 11.950){value = Var_VtoT_S[1][9];for(i = 9; i > 0; i--)value = mV * value + Var_VtoT_S[1][i-1];}else if(mV >= 11.950 && mV < 17.536){for(i = 5; i > 0; i--)value = mV * value + Var_VtoT_S[2][i-1];}else{value = Var_VtoT_S[3][4];for(i = 4; i > 0; i--)value = mV * value + Var_VtoT_S[3][i-1];}return value;}/****************************************************************************** *函数描述:R型电压转温度(冷端温度为0)毫伏范围:-0.226 ~ +21.003温度范围:-49.856C° ~ +1760.035C°*输入变量:mV 毫伏*返回变量:value 温度******************************************************************************/ float R_VtoT(float mV){uchar i = 0;float value = 0;if(mV >= -0.240 && mV < 1.923){value = Var_VtoT_R[0][10];for(i = 10; i > 0; i--)value = mV * value + Var_VtoT_R[0][i-1];}else if(mV >= 1.923 && mV < 13.228){value = Var_VtoT_R[1][9];for(i = 9; i > 0;i--)value = mV * value + Var_VtoT_R[1][i-1];}else if(mV >= 11.361 && mV < 19.739){value = Var_VtoT_R[2][5];for(i = 5; i > 0; i--)value = mV * value + Var_VtoT_R[2][i-1];}else{value = Var_VtoT_R[3][4];for(i = 4; i > 0; i--)value = mV * value + Var_VtoT_R[3][i-1];}return value;}/****************************************************************************** *函数描述:B型电压转温度(冷端温度为0)毫伏范围:+0.178 ~ +13.820温度范围:+201.024C° ~ +1819.963C°*输入变量:mV 毫伏*返回变量:value 温度******************************************************************************/ float B_VtoT(float mV){uchar i = 0;float value = 0;if(mV >= 0.033 && mV < 1.978){value = Var_VtoT_B[0][8];for(i = 8; i > 0; i--)value = mV * value + Var_VtoT_B[0][i-1];}else{value = Var_VtoT_B[1][8];for(i = 8; i > 0; i--)value = mV * value + Var_VtoT_B[1][i-1];}return value;}/****************************************************************************** *函数描述:K型电压转温度(冷端温度为0)毫伏范围:-5.891 ~ +54.819温度范围:-199.933C° ~ +1370.057C°*输入变量:mV 毫伏*返回变量:value 温度******************************************************************************/ float K_VtoT(float mV){uchar i = 0;float value = 0;if(mV >= -6.478 && mV < 0){value = Var_VtoT_K[0][8];for(i = 8; i >0; i--)value = mV * value + Var_VtoT_K[0][i-1];}else if(mV >= 0 && mV < 20.644){value = Var_VtoT_K[1][9];for(i = 9; i >0; i--)value = mV * value + Var_VtoT_K[1][i-1];}else if(mV >= 20.644 && mV <= 54.900){value = Var_VtoT_K[2][6];for(i = 6; i >0; i--)value = mV * value + Var_VtoT_K[2][i-1];}return value;}/****************************************************************************** *函数描述:N型电压转温度(冷端温度为0)毫伏范围:-3.990 ~ +47.513温度范围:-199.935C° ~ +1299.968C°*输入变量:mV 毫伏*返回变量:value 温度******************************************************************************/ float N_VtoT(float mV){uchar i = 0;float value = 0;if(mV >= -4.365 && mV<0){value = Var_VtoT_N[0][9];for(i = 9; i >0; i--)value = mV * value + Var_VtoT_N[0][i-1];}else if(mV >= 0 && mV < 20.613){value = Var_VtoT_N[1][7];for(i = 7; i >0; i--)value = mV * value + Var_VtoT_N[1][i-1];}else if(mV>=20.613 && mV<=47.533){value = Var_VtoT_N[2][5];for(i = 5; i > 0; i--)value = mV * value + Var_VtoT_N[2][i-1];}return value;}/****************************************************************************** *函数描述:E型电压转温度(冷端温度为0)毫伏范围:-8.825 ~ +76.373温度范围:-199.994C° ~ +1000.021C°*输入变量:mV 毫伏*返回变量:value 温度******************************************************************************/ float E_VtoT(float mV){uchar i = 0;float value = 0;if(mV >= -9.845 && mV < 0){value = Var_VtoT_E[0][8];for(i = 8; i > 0; i--)value = mV * value + Var_VtoT_E[0][i-1];else if(mV>=0 && mV<=76.393){value = Var_VtoT_E[1][9];for(i = 9; i > 0; i--)value = mV * value + Var_VtoT_E[1][i-1];}return value;}/****************************************************************************** *函数描述:J型电压转温度(冷端温度为0)毫伏范围:-8.095 ~ +69.553温度范围:-209.954C° ~ +1199.96C°*输入变量:mV 毫伏*返回变量:value 温度******************************************************************************/ float J_VtoT(float mV){uchar i = 0;float value = 0;if(mV>=-8.105 && mV<0){value = Var_VtoT_J[0][8];for(i = 8; i > 0; i--)value = mV * value + Var_VtoT_J[0][i-1];}else if(mV >= 0 && mV < 42.919){value = Var_VtoT_J[1][7];for(i = 7; i > 0; i--)value = mV * value + Var_VtoT_J[1][i-1];}else if(mV>=42.919 && mV<=69.563){value = Var_VtoT_J[2][5];for(i = 5; i > 0; i--)value = mV * value + Var_VtoT_J[2][i-1];}return value;}/****************************************************************************** *函数描述:T型电压转温度(冷端温度为0)毫伏范围:-5.603 ~ +20.872温度范围:-199.964C° ~ +399.975C°*输入变量:mV 毫伏*返回变量:value 温度******************************************************************************/ float T_VtoT(float mV){uchar i = 0;float value = 0;if(mV >= -6.268 && mV < 0){value = Var_VtoT_T[0][7];for(i = 7; i >0; i--)value = mV * value + Var_VtoT_T[0][i-1];}else if(mV >= 0 && mV <= 20.882){value = Var_VtoT_T[1][6];for(i = 6; i >0; i--)value = mV * value + Var_VtoT_T[1][i-1];}return value;}/****************************************************************************** *函数描述:主函数******************************************************************************/ int main(){//tmp = J_TtoV(700.5);//tmp = K_TtoV(500.5);tmp = E_VtoT(40.23);while(1);}。