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

下载本文档

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

文档简介

课程设计说明书 第 I 页 恒温控制系统设计 摘 要 本设计基于 AT89C51 和 DB18B20 来实现温度控制器的制作,它以 89C51 单片机为核心,配以 DS18B20(数字温度传感器),LED 灯(模拟对温度的控制 系统) ,数码管来作为实时问的的显示。系统的设计思路比较简单,且易于实施。 在硬件设计方面,由 AT89C51、DS18B20(数字温度传感器)、数码管,小风扇, 金属膜电阻构成的电路,在软件方面,以单片机和 DS18B20 数字温度传感器为 中心,详细的阐述了系软件设计的思想,主流程图以及相应电路模块的流程图。 关键词:DS18B20 传感器,AT89C51,温度处理,程序 课程设计说明书 第 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 电路整体框图 2 相关芯片的介绍 用数字温度 传感器进行 温度的采集 用数字温度 传感器进行 温度的采集 用数字温度 传感器进行 温度的采集 用数字温度 传感器进行 温度的采集 用数字温度 传感器进行 温度的采集 用数字温度 传感器进行 温度的采集 数字温 度传感器 温控电路 数 码 管 显 示 处理程序 89C52 单片机 信号采集温度显示 编写控制程 序 启动温控 温度控制 课程设计说明书 第 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 页 2.2 DS18B20 数字温度传感器 2.2.1 DS18B20 的基本介绍 数字化温度传感器 DS18B20 芯片是世界上第一片采用单总线方式的温度传 感器。如图 2 为芯片的外形图和引脚图。图中显示了该芯片的两种封装形式, SOIC 为小外形集成电路封装,另一种为三极管外形封装。 图 2 DS18B20 芯片外形及引脚 该芯片测量物体的温度,并在单总线上传送测量数据。和传统的模拟信号 测量方式相比,它提高了抗御干扰的能力,适用于环境控制、设备控制、过程 控制以及测温类消费电子产品等领域。 1)三极管外形封装的 DS18B20,外形如同一只小功率三极管,其引脚定 义是: 1、GND 接地 2、DQ 单总线接口 3、VDD 电源 2) DS18B20 芯片的主要特点 工作电压 3.0V5.5V 温度测量范围 -55C125C 在10C +85C 范围内,测量精度为0.5C。 待机状态下无功率消耗。 可编程分辨率 912 位,每位分别代表 0.5C、0.25C、0.125C 和 0.0625 C。 课程设计说明书 第 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 即可得到实际测量温度的绝对 值。比如温度+125C 对应的转换数字为 07D0H,温度55C 对应的转换数 字为 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 页 温度变换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 页 延时 15 微秒。 (5)将数据线拉高“1” 。 (6)延时 15 微秒。 (7)读数据线的状 态得到 1 个状态位,并进行数据处理。 (8)延时 30 微秒。 根据 DS18B20 的通讯协议,主机(单片机)控制 DS18B20 完成温度转换 必须经过三个步骤:每一次读写之前都要对 DS18B20 进行 复位操作,复位成 功后发送一条 ROM 指令,最后发送 RAM 指令,这样才能对 DS18B20 进行预 定的操作。复位要求主 CPU 将数据线下拉 500 微秒,然后 释放,当 DS18B20 收到信号后等待 1660 微秒左右,后发出 60240 微秒的存在低脉冲,主 CPU 收到此信号表示复位成功。 3 硬件电路设计 3.1 主控制电路设计 由于本系统是利用 AT89C51 单片机设计的,因此,首先应该构建以 51 单 片机为核心的最小系统,然后在此最小系统的基础上进行扩展外围接口从而实 现不同功能的控制。 单片机的最基本的电路,由复位电路(RST)和晶振电路(为系统工作提 供时钟脉冲)两部分组成,电路图如图 3 所示。 图 3 单片机最基本电路 课程设计说明书 第 7 页 通过此最基本电路可以在外围加上显示电路、和温控电路以及 DS18B20 的 温度读取电路再加上程序的控制就可以工程一个恒温控制系统。 3.2 外围接口电路 1、DS18B20 电路 这个芯片是单总线设计模式,因此电路的连接非常简单,仅仅有数据口 DQ 和单片机的 P1.1 口相连接,然后就是电源线和地线,如下图所示: 图 4 DS18B20 电路 2、数码管显示电路 课程设计说明书 第 8 页 图 5 数码显示电路 数码显示电路(共阳数码管)是单片机的 P2、P3 口来控制的。P2 口接的 是数码管的段选地址,用以显示不同的数字;P3 口接的是数码管的为选,用不 同的位选以控制不同的数码管的显示情况。 3、温度控制电路 图 6 温度控制电路 温度控制电路是由单片机的 P1 口输出高低电平控制三极管 Q1 的导通与不 导通来控制继电器开关的闭合情况,这里用两个发光二极管作为温度控制的模 拟实现温度的控制。 4 软件系统软件设计 4.1 软件系统设计 一个应用系统要完成各项功能,首先必须有较完善的硬件作保证。同时还 必须得到相应设计合理的软件的支持,尤其是微机应用高速发展的今天,许多 由硬件完成的工作,都可通过软件编程而代替。甚至有些必须采用很复杂的硬 件电路才能完成的工作,用软件编程有时会变得很简单,如数字滤波,信号处 理等。因此充分利用其内部丰富的硬件资源和软件资源,采用与 C51 系列单片 机相对应的 C51 语言和结构化程序设计方法进行软件编程。 课程设计说明书 第 9 页 本装置的软件包括主程序、读出温度子程序、复位应答子程序、写入子程 序、以及有关 DS18B20 的程序(初始化子程序、写程序和读程序) 。 4.2 程序组成 系统程序主要包括主程序,读出温度子程序,写入子程序,门限调节子程 序等。 1)主程序 主程序的主要功能是负责对 DS18B20 传感器测量温度的读取,然后再通过 C51 的程序对读出的温度进行转化处理,最后在对温度的要求对环境进行控制 并通过显示设备显示出来。温度的读取显示与控制要相隔相当短的时间重复操 作,以实现对温度的准确控制。 通过调用读温度子程序把从温度传感器中读出的整数部分与小数部分存放 在一个字符串中,然后通过调用显示子程序显示出来,主程序的流程图如下图 7 所示。 开始 调用读温度子程序 温度处理并显示 温度是否 超出规定范围 Y/N N Y 课程设计说明书 第 10 页 图 7 主程序流程图 2)读出温度子程序 读出温度子程序的主要功能是读出 RAM 中的 9 字节,在读出时需进行 CRC 校验,校验有错时不进行温度数据的改写,程序流程图如图 8 所示。 DS18B20 的各个命令对时序的要求特别严格,所以必须按照所要求的时 序才能达到预期的目的,同时,要注意读进来的是高位在后低位在前,共有 16 位数,小数 4 位,整数 7 位,还有 5 位符号位,具体的参数见 DS18B20 温度传 感器的介绍(表 1) 。 跳过 ROM 匹配命令 写入子程序 温度转换命令 显示子程序(延时) 写入子程序 写入子程序 DS18B20 复位、应答子程序 DS18B20 复位、应答子程序 跳过 ROM 匹配命令 继电器工作 课程设计说明书 第 11 页 图 8 读出温度子程序流程图 3)温度处理并显示程序 由于单片机从 DS18B20 中读取道德温度是两个字节的数据,在这两个字节 的数据中高字节的 8 为数据中,高 5 位数据代表着符号位,当这 5 位全部为 1 时,表示这时所读取的温度是负值;低 3 位和低字节中的 8 位数据分别代表着 实时的温度,所以并不能直接将温度通过显示设备显示出来,而是需要通过相 应的程序作为处理才能作为最终的温度显示出来如图 8 所示。 图 8 温度处理并显示程序流程图 4.3 总程序 读温度命令子程序 终 止 判断温度的正负 (高字节数 127?) 温度为负数, 求出温度的补码 对温度进行处理保存 小数部分、百位、十位和个 位 把处理后的 数据显示出来 Y/N Y N 课程设计说明书 第 12 页 #include /包含单片机寄存器的头文件 #include /包含_nop_()函数定义的头文件 #include #include sbit DQ=P11; /定义数据口 sbit jdq=P10; /定义继电器控制口 sbit dot=P27; /定义显示小数点 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 duan4=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; for(i=0;i10;i+) for(j=0;j33;j+); /*-带参数 nms 的延时程序-*/ void delaynms(int n) 课程设计说明书 第 13 页 unsigned char i; for(i=0;in;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_DS18B202;time_DS18B20+) ;/略微延时约 6 微秒 DQ = 0; /再将数据线从高拉低,要求保持 480960us for(time_DS18B20=0;time_DS18B20200;time_DS18B20+); /略微延时 约 600 微秒以向 DS18B20 发出一持续 480960us 的低电平复位脉冲 DQ = 1; /释放数据线(将数据线拉高) for(time_DS18B20=0;time_DS18B2010;time_DS18B20+);/延时约 30us(释放总线后需等待 1560us 让 DS18B20 输出存在脉冲) flag_DS18B20=DQ; /让单片机检测是否输出了存在脉冲(DQ=0 表示存在) for(time_DS18B20=0;time_DS18B20=1; _nop_(); /等待一个机器周期 DQ = 1; /将数据线人为拉高,为单片机检测 DS18B20 的输 出电平作准备 for(time_DS18B20=0;time_DS18B203;time_DS18B20+); /延时约 6us,使主机在 15us 内采样 if(DQ=1) dat|=0 x80; /如果读到的数据是 1,则将 1 存入 dat else dat|=0 x00;/如果读到的数据是 0,则将 0 存入 dat 将单片机 检测到的电平信号 DQ 存入 ri for(time_DS18B20=0;time_DS18B208;time_DS18B20+);/延时 3us,两个读时序之间必须有大于 1us 的恢复期 return(dat); /返回读出的十进制数据 /*-写一个字节的程序- */ WriteOneChar(unsigned char dat) unsigned char i=0; for (i=0; i8; i+) 课程设计说明书 第 15 页 DQ =1; / 先将数据线拉高 _nop_(); /等待一个机器周期 DQ=0; /将数据线从高拉低时即启动写时序 DQ=dat /利用与运算取出要写的某位二进制数据,并将 其送到数据线上等待 DS18B20 采样 for(time_DS18B20=0;time_DS18B20=1; /将 dat 中的各二进制位数据右移 1 位 for(time_DS18B20=0;time_DS18B204;time_DS18B20+) ; /稍作延时, 给硬件一点反应时间 void ReadyReadTemp(void) Init_DS18B20(); /将 DS18B20 初始化 WriteOneChar(0 xCC); / 跳过读序号列号的操作 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; duan0=TL /保存小数部分的值 temp=(TH4); /将高 8 位的低 3 位和低 8 位 的高 4 位合并构成温度的整数部分 duan3=temp/100; /取百位 duan2=temp%100/10; /取十位 duan1=temp%10; /取个位 P2=xiaoshuduan0;/显示小数部分 P3=0 x01; delaynms(3); P3=0; if(duan3) /显示百位 P3=weikong3; P2=tableduan3; delaynms(3); P3=0; 课程设计说明书 第 17 页 if(duan3) /显示十位 P3=weikong2; P2=tableduan2; delaynms(3); P3=0; else if(duan2) /显示十位 P3=weikong2; P2=tableduan2; delaynms(3); P3=0; P3=weikong1; /显示个位 P2=tableduan1; dot=0; /显示小数点 delaynms(3); P3=0; if(flag) /当温度为负数时显示符号位 P2=0 xbf; if(!duan3) P3=0 x08; if(!duan2) P3=0 x04; 课程设计说明书 第 18 页 else P3=0 x10; delaynms(1); P3=0; flag=0; delaynms(25); /延时一段时间 /*-主程序- */ void main() while(1) /不断检测并显示温度 ReadyReadTemp(); /读温度准备 display(); if(temp35) /如果温度超出范围继电器工作控制温度 jdq=1; else jdq=0; /*-总程序结束-*/ 课程设计说明书 第 19 页 5 实时仿真 通过硬件电路的设计之后,根据对系统的不同的要求实时设计出与要求相 对应的软件程序,总体电路图如图 8 所示。 图 9 系统总体电路图 通过 kell 软件进行软件编写和编译,然后用 protues 绘制完电路图并把编译 生成的 xxx.hex 文件添加到 51 单片机内,然后运行。 当温度在正常的温度范围之内时,绿灯 D1 处于常亮状态,运行的具体情 况如图 10 所示。 课程设计说明书 第 20 页 图 10 正常温度范围状态 当温度超出正常的温度状态时,用通过 p1.0 口控制继电器来控制 D1、D2 的工作状态,来模拟对温度的恒温控制,状态如图 11 所示 图 11 超出正常温度的范围显示状态 课程设

温馨提示

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

评论

0/150

提交评论