查看: 1471|回复: 0
打印 上一主题 下一主题

基于MSP430F149温度传感器18B20程序

[复制链接]
跳转到指定楼层
沙发
发表于 2015-10-6 00:38:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
基于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
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 加入因仑

本版积分规则

快速回复 返回顶部 返回列表