温度的测量18b20.docx

上传人:b****2 文档编号:1865117 上传时间:2023-05-01 格式:DOCX 页数:9 大小:15.03KB
下载 相关 举报
温度的测量18b20.docx_第1页
第1页 / 共9页
温度的测量18b20.docx_第2页
第2页 / 共9页
温度的测量18b20.docx_第3页
第3页 / 共9页
温度的测量18b20.docx_第4页
第4页 / 共9页
温度的测量18b20.docx_第5页
第5页 / 共9页
温度的测量18b20.docx_第6页
第6页 / 共9页
温度的测量18b20.docx_第7页
第7页 / 共9页
温度的测量18b20.docx_第8页
第8页 / 共9页
温度的测量18b20.docx_第9页
第9页 / 共9页
亲,该文档总共9页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

温度的测量18b20.docx

《温度的测量18b20.docx》由会员分享,可在线阅读,更多相关《温度的测量18b20.docx(9页珍藏版)》请在冰点文库上搜索。

温度的测量18b20.docx

温度的测量18b20

#include

#include

//*****************引脚配置************************************************

sbitIO=P3^7;

sbitRS=P2^6;

sbitRW=P2^5;

sbitE=P2^7;

//**************************************变量

unsignedchart;

unsignedcharfh;

unsignedcharno[]={"NO18B20!

"};

unsignedcharyes[]={"wenduwei:

"};

unsignedchari;

unsignedcharTL;

unsignedcharTH;

voiddelay(charx)//***延时函数;

{

inti,j;

for(j=0;j

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

}

voidwrite_com(unsignedcharcom)//*********1602写指令函数

{

RS=0;

RW=0;

P0=com;

delay(5);

E=1;

delay(5);

E=0;

}

voidwrite_date(unsignedchardate)//1602写数据函数;

{

RS=1;

RW=0;

P0=date;

delay(5);

E=1;

delay(5);

E=0;}

voidinit1602(void)//1602初始化函数

{

write_com(0x38);

delay(5);

write_com(0x38);

delay(5);

write_com(0x38);

delay(5);

write_com(0x08);

delay(5);

write_com(0x01);

delay(5);

write_com(0x06);

delay(5);

write_com(0x0c);

delay(5);

}

voidput_str(chari,charj,unsignedchardat)//1602显示器显示定位显示数字;

{

if(i==1)

write_com(0x80+j-1);

elsewrite_com(0xc0+j-1);

write_date('0'+dat);

}

voidput_str1(chari,charj,unsignedchardat)//1602显示器显示定位显示字符;

{

if(i==1)

write_com(0x80+j-1);

else

write_com(0xc0+j-1);

write_date(dat);

}

voidwritep(unsignedcharh[])//****显示字符串

{

chari=0;

while(h[i])

{

write_date(h[i]);

delay(5);

i++;

}

}

voidDelayMS(unsignedintT)//*****微秒延时

{

for(;T>0;T--);

}

bitini()//****18B20初始化函数

{

bitflag=0;

IO=1;

for(t=0;t<=2;t++);

IO=0;

for(t=0;t<=200;t++);

IO=1;

for(t=0;t<=10;t++);

flag=IO;

for(t=0;t<=200;t++);

returnflag;

}

unsignedcharreadonechar()//*******读一个字节;

{

unsignedchardat;

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

{

IO=1;

_nop_();

IO=0;

_nop_();

IO=1;

for(t=0;t<2;t++);

dat>>=1;

if(IO==1)

dat|=0x80;

else

dat|=0x00;

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

}

returndat;

}

voidwriteonechar(unsignedchardat)//****18B20写指令

{

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

{

IO=1;

_nop_();IO=0;

IO=dat&0x01;

for(t=0;t<10;t++);

IO=1;

for(t=0;t<1;t++);

dat>>=1;

}

for(t=0;t<4;t++);

}

voidread18b20()//*读18B20;

{

ini();

writeonechar(0xcc);

//initDS18B20();

writeonechar(0x44);

DelayMS(500);

ini();

writeonechar(0xcc);

//initDS18B20();

writeonechar(0xbe);

TL=readonechar();

TH=readonechar();

}

voidmain()

{

floatTN;

unsignedchartn;

unsignedinttd;

unsignedcharge,shi,bai,qian,m,n;

init1602();

while

(1)

{

if(ini()==1)

{

write_com(0x01);

writep(no);

delay(100);

continue;

}

else{

write_com(0x01);

writep(yes);

}

while

(1)

{

fh=0;

read18b20();

if(TH>7)

{

fh=1;

TL=~TL;

TH=~TH;

TL+=1;

if(TL==0);

TH++;

}

TN=TH*256+TL;

TN/=16.0;

tn=(unsignedchar)TN;

TN-=tn;

TN*=1000;

td=(unsignedint)TN;

qian=tn/100;

m=tn/10%10;

bai=tn%10;

shi=td/100;

n=td/10%10;

ge=td%10;

if(fh==1)

put_str1(2,1,'-');

else

put_str(2,1,qian);

put_str(2,2,m);

put_str(2,3,bai);

put_str1(2,4,'.');

put_str(2,5,shi);

put_str(2,6,n);

put_str(2,7,ge);

}

}

}

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2