#include
#define _Nop() _nop_() /*定义空指令*/
sbit D18B20=P3^7;
sbit k1=P1^5;
unsigned char flag;
unsigned char u,d[]=;
void TempDelay (unsigned char us)
{
while(us--);
}
void Init18b20 (void)
{
D18B20=1;
_nop_();
D18B20=0;
TempDelay(80); //delay 530 uS//80
_nop_();
D18B20=1;
TempDelay(14); //delay 100 uS//14
_nop_();
_nop_();
_nop_();
if(D18B20==0)
flag = 1; //detect 1820 success!
else
flag = 0; //detect 1820 fail!
TempDelay(20); //20
_nop_();
_nop_();
D18B20 = 1;
}
/************************************************************
*Function:向18B20写入一个字节
*parameter:
*Return:
*Modify:
*************************************************************/
void WriteByte (unsigned char wr) //单字节写入
{
unsigned char idata i;
for (i=0;i<8;i++)
{
D18B20 = 0;
_nop_();
D18B20=wr&0x01;
TempDelay(3); //delay 45 uS //5
_nop_();
_nop_();
D18B20=1;
wr >>= 1;
}
}
/************************************************************
*Function:读18B20的一个字节
*parameter:
*Return:
*Modify:
*************************************************************/
unsigned char ReadByte (void) //读取单字节
{
unsigned char idata i;
for(i=0;i<8;i++)
{
D18B20 = 0;
u >>= 1;
D18B20 = 1;
if(D18B20==1)
u |= 0x80;
TempDelay (2);
_nop_();
}
return(u);
}
main()
{unsigned char a,b,c,j;
while(1)
{
Init18b20();
WriteByte(0xcc); //skip rom
WriteByte(0x44); //保存设定值
Init18b20();
WriteByte(0xcc); //skip rom
WriteByte(0xbe); //read Temperature//回调设定值
a=ReadByte();
b=ReadByte();
a=a>>4;
b=b<<4;
c=a+b;
if(c>30)
k1=0;
else
k1=1;
for(j=0;j<250;j++)
{
P0=d[c/10];
P2=0xe3;
TempDelay(100);
P0=d[c%10];
P2=0xe7;
TempDelay(100);
}
}
}