bit dat;
DQ1=0;_nop_();
DQ1=1; _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();
_nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();
dat = DQ1;
time_delay(50);
return dat; }
/*****************************************************/
/* read a bety from ds18b20 字节读取 */
/*****************************************************/
unsigned char rd_ds18_1() {
unsigned char idata i,j,dat=0; for(i=1;i<=8;i++) {
j=tmrbit_1();
dat=(j<<(i-1))|dat; }
return dat; }
/*****************************************************/
/* write a bety from ds18b20 写字节 */
/****************************************************/
void wr_ds18_1(char dat) {
signed char idata i=0; unsigned char idata j; bit testb;
for(j=1;j<=8;j++) {
testb=dat & 0x01; dat = dat>>1; if(testb) {
DQ1=0; _nop_(); _nop_(); DQ1=1; time_delay(60); }
else {
DQ1=0;
time_delay(50);
DQ1=1; _nop_(); _nop_(); } } }
13
int get_temp_1(void) {
unsigned char idata a=0,b=0; unsigned char idata i; EA=0;
TMP=~TMP; TMP=(TMP+1); } EA=1;
return(TMP); }
int get_temp_d(void) {
unsigned char idata a=0,b=0; ds_reset_1(); check_pre_1();
wr_ds18_1(0xcc); wr_ds18_1(0x44); while(BUSY1);
ds_reset_1(); check_pre_1();
wr_ds18_1(0xcc); wr_ds18_1(0xbe);
a=rd_ds18_1(); b=rd_ds18_1();
i=b; /*若b为1则为负温 i=(i>>4); if(i==0) {
f=0;
TMP=((a>>4)|(b<<4)); a=(a&0x0f); if (a>8) {
TMP=(TMP+1); } } else {
f=1; a=a>>4; b=b<<4; TMP=(a|b);
unsigned char idata i,m; EA=0;
ds_reset_1();//复位 check_pre_1();
wr_ds18_1(0xcc); wr_ds18_1(0x44); while(BUSY1);
ds_reset_1(); check_pre_1();
wr_ds18_1(0xcc); wr_ds18_1(0xbe);
a=rd_ds18_1(); b=rd_ds18_1();
i=b; /*若b为1则为负温i=(i>>4);
if(i==0) {
f=0;
TMP=((a>>4)|(b<<4)); a=(a&0x0f); TMP_d=a; } else {
f=1; a=~a; a=(a+1); b=~b;
14
*/ */
}
b=(b+1); m=a; a=a>>4; b=b<<4;
TMP=(a|b); m=(m&0x0f); TMP_d=m;
EA=1;
return(TMP_d); }
void delay(unsigned int x) {
unsigned int i; for(i=0;i 五.参考文献 [1] 徐爱钧.《智能化测量控制仪表原理与设计》(第二版)[M].北京:北京航空航天大学出版社,2004. [2] 吴金戌,沈庆阳,郭庭吉.《8051单片机实践与应用》[M].北京:清华大学出版社,2002. [3] 张国勋,《缩短ICL7135A/D采样程序时间的一种方法》[J]. 《电子技术应用》,1993,第一期. [4] 高峰,《单片微型计算机与接口技术》[M].北京:科学出版社,2003. [5] 刘伟,赵俊逸,黄勇,《一种基予C8051F单片机的SOC型数据采录器的设计与实现》[A].天津市计算机学会单片机分会编. 《2003年全国单片机及嵌如入式系统学术年会论文集(下册)》[C] .北京:北京航空航天大学出版社,2003 .790-794 电路原理图: 15 2 3 4