多机温度检测 89c51 单片机 河南理工大学课程设计 电气学院课程设计 电气毕业设计 ds18b20.docx
- 文档编号:4130704
- 上传时间:2022-11-28
- 格式:DOCX
- 页数:28
- 大小:420.30KB
多机温度检测 89c51 单片机 河南理工大学课程设计 电气学院课程设计 电气毕业设计 ds18b20.docx
《多机温度检测 89c51 单片机 河南理工大学课程设计 电气学院课程设计 电气毕业设计 ds18b20.docx》由会员分享,可在线阅读,更多相关《多机温度检测 89c51 单片机 河南理工大学课程设计 电气学院课程设计 电气毕业设计 ds18b20.docx(28页珍藏版)》请在冰豆网上搜索。
多机温度检测89c51单片机河南理工大学课程设计电气学院课程设计电气毕业设计ds18b20
河南理工大学
《单片机应用与仿真训练》设计报告
多机温度检测系统设计
姓名:
学号:
专业班级:
自动化班
指导老师:
所在学院:
电气工程与自动化学院
2012年月日
摘要
本设计是以AT89S52单片机为控制核心,利用新型一线制温度传感器DS18B20测量温度值,实现环境温度的检测和报警。
系统测温范围为0℃—100℃,测量精度为0.25℃。
用户可以自定义报警上、下限,一旦温度超过极限值,单片机便启动声光报警。
该系统精度高、测温范围广、报警及时,可广泛应用于基于单片机的测温报警场合。
系统抗干扰性强、设计灵活方便,适合在恶劣的环境下进行温度测量。
系统硬件电路包括传感器数据采集、温度显示、模式选择、上、下限报警主电路等。
整个装置的控制核心是AT89S52单片机。
温度传感器DS18B20采用外部电源供电,传感器输出引脚直接和单片机相连。
电路支持模式选择功能,可以选择设定报警极限值或显示当前温度值。
当被测温度越限时,报警主电路产生声光报警。
拨动开关可以对设定报警极限值进行写保护。
采用2片单片机,组成多机温度检测系统;下位单片机采集温度,通过串行通信传送至上位单片机;上位单片机用数码管显示温度大小;基本范围0℃~100℃;精度误差小于0.25℃;可以任意设定温度的上下限报警功能。
关键字:
AT89S52单片机DS18B20温度传感器数码管测温报警
目录
1概述4
1.1设计应用背景4
1.2任务和要求5
1.3系统概述5
2系统总体方案及硬件设计7
2.1方案比较7
2.2总体方案7
2.3AT89S528
2.4时钟晶振电路8
2.5复位电路9
2.6数码管显示9
2.7设置温度上下限电路10
2.8报警电路11
2.9温度检测电路12
2.9.1数字温度传感器DS18B2012
2.9.2DS18B20温度检测17
3软件设计18
3.1概述18
3.2主程序方案18
3.3DS18B20的相处理子程序19
3.3.1初始化子程序19
3.3.3读出温度子程序19
3.3.4温度转换子程序20
3.4工作流程图20
3.4.1上位机工作过程20
3.4.2DS18B20工作过程21
3.4.3下位机接收过程22
3.5上位机与从机通信软件设计22
3.5.1多机通信软件原理23
3.5.2主机数据发送程序23
3.5.3从机数据接收程序24
4Proteus软件仿真25
4.1仿真初始25
4.2系统达到设定值报警25
5课程设计体会27
参考文献27
附录28
附1:
源程序代码28
附2:
系统原理图33
1概述
1.1设计应用背景
在现代社会,不管是在工、农业生产还是在人们的日常生活中,对温度的测量及控制都扮演着很重要的角色。
首先让我们了解一下多点温度检测系统在各个方面的应用领域:
消防电气的非破坏性温度检测,电力、电讯设备之过热故障预知检测,空调系统的温度检测,各类运输工具之组件的过热检测,保全与监视系统之应用,医疗与健诊的温度测试,化工、机械…等设备温度过热测。
温度检测系统应用十分广阔。
单片机的产生,使计算机正式形成了通用计算机系统和嵌入式计算机系统的分支。
温度检测系统的应用遍布社会生活的各个层面。
1.2任务和要求
任务:
设计多机温度检测系统,实时检测温度。
基本要求:
(1)采用2片单片机,组成多机温度检测系统;
(2)下位单片机采集温度,通过串行通信传送至上位单片机;
(3)上位单片机用数码管显示温度大小。
(4)基本范围0℃~100℃
(5)精度误差小于0.5℃
1.3系统概述
本设计运用主从分布式思想,由上位机,下位机多点温度数据采集,组成两级分布式多点温度测量的巡回检测系统。
通过上位机控制下位机进行现场温度采集。
温度值由下位机单独工作,实时显示当前各点的温度值,对各点进行控制。
上位机采用的是单片机基于数字温度传感器DS18B20利用单总线的特点可以方便的实现多点温度的测量,轻松的组建传感器网络,系统的抗干扰性好、设计灵活、方便,而且适合于在恶劣的环境下进行现场温度测量。
总体上该系统分为两部分:
所以多点温度检测系统的设计的关键在于两部分:
上位机温度采集发送系统和下位机数码管显示报警系统。
上位机温度采集发送系统由温度检测模块、上位机控制模块、发送放大模块三部分组成,如图1-1所示温度测量系统的系统框图:
发送放
大模块
上位机
控制模块
温度
采集
图1-1温度测量系统框图
下位机数码管显示报警系统:
下位机系统的主要功能是接受上位机发送过来的温度数据,与报警温度进行比较,判断是否发送报警信号,并同时直接驱动四位八段数码管进行显示。
上位机系统由串口接收模块、处理控制模块、数码管显示模块和报警模块四部分组成,如图1-2上位机系统框图:
数码管显示
处理控制
串口接收
报警控制模块
图1-2下位机系统框图
2系统总体方案及硬件设计
2.1方案比较
方案一:
此方案采用PC机实现。
它可在线编程,可在线仿真的功能,这让调试变得方便。
且人机交互友好。
但是PC机输出信号不能直接与DS18B20通信。
需要通过RS232电平转换兼容,硬件的合成在线调试,较为繁琐,很不简便。
方案二:
此方案采用两片AT89S52八位单片机实现。
单片机软件编程的自由度大,可通过编程实现各种各样的算术算法和逻辑控制。
而且体积小,硬件实现简单,安装方便。
既可以单独对多DS18B20控制工作,还可以与PC机通信.运用主从分布式思想,由一台上位机,下位机多点温度数据采集,组成两级分布式多点温度测量的巡回检测系统,实现远程控制。
经过比较,采用两片AT89S52单片机可以出色完成各项设计要求,而且结构简单,程序调试方便,具有很好的应用前景。
2.2总体方案
该数字温度检测系统由电源电路、晶振电路、复位电路、下载电路、单片机、数字显示电路、温度测量电路、报警电路和控制电路组成。
可以实现基本范围为0℃~100℃的温度测量和任意设置温度上下限。
当所设置的温度高于温度的上限或者低于温度所设置的下限时可通过发光二极管进行报警。
系统总体方案图如下:
单片机控制系统
LED显示
复位电路
报警显示
时钟电路
按键控制电路
温度传感
图2-2系统总体方案图
2.3AT89S52
AT89S52单片机
AT89S52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。
使用Atmel公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。
片上Flash允许程序存储器在系统可编程,亦适于常规编程器。
在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。
AT89S52具有以下标准功能:
8k字节Flash,256字节RAM,32位I/O口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。
另外,AT89S52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。
空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。
掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。
2.4时钟晶振电路
时钟晶振电路模块为单片机提供特定的时钟周期,以备单片机工作使用。
单片机内部有一个用于构成振荡器的高增益反相放大器的输入与输出端分别是引脚XTAL1和XTAL2,在两引脚上外接时钟源即可构成时钟电路。
其电路图如下图2-4所示:
图2-4晶振电路
2.5复位电路
系统的复位电路在这里采用的是上电+按钮复位电路形式,其中电阻R1/R2分别采用1k、10k的阻值,电容采用电容值为10μF的电解电容。
具体连接电路如图2-5所示:
图2-5复位电路
2.6数码管显示
设计中用到的数码管为:
5461AS四位共阴极二极管显示器12345678是阴极公共端,也是位码,ABCDEFGDP是段码。
LED的驱动电路简单,使用方便,具有耗电少、成本低廉、配置简单灵活、安装方便、耐振动、使用寿命长等优点。
LED数码管与单片机的接口按显示方法可分为静态显示和动态显示。
静态显示就是显示驱动电路具有输出锁存功能,单片机将要显示的数据送出后就不再控制LED,直到下一次显示时再传送一次新的数据。
只要当前显示的数据没有变化,就无须理睬数码显示管。
静态显示的数据稳定,占用的CPU时间少。
静态显示中,每一个显示器都要占用单独具有琐存功能的I/O口,该接口用于笔画段字型代码。
动态扫描方法是用其接口电路把所有显示器的8个笔画字段(a~g和dp)同名端连在一起,而每一个显示器的公共极COM各自独立接受I/O线控制。
CPU向字段输出端口输出字型码时,所有显示器接受相同的字型码,但究竟使那一位则由I/O线决定。
动态扫描用分时的方法轮流控制每个显示器的COM端,使每个显示器轮流电亮。
在轮流点亮过程中,每位显示器的点亮时间极为短暂,但由于人的视觉暂留现象及发光二极管的余辉效应,给人的印象就是一组稳定的显示数据。
这里用的是动态扫描显示。
如图2.6.1所示:
图2-6.1四位数码管
CPU向字段输出端口输出字型码时,所有显示器接收到相同的字型码,但究竟是使用哪个显示器,则取决于COM端,而这一端是由I/O控制的,由单片机程序设定何时显示哪一位。
2.7设置温度上下限电路
温度的上下限可以通过按键进行设置。
温度上下限设置电路如图2-7所示:
图2-7设置温度上下限电路
2.8报警电路
电路采用的是二极管发光报警电路,当温度达到设定上下限时二极管发光报警。
在图中,P1.0接二极管负极。
当P1.0输出低电平“0”时,二极管D1导通,二极管D1获得足够大的电压而发光;当P1.0输出高电平“1”时,二极管D1不亮。
另一个二极管的原理和它一样,二者分别控制上下限报警。
电路图如下图2-8所示:
图2-8报警电路
2.9温度检测电路
2.9.1数字温度传感器DS18B20
DS18B20一线式数字温度传感器,具有3引脚TO-92小体积封装形式。
测温分辨率可达0.0625℃,被测温度用符号扩展的16位数字量方式串行输出。
其工作电源既可在远端引入,也可采用寄生电源方式产生。
CPU只需一根端口线就能与诸多DS18B20通信,占用微处理器的端口少,可节省大量的引线和逻辑电路。
⑴、DS18B20的主要特性
①、适应电压范围更宽,电压范围:
3.0~5.5V,在寄生电源方式下可由数据线供电。
②、独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。
③、DS18B20支持多点组网功能,多个DS18B20可以并联在唯一的三线上,实现组网多点测温。
④、DS18B20在使用中不需要任何外围元件,全部传感元件及转换电路集成在形如一只三极管的集成电路内。
⑤、温范围-55℃~+125℃,在-10~+85℃时精度为±0.5℃。
⑥、可编程的分辨率为9~12位,对应的可分辨温度分别为0.5℃、0.25℃、0.125℃和0.0625℃,可实现高精度测温。
⑦、在9位分辨率时最多在93.75ms内把温度转换为数字,12位分辨率时最多在750ms内把温度值转换为数字,速度更快。
⑵、DS18B20的外形和内部结构
图1DS18B20的外形和内部结构
DS18B20内部结构主要由四部分组成:
64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。
DS18B20的外形及管脚排列如上图。
DS18B20引脚定义:
①、DQ为数字信号输入/输出端;
②、GND为电源地;
③、VDD为外接供电电源输入端(在寄生电源接线方式时接地)。
图2:
DS18B20内部结构图
DS18B20有4个主要的数据部件:
①、光刻ROM中的64位序列号是出厂前被光刻好的,它可以看作是该DS18B20的地址序列码。
64位光刻ROM的排列是:
开始8位(28H)是产品类型标号,接着的48位是该DS18B20自身的序列号,最后8位是前面56位的循环冗余校验码(CRC=X8+X5+X4+1)。
光刻ROM的作用是使每一个DS18B20都各不相同,这样就可以实现一根总线上挂接多个DS18B20的目的。
②、DS18B20中的温度传感器可完成对温度的测量,以12位转化为例:
用16位符号扩展的二进制补码读数形式提供,以0.0625℃/LSB形式表达,其中S为符号位。
表1:
DS18B20温度值格式表
这是12位转化后得到的12位数据,存储在18B20的两个8比特的RAM中,二进制中的前面5位是符号位,如果测得的温度大于0,这5位为0,只要将测到的数值乘于0.0625即可得到实际温度;如果温度小于0,这5位为1,测到的数值需要取反加1再乘于0.0625即可得到实际温度。
表2:
DS18B20温度数据表
例如+125℃的数字输出为07D0H(0x7D),+25.0625℃的数字输出为0191H,-25.0625℃的数字输出为FE6FH,-55℃的数字输出为FC90H。
③、DS18B20温度传感器的存储器
DS18B20温度传感器的内部存储器包括一个高速暂存RAM和一个非易失性的可电擦除的EEPRAM,后者存放高温度和低温度触发器TH、TL和结构寄存器。
④、配置寄存器该字节各位的意义如下:
表3:
配置寄存器结构
TM
R1
R0
1
1
1
1
1
低五位一直都是"1",TM是测试模式位,用于设置DS18B20在工作模式还是在测试模式。
在DS18B20出厂时该位被设置为0,用户不要去改动。
R1和R0用来设置分辨率,如下表所示:
(DS18B20出厂时被设置为12位)
表4:
温度分辨率设置表
R1
R0
分辨率
温度最大转换时间
0
0
9位
93.75ms
0
1
10位
187.5ms
1
0
11位
375ms
1
1
12位
750ms
⑶、高速暂存存储器
高速暂存存储器由9个字节组成,其分配如表5所示。
当温度转换命令发布后,经转换所得的温度值以二字节补码形式存放在高速暂存存储器的第0和第1个字节。
单片机可通过单线接口读到该数据,读取时低位在前,高位在后,数据格式如表1所示。
对应的温度计算:
当符号位S=0时,直接将二进制位转换为
十进制;当S=1时,先将补码变为原码,再计算十进制值。
表2是对应的一部分温度值。
第九个字节是冗余检验字节。
表5:
DS18B20暂存寄存器分布
寄存器内容
字节地址
温度值低位(LSByte)
0
温度值高位(MSByte)
1
高温限值(TH)
2
低温限值(TL)
3
配置寄存器
4
保留
5
保留
6
保留
7
CRC校验值
8
根据DS18B20的通讯协议,主机(单片机)控制DS18B20完成温度转换必须经过三个步骤:
每一次读写之前都要对DS18B20进行复位操作,复位成功后发送一条ROM指令,最后发送RAM指令,这样才能对DS18B20进行预定的操作。
复位要求主CPU将数据线下拉500微秒,然后释放,当DS18B20收到信号后等待16~60微秒左右后发出60~240微秒的存在低脉冲,主CPU收到此信号表示复位成功。
表6:
ROM指令表
指令
约定代码
功能
读ROM
33H
读DS1820温度传感器ROM中的编码(即64位地址)
符合ROM
55H
发出此命令之后,接着发出64位ROM编码,访问单总线上与该编码相对应的DS1820使之作出响应,为下一步对该DS1820的读写作准备。
搜索ROM
0FOH
用于确定挂接在同一总线上DS1820的个数和识别64位ROM地址。
为操作各器件作好准备。
跳过ROM
0CCH
忽略64位ROM地址,直接向DS1820发温度变换命令。
适用于单片工作。
告警搜索命令
0ECH
执行后只有温度超过设定值上限或下限的片子才做出响应。
表7:
RAM指令表
指令
约定代码
功能
温度变换
44H
启动DS1820进行温度转换,12位转换时最长为750ms
(9位为93.75ms)。
结果存入内部9字节RAM中
读暂存器
0BEH
读内部RAM中9字节的内容
写暂存器
4EH
发出向内部RAM的3、4字节写上、下限温度数据命令,
紧跟该命令之后,是传送两字节的数据。
复制暂存器
48H
将RAM中第3、4字节的内容复制到EEPROM中。
重调EEPROM
0B8H
将EEPROM中内容恢复到RAM中的第3、4字节。
读供电方式
0B4H
读DS1820的供电模式。
寄生供电时DS1820发
送“0”,外接电源供电DS1820发送“1”
⑷、DS18B20工作原理
DS18B20的读写时序和测温原理与DS1820相同,只是得到的温度值的位数因分辨率不同而不同,且温度转换时的延时时间由2s减为750ms。
DS18B20测温原理如图3所示。
图中低温度系数晶振的振荡频率受温度影响很小,用于产生固定频率的脉冲信号送给计数器1。
高温度系数晶振随温度变化其振荡率明显改变,所产生的信号作为计数器2的脉冲输入。
计数器1和温度寄存器被预置在-55℃所对应的一个基数值。
计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当计数器1的预置值减到0时,温度寄存器的值将加1,计数器1的预置将重新被装入,计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。
图3中的斜率累加器用于补偿和修正测温过程中的非线性,其输出用于修正计数器1的预置值。
2.9.2DS18B20温度检测
DS18B20连接从机的P1.6对温度进行检测。
DS18B20采用寄生电源供电方式,如下图所示。
单片机端口接单线总线,为保证在有效的DS18B20时钟周期内提供足够的电流,可用一个MOSFET管来完成对总线的上拉。
当DS18B20处于写存储器操作和温度A/D转化操作时,总线上必须有强的上拉,上拉开启时间最长为500ms。
采用寄生电源供电方式时,VDD和GND端均接地。
由于单线制只有一根线,因此发送接口必须是三态的。
电路图如图2-82所示的温度检测电路:
图2-9.2温度检测电路
3软件设计
3.1概述
整个系统的功能是由硬件电路配合软件来实现的,当硬件基本定型后,软件的功能也就基本定下来了。
从软件的功能不同可分为两大类:
一是监控软件(主程序),它是整个控制系统的核心,专门用来协调各执行模块和操作者的关系。
二是执行软件(子程序),它是用来完成各种实质性的功能如测量、计算、显示、通讯等。
每一个执行软件也就是一个小的功能执行模块。
这里将各执行模块一一列出,并为每一个执行模块进行功能定义和接口定义。
各执行模块规划好后,就可以规划监控程序了。
首先要根据系统的总体功能和键盘设置选择一种最合适的监控程序结构,然后根据实时性的要求,合理地安排监控软件和各执行模块之间地调度关系。
3.2主程序方案
主程序调用了数码管显示程序、温度测试程序、中断控制程序、单片机与PC机串口通讯等程序。
3.3DS18B20的相处理子程序
3.3.1初始化子程序
DS18B20的使用必须遵循初始化到ROM操作命令到存储器操作命令的规定协议。
每完成一次测温,要重新进行初始化。
单片机先发一个复位脉冲,保持低电平时间最少480μs,最多不能超过960μs。
然后,单片机释放总线,等待DS18B20的应答。
DS18B20在接收到复位脉冲后等待15~60μs发出应答脉冲,应答脉冲持续60~240μs。
3.3.2写控制字子程序
当主机把数据线从逻辑高电平拉到逻辑低电平的时候,写时间开始。
写一位数据最少需要60μs,两个数据位之间最少有1μs的间隔。
I/O总线拉低后,DS18B20在15μs后开始采样,如果线上是高电平,就写1,如果线上是低电平,就写0,写时间需要15~75μs,且在2次独立的写时间之间至少需要1μs的恢复时间。
3.3.3读出温度子程序
读出温度子程序的主要功能是读出RAM的9字节。
在读出时需进行CRC校验,校验有错时不进行温度数据的改写。
读出温度子程序流程图如下。
图3-33读出温度子程序流程图
当主机把数据线从高电平拉到低电平时,读时间开始。
读出温度子程序的主要功能是读出RAM中的9字节,在读出时需进行CRC校验,校验有错时不进行温度数据的改写。
读时间需15~60μs,且在2次独立的读时间之间至少需要1μs的恢复时间。
DSl8B20在读时间开始15μs后开始采样总线电平。
3.3.4温度转换子程序
温度转化命令子程序主要是发温度转换开始命令。
当采用12位分辨率时,转化时间约为750ms。
在本程序设计中,采用1s显示程序。
温度转化子程序流程图如下所示。
图3-34温度转换命令子程序流程图
3.4工作流程图
3.4.1上位机工作过程
图3-41上位机工作流程图
3.4.2DS18B20工作过程
图3-42DS18B20工作流程图
本次通讯中,测控系统分位上位机和下位机之间的通信,系统中单片机负责数据采集、处理和控制,上位机进行现场可视化检测,通信协议采用半双工异步串行通信方式,通过RS232的RTS信号进行收发转换,传输数据采用二进制数据,上位机与下位机之间采用主从式通讯。
3.4.3下位机接收过程
图3-43下位机工作流程图
下位机采用的是单片机基于数字温度传感器DS18B20的系统。
DS18B20利用单总线的特点可以方便的实现多点温度的测量,轻松的组建传感器网络,系统的抗干扰性好、设计灵活、方便,而且适合于在恶劣的环境下进行现场温度测量。
本系统可以应用在大型工业及民用常温多点监测场合。
3.5上位机与从机通信软件设计
上位机和从机之间属于多机通信。
多机通信是利用单片机的串行口,实现单片机与另外多个单片机的异步串行通信。
在这种方式下,有一台主机和多台从机,主机可以向各个从机或指定的从机发送信息,各个从机发送的信息只能被主机接收,从机之间不能进行通信。
图3-5单片机之间的多级通信
3.5.1多机通信软件原理
单片机的多机串行通信必须使用串行口的模式2或3。
在多级通信中,为了保证主机能够正确识别所选择的从机并进信通信,主从机需要正确的设置和判断多机通信控制位SM2和发送接收的第九位数据,即TB8、RB8。
从机主要依靠SM2的设置实现对主机的响应。
当从机的SM2=1时该从机只接收地址帧,RB8=1,对数据帧RB8=0不进行处理;当从机的SM2=0时,该从机接收主机发送的所有信息。
主机在发送信息时,依靠T
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 多机温度检测 89c51 单片机 河南理工大学课程设计 电气学院课程设计 电气毕业设计 ds18b20 温度 检测 89 c51 河南 理工大学 课程设计 电气 学院 毕业设计
![提示](https://static.bdocx.com/images/bang_tan.gif)
链接地址:https://www.bdocx.com/doc/4130704.html