最常用的DS18B20测温程序

更新时间:2023-07-28 03:17:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

最常用的DS18B20测温程序

#include<reg51.H>

#include<absacc.H>

#include <intrins.h>

#include<stdio.h>

#define uchar unsigned char

#define uint unsigned int

uchar code TAB[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};

uchar code TAB1[]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10}; sbit DQ=P3^3;

void delay(uint i)

{

while(i--);

}

void DelayMS(uint ms)

{

uchar i;

while(ms--) for(i=0;i<120;i++);

}

void display(int k)//数码管显示

{

P2=0x08;

P0=TAB[k%10];

DelayMS(5);

P2=0x04;

P0=TAB[k/10%10];

DelayMS(5);

P2=0x02;

P0=TAB1[k/100%10];

DelayMS(5);

P2=0x01;

P0=TAB[k/1000];

DelayMS(5);

}

init_DS(void)

{

最常用的DS18B20测温程序

uchar x=0;

DQ=1;

delay(8);

DQ=0;

delay(85);

DQ=1;

delay(14);

x=DQ;

delay(20);

}

Read(void)

{

uchar i=0;

uchar dat=0;

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

{

//DQ=1;

//delay(1);

DQ=0;

dat>>=1;

DQ=1;

if(DQ)

dat|=0x80;//读出数据放入高位,最后右移到低位 delay(4);

}

return(dat);

}

write(uchar dat)

{

uchar i=0;

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

{

DQ=0;

DQ=dat&0x01;//从地位开始写入

delay(5);

DQ=1;

dat>>=1;

}

delay(4);

}

最常用的DS18B20测温程序

Readtem(void)

{ uchar a=0;

uchar b=0;

uchar t=0,t1;

init_DS();

write(0xcc);//跳过读序列号操作

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

delay(125);

init_DS();

write(0xcc);

write(0xbe);// 读温度寄存器

a=Read();//读取温度低位LSB

b=Read();//读取温度低位HSB

t1=(a&0x0f)*0.0625;//取小数部分

t=((b<<4)|(a>>4));//取整数部分

if(t>128)

{

t=~t+1;

}

t=t+t1;

return(t);

}

void main()

{

float tp;

while(1)

{

tp=Readtem();

tp=tp*100;//把二位数乘以100变成四位数 display(tp);

}

}

最常用的DS18B20测温程序

本文来源:https://www.bwwdw.com/article/r1im.html

Top