温度测量是铝水平温度测量过程的最后一个环节,在系统测量完铝水平后,开始进行温度测量,这一部分程序作为一个独立的程序段,
定时调用,主要包括MAX6675数据读取、开路判断、数据处理和码制转换等几个部分。程序流程如下:
 
  下面给出MAX6675温度值读取程序设计:
  ;温度值读取程序
  ;位定义
  CS BIT P1.0 ;数据输入
  SCK BIT P1.1 ;片选
  SO BIT P1.2 ;时钟
  ;数据字节定义
  DATAH DATA 40H ;读取数据高位
  DATAL DATA 41H ;读取数据低位
  TDATAH DATA 42H ;温度高位
  TDATAL DATA 43H ;温度低位
  CLR CS ;CS低电平,停止数据转换,输出数据D15
  CLR CLK ;时钟置为低电平
  MOV R7, #08H 
  RD_DATAH: ;读数据高位字节D15-D8
  MOV C,SO ;读SO端数据
  RLC A ;累加器左移一位
  SETB SCK
  NOP
  CLR SCK
  DJNZ R7,RD_DATA 
  MOV DATAH,A ;将数据高位移入缓冲区
  MOV R7,#08H
  RD_DATAL: ;读数据低位字节D7-D0
  MOV C,SO ;读SO端数据
  RLC A ;累加器左移一位
  SETB SCK
  NOP
  CLR SCK
  DJNZ R7,RD_DATAL
  MOV DATAL,A ;将数据低位移入缓冲区
  SETB CS ;CS高电平,停止数据输出,启动新的数据转换;数据转换子程序,将读得的16位数据转换为12位温度值,去掉无用
的位
  MOV A,DATAL 
  RLC A 
  MOV DATAL,A
  MOV A,DATAH
  RLC A ;整个数据位左移一位,去掉D15位
  SWAP A ;将DATAH中的高低4位数据互换
  MOV B,A ;数据暂存于B中
  ANL A,#0FH ;得到温度数据高位字节部分D14 ~D11
  MOV TDATAH,A ;将温度值高位字节保存
  MOV A,B
  ANL A,#0F0H ;得到温度数据低位字节部分D10 ~D7
  MOV B,A 
  MOV A,DATAL ;
  ANL A,#0FH ;得到温度数据低位字节部分D6 ~D3
  ORL A,B ;合并的温度低位字节
  MOV TDATAL,A ;将温度值低位字节保存 
  3 应用中注意的几个问题
  在铝水平温度测量仪的设计和调试过程中遇到诸多问题,现将与MAX6675相关的几个问题和使用心得摘录如下,以供参考。
  1)MAX6675芯片对电源噪声较为敏感,尽量将MAX6675布置在远离其他I/O芯片的地方。
  2)MAX6675芯片T-必须接地,并使接地点尽可能接近GND脚,否则读出数据为无规律的乱码。
  3)MAX6675是通过冷端补偿来校正周围温度变化的。该器件将周围温度通过内部的温度检测二极管转换为温度补偿电压,该器件内部电路
将二极管电压和热电偶电压送到ADC中转换,以计算热电偶的热端温度。当热电偶的冷端与芯片温度相等时,MAX6675可获得最佳的测量精度。
因此在实际测温应用时,应尽量避免在MAX6675附近放置发热器件或元件,例如7805等带散热片的稳压器件。
  4)尽量采用大截面积的热电偶导线,长距离传输时,可采用双绞线作为信号传输线。
  5)根据应用场合的不同,可通过相应的数字滤波器进行数据处理,以提高所需要某一段测量数据的准确性。
  4 结束语
   MAX6675将热电偶测温应用时复杂的线性化、冷端补偿及数字化输出等集中在一个芯片上解决,简化了铝水平温度测量仪中热电偶测温
电路的设计,实际运行结果表明,该测温系统抗干扰能力强、结构简单、可靠性高,测量精度满足要求。因此,在基于微处理器的单片机嵌入
式工业测温系统中,由MAX6675构成的单片热电偶测温解决方案,具有良好的实用价值