原创 51读写max6675

2008-6-14 13:55 3894 4 7 分类: MCU/ 嵌入式

#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);
}

PARTNER CONTENT

文章评论3条评论)

登录后参与讨论

用户956387 2010-3-19 17:25

我看看,正想用这个芯片

用户511488 2009-6-13 19:08

这个程序是测试通过的。接收不到正确数据,应该是时序的问题,请用示波器查看一下。确认一下有没有杂波.

用户1359915 2009-2-4 18:14

请问该程序通过测试吗? 为什么我的总是显示0,复位后才会变成正常值? 请大侠不吝赐教!!!
相关推荐阅读
用户511488 2008-06-14 13:57
51读写ds1302
/************************************************************************************//*     程序名:实时时...
用户511488 2007-08-03 14:41
从51初学者到电子工程师
       很多电子工程师在某个方面精深钻研,成为某一个特殊领域的专家,从一开始的养家糊口、慢慢小有收益、最后宝马豪宅,也是有的;这些电子工程师可能没有全面掌握这些知识,因为这些行业用不上,例如,液...
用户511488 2007-06-23 20:45
本站推出高性价比51开发板
        该单片机开发实验板基于Atmel的S系列单片机,兼容8515AVR单片机,使用ISP下载,下载盒小巧美观,可随身携带,使用精简的6线下载方式,也方便以后其他单片机板的布线,板上资源丰富...
用户511488 2007-06-23 20:29
24c01-24c16读写驱动程序
//24c01-24c16读写驱动程序,sbit a0=ACC^0;   //定义ACC的位,利用ACC操作速度最快sbit a1=ACC^1;sbit a2=ACC^2;sbit a3=ACC^3;...
用户511488 2007-06-23 20:27
ACM-12864汉字液晶显示驱动程序
//HT1380实时时钟驱动程序sbit clock_dat=P0^1;sbit clock_clk=P0^2;sbit clock_rst=P0^3;sbit a0=ACC^0;sbit a1=AC...
我要评论
3
4
关闭 站长推荐上一条 /1 下一条