📄 ds18b20.c
字号:
/*51平台,11.0592晶体,使用stc12c4052和ds18b20*/
#include "reg51.h"
#define uchar unsigned char
#define uint unsigned int
sbit p10=P1^0;
sbit p11=P1^1;
sbit p12=P1^2;
sbit p13=P1^3;
sbit addr1=P1^4;
sbit addr2=P1^5;
sbit addr3=P1^6;
sbit p17=P1^7;
sbit dir485=P3^2;
sbit rs232en=P3^3;
sbit rs485en=P3^4;
sbit p35=P3^5;
sbit p37=P3^7; /*p37为单总线*/
/*初始化*/
void initds18b20()
{
p37=0;
delay(200);
delay(184);
p37=1;
delay(48);
if(p37==1)
{
ds18b20=0;
}
else
{
ds18b20=1;
delay(160);
}
p37=1;
}
void writebyteds18b20(uchar aaa)
{
uchar i,j;
for(i=0;i<8;i++)
{
p37=0;
p37=0x01&aaa;
aaa=aaa>>1;
delay(48);
p37=1;
WDT=0x30; //feed the dog to delay
WDT=0x30;
WDT=0x30;
WDT=0x30;
WDT=0x30;
WDT=0x30;
WDT=0x30;
WDT=0x30;
}
p37=1;
}
void readds18b20()
{
uchar i,j;
for(i=0;i<8;i++)
{
p37=1;
WDT=0x30;
WDT=0x30;
WDT=0x30;
WDT=0x30;
WDT=0x30;
WDT=0x30;
WDT=0x30;
WDT=0x30;
p37=0;
WDT=0x30;
WDT=0x30;
WDT=0x30;
WDT=0x30;
WDT=0x30;
WDT=0x30;
WDT=0x30;
WDT=0x30;
p37=1;
cirl=cirl>>1;
if(p37==1)
{
cirl=cirl+128;
}
delay(32);
}
for(i=0;i<8;i++)
{
p37=1;
WDT=0x30;
WDT=0x30;
WDT=0x30;
WDT=0x30;
WDT=0x30;
WDT=0x30;
WDT=0x30;
WDT=0x30;
p37=0;
WDT=0x30;
WDT=0x30;
WDT=0x30;
WDT=0x30;
WDT=0x30;
WDT=0x30;
WDT=0x30;
WDT=0x30;
p37=1;
cirh=cirh>>1;
if(p37==1)
{
cirh=cirh+128;
}
delay(32);
}
}
void temp()
{
uchar temph,templ;
p37=1;
initds18b20();
if(ds18b20)
{
delay(48);
writebyteds18b20(0xcc);
writebyteds18b20(0x44);
longdelay(184000);
initds18b20();
if(ds18b20)
{
delay(48);
writebyteds18b20(0xcc);
writebyteds18b20(0xbe);
readds18b20();
}
}
/*数据处理后由串行口返回PC*/
if(ds18b20)
{
dir485=1;
SBUF=0xaa;
while(!TI)
{
WDT=0x30;
}
TI=0;
SBUF=localaddress;
while(!TI)
{
WDT=0x30;
}
TI=0;
SBUF=0x08;
while(!TI)
{
WDT=0x30;
}
TI=0;
SBUF=0x00;
while(!TI)
{
WDT=0x30;
}
TI=0;
temph=(cirh<<4)+(cirl>>4);
if(temph>=128)
{
temph=383-temph;
}
SBUF=temph;
while(!TI)
{
WDT=0x30;
}
TI=0;
templ=(uchar)((float)(cirl&0x0f)*0.625);
SBUF=templ;
while(!TI)
{
WDT=0x30;
}
TI=0;
SBUF=localaddress+0x08+0x00+temph+templ;
while(!TI)
{
WDT=0x30;
}
TI=0;
dir485=0;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -