基于DS18B20的智能温度检测系统电子系统综合设计文档格式.docx
《基于DS18B20的智能温度检测系统电子系统综合设计文档格式.docx》由会员分享,可在线阅读,更多相关《基于DS18B20的智能温度检测系统电子系统综合设计文档格式.docx(32页珍藏版)》请在冰豆网上搜索。
singlechipprocessor
摘要·
·
2
Abstract·
3
1绪论·
5
2整体方案设计·
2.1STC89C51单片机基础·
2.2DS18B20的基本性质·
6
3智能温度检测系统的硬件设计·
8
3.1LED电路·
3.2STC89C51单片机电路·
9
3.3DS18B20电路·
12
4智能温度检测系统的软件设计·
15
4.1系统软件设计流程图·
4.2智能温度检测系统的源程序代码·
17
4.3只能温度检测系统的原理图·
24
5系统硬件仿真·
5.1硬件仿真的介绍·
5.2仿真结果现象描述·
25
6总结·
26
参考文献·
27
1绪论
在工、农业生产和日常生活中,对温度的测量及控制占据着极其重要地位。
消防电气的非破坏性温度检测,电力电讯设备之过热故障预知检测,空调系统的温度检测,各类运输工具之组件的过热检测,保全与监视系统之应用,医疗与健诊的温度测试,化工、机械…等设备温度过热检测。
温度检测系统应用十分广阔。
温度检测系统有则共同的特点:
测量点多、环境复杂、布线分散、现场离监控室远等。
若采用一般温度传感器采集温度信号,则需要设计信号调理电路、A/D转换及相应的接口电路,才能把传感器输出的模拟信号转换成数字信号送到计算机去处理。
这样,由于各种因素会造成检测系统较大的偏差;
又因为检测环境复杂、测量点多、信号传输距离远及各种干扰的影响,会使检测系统的稳定性和可靠性下降。
所以多点温度检测系统的设计的关键在于两部分:
温度传感器的选择和主控单元的设计。
温度传感器应用范围广泛、使用数量少,方便测量。
DS18B20数字温度传感器接线方便,封装成后可应用于多种场合,如管道式,螺纹式,磁铁吸附式,不锈钢封装式,型号多种多样,有LTM8877,LTM8874等等。
主要根据应用场合的不同而改变其外观。
封装后的DS18B20可用于电缆沟测温,高炉水循环测温,锅炉测温,机房测温,农业大棚测温,洁净室测温,弹药库测温等各种非极限温度场合。
耐磨耐碰,体积小,使用方便,封装形式多样,适用于各种狭小空间设备数字测温和控制领域。
2整体方案设计
2.1STC89C51单片机基础
(1)增强型1T流水线/精简指令集结构8051CPU
(2)工作电压:
3.4V-5.5V(5V单片机)/2.0V-3.8V(3V单片机
(3)工作频率范围:
0-35MHz,相当于普通8051的0~420MHz.实际工作频率可达48MHz.
(4)用户应用程序空间12K/10K/8K/6K/4K/2K字节
(5)片上集成512字节RAM
(6)通用I/O口(27/23个),复位后为:
准双向口/弱上拉(普通8051传统I/O口)
可设置成四种模式:
准双向口/弱上拉,推挽/强上拉,仅为输入/高阻,开漏
每个I/O口驱动能力均可达到20mA,但整个芯片最大不得超过55mA
(7)ISP(在系统可编程)/IAP(在应用可编程),无需专用编程器
可通过串口(P3.0/P3.1)直接下载用户程序,数秒即可完成一片
(8)EEPROM功能
(9)看门狗
(10)内部集成MAX810专用复位电路(外部晶体20M以下时,可省外部复位电路)
(11)时钟源:
外部高精度晶体/时钟,内部R/C振荡器。
用户在下载用户程序时,可选择是使用内部R/C振荡器还是外部晶体/时钟。
常温下内部R/C振荡器频率为:
5.2MHz~6.8MHz。
精度要求不高时,可选择使用内部时钟,因为有温漂,请选4MHz~8MHz
(12)有2个16位定时器/计数器
(13)外部中断2路,下降沿中断或低电平触发中断,PowerDown模式可由外部中断低电平触发中断方式唤醒
(14)PWM(4路)/PCA(可编程计数器阵列),也可用来再实现4个定时器或4个外部中断(上升沿中断/下降沿中断均可支持)
(15)STC89Cc516AD具有ADC功能。
10位精度ADC,共8路
(16)通用异步串行口(UART)
(17)SPI同步通信口,主模式/从模式
(18)工作温度范围:
0-75℃/-40-+85℃
(19)封装:
PDIP-28,SOP-28,PDIP-20,SOP-20,PLCC-32,TSSOP-20(超小封状,定货)
2.2DS18B20的基本性质
1、DS18B20性能特点
①采用单总线专用技术,既可通过串行口线,也可通过其它I/O口线与微机接口,无须经过其它变换电路,直接输出被测温度值(9位二进制数,含符号位)
②测温范围为-55℃-+125℃,测量分辨率为0.0625℃
③内含64位经过激光修正的只读存储器ROM,
④适配各种单片机或系统机,
⑤用户可分别设定各路温度的上、下限,
⑥内含寄生电源。
2、DS18B20内部结构
DS18B20内部结构主要由四部分组成:
64位光刻ROM,温度传感器,非挥发的温度报警触发器TH和TL,高速暂存器。
DS18B20的管脚排列如图1所示。
64位光刻ROM是出厂前被光刻好的,它可以看作是该DS18B20的地址序列号。
不同的器件地址序列号不同。
图1DS18B20引脚分布图8位产品系列号48位产品序号8位CRC编码DS18B20高速暂存器共9个存存单元0温度低字节以16位补码形式存放4、5保留字节1、21温度高字节6计数器余值2TH/用户字节1存放温度上限7计数器/℃3HL/用户字节2存放温度下限8CRC
以12位转化为例说明温度高低字节存放形式及计算:
12位转化后得到的12位数据,存储在18B20的两个高低两个8位的RAM中,二进制中的前面5位是符号位。
如果测得的温度大于0,这5位为0,只要将测到的数值乘于0.0625即可得到实际温度;
如果温度小于0,这5位为1,测到的数值需要取反加1再乘于0.0625才能得到实际温度。
高8位SSSSS262524低8位232221202-12-22-32-4
3、DS18B20控制方法
在硬件上,DS18B20与单片机的连接有两种方法,一种是Vcc接外部电源,GND接地,I/O与单片机的I/O线相连;
另一种是用寄生电源供电,此时UDD、GND接地,I/O接单片机I/O。
无论是内部寄生电源还是外部供电,I/O口线要接5KΩ左右的上拉电阻。
DS18B20有六条控制命令,
44H启动DS18B20进行温度转换
读暂存器BEH读暂存器9个字节内容
写暂存器4EH将数据写入暂存器的TH、TL字节
复制暂存器48H把暂存器的TH、TL字节写到E2RAM中
重新调E2RAMB8H把E2RAM中的TH、TL字节写到暂存器
读电源供电方式B4H启动DS18B20发送电源供电方式的信号CPU
5、CPU对DS18B20的访问流程
先对DS18B20初始化,再进行ROM操作命令,最后才能对存储器操作,数据操作。
DS18B20每一步操作都要遵循严格的工作时序和通信协议。
如主机控制DS18B20完成温度转换这一过程,根据DS18B20的通讯协议,须经三个步骤:
每一次读写之前都要对DS18B20进行复位,复位成功后发送一条ROM指令,最后发送RAM指令,这样才能对DS18B20进行预定的操作。
6、系统组成
由DS18B20构成的智能温度测量装置由三部分组成:
DS18B20温度传感器、89C2051、显示模块。
产品的主要技术指标:
①测量范围:
-55℃-+125℃,②测量精度:
0.5℃,③反应时间≤500ms。
3智能温度检测系统的硬件设计
3.1LED电路
在电子技术中,由LED数码管显示0~9的数是常用的显示技术。
数码管显示时,可用LCD(液晶),也可用LED数码管显示0~9的数。
这里利用PIC16F84A单片机控制的数码管LED显示电路,如下图所示。
下图是4位LED数码管显示电路,也可以扩展成更多的位或减少到一位数的显示。
数码管要正常显示,就要用驱动电路来驱动数码管的各个段码,从而显示出我们要的数字,因此根据数码管的驱动方式的不同,可以分为静态式和动态式两类。
①静态显示驱动:
静态驱动也称直流驱动。
静态驱动是指每个数码管的每一个段码都由一个单片机的I/O端口进行驱动,或者使用如BCD码二-十进制译码器译码进行驱动。
静态驱动的优点是编程简单,显示亮度高,缺点是占用I/O端口多,如驱动5个数码管静态显示则需要5×
8=40根I/O端口来驱动,要知道一个89S51单片机可用的I/O端口才32个呢:
),实际应用时必须增加译码驱动器进行驱动,增加了硬件电路的复杂性。
②动态显示驱动:
数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划"
a,b,c,d,e,f,g,dp"
的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。
通过分时轮流控制各个数码管的的COM端,就使各个数码管轮流受控显示,这就是动态驱动。
在轮流显示过程中,每位数码管的点亮时间为1~2ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O端口,而且功耗更低。
3.2STC89C51单片机电路
一、ISP与IAP编程方式
STC89C系列单片机芯片内置了ISP(在系统可编程)/IAP(在应用可编程)功能,无需专用编程器即可通过串口(P3.0/P3.1)用STC提供的STC-ISP.exe软件进行烧录。
新出厂的STC89C51系列单片机芯片,已经设置为单片机彻底放电后再复位,即会先进行ISP监控。
当单片机检测到P3.0/RxD引脚有合法的下载命令流时,就会先将用户程序下载并烧录到用户程序区,再运行用户程序,否则软复位到用户程序区,运行用户程序。
在进行ISP烧录时,可以选择下次冷启动时是依旧先进行ISP监控,还是需要P1.0和P1.1引脚同时为0才进行ISP监控,否则跳过ISP监控直接运行用户程序(见图)。
二.6时钟,机器周期模式
标准的8051每个机器周期为12时钟。
增强型的STC89C系列单片机在进行ISP烧录程序时,可以设置为6时钟/机器周期(双倍速)或12时钟/机器周期工作模式.
6时钟/机器周期(双倍速)工作模式下,定时器的计数速度会加倍,相应的12时钟/机器周期模式下的串口波特率也会加倍,因此单片机使用的最高的波特率可以提高一倍。
三.降低簟片机对外部电磁辐射
通过设置6时钟/机器周期.(双倍速),可以将外接晶振频率降低一半,能有效降低对外部电磁辐射(EMI)。
更重要的是,STC89C系列单片机可以关闭ALE输出,最有效地降低EMI。
通过将ALEoff位(AUXR.0)置1,可以使ALE引脚仅在读取外接存储器时才有变化电平输出,从而降低对外部电磁辐射。
四、内部扩展RAM
STC89C系列单片机中的51/52/53(RC系列)在原有8052共256字节RAM的基础上,又扩展了256字节RAM,共有512字节RAM(000H~1FFH)。
54/58/516(RD+系列)则扩展了1024字节RAM,共有1280字节RAM(000H~3FFH)。
通过设置EXTRAM位(见表1),在使用MOVX@DPTR,A/MOVXA,@DPTR指令时,如访问在内部RAM范围内将会访问到内部RAM,超出此范围才会访问外部RAM。
访问内部RAM时,不影响P0口/P2口/P3.6/P3.
五.双DPTR数据指针
标准的8051只有一个16位的DPTR数据指针,这样在进行数据块复制等动作时,必须对源地址指针和目标地址指针进行暂存,编程会非常麻烦。
STC89C系列单片机内有两个DPTR数据指针DPTR0/DPTR1,可以通过设置DPS位(AUXR1.0)方便地选择,DPS置0则选中DPTRO,置1则选中DPTR1。
通过执行INCAUXR1指令,能对DPS快速切换,并不影响AUXR1的高位。
此用法与PHILIPS单片机完全一致。
六.扩晨P4口
从引脚图上可以看出,PLCC-44、PQFP-44两种封装方式比PDIP-40多出的4个引脚在STC89C51RC/RD+系列单片机上被做成了P4口(SFR地址为0E8H),由P4.0~P4.3四条口线组成,使用方式上与原有I/0完全一致,可以位操作。
七、内置看门狗电路
RC/RD+型号的STC89C系列单片机均内置了看门狗电路。
内置看门狗由看门狗定时器控制寄存器WDT_CONTR(见表2)控制。
EN_WDT位(WDT_CONTR.5)为看门狗允许位,置1时即启动看门狗。
CLR_WDT位(WDT_CONTR.4)为看门狗清零位,置1则看门狗将重新计数,此位由硬件自动清零。
IDLE_WDT位(WDTl_CONTR.3)为看门狗空闲模式位,当置为1时,看门狗在“空闲模式”时继续计数,当清零时,看门狗在“空闲模式”时不计数。
PS2~PS0位(WDT_CONTR.2~0)用于设定看门狗溢出时间,看门狗溢出时间=(N×
Pre-scale×
32768)/晶振频率。
其中N为每个机器周期的时钟数,标准模式为12,双倍速时为6。
Pre-scale为PS2~PS0位所设定的预分频值。
八.软复位功能
STC89C系列单片机新增加的ISP_CONTR特殊功能寄存器(SFR地址为0E7H),实现了单片机系统软复位(热启动之一)功能。
用户只需简单地控制ISP_CONTR特殊功能寄存器的其中商位SWBS/SWRST就可以系统复位了。
SWBS位(ISP_CONTR.6)选择从用户应用程序区启动(0),还是从ISP程序区启动
(1)。
要与SWRST位配合才可以实现,SWRST位(ISP_CONTR.5)置0则无操作,置1则实现系统复位,硬件自动清零。
软复位与硬件复位一样,所有的特殊功能寄存器都会复位到初始值,I/O口也会初始化。
九.带A/D功能的89LE系列
STC89LE51/52/54/58/516AD型号均内带一个8位精度的高速A/D转换器,扩展RAM均为256字节(共512字节,仅能用MOVXA,@Ri/MOVXA,@Ri指令访问),不能设置6时钟/机器周期(双倍速)模式,其余均与前几部分相同。
另有一款STC89LE516X2,比STC89LE516AD增加6时钟/机器周期(双倍速)模式。
A/D转换器为电压输入型,可做按键扫描、电池电压检测、频谱检测等。
STC89LE516AD/X2系列允许将P1.0~P1.7作为A/D口使用,P1_ADC_EN特殊功能寄存器(SFR地址为097H)作为A/D转换输入通道允许控制,相应位为“1”时,对应的P1.x口被允许作为A/D转换使用,内部上拉电阻自动断开。
3.3DS18B20电路
DS18B20的读写时序和测温原理与DS1820相同,只是得到的温度值的位数因分辨率不同而不同,且温度转换时的延时时间由2s减为750ms。
DS18B20测温原理如图3所示。
图中低温度系数晶振的振荡频率受温度影响很小,用于产生固定频率的脉冲信号送给计数器1。
高温度系数晶振随温度变化其振荡率明显改变,所产生的信号作为计数器2的脉冲输入。
计数器1和温度寄存器被预置在-55℃所对应的一个基数值。
计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当计数器1的预置值减到0时,温度寄存器的值将加1,计数器1的预置将重新被装入,计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。
图3中的斜率累加器用于补偿和修正测温过程中的非线性,其输出用于修正计数器1的预置值。
图3:
DS18B20测温原理框图
DS18B20有4个主要的数据部件:
(1)光刻ROM中的64位序列号是出厂前被光刻好的,它可以看作是该DS18B20的地址序列码。
64位光刻ROM的排列是:
开始8位(28H)是产品类型标号,接着的48位是该DS18B20自身的序列号,最后8位是前面56位的循环冗余校验码(CRC=X8+X5+X4+1)。
光刻ROM的作用是使每一个DS18B20都各不相同,这样就可以实现一根总线上挂接多个DS18B20的目的。
(2)
(2)DS18B20中的温度传感器可完成对温度的测量,以12位转化为例:
用16位符号扩展的二进制补码读数形式提供,以0.0625℃/LSB形式表达,其中S为符号位。
这是12位转化后得到的12位数据,存储在18B20的两个8比特的RAM中,二进制中的前面5位是符号位,如果测得的温度大于0,这5位为0,只要将测到的数值乘于0.0625即可得到实际温度;
如果温度小于0,这5位为1,测到的数值需要取反加1再乘于0.0625即可得到实际温度。
(3)DS18B20温度传感器的存储器
DS18B20温度传感器的内部存储器包括一个高速暂存RAM和一个非易失性的可电擦除的EEPRAM,后者存放高温度和低温度触发器TH、TL和结构寄存器。
(4)配置寄存器
低五位一直都是"
1"
,TM是测试模式位,用于设置DS18B20在工作模式还是在测试模式。
在DS18B20出厂时该位被设置为0,用户不要去改动。
R1和R0用来设置分辨率,如下表所示:
(DS18B20出厂时被设置为12位)
四、高速暂存存储器
高速暂存存储器由9个字节组成,其分配如表5所示。
当温度转换命令发布后,经转换所得的温度值以二字节补码形式存放在高速暂存存储器的第0和第1个字节。
单片机可通过单线接口读到该数据,读取时低位在前,高位在后,数据格式如表1所示。
对应的温度计算:
当符号位S=0