1 / 7
文档名称:

数字温度计.doc

格式:doc   大小:49KB   页数:7页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

数字温度计.doc

上传人:woyaonulifacai 2022/4/20 文件大小:49 KB

下载得到文件列表

数字温度计.doc

相关文档

文档介绍

文档介绍:数字温度计221865591
数字温度计221865591
数字温度计221865591
数字温度计
韩哲
【摘要】 本数字式温度计由AT89S1为控制器,通过DS18B20传感器检测并采集信号,把连续信号离散化,然后通过线拉高
ﻩﻩ _nop_();      //等待一个机器周期ﻩ
DQ = 0;    //单片机从DS18B20读书据时,将数据线从高拉低即启动读时序
ﻩﻩ dat>〉=1;
ﻩﻩ   _nop_();   //等待一个机器周期ﻩ  
DQ = 1; //将数据线"人为”拉高,为单片机检测DS18B20的输出电平作准备
ﻩﻩ   for(time=0;time〈2;time++)
          ;         //延时约6us,使主机在15us内采样
ﻩﻩﻩ  if(DQ==1)
ﻩﻩﻩ    dat|=0x80;  //如果读到的数据是1,则将1存入dat
数字温度计221865591
数字温度计221865591
数字温度计221865591
ﻩﻩﻩ else
ﻩﻩﻩdat|=0x00;//如果读到的数据是0,则将0存入dat
ﻩﻩ   //将单片机检测到的电平信号DQ存入r[i]ﻩ
ﻩ  for(time=0;time〈8;time++)
;  //延时3us,两个读时序之间必须有大于1us的恢复期
}ﻩ        
ﻩ    return(dat);    //返回读出的十进制数据

/*****************************************************
函数功能:向DS18B20写入一个字节数据
***************************************************/  
void WriteOneChar(unsigned char dat)

unsigned char i=0;
ﻩ for (i=0; i<8; i++)
{
ﻩﻩ  DQ =1;     // 先将数据线拉高
ﻩ _nop_();ﻩ      //等待一个机器周期
ﻩﻩ  DQ=0;      //将数据线从高拉低时即启动写时序  
DQ=dat&0x01;  //利用与运算取出要写的某位二进制数据,
             //并将其送到数据线上等待DS18B20采样ﻩ
ﻩ for(time=0;time<10;time++)
;   //延时约30us,DS18B20在拉低后的约15~60us期间从数据线上采样
ﻩﻩ  DQ=1; //释放数据线ﻩﻩ  
ﻩﻩ  for(time=0;time〈1;time++)
ﻩ   ;//延时3us,两个写时序间至少需要1us的恢复期
ﻩﻩ dat>>=1;       //将dat中的各二进制位数据右移1位

  for(time=0;time〈4;time++)