中科因仑“3+1”工程特种兵精英论坛

标题: 基于MSP430F149温度传感器18B20程序 [打印本页]

作者: XJzy    时间: 2015-10-6 00:38
标题: 基于MSP430F149温度传感器18B20程序
基于MSP430F149温度传感器18B20程序
#ifndef __DS18B20_H__

#define __DS18B20_H__

#include "msp430x14x.h"

#include "delay.h"

#define uchar unsigned char

#define uint unsigned int

#define  DQ_OUT P1DIR|=BIT6

#define  DQ_IN P1DIR&=~BIT6

#define  DQ_H P1OUT|=BIT6

#define  DQ_L P1OUT&=~BIT6

//20us延时程序

void delayus(unsigned int z)

{

     unsigned int i,j;

     for(i = 0;i<20;i++)

       for(j=0;j<z;j++)

       {;;};

}
//初始化函数

void init_ds18b20()

{

           DQ_OUT;

           _NOP();

   DQ_H;    //DQ复位

  delayus(2);  //稍做延时40us

   DQ_L;    //将DQ拉低

  delayus(25); //精确延时 大于 500us

   DQ_H;    //拉高总线

  delayus(3);//延时60us

          DQ_IN;

          _NOP();

         // if(P1IN&BIT6)

          //  error=1;

         // else error=0;

          DQ_OUT;

   DQ_H;      //稍做延时后 如果x=0则初始化成功 x=1则初始化失败

  delayus(10);//延时200us

}

//读一个字节

uchar readonechar(void)

{

uchar i=0;

uchar dat=0;

    DQ_OUT;      
for(i=8;i>0;i--)

   {

    DQ_L; // 给脉冲信号

   dat>>=1;

           _NOP();

    DQ_H; // 给脉冲信号

          _NOP();

           DQ_IN;

    if(P1IN&BIT6)

     dat|=0x80;

    delayus(2);

           DQ_OUT;

           DQ_H;

           delayus(1);

   }

   return(dat);

}

//写一个字节

void writeonechar(uchar dat)

{

    uchar i=0;

     DQ_OUT;

    for (i=8; i>0; i--)

    {

       DQ_L;

       if(dat&0x01)

         DQ_H;

       else
         DQ_L;

       delayus(2);

       DQ_H;

       dat>>=1;

    }

}

//读取温度

uint readtemperature(void)

{

uchar a=0;

uchar b=0;

uint t=0;

float tt=0;

         

init_ds18b20();

writeonechar(0xCC); // 跳过读序号列号的操作

writeonechar(0x44); // 启动温度转换

init_ds18b20();

writeonechar(0xCC); //跳过读序号列号的操作

writeonechar(0xBE); //读取温度寄存器等(共可读9个寄存器) 前两个就是温度

a=readonechar();//低四位

b=readonechar();//高四位

t=b;

t<<=8;

t=t|a;

tt=t*0.0625; //精确到0.0625

t= tt*100; //放大100倍输出

    return(t);

}

#endif





欢迎光临 中科因仑“3+1”工程特种兵精英论坛 (http://bbs.enlern.com/) Powered by Discuz! X3.4