恒温控制系统设计.doc_第1页
恒温控制系统设计.doc_第2页
恒温控制系统设计.doc_第3页
恒温控制系统设计.doc_第4页
恒温控制系统设计.doc_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

精品文档 I欢迎下载I欢迎下载 恒温控制系统设计 摘 要 本设计基于 AT89C51 和 DB18B20 来实现温度控制器的制作 它以 89C51 单 片机为核心 配以 DS18B20 数字温度传感器 LED 灯 模拟对温度的控制系统 数码管来作为实时问的的显示 系统的设计思路比较简单 且易于实施 在 硬件设计方面 由 AT89C51 DS18B20 数字温度传感器 数码管 小风扇 金 属膜电阻构成的电路 在软件方面 以单片机和 DS18B20 数字温度传感器为中 心 详细的阐述了系软件设计的思想 主流程图以及相应电路模块的流程图 关键词 DS18B20 传感器 AT89C51 温度处理 程序 精品文档 II欢迎下载II欢迎下载 目录 1 绪论 1 2 相关芯片的介绍 2 2 1 AT89C51 芯片 2 2 2 DS18B20 数字温度传感器 3 2 2 1 DS18B20 的基本介绍 3 2 2 2 DS18B20 指令以及读写 4 3 硬件电路设计 6 3 1 主控制电路设计 6 3 2 外围接口电路 7 4 软件系统软件设计 8 4 1 软件系统设计 8 4 2 程序组成 8 4 3 总程序 11 5 实时仿真 18 总结 21 致谢 22 参考文献 23 精品文档 1欢迎下载1欢迎下载 1 绪论 随着电子技术 特别是随大规模集成电路的产生而出现的微型计算机技术 的飞速发展 人类生活发生了根本性的改变 如果说微型计算机的出现使现代 科学研究得到了质的飞跃 那么可以毫不夸张地说 单片机技术的出现则是给 现代工业测控领域带来了一次新的技术革命 目前 单片机以其体积小 重量 轻 抗干扰能力强 对环境要求不高 高可靠性 高性能价格比 开发较为容 易 在工业控制系统 数据采集系统 智能化仪器仪表 办公自动化等诸多领 域得到极为广泛的应用 并已走人家庭 从洗衣机 微波炉到音响 汽车 到 处都可见到单片机的踪影 因此 单片机技术开发和应用水平已逐步成为一个 国家工业发展水平的标志之一 本课题研究的内容就是以单片机为主要控制元 件 通过温度传感器 实现对温度的测量 并通过数码管直接显示所测温度 由于使用模拟温度传感器来读取温度的话操作比较麻烦 因此本课程设计 恒温控制系统是由数字温度传感器 单片机系统 温度显示系统 温控电路构 成 其基本工作原理 单片机通过程序处理和数字温度传感器进行通讯 从而 读取其中的温度 然后同过程序处理实现数码管的控制显示出当前的温度 当 温度超出所要求的温度范围后 通过程序处理实现单片机对温控电路的控制 当温度达到要求的范围之后停止温控电路的工作 从而实现恒温控制 基本工 作原理框图如图 1 所示 图 1 电路整体框图 2 相关芯片的介绍 用数字温度 传感器进行 温度的采集 用数字温度 传感器进行 温度的采集 用数字温度 传感器进行 温度的采集 用数字温度 传感器进行 温度的采集 用数字温度 传感器进行 温度的采集 用数字温度 传感器进行 温度的采集 数字温 度传感器 温控电路 数 码 管 显 示 处理程序 89C52 单片机 信号采集温度显示 编写控制程 序 启动温控 温度控制 精品文档 2欢迎下载2欢迎下载 2 1 AT89C51 芯片 AT89C51 是美国 ATMEL 公司生产的低电压 高性能 CMOS 8 位单片机 片内 含 4k bytes 的反复擦写的 Flash 只读程序存储器和 128 bytes 的随机存取数据 存储器 RAM 器件采用 ATMEL 公司高密度 非易失性存储技术生产 兼容标 准 MCS 51 指令系统 片内置通用 8 位中央处理器 CPU 和 Flash 存储单元 功能强大 AT89C51 单片机可为您提供许多高性价比的应用场合 可灵活应用于 各种控制领域 AT89C51 引脚图如图 2 所示 图 2 AT89C51 引脚图 AT89C51 的功能特性 AT89C51 提供以下标准功能 4K 字节 Flash 闪速存储器 128 字节内部 RAM 32 个 I O 口线 两个十六位定时 计数器 一个 5 向量两级中断结构 一 个全双工串行通信口 片内振荡器及时钟电路 同时 AT89C51 可降至 0Hz 的 静态逻辑操作 并支持两种软件可选的节电工作模式 空闲方式停止 CPU 的工 作 但允许 RAM 定时 计数器 串行通信口及中断系统继续工作 掉电方式保 存 RAM 中的内容 但振荡器停止工作并禁止其他所有部件工作直到下一个硬件 复位 精品文档 3欢迎下载3欢迎下载 2 2 DS18B20 数字温度传感器 2 2 1 DS18B20 的基本介绍 数字化温度传感器 DS18B20 芯片是世界上第一片采用单总线方式的温度传 感器 如图 2 为芯片的外形图和引脚图 图中显示了该芯片的两种封装形式 SOIC 为小外形集成电路封装 另一种为三极管外形封装 图 2 DS18B20 芯片外形及引脚 该芯片测量物体的温度 并在单总线上传送测量数据 和传统的模拟信号 测量方式相比 它提高了抗御干扰的能力 适用于环境控制 设备控制 过程 控制以及测温类消费电子产品等领域 1 三极管外形封装的 DS18B20 外形如同一只小功率三极管 其引脚定义 是 1 GND 接地 2 DQ 单总线接口 3 VDD 电源 2 DS18B20 芯片的主要特点 工作电压 3 0V 5 5V 温度测量范围 55 C 125 C 在 10 C 85 C 范围内 测量精度为 0 5 C 待机状态下无功率消耗 可编程分辨率 9 12 位 每位分别代表 0 5 C 0 25 C 0 125 C 和 0 0625 C 精品文档 4欢迎下载4欢迎下载 温度测量时间 200ms 温度传感器是芯片的核心部分 它连续地对物体温度进行测量 并连续地 将新测量结果存放在高速暂存器 RAM 中 存放形式如表 1 表 1 温度传感器的温度表 低字节 LS Byte Bit 7Bit 6Bit 5Bit 4Bit 3Bit 2Bit 1Bit 0 2322212 02 12 22 32 4 高字节 MS Byte Bit 7Bit 6Bit 5Bit 4Bit 3Bit 2Bit 1Bit 0 SSSSS26252 4 测量温度值被放在两个字节中 高字节的高 5 位是符号位 代表一位符号 若这 5 位均为 0 表示符号为正 测量温度为正值 若这 5 位均为 1 则 表示符号为负 测量的温度为负值 高字节的低 3 位和低字节的 8 位 共 11 位 是测量的数值部分 测量值为正时 将数值乘以 0 0625 即可得到实际测量温度 数 测量值为负时 将数值其变补再乘以 0 0625 即可得到实际测量温度的绝对 值 比如温度 125 C 对应的转换数字为 07D0H 温度 55 C 对应的转换数字 为 FC90H 2 2 2 DS18B20 指令以及读写 1 DS18B20 的 ROM 指令和 RAM 指令 ROM 指令用来确认 DS18B20 的身份 即在众多的单总线芯片或多个 DS18B20 中指定某一个芯片作为操作对象 确定的基本方式是核对各芯片的 64 位的序列 号代码 该过程比较复杂 需要若干条 ROM 指令的配合 在仅用 1 个 DS18B20 芯片的场合 只需用 跳过 指令 CCH 就可省略确认身份的过程 DS18B20 的 RAM 指令见表 2 RAM 指令用来对已经确认身份 被指定为操作 对象的 DS18B20 芯片进行具体的读写操作 表 2 DS18B20 的 RAM 指令 指令代 码功 能 精品文档 5欢迎下载5欢迎下载 温度变换 44H 启动温度转换 12 位转换时最长为 750ms 结果存入内部 9 字节 RAM 中 指令代 码功 能 读暂存器 BEH 读 DS18B20RAM 中 9 字节内容 写暂存器 4EH 发出向内部 RAM 的 2 3 4 字节写上 下限温 度数据和配置寄存器命令 紧跟该命令之后 是传送三字节的数据 复制暂存器 48H 将 RAM 中 2 3 字节的内容复制到 E2PROM 中 重调 E2PROM B8H 将 E2PROM 中内容恢复到 RAM 中的第 2 3 字节 读供电方式 B4H 读供电模式 寄生供电模式时发送 0 外接 电源供电发 1 2 DS18B20 的读写操作过程 1 DS18B20 的初始化 1 先将数据线置高电平 1 2 延时 该时间要求的不是很严格 但是尽可能的短一点 3 数据线拉到低电平 0 4 延时 750 微秒 该 时间的时间范围可以从 480 到 960 微秒 5 数据线拉到高电平 1 6 延时等待 如果初始化成功则在 15 到 60 毫秒时间之内产生一个由 DS18B20 所 返回的低电平 0 据该状态可以来确定它的存在 但是应注意不能无限的进 行等待 不然会使程序进入死循环 所以要进行超时控制 7 若 CPU 读到 了数据线上的低电平 0 后 还要做延时 其延时的时间从发出的高电平算起 第 5 步的时间算起 最少要 480 微秒 8 将数据线再次拉高到高电平 1 后结束 2 DS18B20 的写操作 1 数据线先置低电平 0 2 延时确定的时间为 15 微秒 3 按 从低位到高位的顺序发送字节 一次只发送一位 4 延时时间为 45 微秒 5 将数据线拉到高电平 6 重复上 1 到 6 的操作直到所有的字节 全部发送完为止 7 最后将数据线拉高 3 DS18B20 的读操作 1 将数据线拉高 1 2 延时 2 微秒 3 将数据线拉低 0 4 精品文档 6欢迎下载6欢迎下载 延时 15 微秒 5 将数据线拉高 1 6 延时 15 微秒 7 读数据线的状 态得到 1 个状态位 并进行数据处理 8 延时 30 微秒 根据 DS18B20 的通讯协议 主机 单片机 控制 DS18B20 完成温度转换必 须经过三个步骤 每一次读写之前都要对 DS18B20 进行 复位操作 复位成功后 发送一条 ROM 指令 最后发送 RAM 指令 这样才能对 DS18B20 进行预定的操作 复位要求主 CPU 将数据线下拉 500 微秒 然后 释放 当 DS18B20 收到信号后等 待 16 60 微秒左右 后发出 60 240 微秒的存在低脉冲 主 CPU 收到此信号表 示复位成功 3 硬件电路设计 3 1 主控制电路设计 由于本系统是利用 AT89C51 单片机设计的 因此 首先应该构建以 51 单片 机为核心的最小系统 然后在此最小系统的基础上进行扩展外围接口从而实现 不同功能的控制 单片机的最基本的电路 由复位电路 RST 和晶振电路 为系统工作提供 时钟脉冲 两部分组成 电路图如图 3 所示 图 3 单片机最基本电路 精品文档 7欢迎下载7欢迎下载 通过此最基本电路可以在外围加上显示电路 和温控电路以及 DS18B20 的 温度读取电路再加上程序的控制就可以工程一个恒温控制系统 3 2 外围接口电路 1 DS18B20 电路 这个芯片是单总线设计模式 因此电路的连接非常简单 仅仅有数据口 DQ 和单片机的 P1 1 口相连接 然后就是电源线和地线 如下图所示 图 4 DS18B20 电路 2 数码管显示电路 精品文档 8欢迎下载8欢迎下载 图 5 数码显示电路 数码显示电路 共阳数码管 是单片机的 P2 P3 口来控制的 P2 口接的 是数码管的段选地址 用以显示不同的数字 P3 口接的是数码管的为选 用不 同的位选以控制不同的数码管的显示情况 3 温度控制电路 图 6 温度控制电路 温度控制电路是由单片机的 P1 口输出高低电平控制三极管 Q1 的导通与不 导通来控制继电器开关的闭合情况 这里用两个发光二极管作为温度控制的模 拟实现温度的控制 4 软件系统软件设计 4 1 软件系统设计 一个应用系统要完成各项功能 首先必须有较完善的硬件作保证 同时还 必须得到相应设计合理的软件的支持 尤其是微机应用高速发展的今天 许多 由硬件完成的工作 都可通过软件编程而代替 甚至有些必须采用很复杂的硬 件电路才能完成的工作 用软件编程有时会变得很简单 如数字滤波 信号处 理等 因此充分利用其内部丰富的硬件资源和软件资源 采用与 C51 系列单片 机相对应的 C51 语言和结构化程序设计方法进行软件编程 精品文档 9欢迎下载9欢迎下载 本装置的软件包括主程序 读出温度子程序 复位应答子程序 写入子程 序 以及有关 DS18B20 的程序 初始化子程序 写程序和读程序 4 2 程序组成 系统程序主要包括主程序 读出温度子程序 写入子程序 门限调节子程 序等 1 主程序 主程序的主要功能是负责对 DS18B20 传感器测量温度的读取 然后再通过 C51 的程序对读出的温度进行转化处理 最后在对温度的要求对环境进行控制 并通过显示设备显示出来 温度的读取显示与控制要相隔相当短的时间重复操 作 以实现对温度的准确控制 通过调用读温度子程序把从温度传感器中读出的整数部分与小数部分存放 在一个字符串中 然后通过调用显示子程序显示出来 主程序的流程图如下图 7 所示 开始 调用读温度子程序 温度处理并显示 温度是否 超出规定范围 Y N N Y 精品文档 10欢迎下载10欢迎下载 图 7 主程序流程图 2 读出温度子程序 读出温度子程序的主要功能是读出 RAM 中的 9 字节 在读出时需进行 CRC 校验 校验有错时不进行温度数据的改写 程序流程图如图 8 所示 DS18B20 的各个命令对时序的要求特别严格 所以必须按照所要求的时序 才能达到预期的目的 同时 要注意读进来的是高位在后低位在前 共有 16 位 数 小数 4 位 整数 7 位 还有 5 位符号位 具体的参数见 DS18B20 温度传感 器的介绍 表 1 跳过 ROM 匹配命令 写入子程序 温度转换命令 显示子程序 延时 写入子程序 写入子程序 DS18B20 复位 应答子程序 DS18B20 复位 应答子程序 跳过 ROM 匹配命令 继电器工作 精品文档 11欢迎下载11欢迎下载 图 8 读出温度子程序流程图 3 温度处理并显示程序 由于单片机从 DS18B20 中读取道德温度是两个字节的数据 在这两个字节 的数据中高字节的 8 为数据中 高 5 位数据代表着符号位 当这 5 位全部为 1 时 表示这时所读取的温度是负值 低 3 位和低字节中的 8 位数据分别代表着 实时的温度 所以并不能直接将温度通过显示设备显示出来 而是需要通过相 应的程序作为处理才能作为最终的温度显示出来如图 8 所示 图 8 温度处理并显示程序流程图 4 3 总程序 读温度命令子程序 终 止 判断温度的正负 高字节数 127 温度为负数 求出温度的补码 对温度进行处理保存 小数部分 百位 十位和个 位 把处理后的 数据显示出来 Y N Y N 精品文档 12欢迎下载12欢迎下载 include 包含单片机寄存器的头文件 include 包含 nop 函数定义的头文件 include include sbit DQ P1 1 定义数据口 sbit jdq P1 0 定义继电器控制口 sbit dot P2 7 定义显示小数点 unsigned char code xiaoshu 0 xc0 0 xc0 0 xf9 0 xf9 0 xa4 0 xb0 0 xb0 0 x99 0 x92 0 x92 0 x82 0 xf8 0 xf8 0 x80 0 x80 0 x90 char duan 4 0 0 0 0 存放段控的数据 unsigned char code weikong 0 x01 0 x02 0 x04 0 x08 0 x10 0 x20 存放数码管的位控数据 unsigned char code table 0 xc0 0 xf9 0 xa4 0 xb0 0 x99 0 x92 0 x82 0 xf8 0 x80 0 x90 0 x88 0 x83 0 xc6 0 xa1 0 x86 0 x8e 数码管显示字符 int bai shi ge flag 0 i unsigned char temp unsigned char TL 储存暂存器的温度低位 unsigned char TH 储存暂存器的温度高位 unsigned char TN 储存温度的整数部分 unsigned int TD 储存温度的小数部分 1ms 的延时程序 void delay1ms unsigned char i j 精品文档 13欢迎下载13欢迎下载 for i 0 i 10 i for j 0 j 33 j 带参数 nms 的延时程序 void delaynms int n unsigned char i for i 0 i n i delay1ms unsigned char time DS18B20 设置全局变量 专门用于严格延时 DS18B20 的初始化 bit Init DS18B20 void bit flag DS18B20 储存 DS18B20 是否存在的标志 flag 0 表示存在 flag 1 表示不存在 DQ 1 先将数据线拉高 for time DS18B20 0 time DS18B20 2 time DS18B20 略微延时约 6 微秒 DQ 0 再将数据线从高拉低 要求保持 480 960us for time DS18B20 0 time DS18B20 200 time DS18B20 略微延 时约 600 微秒以向 DS18B20 发出一持续 480 960us 的低电平复位脉冲 DQ 1 释放数据线 将数据线拉高 for time DS18B20 0 time DS18B20 10 time DS18B20 延时约 30us 释放总线后需等待 15 60us 让 DS18B20 输出存在脉冲 flag DS18B20 DQ 让单片机检测是否输出了存在脉冲 DQ 0 表示存在 精品文档 14欢迎下载14欢迎下载 for time DS18B20 0 time DS18B20 200 time DS18B20 延时足够 长时间 等待存在脉冲输出完毕 return flag DS18B20 返回检测成功标志 读一个字节的程序 unsigned char ReadOneChar unsigned char i 0 unsigned char dat 储存读出的一个字节数据 for i 0 i 1 nop 等待一个机器周期 DQ 1 将数据线 人为 拉高 为单片机检测 DS18B20 的 输出电平作准备 for time DS18B20 0 time DS18B20 3 time DS18B20 延时约 6us 使主机在 15us 内采样 if DQ 1 dat 0 x80 如果读到的数据是 1 则将 1 存入 dat else dat 0 x00 如果读到的数据是 0 则将 0 存入 dat 将单片 机检测到的电平信号 DQ 存入 r i for time DS18B20 0 time DS18B20 8 time DS18B20 延 时 3us 两个读时序之间必须有大于 1us 的恢复期 精品文档 15欢迎下载15欢迎下载 return dat 返回读出的十进制数据 写一个字节的程序 WriteOneChar unsigned char dat unsigned char i 0 for i 0 i 8 i DQ 1 先将数据线拉高 nop 等待一个机器周期 DQ 0 将数据线从高拉低时即启动写时序 DQ dat 利用与运算取出要写的某位二进制数据 并将 其送到数据线上等待 DS18B20 采样 for time DS18B20 0 time DS18B20 10 time DS18B20 延时 约 30us DS18B20 在拉低后的约 15 60us 期间从数据线上采样 DQ 1 释放数据线 for time DS18B20 0 time DS18B20 1 将 dat 中的各二进制位数据右移 1 位 for time DS18B20 0 time DS18B20 4 time DS18B20 稍作延 时 给硬件一点反应时间 void ReadyReadTemp void Init DS18B20 将 DS18B20 初始化 WriteOneChar 0 xCC 跳过读序号列号的操作 精品文档 16欢迎下载16欢迎下载 WriteOneChar 0 x44 启动温度转换 for time DS18B20 0 time DS18B20 8 TH TH 当温度为负数时求负数的补码 TL TL TL TL 1 flag 1 当温度为负值时标志置 1 if TL 0 TH 1 duan 0 TL 保存小数部分的值 temp TH 4 将高 8 位的低 3 位和低 8 位的高 4 位合并构成温度的整数部分 duan 3 temp 100 取百位 duan 2 temp 100 10 取十位 duan 1 temp 10 取个位 精品文档 17欢迎下载17欢迎下载 P2 xiaoshu duan 0 显示小数部分 P3 0 x01 delaynms 3 P3 0 if duan 3 显示百位 P3 weikong 3 P2 table duan 3 delaynms 3 P3 0 if duan 3 显示十位 P3 weikong 2 P2 table duan 2 delaynms 3 P3 0 else if duan 2 显示十位 P3 weikong 2 P2 table duan 2 delaynms 3 P3 0 P3 weikong 1 显示个位 精品文档 18欢迎下载18欢迎下载 P2 table duan 1 dot 0 显示小数点 delaynms 3 P3 0 if flag 当温度为负数时显示符号位 P2 0 xbf if duan 3 P3 0 x08 if duan 2 P3 0 x04 else P3 0 x10 delaynms 1 P3 0 flag 0 delaynms 25 延时一段时间 主程序 void main while 1 不断检测并显示温度 ReadyReadTemp 读温度准备 精品文档 19欢迎下载19欢迎下载 display if temp35 如果温度超出范围继电器工作控制温 度 jdq 1 else jdq 0 总程序结束 5 实时仿真 通过硬件电路的设计之后 根据对系统的不同的要求实时设计出与要求相 对应的软件程序 总体电路图如图 8 所示 精品文档 20欢迎下载20欢迎下载 图 9 系统总体电路图 通过 kell 软件进行软件编写和编译 然后用 protues 绘制完电路图并把编 译生成的 xxx hex 文件添加到 51 单片机内 然后运行 当温度在正常的温度范围之内时 绿灯 D1 处于常亮状态 运行的具体情况 如图 10 所示 精品文档 21欢迎下载21欢迎下载 图 10 正常温度范围状态 当温度超出正常的温度状态时 用通过 p1 0 口控制继电器来控制 D1 D2 的工作状态 来模拟对温度的恒温控制 状态如图 11 所示 图 11 超出正常温度的范围显示状态 精品文档 22欢迎下载22欢迎下载 总结 课程设计是培养学生综合运用所学知识 来解决实际问题 锻炼实践能力的 重要环节 是对学生动手能力的和理论相结合的过程 此次恒温

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论