- 3
- 0
- 约5.69千字
- 约 10页
- 2018-03-09 发布于河南
- 举报
ds18b20测温c程序
#includereg52.h
#includeintrins.h
#includeZLG7289.h
#define uint unsigned int
#define uchar unsigned char
uchar mod,x,dat,m,t;
uchar pres_temp[]={9,9,9,9},old_temp[]={0,0,0,0};
sbit dq=P3^6;
sbit P1_1=P1^1;
sbit P1_2=P1^2;
sbit P1_5=P1^5;
sbit P1_6=P1^6;
uint temp;
uchar ID[2][8]={0x28,0x08,0x34,0x31,0x02,0x00,0x00,0xac,
0x28,0xf3,0xa0,0xd0,0x00,0x00,0x00,0x07};
void delay(uint count)
{
uint i,j;
for(i=0;icount;i++)
for(j=0;j10;j++);
}
void delayb20(uchar count)
{
uchar i;
for(i=0;icount;i++);
}
uchar b20_Init()
{
uchar i;
dq=1;
delayb20(1);
dq=0;
delayb20(29);
dq=1;
delayb20(3);
i=dq;
delayb20(25);
if(i==0)
return 1;
else
return 0;
}
uchar b20_Readbit(void)
{
uchar i;
dq=0;
dq=1;
for(i=0;i3;i++);
return(dq);
}
uchar b20_Readbyte(void)
{
uchar i,j,dat;
dat=0;
for(i=0;i8;i++)
{
j=b20_Readbit();
dat=(j7)|(dat1);
}
return(dat);
}
void b20_Writebyte(uchar dat)
{
uchar i,j;
bit testb;
for(j=0;j8;j++)
{
testb=dat0x01;
dat=dat1;
if(testb)
{
dq=0;
i++;
i++;
dq=1;
for(i=0;i8;i++);
}
else
{
dq=0;
for(i=0;i8;i++);
dq=1;
i++;
i++;
}
}
}
uint b20_Matchrom(uint num)
{
uint j;
b20_Init();
if(b20_Init()==1)
{
b20_Writebyte(0x55);
for(j=0;j8;j++)
b20_Writebyte(ID[num][j]);
return 1;
}
else
return 0;
}
void b20_temchange()
{
b20_Init();
delay(1);
b20_Writebyte(0xcc);
b20_Writebyte(0x44);
delay(5000);
delay(5000);
}
uint b20_tempget()
{
float tt;
uchar a,b;
b20_Writebyte(0xbe);
a=b20_Readbyte();
b=b20_Readbyte();
temp=b;
temp=8;
temp=temp|a;
tt=temp*0.0625;
temp=tt*10+0.5;
return(temp);
}
void dataconvt()
{uint t=b20_tempget();
pres_temp[0] = t/ 1000;
pres_temp[1] = t % 1000 / 100;
pres_temp[2]=t%100/10;
pres_temp[3] = t% 10;
}
void display(uchar p)
{ uint a;
dataconvt();
a=pres_temp[0]*1000+pres_temp[1]*100+pres_temp[2]*10+pres_temp[3];
if(p)
{if(a305)
{P1_1=0;
P1_2=0;}
if(a295)
{P1_1=1;
原创力文档

文档评论(0)