max6675 c语言程序

HDL语言及源代码

6人已加入

描述

  max6675是一种汽车电子设备,可以将K型热电偶信号转换成数字信号。

  概述MAX6675冷端温度补偿、热电偶数字转换器可进行冷端温度补偿,并将K型热电偶信号转换成数字信号。数据输出为12位分辨率、SPI兼容、只读格式。转换器温度分辨率为0.25°C,可读取温度达+1024°C,热电偶在0°C至+700°C温度范围内精度为8 LSB。MAX6675采用小尺寸、8引脚SO封装。

  特性冷端温度补偿简单的SPI兼容串行接口12位、0.25°C分辨率热电偶开路检测

  应用电器设备汽车电子HVAC工业

  亲测可用,误差1-2摄氏度

  C语言程序

  元件是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(); //温度显示

  }

  }

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分