基于单片机的温度采集系统的所有专业(编辑修改稿)内容摘要:
光刻 ROM 的作用是使每一个 DS18B20 都各不相同,这样就可以实现一根总线上挂接多个 DS18B20 的目的。 DS18B20 中的温度传感器可完成对温度的测量,以 12 位转化为例 :用 16 位符号扩展的二进制补码读数形式提供,以 ℃ /LSB形式表达,其中 S为符 号位 ,见表 21。 表 21DS18B20内部温度表示形式 大学毕业设计论文 8 这是 12 位转化后得到的 12位数据,存储在 18B20 的两个 8 比特的 RAM 中,二进制中的前面 5位是符号位,如果测得的温度大于 0,这 5位为 0,只要将测到的数值乘于 即可得到实际温度;如果温度小于 0,这 5位为 1,测到的数值需要取反加 1再乘于 即可得到实际温度。 例如 +125℃ 的数字输出为 07D0H, +℃ 的数字输出为 0191H, ℃ 的数字输出为 FF6FH, 55℃ 的数字输出为 FC90H。 见表 22 表 22DS18B20转化温度形式 实际温度值 数字输出(二进制) 数字输出(十六进制) +125℃ 0000 0111 1101 0000 07D0H +85℃ 0000 0101 0101 0000 0550H +℃ 0000 0001 1001 0001 0191H +℃ 0000 0000 1010 0010 00A2H +℃ 0000 0000 0000 1000 0008H 0℃ 0000 0000 0000 0000 0000H ℃ 1111 1111 1111 1000 FFF8H ℃ 1111 1111 0101 1110 FF5EH ℃ 1111 1110 0110 1111 FE6EH 55℃ 1111 1100 1001 0000 FC90H DS18B20 的内部 逻辑图 , 见图 23。 C 64 位 ROM 和 单 线 高速缓存 存储器与控制逻辑 温度传感器 高温触发器 TH 低温触发器 TL 配置寄存器 8 位 CRC 发生器 Vdd 大学毕业设计论文 9 图 23DS18B20内部内部逻辑图 DS18B20 读写时序 主机使用时间隙 (time slots)来读写 DSl820 的数据位和写命令字的位 时序见图 24 主机总线 to 时刻发送一复位脉冲 (最短为 480us 的低电平信号 )接着在 tl 时刻释放总线并进入接收状态 DSl820 在检测到总线的上升沿之后 等待 1560 接着 DS1820 在 t2 时刻发出存在脉冲 (低电平 持续 60240 us)如图中虚线所示 图 24DS18B20初始化时序图 程序: Init_DS18B20(void)//初始化 ds1820 { DQ = 1。 //DQ复位 _nop_()。 _nop_()。 //稍做延时 2ms DQ = 0。 //单片机将 DQ拉低 ,发出复位脉冲(要求 480us~960us) Delay(70)。 //精确延时 566us DQ = 1。 //拉高总线 (要求 16~60us) Delay(5)。 //延时 46us presence = DQ。 //如果 =0则初始化成功 =1则初始化失败 Delay(25)。 DQ = 1。 return(presence)。 //返回信号, 0=presence,1= no presence } 大学毕业设计论文 10 当主机总线 t o 时刻从高拉至低电平时 就产生写时间隙从 to 时刻开始 15us 之内应将所需写的位送到总线 DSl820 在 t1 为 1560us 间对总线采样 若低电平 写入的位是 0见若高电平 写入的位是连续写 2 位间的间隙应大于 1us ,见图 25。 图 25写时间隙 程序: WriteOneChar(unsigned char dat) { unsigned char i=0。 for (i=8。 i0。 i) { DQ = 0。 DQ = datamp。 0x01。 delay(5)。 DQ = 1。 dat=1。 } } 见图 26 主机总线 to 时刻从高拉至低电平时总线只须保持低电平 l 7ts 之后 15 捍 s也就是说 t z 时刻前主机必须完成读位 并在 t o 后的 60 尸 s 一 120 fzs 内释放总线 读位子程序 (读得的位到 C 中 ) 图 26读时序 程序: ReadOneChar(void) { unsigned char i=0。 unsigned char dat = 0。 for (i=8。 i0。 i) 大学毕业设计论文 11 { DQ = 0。 // 给脉冲信号 dat=1。 DQ = 1。 // 给脉冲信号 if(DQ) dat|=0x80。 delay(4)。 } return(dat)。 } ,见表 25 表 25存储器操作命令 指令 约定代码 功能 读 ROM 33H 读取 DS18B20ROM中的编码( 64位地址) 符合 ROM 55H 发出命令后,接着发出 64位 ROM编码,访问单总线上与该编码相同的 DS18B20,使之做出 反应,为 下一步读写作准备。 搜索 ROM 0F0H 用于确定挂在同一总线上 DS18B20的个数,和识别 64位 ROM地址,微操作各器件做准备。 跳过 ROM 0CCH 忽略 64位 ROM地址,直接向 DS18B20发送温度转换命令,适用于单片工作。 告警搜索命令 0ECH 执行后只有温度值超过限度值才做出反应, 温度变换命令 44H 启动 DS18B20进行温度转换,转换时间最长为 500毫秒,结果 存入内部 就九字节 RAM中。 读暂存器 0BEH 读内部 RA九字节内容 写暂存器 4EH 发出向内部 RAM的第 4字节写 上下限温度命令,紧随该命令之后是传送两个字节数据。 复制暂存器 48H 将 RAM中的第 4字节内容写到 EEPRAM中。 重调 EEPRAM 0B8H 将 EEPRAM中的第 4字节内容写到 RAM中。 DS18B20温度传感器与单片机的接口电路 DS18B20 可以采用两种方式供电,一种是采用电源供电方式,此时 DS18B20 的 1 脚接地, 2 脚作为信号线, 3 脚接电源。 另一种是寄生电源供电方式,如图 4 所示单片机端口接单线总线,为保证在有效的 DS18B20 时钟周期内提供足够的电流,可用一个 MOSFET 管来完成对总线的上拉。 大学毕业设计论文 12 当 DS18B20 处于写存储器操作和温度 A/D 转换操作时,总线上必须有强的上拉,上拉开启时间最大为 10us。 采用寄生电源供电方式时 VDD端接地。 由于单线制只有一根线,因此发送接口必须是三态的。 由于 DS18B20 是在一根 I/O 线上读写数据,因此,对读写的数据位有着严格的时序要求。 DS18B20 有严格的通信协议来保证各位数据传输的正确性和完整性。 该协议定义了几种信号的时序:初始化时序、读时序、写时序。 所有时序都是将主机作为主设备,单总线器件作为从设备。 而每一次命令和数据的传输都是从主机主动 启动写时序开始,如果要求单总线器件回送数据,在进行写命令后,主机需启动读时序完成数据接收。 数据和命令的传输都是低位在先。 DS18B20 的复位时序 DS18B20 的读时序 对于 DS18B20 的读时序分为读 0 时序和读 1时序两个过程。 对于 DS18B20 的读时隙是从主机把单总线拉低之后,在 15 秒之内就得释放单总线,以让 DS18B20 把数据传输到单总线上。 DS18B20 在完成一个读时序过程,至少需要 60us 才能完成。 DS18B20 的写时序 对于 DS18B20 的写时序仍然分为写 0 时序和写 1时序两个过程。 对于 DS18B20 写 0时序和写 1时序的要求不同,当要写 0时序时,单总线要被拉低至少 60us,保证 DS18B20 能够在 15us 到 45us 之间能够正确地采样 IO 总线上的“ 0”电平,当要写 1时序时,单总线被拉 低之后,在 15us 之内就得释放单。基于单片机的温度采集系统的所有专业(编辑修改稿)
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。
用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。