基于单片机实现的温度控制器课程设计内容摘要:

初始化时序图 总线上的所有传输过程都是以初始化开始的,主机响应应答脉冲。 应答脉冲使主机知道,总线上有从机设备,且准备就绪。 主机输出低电平,保持低电平时间至少 480us,以产生复位脉冲。 接着主机释放总线,上拉电阻将总线拉高,延时 15~ 60us,并进入接受模式,以产生低电平应答脉冲,若为低电平,再延时 480us。 第 8 页 西华大学课程设计说明书 ( 2 ) 写时序 d s 1 8 b 2 0 采 样 d s 1 8 b 2 0 采 样控 制 器 写 “ 0 ” 时 间 间隙 6 0 u s T X 1 2 0 u s控 制 器 写 “ 1 ” 时 间 间隙 1 u s T R E C1 5 us1 5 us3 0 u s1 5 us1 5 us3 0 u s 1 u s 图 写时序图 当主机把数据线从逻辑高电平拉到低电平的时候,写时序开始。 有两种情况,写 1时间间隙和写 0 时间间隙,所以写时间间隙最少持续 60us,包括两个写周期至少 1us的恢复时间, I/O 线电平变低后, DS18B20 在一个 5us 到 60us 的窗口内对 I/O 线采样,如果线上时高电平,就是写 1,如果线上是低电平,就是写 0。 ( 3) 读时序 主机采样主机采样主 机 写 “ 0 ” 时 序 主 机 写 “ 1 ” 时 序 1 u s 1 u s1 5 u s 4 5 u s 1 5 u s 4 5 u s 图 读时序图 总线器件仅在主机发出读时序是,才向主机传输数据,所以,在主机发出读数据命令后,必须马上产生读时序,以便从机能够传输数据。 所有读时序至少需要 60us。 当主机把高电平拉到低电平时写时间开始,在 2 次独立的读时序之间至少需要 1us 的恢复时间。 每个时序都由主机发起,至少拉低总线 1us。 主机在读时序期间必须释放总线,并且在时序起始后的 15us 之内采样总线状态。 主机输出低电平延时 2us,然后主机转入输入模式延时 12us,然后读取总线当前电平,然后延时 50us。 第 9 页 西华大学课程设计说明书 DS18B20 温度流程 图 DS18B20 温度流程图 ROM 操作命令 表 34 ROM 操作命令 指令 约定代码 功能 读 ROM 33H 读 DS18B20ROM 中的编码 符合 ROM 55H 发出此命令之后,接着发出 64位 ROM 编码,访问单线总线与改变码相对应得 DS18B20 使之做出响应,为下一步对该 DS18B20的读写做准备 搜索 ROM 0F0H 读 ROM 跳过 ROM 0CCH 忽略 64 位 ROM 地址,直接向 DS18B20 发温度变换命令,适用于单片工作 告警搜索 ROM 0ECH 执行后,只有温度超过设定值上限或者下限的片子才做出响应 温度变换 44H 启动 DS18B20 进行温度转换,转换时间最长为 500MS,结果存入内部 9 字节 RAM 中 读暂存器 0BEH 读内部 RAM 中 9 字节的内容 写暂存器 4EH 发出向内部 RAM 的第 3, 4 字节写上、下限温度数据命令,紧跟读命令之后,是传送两字节的数据 复制暂存器 48H 将 E2PRAM 中第 3, 4 字节内容复制到 E2PRAM 中 重调 E2PRAM 0BBH 将 E2PRAM 中内容恢复到 RAM 中的第 3, 4 字节 读供电方式 0B4H 读 DS18B20 的供电模式,寄生供电时 DS18B20 发送“ 0”,外接电源供电 DS18B20 发送“ 1” 初始化 DS18B20 跳过 ROM匹配 温度变换 延时 1s 跳过 ROM匹配 读暂存器 转换成显示码 数码管显示 第 10 页 西华大学课程设计说明书 4 软件设计 高级语言是面向问题和计算过程的语言,它可通过于各种不同的计算机,用户编程时不必仔细了解所用的计算机的具体性能与指令系统,而且语句的功能强,常常一个语句已相当于很多条计算机指令,于是用高级语言编制程序的速度比较快,也便于学习和交流,而 MCS— 52 指令系统的指令长度较短,它在存储空间和执行时间方面具 有较高的效率,编成的程序占用内存单元少,执行也非常的快捷,与本系统的应用要求很适合。 而且 MCS— 52 指令系统有丰富的位操作(或称位处理)指令,可以形成一个相当完整的位操作指令子集,这是 MCS— 52 指令系统主要的优点之一。 对于要求反应灵敏与控制及时的工控、检测等实时控制系统以及要求体积小、系统小的许多“电脑化”产品,可以充分体现出汇编语言简明、整齐、执行时间短和易于使用的特点。 图 系统总流程图 系统程序主要有主程序和 LCD1602 初始化子程序及读写时序程序、 DS18B20 复位及读写时序子程序温度数字处理子程。 第 11 页 西华大学课程设计说明书 系统调试读出温度子程序 图 读出温度子程序 读出温度子程序的主要功能是读出 RAM 中的 9 字节,在读出时需进行 CRC 校验,校验有错时不进行温度数据的改写。 DS18B20 的各个命令对时序的要求特别严格,所以必须按照所要求的时序才能达到预期的目的,同时,要注意读进来的是高位在后低位在前,共有 12 位数,小数 4位,整数 7位,还有一位符号位。 第 12 页 西华大学课程设计说明书 系统调试写入子程序 图 写入子程序流程图 第 13 页 西华大学课程设计说明书 5 系统调试 硬件调试 是对温度显示器 LCD1602 进行调试,温度显示器通电后不显示温度,使用示波器对 LCD160单片机的每个管脚进行测试,对其进行分析是由于电阻值过大,调节滑动变阻器减小其阻值,液晶显示器显示温度为 0。 软件 调试是在温度大于 31℃,而报警器不报警,经检查,发现是温度写成 31000。 多写了两个 0,改正过后又发现报警器在温度大于 31℃时,只响一 次。 把 如下 程序的 =改为〉就 排出了这个异常。 void main() { init_play()。 //初始化显示 while(1) { read_temp()。 //读取温度 ds1820disp()。 //显示 if(tvalue310) Beef=0。 else Beef=1。 } }。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。