温度采集系统
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
南京理工大学
温度采集系统开发实践报告
学院:电光院
专业:
姓名:
学号:
指导老师:
摘要:温度检测是现代检测技术的重要组成部分,在保证产品质量、节约能源和安全生产等方面起重要作用。
本次实践采用数字式温度传感器DS18B20采集外界温度,核心器件单片机AT89C52用于温度的接收、转换、存储和传送,最终数据传至PC,由PC中用于串口通信的MFC对话框来显示实时温度,并显示温度变化的折线图。
关键词:温度采集、DS18B20、AT89C52、串口通信
目录
1.绪论 (4)
1.1 背景及意义 (4)
1.2 目的和内容 (4)
2.主要器件介绍 (4)
2.1 数字式温度传感器DS18B20 (4)
2.1.1 概述 (4)
2.1.2 工作原理 (4)
2.1.3 内部结构及引脚 (6)
2.1.4 控制命令 (8)
2.1.5 性能特点 (9)
2.1.6 应用范围 (9)
2.2 单片机AT89C52 (9)
2.2.1 概述 (9)
2.2.2 内部结构 (10)
2.2.3 工作原理 (11)
2.2.4 性能特点 (12)
3.硬件设计 (12)
3.1 设计要求 (12)
3.2 温度采集电路 (12)
3.3 串口通信电路 (12)
4.软件设计 (13)
4.1 RS232串口显示实时温度数据,ds18b20模块 (13)
4.2 串口通信程序 (17)
5.过程分析及调试 (20)
6.结论与收获 (24)
7.参考文献 (24)
1.绪论
1.1背景及意义
温度是一种最基本的环境参数,日常生活和工农业生产中都需要时常检测与采集温度。
传统的靠人工控制的温度采集系统,多用热电偶或热电阻,其外围电路较为复杂、测量精度较低、分辨力不高,因此越来越不适应社会和市场的要求。
随着科技的发展,由单片集成电路构成的温度传感器种类越来越多,其功能越来越强大,凭借其方便和成本低等优势得到广泛应用。
其中,DS18B20温度传感器是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现9~12位的数字值读数方式。
适用于冷冻库,粮仓,储罐,电讯机房,电力机房,电缆线槽等测温和控制等多个领域。
1.2 目的和内容
本次实践的目的是将数字式温度传感器DS18B20作为前端,采集到的温度经过单片机AT89C52处理,再采用串口通信,把实时温度显示在PC中的MFC对话框界面上,并通过折线图显示温度的变化情况。
2.主要器件介绍
2.1 数字式温度传感器DS18B20
2.1.1概述
DS18B20温度传感器是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现9~12位的数字值读数方式。
DS18B20数字温度传感器接线方便,封装成后可应用于多种场合,如管道式,螺纹式,磁铁吸附式,不锈钢封装式,型号多种多样,有LTM8877,LTM8874等等。
主要根据应用场合的不同而改变其外观。
封装后的DS18B20可用于电缆沟测温,高炉水循环测温,锅炉测温,机房测温,农业大棚测温,洁净室测温,弹药库测温等各种非极限温度场合。
耐磨耐碰,体积小,使用方便,封装形式多样,适用于各种狭小空间设备数字测温和控制领域。
2.1.2 工作原理
DS18B20的读写时序和测温原理与DS1820相同,只是得到的温度值的位数因分辨率不同而不同,且温度转换时的延时时间由2s 减为750ms。
测温原理如图2-1所示,高温度系数晶振随温度变化其振荡率明显改变,所产生的信号作为计数器2的脉冲输入。
计数器1和温度寄存器被预置在-55℃所对应的一个基数值。
计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当计数器1的预置值减到0时,温度寄存器的值将加1,计数器1的预置将重新被装入,计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。
图中的斜率累加器用于补偿和修正测温过程中的非线性,其输出用于修正计数器1的预置值。
图2-1 DS18B20测温原理图
由于DS18B20是一条口线通信,所以中央微处理器与DS18B20只有一个一条口线连接。
为读写以及温度转换可以从数据线本身获得能量,不需要外接电源。
因为每一个DS18B20的包含一个独特的序号,多个ds18b20s可以同时存在于一条总线。
这使得温度传感器放置在许多不同的地方。
它的用途很多,包括空调环境控制,感测建筑物内温设备或机器,并进行过程监测和控制。
DS18B20采用一线通信接口。
因为一线通信接口,必须在先完成ROM设定,否则记忆和控制功能将无法使用。
主要首先提供以下功能命令之一: 1 )读ROM, 2 )ROM匹配, 3 )搜索ROM, 4 )跳过ROM, 5 )报警检查。
这些指令操作作用在没有一个器件的64位光刻ROM序列号,可以在挂在一线上多个器件选定某一个器件,同时,总线也可以知道总线上挂有有多少,什么样的设备。
若指令成功地使DS18B20完成温度测量,数据存储在DS18B20的存储器。
一个控制功能指挥指示DS18B20的演出测温。
测量结果将被放置在DS18B20内存中,并可以让阅读发出记忆功能的指挥,阅读内容的片上存储器。
温度报警触发器TH和TL都有一字节EEPROM 的数据。
如果DS18B20不使用报警检查指令,这些寄存器可作为一般的用户记忆用途。
在片上还载有配置字节以理想的解决温度数字转换。
写TH,TL指令以及配置字节利用一个记忆功能的指令完成。
通过缓存器读寄存器。
所有数据的读,写都是从最低位开始。
2.1.3 内部结构及引脚
DS18B20内部结构主要由四部分组成:64位光刻ROM 、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器,如图2-2所示:
图2-2 内部结构图
DS18B20的存储器包括高速暂存器RAM和可电擦除RAM,可电擦除RAM又包括温度触发器TH和TL,以及一个配置寄存器。
存储器能完整的确定一线端口的通讯,数字开始用写寄存器的命令写进寄存器,接着也可以用读寄存器的命令来确认这些数字。
当确认以后就可以用复制寄存器的命令来将这些数字转移到可电擦除RAM中。
当修改过寄存器中的数时,这个过程能确保数字的完整性。
高速暂存器RAM是由8个字节的存储器组成;。
用读寄存器的命令能读出第九个字节,这个字节是对前面的八个字节进行校验。
64位光刻ROM的前8位是DS18B20的自身代码,接下来的48位为连续的数字代码,最后的8位是对前56位的CRC校验。
64-位的光刻ROM又包括5个ROM的功能命令:
读ROM,匹配ROM,跳跃ROM,查找ROM和报警查找。
配置寄存器是配置不同的位数来确定温度和数字的转化。
温度传感器可完成对温度的测量,以12位转化为例:用16位符号扩展的二进制补码读数形式提供,以0.0625℃/LSB形式表达,其中S为符号位,如图2-3所示。
图2-3 DS18B20温度值格式表
这是12位转化后得到的12位数据,存储在18B20的两个8比特的RAM中,二进制中的前面5位是符号位,如果测得的温度大于0,这5位为0,只要将测到的数值乘于0.0625即可得到实际温度;如果温度小于0,这5位为1,测到的数值需要取反加1再乘于0.0625即可得到实际温度。
例如+125℃的数字输出为07D0H,+25.0625℃的数字输出为0191H,-25.0625℃的数字输出为FE6FH,-55℃的数字输出为FC90H 。
图2-4 温度转化表
DS18B20的外形及管脚排列如下图1:
图2-5 引脚图
DS18B20引脚定义:
(1)DQ为数字信号输入/输出端;
(2)GND为电源地;
(3)VDD为外接供电电源输入端(在寄生电源接线方式时接地)。
2.1.4 控制命令
DS18B20有六条控制命令:
根据 DS18B20 的协议规定,微控制器控制 DS18B20 完成温度的转换必须经过以下 3个步骤:
(1)每次读写前对 DS18B20 进行复位初始化。
复位要求主 CPU 将数据线下拉 500us ,然后释放, DS18B20 收到信号后等待 16us~60us 左右,然后发出60us~240us 的存在低脉冲,主 CPU 收到此信号后表示复位成功。
(2)发送一条 ROM 指令
(3)发送存储器指令
2.1.5 性能特点
(1)独特的单线接口仅需要一个端口引脚进行通信;
(2)多个DS18B20可以并联在惟一的三线上,实现多点组网功能;
(3)无须外部器件;
(4)可通过数据线供电,电压范围为3.0~5.5V;
(5)零待机功耗;
(6)温度以9或12位数字;
(7)用户可定义报警设置;
(8)报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件;
(9)负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作; DS18B02可以采用两种方式供电,一种是采用电源供电方式,此时DS18B20的1脚接地,2脚作为信号线,3脚接电源。
另一种是寄生电源供电方式,如图4 所示单片机端口接单线总线,为保证在有效的DS18B20时钟周期内提供足够的电流,可用一个MOSFET管来完成对总线的上拉。
当DS18B20处于写存储器操作和温度A/D转换操作时,总线上必须有强的上拉,上拉开启时间最大为10us。
采用寄生电源供电方式时VDD端接地。
由于单线制只有一根线,因此发送接口必须是三态的。
2.1.6 应用范围
该产品适用于冷冻库,粮仓,储罐,电讯机房,电力机房,电缆线槽等测温和控制领域;轴瓦,缸体,纺机,空调,等狭小空间工业设备测温和控制;汽车空调、冰箱、冷柜、以及中低温干燥箱等;供热/制冷管道热量计量,中央空调分户热能计量和工业领域测温和控制等。
2.2 单片机AT89C52
2.2.1 概述
AT89C52是美国ATMEL公司生产的低电压,高性能CMOS 8位单片机,片内含8k bytes 的可反复擦写的只读程序存储器(PEROM)和256 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,与标准MCS-51指令系统及8052
产品引脚兼容,片内置通用8位中央处理器(CPU)和Flash存储单元,功能强大AT89C52单片机适合于许多较为复杂控制应用场合。
AT89C52有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2 个读写口线,AT89C52可以按照常规方法进行编程,也可以在线编程。
其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的 Flash存储器可有效地降低开发成本。
AT89C52有PDIP、PQFP/TQFP及PLCC等三种封装形式,以适应不同产品的需求。
2.2.2 内部结构
图2-6是单片机AT89C52的内部结构总框图。
它可以划分为CPU、存储器、并行口、串行口、定时器/计数器和中断逻辑几个部分。
图2-6 内部结构总框图
26个特殊功能寄存器不连续地分布在128个字节的SFR存储空间中,地址空间为
80H-FFH,在这片SFR空间中,包含有128个位地址空间,地址也是80H-FFH,但只有83个有效位地址,可对11个特殊功能寄存器的某些位作位寻址操作(这里介绍一个技巧:其地址能被8整除的都可以位寻址)。
在51单片机内部有一个CPU用来运算、控制,有四个并行I/O口,分别是P0、P1、P2、P3,有ROM,用来存放程序,有RAM,用来存放中间结果,此外还有定时/计数器,串行I/O 口,中断系统,以及一个内部的时钟电路。
在单片机中有一些独立的存储单元是用来控制这些器件的,被称之为特殊功能寄存器(SFR)。
这样的特殊功能寄存器51单片机共有21个并且都是可寻址的列表如下(其中带*号的为52系列所增加的特殊功能寄存器):
MCS-51单片机的特殊功能寄存器
符号地址功能介绍
B F0H B寄存器
ACC E0H 累加器
PSW D0H 程序状态字
TH2*CDH 定时器/计数器2(高8位)
TL2*CCH 定时器/计数器2(低8位)
RCAP2H*CBH 外部输入(P1.1)计数器/自动再装入模式时初值寄存器高八位
RCAP2L*CAH 外部输入(P1.1)计数器/自动再装入模式时初值寄存器低八位
T2CON*C8H T2定时器/计数器控制寄存器
IP B8H 中断优先级控制寄存器
P3B0H P3口锁存器
IE A8H 中断允许控制寄存器
P2A0H P2口锁存器
SBUF99H 串行口锁存器
SCON98H 串行口控制寄存器
P190H P1口锁存器
TH18DH 定时器/计数器1(高8位)
TH08CH 定时器/计数器1(低8位)
TL18BH 定时器/计数器0(高8位)
TL08AH 定时器/计数器0(低8位)
TMOD89H T0、T1定时器/计数器方式控制寄存器
TCON88H T0、T1定时器/计数器控制寄存器
DPH83H 数据地址指针(高8位)
DPL82H 数据地址指针(低8位)
SP81H 堆栈指针
P080H P0口锁存器
PCON87H 电源控制寄存器
2.2.3 工作原理
AT89C52为8 位通用微处理器,采用工业标准的C51内核,在内部功能及管脚排布上与通用的8xc52 相同,其主要用于会聚调整时的功能控制。
功能包括对会聚主IC 内部寄存器、数据RAM及外部接口等功能部件的初始化,会聚调整控制,会聚测试图控制,红外遥控信号IR的接收解码及与主板CPU通信等。
主要管脚有:XTAL1(19 脚)和XTAL2(18 脚)为振荡器输入输出端口,外接12MHz 晶振。
RST/Vpd(9 脚)为复位输入端口,外接电阻电容组成的复位电路。
VCC(40 脚)和VSS(20 脚)为供电端口,分别接+5V电源的正负端。
P0~P3 为可编程通
用I/O 脚,其功能用途由软件定义,在本设计中,P0 端口(32~39 脚)被定义为N1 功能控制端口,分别与N1的相应功能管脚相连接,13 脚定义为IR输入端,10 脚和11脚定义为I2C总线控制端口,分别连接N1的SDAS(18脚)和SCLS(19脚)端口,12 脚、27 脚及28 脚定义为握手信号功能端口,连接主板CPU 的相应功能端,用于当前制式的检测及会聚调整状态进入的控制功能。
2.2.4 性能特点
AT89C52提供以下标准功能:8k字节Flash闪速存储器,256字节内部RAM,32个I/O 口线,3个16位定时/计数器,一个6向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。
同时,AT89C52可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。
空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。
掉电方式保存RAM中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。
AT89C52单片机属于AT89C51单片机的增强型,与Intel公司的80C52在引脚排列、硬件组成、工作特点和指令系统等方面兼容。
其主要工作特性是:片内程序存储器内含8KB 的Flash程序存储器,可擦写寿命为1000次;片内数据存储器内含256字节的RAM;具有32根可编程I/O口线;具有3个可编程定时器;中断系统是具有8个中断源、6个中断矢量、2个级优先权的中断结构;串行口是具有一个全双工的可编程串行通信口;具有一个数据指针DPTR;低功耗工作模式有空闲模式和掉电模式;具有可编程的3级程序锁定位;AT89C52工作电源电压为5(1+0.2)V,且典型值为5V;AT89C52最高工作频率为24MHz。
3.硬件设计
3.1 设计要求
本次设计要求DS18B20温度传感器作为前段,检测到的温度经过单片机AT89C52处理,完成温度数据的采集、存储、数据转换,再通过串口通信发送数据,把实时温度显示在PC中的MFC对话框界面上,并通过折线图显示温度的变化情况。
3.2 温度采集电路
温度采集电路通过温度传感器DS18B20采集被控对象的实时温度,提供给AT89S52的P3.3口作为数据的输入,要想使DS18B20能够进行精确的温度转换,I/O线必须在转换期间保证供电。
DS18B20与AT89C52结合实现最简温度检测系统,该系统结构简单,抗干扰能力强,适合于恶劣环境下进行现场温度测量,有广泛的应用前景。
3.3 串口通信电路
串行通信是计算机与外部设备进行数据交换的重要方式。
由于它效率高、可靠性强、实现及使用成本低、通讯标准统一,因此得到了广泛的应用。
Microsoft 公司的VC + + 是一种高级编程语言,其基础类库封装了Win32API 中的标准通信函数,可方便地支持串口通信。
RS-232是PC机与通信工业中应用最广泛的一种串行接口,RS-232标准协议适用于数据传输速率在0~20000bit/s范围内的通信,已成为数据终端设备DTE与计算机和数据通信设备DCE的接口标准。
对于数据:逻辑“1”的电平低于-3V,逻辑“0”的电平高于+3V;对于控制信号:接通状态即信号有效的电平高于+3V,断开状态即信号无效的电平低于-3V,在实际工作中应保证电平在±(3~15)V。
其针脚功能如表3-1所示。
表3-1 针RS_232串行口的针脚功能
RS-232信号在正负电平之间摆动,在发送数据时,发送端驱动器输出正电平在
+5V~+15V,负电平在-5V~-15V。
当无数据传输时,线上为TTL电平,从开始数据传输到结束,线上电平从TTL电平到RS-232电平再返回TTL电平。
接收器典型的电平在+3V~+12V 与-3V~-12V。
由于发送电平与接收电平的差仅为2~3V左右,所以其共模抑制能力差,再加上双绞线上的分布电容,其传输距离最大约为15m,最高速率为20bkps。
RS-232是用正负电压来表示逻辑状态,与TTL以高低电平表示逻辑状态的规定不同,因此,为了能够同PC 机接口或终端的TTL器件连接,必须在RS-232与TTL电路之间进行电平和逻辑关系的变换,实现这种变换的方法可以用分立元件,也可以用集成电路芯片。
考虑到数据的双向传递性,本系统采用MAX232芯片,可以完成TTL到RS-232双向电平转换。
4.软件设计
4.1 RS232串口显示实时温度数据,ds18b20模块
流程图如下所示:
图3-2 流程图
程序代码:
4.2 串口通信程序
用Win32API函数实现串口通信,其步骤如下:
(1)打开串口
Win32 系统把文件的概念进行了扩展。
无论是文件、通信设备、命名管道、邮件槽、磁盘、还是控制台,都是用API 函数CreateFile 来打开或创建的。
该函数的原型为: HANDLE CreateFile( LPCTSTR lpFileName,
DWORD dwDesiredAccess,
DWORD dwShareMode,
LPSECURITY_ATTRIBUTES lpSecurityAttributes,
DWORD dwCreationDistribution,
DWORD dwFlagsAndAttributes,
HANDLE hTemplateFile);
(2)配置串口
在打开通讯设备句柄后,常需要对串口进行一些初始化配置工作。
这需要通过一个DCB 结构来进行。
DCB 结构包含了诸如波特率、数据位数、奇偶校验和停止位数等信息。
在查询或配置串口的属性时,都要用DCB 结构来作为缓冲区。
一般用CreateFile ()打开串口后,可以调用GetCommState ()函数来获取串口的初始配置。
要修改串口的配置,应该先修改DCB 结构,然后再调用SetCommState ()函数设置串口。
(3)串行口读、写操作
在用ReadFile ()和WriteFile ()读写串口时,既可以同步执行,也可以重叠执行。
在同步执行时,函数直到操作完成后才返回。
这意味着同步执行时线程会被阻塞,从而导致效率下降。
在重叠执行时,即使操作还未完成,这两个函数也会立即返回,费时的I/O 操作在后台进行。
ReadFile ()和WriteFile ()函数是同步还是异步由CreateFile ()函数决定,如果在调用CreateFile ()创建句柄时指定了FILE_FLAG_OVERLAPPED 标志,那么调用ReadFile ()和WriteFile ()对该句柄进行的操作就应该是重叠的;如果未指定重叠标志,则读写操作应该是同步的。
ReadFile ()和WriteFile ()函数的同步或者异步应该和CreateFile ()函数相一致。
(4)关闭串口
串行口是非共享资源,应用程序打开串行口后,其它应用程序无法访问,因此在完成通信后必须关闭通信端口,将设备的控制权交还给操作系统。
关闭串口函数为CloseHandle ,其函数声明如下:
BOOL CloseHandle(
HANDLE hObject
);
其参数hObject 为CreatFile ()函数返回的端口句柄。
基本的串口通信界面做好之后,因为要实现绘制折线图功能,所以在VC界面的资源编辑器中,在对话框中放置一个Picture控件,并把CChart的五个库文件Chart.h、PlotDll_d.lib、PlotDll_d.dll、PlotDll.lib、PlotDll.dll拷贝到工程文件夹中;
在VC中打开SerialComDlg.h文件,在其头部加入CChart头文件和库文件的引用;如下所示:
在SerialComDlg.h文件中给CSerialComDlg类添加一个CChartWnd类型的成员变量;如下所示:
利用ClassWizard给CSerialComDlg类添加WM_DESTROY消息的响应函数;如下所示:
在OnInitDialog函数中添加如下代码:
完成定时器回调函数如下:
编译运行后效果如图4-1所示:
图4-1
5.过程分析及调试
软件设计完成之后,进入运行和调试过程。
将单片机模块的程序编译并生成hex文件,连接温度传感器、单片机与PC。
打开烧录工具,选择相应hex文件,如图5-1、5-2所示:
图5-1
图5-2
选择相应串口并下载,如图5-3所示:
图5-3
下载完成后,在PC上打开串口通信的程序界面,如图5-4:
图5-4
选择相应串口,将波特率改为2400,单击“打开”接收数据,如图5-5所示:
图5-5
手握住温度传感器使之升温,一段时间后再把手放开,观察数据与折线图的变化,如图5-6、5-7所示:
图5-6
图5-7
由于单片机传送至PC的数据是字符串形式,而生成温度走势曲线需要将温度转换为数值型,这里通过atof函数将温度转换为浮点数,显示的当前温度也是浮点数类型。
运行过程中,一开始当前温度显示为乱码,编译不出错,经仔细检查,发现显示当前温度的数据类型设置为%d,显示整型数据,改为%f显示浮点数型数据则正确,如下所示:
6.结论与收获
这次为期三个星期的开发实践让我学到了很多东西,对VC++6.0、Keil uVision4和烧录工具的运用更加熟练,对API函数和MFC编程也有了更加深入的了解,也掌握了不少应用技巧,能够运用它们编一些小程序小应用。
学习过程中,开始一无所知的时候是复杂又枯燥的,但随着不断深入地了解,能够渐渐体会到它的神奇与方便。
我相信这个过程这样的收获会使我受益终身。
7.参考文献
[1].崔寅生.基于多串口通信的实时温度采集系统设计[J].微计算机信息,2009,25(12-1)
[2].张军.智能温度传感器DS18B20及其应用[J].仪表技术,2010,4(68)
[3].陈明.基于DS18B20数字温度传感器的设计与实现[J].传感器技术
[4] 施松昆. 数字温度传感器DS1820[J]. 国外电子元器件. 1996,10A
[5] 胡汉才.单片机原理及其接口技术[M].北京:清华大学出版社,2002
[6] 李朝青.PC机及单片机数据通信技术[M].北京:北京航空航天大学出版社,2000
[7].江太辉,邓展威.DS18B20数字温度传感器的特性与应用[J].电子技术,2003,12。