毕业设计论文智能型数字温度计的设计内容摘要:
第 2 章 温度采集程序设计 DS18B20 的时序 由于 DS18B20 采用的是 1- Wire 总线协议方式,即在一根数据线实现数据的双向传输,而对 AT89C51 单片机来说,硬件上并不支持单总线协议,因此,我们必须采用软件的方法来模拟单总线的协议时序来完成对 DS18B20 芯片的访问。 由于 DS18B20 是在一根 I/O 线上读写数据,因此,对读写的数据位有着严格的时序要求。 DS18B20 有严格的通信协议来保证各位数据传输的正确性和完整性。 该协议定义了几种信号的时序:初始化时序、读时序、写时序。 所有时序都是将主机作为主设备,单总线器件作为从设备。 而每一次命令和数 据的传输都是从主机主动启动写时序开始,如果要求单总线器件回送数据,在进行写命令后,主机需启动读时序完成数据接收。 数据和命令的传输都是低位在先。 DS18B20 的复位时序 DS18B20 的复位时序如图 所示,主机发出复位脉冲, DS18B20 的单总线即( DQ)接收到高电平,最少 480us,最多 960us。 主机将 DQ 拉低,延时大于 480us,然后 DS18B20发出应答脉冲, DQ 为 0 复位成功,否则失败,继续复位。 DS18B20 的读写时序 对于 DS18B20 的读时序分为读 0 时序和读 1 时序两个过程,如图 所示。 主机发出复位脉冲min: 480us max: 960us 主 机接收所需最短时间 480us DS18B20 发出 应答脉冲 15~ 60 us DQ GND 图 DS18B20 的复位时序 中国石油大学胜利学院本科毕业设计 (论文 ) 13 DS18B20 的读时隙是从主机把单总线拉低之后,在 15us 之内就得释放单总线,以让 DS18B20 把数据传输到单总线上。 DS18B20 在完成一个读时序过程,至少需要 60us才能完成。 对于 DS18B20 的写时序仍然分为写 0 时序和写 1 时序两个过程如图 和。 DS18B20 写 0 时序和写 1 时序的要求不同,当要写 0 时序时,单总线要被拉低至少 60us,保证 DS18B20 能够在 15us 到 45us 之间能够正确地采样 IO 总线上的 ―0‖电平,当要写 1 时序时,单总线被拉低之后,在 15us 之内就得释放单总线。 主机写 0 时隙 60~120us DQ GND DS18B20 采样 1us 15us 15us 30us 1us 图 DS18B20 的写 0 时序 主机读 0 或读 1 时隙 DQ GND 主 CPU 采样 1us 15us 15us 30us 图 DS18B20 的读时序 中国石油大学胜利学院本科毕业设计 (论文 ) 14 DS18B20 内部结构和指令 DS18B20 内部结构 DS18B20 内部结构主要由四部分组成: 64 位光刻 ROM、温度传感器、非挥发的温度报警触发器 TH 和 TL、配置寄存器 [14]。 光刻 ROM 中的 64 位序列号是出厂前被光刻好的,它可以看作是该 DS18B20 的地址序列码。 64 位光刻 ROM 的排列是:开始 8 位( 28H)是产品类型标号,接着的 48位是该 DS18B20 自身的序列号,最后 8 位是前面 56 位的循环冗余校验码( CRC=X8+X5+X4+1)。 光刻 ROM 的作用是使每一个 DS18B20 都各不相同,这样就可以实现一根总线上挂接多个 DS18B20 的目的。 DS18B20 中的温度传感器可完成对温度的测量,以 12 位转化为例 :用 16 位符号扩展的二进制补码读数形 式提供,以 ℃ /LSB 形式表达,其中 S 为符号位。 见表。 表 温度值存放格式 LS Byte bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 23 22 21 20 21 22 23 24 MS Byte bit15 bit14 bit13 bit12 bit11 bit10 bit9 bit8 S S S S S 26 25 24 12 位转化后得到的 12 位数据,存储在 18B20 的两个 8 比特的 RAM 中,二进制中的前面 5位是符号位,如果测得的温度大于 0,这 5位为 0,只要将测到的数值乘于 主机写 1 时隙 60~120us DQ GND DS18B20 采样区 1us 15us 15us 30us 图 DS18B20 写 1 时序 中国石油大学胜利学院本科毕业设计 (论文 ) 15 即可得到实际温度;如果温度小于 0,这 5位为 1,测到的数值需要取反加 1再乘于 即可得到实际温度。 DS18B20 温度传感器的内部存储器包括一个高速暂存 RAM 和一个非易失性的可电擦除的 EEPRAM,后者存放高温度和低温度触发器 TH、 TL 和结构寄存器。 用户还可根据实际情况设定非易失性温度报警上下限值 TH 和 TL。 DS18B20 检测到温度值经转换为数字量后,自动存入存储器中,并与设定值 TH 或 TL 进行比较,当测量温度超出给定范围时,就输出报警信号,并自动识别是高温超限还是低温超限。 高速暂存存储器包含了 8 个连续字节,前两个字节是测得的温度信息,第一个字节的内容是温度的低八位,第二个字节是温度的高八位。 第三个和第四个字节是 TH、TL 的易失性拷贝,第五个字节是结构寄存器的易失性拷贝,这三个字节的内容在每一次上电复位时被刷新。 第六、七、八 个字节用于内部计算。 第九个字节是冗余检验字节。 DS18B20 的指令表 在编程过程中需要给单总线写入命令,如常用的启动温度转换,读出 DS18B20 的序列号,匹配 ROM 以选定温度传感器。 表 和表 中是常用的 ROM 和 RAM 指令。 表 ROM 指令表 指 令 约定代码 功 能 读 ROM 33H 读 DS1820ROM 中的编码(即 64 位地址) 符合 ROM 55H 发出此命令之后,接着发出 64 位 ROM 编码,访问单总线上与该编码相对应的 DS1820 使之作出响应,为下一步对该 DS1820 的读写作准备。 搜索 ROM 0F0H 用于确定挂接在同一总线上 DS1820 的个数和识别 64 位 ROM 地址。 为操作各器件作好准备。 跳过 ROM 0CCH 忽略 64 位 ROM 地址,直接向 DS1820 发温度变换命令。 适用于单片工作。 告警搜索命令 0ECH 执行后只有温度超过设定值上限或下限的片子才做出响应。 表 RAM 指令表 中国石油大学胜利学院本科毕业设计 (论文 ) 16 指 令 约定代码 功 能 温度变换 44H 启动 DS1820进行温度转换,转换时最长为 500ms(典型为 200ms)。 结果存入内部 9 字节 RAM 中。 读暂存器 0BEH 内部 RAM 中 9 字节的内容 写暂存器 4EH 发出向内部 RAM 的 4 字节写上、下限温度数据命令,紧跟该命令之后,是传送两字节的数据。 复制暂存器 48H 将 RAM 中第 4 字节的内容复制到 EEPROM 中。 温度测量程序 选择 DS18B20 函数 每一个 DS18B20 在出厂时就有一个特有的序列号,所以在访问它的时候,会进行序列号的匹配,匹配正确,可以对它进行读写,否则不可以。 如果在一定的条件下,写入 Skip ROM 命令(写入 0xcc),默认情况下跳过匹配过程。 当单总线上接多个 DSl8B20 时,用各个芯片的 ID 号选中特定的芯片进行操作。 如果己经获得 ID号,则先发送寻求匹配命令 (OX55H),再发送 ID号,选中特定的 DSl8B20。 uchar code id[4][8]={ {… }, /* 保存已有 18b20ID */ {…}, }。 /******************************************* *选择 ds18b20 ********************************************/ void selectedDq(uchar select) { uchar i。 if(select3) writeByte(0xcc)。 //默认状况下 Skip ROM else { writeByte(0x55)。 // matchROM 中国石油大学胜利学院本科毕业设计 (论文 ) 17 for(i=0。 i8。 i++) { writeByte(id[select][i])。 //将选中的 DS18B20 序列号写入 } } } 获取 DS18B20 序列号程序 如果还没有获得特定 DSl8B20 的 ID 号,先只接一个 DSl8B20,发送读序列号命令(OX33H),然后读取 DSl8B20 返回的该芯片自身的 lD 号,将读出的多个 DSl8B20 芯片的 ID 号顺序保存到单片机 EEPROM 的指定位置。 在进行温度采集与无线传输系统设计之前,先把 4 个 DS18B20 的序列号读出,方便后面的调试需要。 通过单片机开发板与计算机连接,使用串口调试助手这个界面将序列号读出。 void main(void) { uchar i。 uint j。 resetDQ()。 // ds18b20 复位 writeByte(0x33)。 // 写 ReadRom命令 for(i=0。 i8。 i++) // 读取 id { ids[i]=readByte()。 } SCON= 0x40。 //串口方式 1 PCON=0。 //SMOD=0 REN=1。 //允许接收 TMOD= 0x20。 //定时器 1 定时方式 2 TH1= 0xe8。 // 1200 波特率 TL1= 0xe8。 中国石油大学胜利学院本科毕业设计 (论文 ) 18 TR1= 1。 //启动定时器 while(1) { for(i=0。 i8。 i++) { SBUF=ids[i]。 //DS18B20 的序列号通过串行调试读出 while(TI==0)。 TI=0。 } for (j=0。 j50000。 j++)。 } } DS18B20 测温程序 应用 DS18B20 的温度 采集电路进行温度测量时,先对总线复位,发送转换命令0x44,等待转换结束,再对总线复位,然后发读温度命令 0xbe,读出温度值低字节、高字节,并将两字节合成一个整型变量。 测温流程图见图。 中国石油大学胜利学院本科毕业设计 (论文 ) 19 resetDQ()。 //总线复位 _nop_()。 //延时 selectedDq(selected)。 writeByte(0x44)。 //发转换命令 resetDQ()。 //总线复位 selectedDq(selected)。 writeByte(0xbe)。 //发读温度命令 tempdata[0]=readByte()。 //读温度值的低字节 tempdata[1]=readByte()。 //读温度值的高字节 temp=tempdata[1]。 //温度值高字节先赋给 temp temp=8。 //temp 左移 8 位,高字节放在高 8 位 temp=temp|tempdata[0]。 // 两字节合成一个整型变量 return temp。 //返回温度值 开始 总线复位 延时 选择 DS18B20 发转换命令 总线复位 延时 发读温度命令 读温度值低字节 读温度值高字节 两字节合成一个整形变量 返回温度值 结束 图 DS18B20 测温流程图 中国石油大学胜利学院本。毕业设计论文智能型数字温度计的设计
相关推荐
织设计(方案) 15 位和夹具变形。 、采用手工电流压力焊, 宜用直接引弧法,先使上、下钢筋接触,通电后将上钢筋提升 2- 4mm,引燃电弧,然后继续提数毫米,待电弧稳定后,随着钢筋的熔化而使钢筋逐渐下降,此时电弧熄灭,转化为电渣过程,焊接电流通过渣池而产生电阻热,使钢筋端部继续熔化,用适当压力迅速顶压,使之挤出熔化金属形成竖实接头,冷却 1- 3min 后,即可打开焊药盒回收焊剂,卸掉夹具
已投入使用。 园区距重庆第三大港区 —— 长江冯家湾深水港仅 3 公里,目前有一条二级公路直达港区。 长 公里、宽 54 米的疏港大道正在修建,今年可完工。 3000 吨单体船、万级吨船队全年可通达。 近期总通过能力 500 万吨,远期总通过能力 800— 1000 万吨,可实现江海联运。 园区是重庆市唯一一个具备水路、公路、铁路、航空近距离联运的工业园区,能确保大件产品、大宗货物便捷
企业内部会计制度是企业管理制度的一个重要组成部分,会计制度涉及到企业管理的方方面面,企业内部各部门在处理各种业务 (尤其是会计业务 )时,都必须按会计制度的要求执行。 从企业内部控制角度看,企业内部会计制度是内部控制制度的主体,会计制度必须全面体现内部控制的要求,尤其是企业各项经济业务的处理流程必须满足内部控制的要求。 同时,会计工作又具有特定的技术要求,各种会计规范都是以会计技术为基础建立的
其他输入设备创建了一个由参与者动作控制的虚拟世界。 2. 20 世纪 80 年代初期 — 中期,虚拟现实技术系统化,从实验室走向实用阶段 20 世纪 80 年代,美国的 VPL 公司创始人 Jaron Lanier 正式提出了 Virtual Reality一词。 当时,研究此项技术的目的是提供一种比传统计算机模拟更好的 方法。 1984 年,美国宇航局 NASA