k型热电偶 max6675 51单片机组成的测温电路程序
答案:3 悬赏:30 手机版
解决时间 2021-02-06 10:51
- 提问者网友:富士山上尢
- 2021-02-05 23:56
k型热电偶 max6675 51单片机组成的测温电路程序
最佳答案
- 五星知识达人网友:污到你湿
- 2021-02-06 00:24
亲测可用,误差1-2摄氏度
元件是k型热电偶,51单片机,4位共阳LED显示器
#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-26653
sbit SO=P1^0; //P1.0口与SO相连
sbit SCK=P1^1; //P1.1口与SCK相连
sbit CS=P1^2; //P1.2口与CS相连
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 tab_1[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
//共阳LED段码表
uchar code tab_2[10]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10};
//含小数点共阳段码
// "0" "1" "2" "3" "4" "5" "6" "7" "8" "9"
uchar code tab_3[4]={0x01,0x02,0x04,0x08}; //位码
uint Re_Convert() //热电偶数据读取,返回温度
{ uchar i;
unsigned long Temp_2;
Temp_2=0;
CS=1;
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_();
}
Temp_2=Temp_2<<1; //向左移一位,取0-14位
Temp_2=Temp_2>>4; //向右移4位,取3-14位
Temp_2=Temp_2*1024/4096;//变换为温度值
return(Temp_2);
}
void Disp_temp()//温度显示
{
uint temp=wendu;
temp=temp*10;
if(wendu<=800) //最高读取温度设定为800摄氏度
{
xiao=temp%10; //取小数位数字
temp=temp/10;
ge =temp%10;//取个位数字
temp=temp/10;
shi =temp%10;//取十位数字
bai =temp/10;//去百位数字
//动态扫描显示各位数字,P3.1-P3.4口输出位码
P3=0x00;
P0=tab_1[bai];
P3=tab_3[0];
for(j=300;j>0;j--);
P3=0x00;
P0=tab_1[shi];
P3=tab_3[1];
for(j=300;j>0;j--);
P3=0x00;
P0=tab_2[ge];
P3=tab_3[2];
for(j=300;j>0;j--);
P3=0x00;
P0=tab_1[xiao];
P3=tab_3[3];
for(j=300;j>0;j--);
}
}
void main()//主程序
{
for(j=300;j>0;j--);
while(1)
{
wendu=Re_Convert();// 热电偶数据读取,返回温度
Disp_temp(); //温度显示
}
}
元件是k型热电偶,51单片机,4位共阳LED显示器
#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-26653
sbit SO=P1^0; //P1.0口与SO相连
sbit SCK=P1^1; //P1.1口与SCK相连
sbit CS=P1^2; //P1.2口与CS相连
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 tab_1[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
//共阳LED段码表
uchar code tab_2[10]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10};
//含小数点共阳段码
// "0" "1" "2" "3" "4" "5" "6" "7" "8" "9"
uchar code tab_3[4]={0x01,0x02,0x04,0x08}; //位码
uint Re_Convert() //热电偶数据读取,返回温度
{ uchar i;
unsigned long Temp_2;
Temp_2=0;
CS=1;
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_();
}
Temp_2=Temp_2<<1; //向左移一位,取0-14位
Temp_2=Temp_2>>4; //向右移4位,取3-14位
Temp_2=Temp_2*1024/4096;//变换为温度值
return(Temp_2);
}
void Disp_temp()//温度显示
{
uint temp=wendu;
temp=temp*10;
if(wendu<=800) //最高读取温度设定为800摄氏度
{
xiao=temp%10; //取小数位数字
temp=temp/10;
ge =temp%10;//取个位数字
temp=temp/10;
shi =temp%10;//取十位数字
bai =temp/10;//去百位数字
//动态扫描显示各位数字,P3.1-P3.4口输出位码
P3=0x00;
P0=tab_1[bai];
P3=tab_3[0];
for(j=300;j>0;j--);
P3=0x00;
P0=tab_1[shi];
P3=tab_3[1];
for(j=300;j>0;j--);
P3=0x00;
P0=tab_2[ge];
P3=tab_3[2];
for(j=300;j>0;j--);
P3=0x00;
P0=tab_1[xiao];
P3=tab_3[3];
for(j=300;j>0;j--);
}
}
void main()//主程序
{
for(j=300;j>0;j--);
while(1)
{
wendu=Re_Convert();// 热电偶数据读取,返回温度
Disp_temp(); //温度显示
}
}
全部回答
- 1楼网友:刀戟声无边
- 2021-02-06 01:16
上个实物图
- 2楼网友:洒脱疯子
- 2021-02-06 01:10
MAX6675 是Maxim 公司推出的具有冷端补偿的单片K 型热电偶放大器与数字转换器。文中介绍器件的特点、工作原理及接口时序,并给出与单片机的接口电路及温度读取、转换程序。
热电偶作为一种主要的测温元件,具有结构简单、制造容易、使用方便、测温范围宽、测温精度高等特点。但是将热电偶应用在基于单片机的嵌入式系统领域时,却存在着以下几方面的问题。① 非线性: 热电偶输出热电势与温度之间的关系为非线性关系,因此在应用时必须进行线性化处理。②冷端补偿:热电偶输出的热电势为冷端保持为0℃时与测量端的电势差值,而在实际应用中冷端的温度是随着环境温度而变化的,故需进行冷端补偿。
③ 数字化输出 : 与嵌入式系统接口必然要采用数字化输出及数字化接口,而作为模拟小信号测温元件的热电偶显然无法直接满足这个要求。因此,若将热电偶应用于嵌入式系统时,须进行复杂的信号放大、A/D转换、查表线性化、温度补偿及数字化输出接口等软硬件设计。如果能将上述的功能集成到一个集成电路芯片中,即采用单芯片来完成信号放大、冷端补偿、线性化及数字化输出功能,则将大大简化热电偶在嵌入式领域的应用设计。Maxim公司新近推出的MAX6675即是一个集成了热电偶放大器、冷端补偿、A/D转换器及SPI 串口的热电偶放大器与数字转换器。
..
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯