日志档案

发表于 2008-6-14 13:55:55

1

标签: 无标签

51读写max6675

#include "user.h"

//define pin
sbit CS = P3^4;
sbit SK = P3^6;
sbit DO = P3^7;

void CollStart(void);
void CollStop(void);
uint shout();
/********************************************************************************
* 函数功能:6675 init *
*                   *
*******************************************************************************/
void CollInit(void)
{
 CS = 1;       //初始化端口
 SK = 0;
 DO = 1;
 _nop_();_nop_();_nop_();
}
/********************************************************************************
* 函数功能:读取温度 *
*                   *
*******************************************************************************/

void Coll(void)
{
  uint  ReDat;
  CollStart();
  ReDat =shout();
  CurTemper =ReDat *0.25;//(1023.75 *ReDat)/4095;  // (0--1023.75)    //assum below 1000
  CurTemperBCD[3] =(unsigned int)CurTemper /100;  //取出BCD码
  CurTemperBCD[2] =((unsigned int)CurTemper -CurTemperBCD[3] *100)/10;
  CurTemperBCD[1] =(unsigned int)CurTemper - CurTemperBCD[3]*100 - CurTemperBCD[2]*10;
  CurTemperBCD[0] =(unsigned int)(CurTemper*10) -CurTemperBCD[3]*1000 - CurTemperBCD[2]*100 -CurTemperBCD[1]*10;
  CollStop();

}
void CollStart(void)
{
 CS = 0;       //采集开始
 SK = 0;
 DO = 1;
 _nop_();_nop_();_nop_();
}
void CollStop(void)
{
 CS = 1;       //采集结束
 SK = 0;
 DO = 1;
 _nop_();_nop_();_nop_();
}
//*********************************************************
uint shout(void)   
// 移出数据
{
 uchar i =0;
 uint out_data =0;
 SK = 1;      //read D15
 _nop_();_nop_();_nop_();
 SK = 0;
 _nop_();_nop_();_nop_();
 for(i = 0; i < 12; i++)    //read D14--D3
 {
  out_data <<=1;
  SK = 1;
  _nop_();_nop_();_nop_();
  if(DO ==1)
  {
    out_data |=0x001;
  }else
  {
    out_data &=0xffe;
  }
  SK = 0;
  _nop_();_nop_();_nop_();
 }
// for(i = 0; i < 3; i++)    //read D2--D0
 {
  SK = 1;
  _nop_();_nop_();_nop_();
  
  if(DO ==1)    //cut
  {
    out_data =0xfff;    //此时热电偶断开,数码管显示23.7
  }
  SK = 0;
  _nop_();_nop_();_nop_();
  SK = 1;
  _nop_();_nop_();_nop_();
  SK = 0;
  _nop_();_nop_();_nop_();

  SK = 1;
  _nop_();_nop_();_nop_();
  SK = 0;
  _nop_();_nop_();_nop_();

 }
 return(out_data);
}

系统分类: 单片机   |   用户分类: 源程序   |   来源: 整理   |   【推荐给朋友】   |   【添加到收藏夹】

    阅读(145)    回复(0)  

投一票您将和博主都有获奖机会!