基于AT89C2051+ds18b20的温度计程序设计

来源:本站
导读:目前正在解读《基于AT89C2051+ds18b20的温度计程序设计》的相关信息,《基于AT89C2051+ds18b20的温度计程序设计》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《基于AT89C2051+ds18b20的温度计程序设计》的详细说明。
简介:本文给大家分享了一个基于AT89C2051+ds18b20的温度计程序设计。

#include

#include

#define uchar unsigned char

#define uint unsigned int

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

uint tempe;

sbit DQ=P3^5;

sbit p=P3^1;

sbit q=P3^2;

sbit r=P3^3;

sbit s=P3^4;

void delay1(uint z) //延时函数

{

uint x,y;

for(x=z;x>0;x--)

for(y=110;y>0;y--) ;

}

void delay(uint t)

{

while(t--);

}

void display(void)

{

p=0;

P1=table[tempe/10];

delay1(1);

P1=0xff;

p=1;

q=0;

P1=table[tempe];

delay1(1);

P1=0xff;

q=1;

r=0;

P1=0x9c;

delay1(1);

P1=0xff;

r=1;

s=0;

P1=0xc6;

delay1(1);

P1=0xff;

s=1;

}

void init_ds18b20(void)

{

uchar sample;

DQ=1;

delay(8);

DQ=0;

delay(80);

DQ=1;

delay(8);

sample=DQ; //return(sample)带返回检测器件响应

delay(4);

}

void wr_ds18b20(uchar dat)

{

uchar i;

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

{

DQ=0;

DQ=dat&0x01;

delay(4);

DQ=1;

dat>>=1;

}

delay(4);

}

uchar re_ds18b20(void)

{

uchar i;

uchar result;

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

{

DQ=0;

result>>=1;

_nop_();

DQ=1;

if(DQ)

result|=0x80;

delay(4);

}

return(result);

}

uchar rd_temperature(void)

{

uchar a,b;

init_ds18b20();

wr_ds18b20(0xcc); //跳过ROM

wr_ds18b20(0x44); //启动温度测量

delay(300);

init_ds18b20();

wr_ds18b20(0xcc);

wr_ds18b20(0xbe);

a=re_ds18b20();

b=re_ds18b20();

b<<=4;

b+=(a&0xf0)>>4;

return(b);

}

void main()

{

while(1)

{

tempe=rd_temperature();

display();

delay(1);

display();

delay(1);

}

}

提醒:《基于AT89C2051+ds18b20的温度计程序设计》最后刷新时间 2024-03-14 00:58:06,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《基于AT89C2051+ds18b20的温度计程序设计》该内容的真实性请自行鉴别。