基于DS18B20的数字温度计的设计与实现_第1页
基于DS18B20的数字温度计的设计与实现_第2页
基于DS18B20的数字温度计的设计与实现_第3页
基于DS18B20的数字温度计的设计与实现_第4页
基于DS18B20的数字温度计的设计与实现_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

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

文档简介

1、课程设计(论文)说明书题 目: 基于DS18B20的数字 温度计的设计与实现 院 (系): 信息与通信学院 专 业: 电子信息工程 学生姓名: 学 号: 指导教师: 武小年 职 称: 副教授 2012年 12月 10 日基于DS18B20的数字温度计的设计与实现摘要:随着时代的进步和发展,单片机技术已经普及到我们生活、工作、科研、各个领域,已经成为一种比较成熟的技术。对于温度的测量方法与装置的研究就凸显得非常重要。由单片机与温度传感器构成的测温系统可广泛应用于很多领域。本设计采用51单片机和DS18B20 数字温度传感器来进行温度测量的方法,包括温度传感器芯片的选取、单片机与温度传感器接口电路

2、的设计,以及实现温度信息采集和数据传输的软件设计。DS18B20 数字温度传感器是单总线器件,与51 单片机组成一个测温系统,具有线路简单、体积小等特点,而且在一根通信线上,可以挂接很多这样的测温系统,十分方便。关键词:单片机;温度传感器;数字温度计Design and implementation of the digital thermometer based on DS18B20Abstract:With the progress and development of era,microcontroller technology has become popular in our lif

3、e,in the work,the scientific research and various fields,has become a relatively mature technology.The temperature measurement method and device of the highlights is very important.Posed by the single chip temperature sensor and temperature measurement system can be widely applied in many fields.A p

4、ractical temperature measuring method based on microcont roller and DS18B20 digital temperature sensor was presented. The selection of temperature sensor chip was discussed and the design of hardware interface circuit and related sof tware were dealt with in more details. The proposed design is simp

5、le in hardware connection lines and small in size. In addition , it is applicable for different temperature measuring systems based on DS18B20temperature sensors hung on one communication line.Key words:microcontroller;temperature sensor;temperature measurement system目 录1 绪论11.1 温度计的介绍11.2选题的目的和意义、1

6、1.2.1选题的目的11.2.2选题的意义22 数字温度计的设计方案22.1 设计方案的确立及论证22.1.1 温度传感器DS18B20的选择22.1.2 单片机STC89C52的选择33 系统硬件电路的设计33.1 主控制器33.1.1 STC89C52的介绍43.1.2 DS18B20的介绍103.1.3 DS18B20使用的注意事项173.2 DS18B20与单片机接口电路的设计173.3 显示电路的设计183.3.1方案一:数码管显示183.3.2方案二:液晶显示193.3.3 显示电路224 系统程序的设计224.1 系统设计内容224.1.1主程序234.1.2 读出温度子程序23

7、4.1.3 温度转换命令子程序244.1.4 计算温度子程序244.1.5 显示数据刷新子程序254.1.6 温度数据的计算处理方法264.2 汇编源程序264.2.1 DS18B20的各条ROM命令265 调试及性能分析285.1 系统的调试285.2 性能分析28致 谢30参考文献31附录32基于DS18B20的数字温度计的设计与实现1 绪论1.1 温度计的介绍温度计是测温仪器的总称。根据所用测温物质的不同和测温范围的不同,有煤油温度计、酒精温度计、水银温度计、气体温度计、电阻温度计、温差电偶温度计、辐射温度计和光测温度计等。随着科学技术的发展和现代工业技术的需要,测温技术也不断地改进和提

8、高。由于测温范围越来越广,根据不同的要求,又制造出不同需要的测温仪器。下面介绍几种。气体温度计多用氢气和氦气作测温物质,因为氢气和氦气的液化温度很低,接近于绝对零度,故它的测温范围很广。这种温度计精确度很高,多用于精密测量。电阻温度计分为金属电阻温度计和半导体电阻温度计,都是根据电阻值随温度的变化这一特性制成的。金属温度计主要有用铂、金、铜、镍等纯金属的及铑铁、磷青铜合金的;半导体温度计主要用碳、锗等。电阻温度计使用方便可靠,已广泛应用。它的测量范围为-260至600左右。温差电偶温度计是一种工业上广泛应用的测温仪器。利用温差电现象制成。两种不同的金属丝焊接在一起形成工作端,另两端与测量仪表连

9、接,形成电路。把工作端放在被测温度处,工作端与自由端温度不同时,就会出现电动势,因而有电流通过回路。通过电学量的测量,利用已知处的温度,就可以测定另一处的温度。这种温度计多用铜康铜、铁康铜、镍铭康铜、金钻铜、铂铑等组成。它适用于温差较大的两种物质之间,多用于高温和低浊测量。有的温差电偶能测量高达3000的高温。有的能测接近绝对零度的低温。1.2选题的目的和意义1.2.1选题的目的 利用单片机STC89C52和温度传感器DS18B20设计一个设计温度计,能够测量-55 +125之间的温度值,用LCD液晶屏直接显示,误差在±0.5以内,同时要求使用的元器件数目最少。通过这次设计能够更加了

10、解数字温度计的工作原理和熟悉单片机的发展和应用,巩固所学的知识。1.2.2选题的意义 单片机是随着超大规模集成电路技术的发展而诞生的,由于它具有体积小、功能强、性价比高等特点,所以广泛应用于电子仪表、家用电器、节能装置、军事装置、机器人、工业控制等诸多领域,使产品小型化、智能化,既提高了产品的功能和质量,又降低了成本,简化了设计。本设计主要利用单片机和LCD液晶显示屏设计一个数字显示的温度计。选题的意义在于通过这次设计可以将平时在课堂上学到的关于单片机的知识应用与实践中,而且更加深入的认识到单片机在现代生活和生产中的重要性。2 数字温度计的设计方案2.1 设计方案的确立及论证功能要求:数字式温

11、度计测温范围在-55+125,误差在±0.5以内,采用LCD液晶屏显示,直接读取测温值。方案论证:2.1.1 温度传感器DS18B20的选择方案一:水银温度计 在生活中我们经常看到水银温度计,它只能作为就地监督的仪表,用它来测量温度时,由于读数时用眼睛观察,主观因素大,容易造成误差大,而且不同是水银温度计量程不同,在读数前需要看清它的最小分度值,还有它有热惯性,需要等到温度计达到稳定状态后才能读数,比较麻烦,并且水银有毒,不小心打破后接触到水银,对人体伤害大,所以危险性较高。方案二:传统测温元件 传统的测温元件有热电偶和热电阻。而热电偶和热电阻测出的一般都是电压,再转换成对应的温度,

12、需要比较多的外部硬件支持,其缺点有:硬件电路复杂;软件调试复杂;制作成本高。方案三:DS18B20传感器测温 本设计采用美国DALLAS半导体公司继DS1820之后推出的一种改进型智能温度传感器DS18B20作为检测元件 DS18B20可以直接读出被测温度值,而且采用三线制与单片机相连,减少了外部的硬件电路,具有成本低和易使用的特点。2.1.2 单片机STC89C52的选择 STC89C52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器,内置看门狗定时器,而且STC89C52可降到0Hz静态逻辑操作,支持两种软件可选择节电模式。空闲模式下,CPU停止工作,允许R

13、AM、定时器计数器、串口、中断继续工作。掉电保护方式下,RAM内存被保存,振荡器被冻结,单片机一切工作停止,直到一个中断或硬件复位为止。而且STC89C52的工作电压为3.3V,因此可以用来开发三节5号电池供电的便携式产品。和AT89S52单片机的对比: STC89C52RC单片机: 8K字节程序存储空间; 512字节数据存储空间; 内带4K字节EEPROM存储空间; 可直接使用串口下载。 AT89S52单片机: 8K字节程序存储空间; 256字节数据存储空间; 没有内带EEPROM存储空间。因此选用STC89C52更适合。按照系统设计功能的要求,确定系统由3个模块组成;主控制器、测温电路和显

14、示电路。 数字温度计总体设计电路结构框图如2.1图所示:DS18B20STC89C52主控制器显示电路扫描驱动 图2.1 数字温度计总体结构框图3 系统硬件电路的设计3.1 主控制器单片机STC89C52具有高速、低功耗、超强抗干扰的特点,指令代码完全兼容传统8051单片机,12时钟机器周期和6时钟机器周期可以任意选择。3.1.1 STC89C52的介绍STC89C52简介:STC89C52是一种带8K字节闪烁可编程可擦除只读存储器(FPEROM-Flash Programable and Erasable Read Only Memory)的低电压,高性能COMOS8的微处理器,俗称单片机。

15、该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。实物如3.1图所示:图3.1 STC89C52 实物图STC89C52引脚及特点STC89C52的引脚如图3.2所示: 图3.2 芯片引脚功能1. STC89C52引脚功能说明Vcc(40引脚):电源电压。Vss(20引脚):接地。P0端(P0.0P0.7,3932引脚):P0口是一个漏极开路的8位双向I/O口。作为输出端口,每个引脚能驱动8个TTL负载,对端口P0写入“1”时,可以作为高阻抗输入,在访问外部程序和数据存储器时,P0口也可以提供低8位地址和8位数据的复用总线。此时,P0口内部上拉

16、电阻有效。在Flash ROM编程时,P0端口接收指令字节;而在校验程序时,则输出指令字节。验证时,要求外接上拉电阻。 P1端口(P1.0P1.7,18引脚):P1口是一个带内部上拉电阻的8位双向I/O口。P1的输出缓冲器可驱动4个TTL输入。对端口写入1时,通过内部的上拉电阻把端口拉到高电位,这是可用作输入口。P1口作输入口使用时,因为有内部上拉电阻,那些被外部拉低的引脚会输出一个电流。 此外,P1.0和P1.1还可以作为定时器/计数器2的外部技术输入(P1.0/T2)和定时器/计数器2的触发输入(P1.1/T2EX),具体如表3.1所示:表3.1 P1.0和P1.1引脚复用功能 P2端口(

17、P2.0P2.7,2128引脚);P2口是一个带内部上拉电阻的8位双向I/O口.P2的输出缓冲器可以驱动4个TTL输入。对端口写入1时,通过内部的上拉电阻把端口拉到高电平,这时可用作输入口。P2作为输入口使用时,因为有内部的上拉电阻,那些被外部信号拉低的引脚会输出一个电流。 在访问外部程序存储器和16位地址的外部数据存储器(如执行“MOVXDPTR”指令)时,P2送出高8位地址。在访问8位地址的外部数据存储器(如执行“MOVXR1”指令)时,P2口引脚上的内容,在整个访问期间不会改变。 在对Flash ROM编程和程序校验期间,P2也接收高位地址和一些控制信号。 P3端口(P3.0P3.7,1

18、017引脚):P3是一个带内部上拉电阻的8位双向I/O口。P3的输出缓冲器可驱动4个TTL输入。对端口写入1时,通过内部的上拉电阻把端口拉到高电位,这时可用作输入口。P3作输入口使用时,因为有内部的上拉电阻,那些被外部信号拉低的引脚会输入一个电流。 在对Flash ROM编程或程序校验时,P3还接收一些控制信号。 P3口除作为一般I/O口外,还有其他一些复用功能,如表3.2所示:表3.2 P3口引脚复用功能RST(9引脚):复位输入。当输入连续两个机器周期以上高电平时为有效,用来完成单片机的复位初始化操作。看门狗计时完成后,RST引脚输出96个晶振周期的高电平。特殊寄存器AUXR(地址8EH)

19、上的DISRTO位可以使此功能无效。DISRTO默认状态下,复位高电平有效。ALE/PROG (30引脚):地址锁存控制信号(ALE)是访问外部程序存储器时锁存低8位地址的输出脉冲。在Flash编程时,此引脚(PROG )也用作编程输入脉冲。在一般情况下,ALE以晶振六分之一的固定频率输出脉冲,可用来作为外部定时器或时钟使用。然而,特别强调,在每次访问外部数据存储器时,ALE脉冲将会跳过。如果需要,通过将地址位8EH的SFR的第0位置“1”,ALE操作将无效。这一位置“1”,ALE仅在执行MOVX或MOV指令时有效。否则,ALE将被微弱拉高。这个ALE使能标志位(地址位8EH的SFR的第0位)

20、的设置对微控制器在外部执行模式下无效。 PSEN(29引脚):外部程序存储器选通信号(PSEN)是外部程序存储器选通信号。当AT89C51RC从外部程序存储器执行外部代码时,PSEN 在每个机器周期被激活两次,而访问外部数据存储器时,PSEN将不被激活。EA/VPP(31引脚):访问外部程序存储器控制信号。为使能从0000H到FFFFH的外部程序存储器读取指令, EA必须接GND。注意加密方式1时,EA将内部锁定为RESET。为了执行内部程序指令,EA应该接VCC。在Flash编程期间,EA也接收12伏VPP电压。XTAL1(19引脚):振荡器反相放大器和内部时钟发生电路的输入端。XTAL2(

21、18引脚):振荡器反相放大器的输入端。2.特殊功能寄存器 STC89C52除了有定时器/计数器0和定时器/计数器1之外,还增加了一个定时器/计数器2.定时器/计数器2的控制与状态位位于T2CON,如表3.3所示:表3.3 特殊功能寄存器T2CON的描述T2CON 地址=0C8H 可位寻址 复位值=00H定时器2是一个16位定时/计数器。通过设置特殊功能寄存器T2CON中的C/T2位,可将其作为定时器或计数器(特殊功能寄存器T2CON的功能说明如表3.4所示)。表3.4 定时/计数器2控制器寄存器各位功能说明 定时器2有3种操作模式:捕获、自动重新装载(递增或递减计数)和波特率发生器,这3种模式

22、由T2CON中的位进行选择,如表3.5所示: 表3.5 定时器2工作方式3.STC89C52单片机的主要特征(1)增强型8051单片机,6时钟/机器周期和12时钟/机器周期可以任意选择,指令代码完全兼容传统8051。(2)工作电压:5.5V3.3V(5V单片机)/3.8V2.0V(3V单片机)。(3)工作频率范围:040MHz,相当于普通8051的080MHz,实际工作频率可达48MHz。(4)用户应用程序空间为8K字节。(5)片上几成512字节RAM。(6)通用I/O口(32个),复位后为:P1/P2/P3/P4是准双向口/弱上拉,P0口是漏极开路输出,作为总线扩展用时,不用加上拉电阻,作为

23、I/O口用时,需加上拉电阻。(7)ISP(在系统可编程)/IAP(在应用可编程),无需专用编程器,无需专用仿真器,可通过串口(RxD/P3.0,TxD/P3.1)直接下载用户程序,数秒即可完成一片。(8)具有EEPROM功能。(9)具有看门狗功能。(10)共有3个16位定时器/计数器。即定时器T0、T1、T2。(11)外部中断4路,下降沿中断或低电平触发电路,Power Down模式可由外部中断低电平触发中断方式唤醒。(12)通用异步串行口(UART),还可用定时器软件实现多个UART。(13)工作温度范围;-40+85(工业级)/075(商业级)。(14)PDIP封装。4. STC89C52

24、单片机的工作模式(1)掉电模式:典型功耗0.1A,可由外部中断唤醒,中断返回后,继续执行原程序。(2)空闲模式:典型功耗2mA。(3)正常工作模式:典型功耗4mA7mA。(4)掉电模式可由外部中断唤醒,适用于水表、气表等电池供电系统及便携设备。3.1.2 DS18B20的介绍1.DS18B20简介Dallas的最新单线数字温度传感器DS18B20简称新的“一线器件”体积更小、使用电压更宽、更经济。Dallas半导体公司的数字化温度传感器DS18b20是世界上第一片支持“一线总线”接口的温度传感器。一线总线独特而且经济的特点,使用户可轻松地组建传感器网络,为测量系统的构建引入全新概念。DS18b

25、20、DS1822“一线总线”数字化温度传感器同DS1820一样,DS18B20也支持“一线总线”接口,测量温度范围为-55+125,在-10+85范围内,精度为±0.5。DS1822的精度较差为±2。现场温度直接以“一线总线”的数字方式传输,大大提高了系统的抗干扰性。适合于恶劣环境的现场温度测量,如:环境控制、设备或过程控制、测温类消费电子产品等。与前一代产品不同,新的产品支持3V5.5V的电压范围,使系统设计更灵活、方便。而且新一代产品更便宜,体积更小。其实物图如3.3图所示:图3.3 DS18B20的实物管脚分布图2.DS18B20引脚及特点 (1)引脚功能说明GND

26、是地址信号;DQ是数据输入/输出引脚,开漏单总线接口引脚,当被用在寄生电源下,也可以向器件提供电源;VDD为外接供电电源输入端(在寄生电源接线方式时接地)。(2)DS18B20功能特点采用单总线技术,与单片机通信只需要一根I/O线,在一根线上可以挂接多个DS18B20。每只DS18B20具有一个独有的,不可修改的64位序列号,根据序列号访问地应的器件。低压供电,电源范围从3.05.5V,可以本地供电,也可以直接从数据线窃取电源(寄生电源方式)。测温范围为-55+125,在-10+85范围内误差为±0.5。可编辑数据为912位,转换12位温度时间为750ms(最大)。用户可自设定报警上

27、下限温度。报警搜索命令可识别和寻址超过程序限定温度(温度报警条件)的器件。DS18B20的分辨率由用户通过EEPROM设置为912位。DS18B20可将检测到温度值直接转化为数字量,并通过串行通信的方式与主控制器进行数据通信。负电压特性,电源极性接反时,温度计不会因为发热而烧毁,只是不能正常工作。3.DS18B20的内部结构(1)DS18B20内部结构及功能 DS18B20采用3脚PR35封装或8脚SOIC封装,其内部结构如3.5图所示,主要包括:寄生电源,温度传感器,64位ROM和单总线接口,存放中间数据的高速暂存器RAM,用于存储用户设定温度上下限值的TH和TL触发器,存储与控制逻辑,8位

28、循环冗余校验码(CRC)发生器等7部分。如图3.4所示:图3.4 DS18B20内部结构(2)64位激光ROM 每一个DS18B20包括一个唯一个64位长的ROM编码。64位ROM的位结构如下图3.5所示。开始的8位是单线产品系列编码(DS1820编码是10h);接着的48位是每个器件唯一的系列号;最后的8位是开始56位CRC检验码。64位ROM和ROM操作控制部分允许DS18B20作为一个单线器件工作并遵循“单线总线系统”一节中所详述的单线协议。知道ROM操作协议被满足,DS18B20控制部分的功能是不可访问的。单线总线主机必须首先操作五种ROM操作命令之一:1、Read ROM(读ROM)

29、,2、Match ROM(匹配(ROM),3、Search ROM(搜索ROM),4、Skip ROM(跳过ROM),或5、Alarm Search(告警搜索)。在成功地执行了ROM操作序列之后DS18B20特定的功能便可访问,然后总线上主机可提供六个存储器和控制功能命令之一。8位检验CRC 48位序列号 8位工厂代码(10H) MSB LSB MSB LSB MSB LSB图3.5 64位ROM结构框图(3)运用报警信号 在DS18B20完成温度变换之后,温度值与贮存在TH和TL内的触发值相比较。因为这些寄存器仅仅是8位,所以0.5位在比较时被忽略。TH或TL的最高比较位直接对应于16位温度

30、寄存器的符号位。如果温度测量的结果高于TH或低于TL,那么器件内告警标志将置位。每次温度测量更新此标志。只要告警标志置位,DS18B20将对告警搜索命令做出响应。这允许并联接许多DS18B20,同时进行温度测量。如果某处温度超过极限,那么可以识别出正在告警的器件并立即将其读出而不必读出非告警的器件。(4)CRC产生 DS18B20有一存贮在64位ROM的最高有效字节内的8位CRC。总线上的主机可以根据64位ROM的前56位计算机CRC的值并把它与存贮在DS18B20内的值进行比较以决定ROM的数据是否已被主机正确地接收。CRC的等效多项式函数为:CRC=X8+X5+X4+1 (公式3.1) D

31、S18B20也利用与上述相同的多项式函数产生一个8位CRC值并把此值提供给总线的主机以确认数据字节的传送。在使用CRC来确认数据传送的每一种情况中,总线主机必须使用上面给出的多项式函数计算CRC的值并把计算所得的值或者与存贮在DS18B20的64位ROM部分中的8位CRC值(ROM读数),或者与DS18B20中计算得到的8位CRC值(在读暂存存贮器中时,它作为第九个字节被读出),进行比较。CRC值的比较和是否继续操作都由总线主机来决定。当存贮在DS18B20内或由DS18B20计算得到的CRC值与总线主机产生的值不相符合时,在DS18B20内没有电路来阻住命令序列的继续执行。(5)存贮器 DS

32、18B20的存贮器由一个高速暂存(便笺式)RAM和一个非易失性、电可擦除EEPROM组成,后者存贮高温度和低温度触发器TH和TL。暂存存贮器有助于在单线通信时确保数据的完整性。数据首先写入暂存存贮器,在那里它可以被读回。当数据被校验之后,复制暂存存贮器的命令把数据传送到非易失性EEPROM。这一过程确保了更改存贮器时数据的完整性。高速暂存RAM的结构为9字节的存储器,结构如3.6图所示。前2字节包含测得的温度信息。第3和第4字节是TH和TL的拷贝,是易失的,每次上电复位时刷新。第5字节为配置寄存器,其内容用于确定温度值的数字转换分辨率,DS18B20工作时按此寄存器中的分辨率将温度转换为相应精

33、度的数值。该字节个位的定义如3.7图所示,其中,低5位一直为1;TM是测试模式位,用于设置DS18B20在工作模式还是在测试模式,在DS18B20出厂时,该位被设置为0,用户不要去改动;R1和R0决定温度转换的精度位数,即用来设置分辨率,其定义方法见表3.6:表3.6 DS18B20分辨率R1 R0 分辨率/位 温度最大转换时间/ms0 0 9 93.750 1 10 187.51 0 11 3751 1 12 750表3.6 DS18B20分辨率的定义和规定 由表3.6可见,DS18B20温度转换的时间较长,而且设定的分辨率越高,所需要的温度数据转换时间就越长。因此,在实际应用中要将分辨率和

34、转换时间权衡考虑。 图3.6 高速暂存RAM结构图 高速暂存的第6、7、8字节保留未用,表现为全逻辑1。第9字节是前面所有8字节的CRC码,可用来检验数据,从而保证通信数据的正确性。如表3.7所示:表3.7 配置寄存器位定义当DS18B20接受到温度转换命令后,开始启动转换。转换完成后的温度值就以16位带符号扩张的二进制补码形式存储在暂存RAM的第1、2字节中。 单片机可以通过单线接口读出数据。读数据是,低位在先,高位在后,数据格式以0.0625/LSB形式表示。温度值格式如图3.7所示:低字节 高字节 图3.7 温度数据值格式 图中,S表示符号位。当S=0时,表示测得的温度值为正值,可以直接

35、将二进制转换为十进制;当S=1时,表示测得的温度值为负值,要先将补码变成原码,再计算十进制值。表3.8是部分温度值对应的二进制温度表示数据。表3.8 DS18B20温度与表示值对应表 DS18B20完成温度转换后,就把测得的温度值与RAM中的TH、TL字节内容作比较,若TTH或TTL,则将该器件内的报警标志位置位,并对主机发出的报警搜索命令做出响应。因此,可用多个DS18B20同时测得温度并进行报警搜索。 在64位ROM的最高有效字节中存储有循环冗余检验码(CRC)。主机根据ROM的前56位来计算CRC值,并与存入DS18B20的CRC值作比较,以判断主机收到的ROM数据是否正确。4.DS18

36、B20的测温原理 如图3.8所示,图中低温度系数振荡器的振荡频率受温度影响很小,用于产生固定频率的脉冲信号送给减法计数器1;高温度系数振荡器随温度变化其振荡频率明显改变,所产生的信号作为减法计数器2的脉冲输入。图3.8 DS18B20测温原理图 图中还隐含着计数门,当计数门打开时,DS18B20就对低温度系数振荡器产生的时钟脉冲进行计数,进而完成温度测量。计数门的开启时间由高温度系数振荡器来决定,每次测量前,首先将-55所对应的一个基数分别置入减法计数器1和温度寄存器中,减法计数器和温度寄存器被预置在-55所对应的一个基数值。 减法计数器1对低温度系数振荡器产生的脉冲信号进行减法计数,当减法计

37、数器1的预置减到0时,温度寄存器的值将加1,减法计数器1的预置值将重新被装入,并重新开始对低温度系数振荡器产生的脉冲信号进行计数。如此循环,知道减法计数器2计数到0时,停止温度计数器值的累加,此时温度寄存器中的数值就是所测温度值。图3.9中的斜率累加器用于补偿和修正测温过程的非线形性,直到温度寄存器达到被测温度值。另外,DS18B20单线通信功能是分时完成的,有严格的时隙概念,因此读/写时序很重要。系统对DS18B20的各种操作必须按协议进行。操作协议为:初始化DS18B20(发复位脉冲发ROM功能命令发存储器操作命令处理数据。3.1.3 DS18B20使用的注意事项DS1820虽然具有测温系

38、统简单、测温精度高、连接方便、占用口线少等优点,但在实际应用中也应注意以下几方面的问题: (1)较小的硬件开销需要相对复杂的软件进行补偿,由于DS1820与微处理器间采用串行数据传送,因此,在对DS1820进行读写编程时,必须严格的保证读写时序,否则将无法读取测温结果。在使用PL/M、C等高级语言进行系统程序设计时,对DS1820操作部分最好采用汇编语言实现。 (2)在DS1820的有关资料中均未提及单总线上所挂DS1820数量问题,容易使人误认为可以挂任意多个DS1820,在实际应用中并非如此。当单总线上所挂DS1820超过8个时,就需要解决微处理器的总线驱动问题,这一点在进行多点测温系统设

39、计时要加以注意。 (3)连接DS1820的总线电缆是有长度限制的。试验中,当采用普通信号电缆传输长度超过50m时,读取的测温数据将发生错误。当将总线电缆改为双绞线带屏蔽电缆时,正常通讯距离可达150m,当采用每米绞合次数更多的双绞线带屏蔽电缆时,正常通讯距离进一步加长。这种情况主要是由总线分布电容使信号波形产生畸变造成的。因此,在用DS1820进行长距离测温系统设计时要充分考虑总线分布电容和阻抗匹配问题。 (4)在DS1820测温程序设计中,向DS1820发出温度转换命令后,程序总要等待DS1820的返回信号,一旦某个DS1820接触不好或断线,当程序读该DS1820时,将没有返回信号,程序进

40、入死循环。这一点在进行DS1820硬件连接和软件设计时也要给予一定的重视。3.2 DS18B20与单片机接口电路的设计 DS18B20可以采用两种供电方式:一种是采用电源供电方式,此时DS18B20的第1引脚接地,第2引脚作为信号线,第3引脚接电源;另外一种是寄生电源供电方式,如图3.9所示。单片机端口接单线总线,为保证在有效的DS18B20时钟周期内提供足够的电流,可用一个MOSFET管来完成对总线的上位。图3.9 DS18B20采用寄生电源的电路图当DS18B20处于写存储器操作和温度A/D转换操作时,总线上必须有强的上拉,上拉开启时间最长为500ms。采用寄生电源供电方式时,VDD和GN

41、D端接地。由于单线制只有一根线,因此发送接口必须是三态的。3.3 显示电路的设计3.3.1方案一:数码管显示数码管是一种半导体发光器件,其基本单元是发光二极管。数码管按段数分为七段数码管和八段数码管,八段数码管比七段数码管多一个发光二极管单元(多一个小数点显示);按能显示多少个“8”可分为1位、2位、4位等等数码管。按发光二极管单元连接方式分为共阳极数码管和共阴极数码管。共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管,共阳数码管在应用时应将公共极COM接到+5V,当某一字段发光二极管的阴极为低电平时,相应字段就点亮,当某一字段的阴极为高电平时,相应字段就不亮。共阴数

42、码管是指将所有发光二极管的阴极接到一起形成公共阴极(COM)的数码管,共阴数码管在应用时应将公共极COM接到地线GND上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮,当某一字段的阳极为低电平时,相应字段就不亮。LED数码管(LED Segment Displays)是由多个发光二极管封装在一起组成“8”字型的器件,引线已在内部连接完成,只需引出它们的各个笔划和公共电极。如图3.10所示:图3.10 八段数码管图数码管的动态显示:数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划"a,b,c,d,e,f,g,dp"的同名

43、端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。通过分时轮流控制各个数码管的的COM端,就使各个数码管轮流受控显示,这就是动态驱动。在轮流显示过程中,每位数码管的点亮时间为12ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显

44、示的效果和静态显示是一样的,能够节省大量的I/O端口,而且功耗更低。3.3.2方案二:液晶显示1602LCD液晶简介1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块,它有若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符。每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用,正因为如此,所以它不能显示图形。1602LCD是指显示的内容为16×2,即可以显示两行,每行16个字符液晶模块(显示字符和数字)。1602LCD的特性(1)+5V电压,对比度可调。(2)内含复位电路。(3)提供各种控制命令,如:

45、清屏、字符闪烁、光标闪烁、显示移位等多种功能。(4)有80字节显示数据存储器DDRAM。(5)内建有160个5×7点阵的字型的字符发生器CGROM。(6)8个可由用户自定义的5×7的字符发生器CGROM。(7)字符型LCD1602通常有14条引脚线或16条引脚线的LCD,多出来的2条线是背光电源线VCC(15脚)和地线(16脚),如表3.9所示:表3.9 液晶1602引脚表1602液晶模块内部的控制器共有11条控制指令,如下表3.10所示:表3.10 1602的控制指令 指令1:清显示,光标复位到地址00H位置。指令2:光标复位,光标返回到地址00H。指令3:光标和显示模式

46、设置 I/D:光标移动方向,高电平右移,低电平左移,S:屏幕上所有文字是否左移或者右移。高电平表示有效,低电平则无效。指令4:显示开关控制。 D:控制整体显示的开与关,高电平表示开显示,低电平表示关显示 C:控制光标的开与关,高电平表示有光标,低电平表示无光标 B:控制光标是否闪烁,高电平闪烁,低电平不闪烁。指令5:光标或显示移位 S/C:高电平时移动显示的文字,低电平时移动光标。R/L,高向左,低向右。指令6:功能设置命令 DL:高电平时为8位总线,低电平时为4位总线 N:低电平时为单行显示,高电平时双行显示 F: 低电平时显示5x7的点阵字符,高电平时显示5x10的点阵字符。(有些模块是

47、DL:高电平时为8位总线,低电平时为4位总线)指令7:字符发生器RAM地址设置,地址:字符地址*8+字符行数。(将一个字符分成5*8点阵,一次写入一行,8行就组成一个字符)指令8:置显示地址,第一行为:80H8FH,第二行为:C0HCFH。指令9:读忙信号和光标地址 BF:为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙。指令10:写数据。指令11:读数据。3.3.3 显示电路设计显示电路如图3.11所示:图3.11 1602液晶接线图液晶屏的软件编程控制操作主要包含初始化,写指令和写数据三个部分。凡是写到液晶屏内部,用来控制液晶屏显示的内容都属于指令。写入到液晶屏

48、后能直接显示出来的结果就属于数据。两种方案相比较,硬件方面方案二明显比方案一简单,而且手工制作容易实现,而且液晶显示具有稳定性,不容易出现硬件出错。软件方面,两种方案的软件设计都比较容易实现。综上所述,方案二适合本设计,所以采用方案二。4 系统程序的设计4.1 系统设计内容系统程序主要包括主程序、读出温度子程序、温度转换命令子程序、计算温度子程序和显示数据刷新子程序等。4.1.1主程序 主程序主要功能是负责温度的实时显示、读出处理DS18B20的测量温度值。温度测量每1秒进行一次。主程序流程图如图4.1所示:开始调用显示子程序是否到一秒是否初次上电读出温度值温度计算处理显示数据刷新初始化发出温

49、度转换开始命令图4.1 主程序流程图4.1.2 读出温度子程序读出温度子程序的主要功能是读出RAM中的9字节。在读出时须进行CRC校验,校验有错时不进行温度数据的改写。读出温度子程序流程图如图4.2所示:图4.2 读出温度子程序流程图4.1.3 温度转换命令子程序温度转换命令子程序主要是发温度转换开始命令,当采用12位分辨率时,转换时间约为750ms。在本程序设计中,采用1s显示程序延时法等待转换的完成。温度转换命令子程序流程图如图4.3所示:发DS18B20复位命令发跳过ROM命令发温度转换开始命令结束图4.3 温度转换命令子程序流程图4.1.4 计算温度子程序 计算温度子程序将RAM中读取

50、值进行BCD码的转换运算,并进行温度值正负的判定。计算温度子程序流程图如图4.4所示:图4.4 计算温度子程序流程图4.1.5 显示数据刷新子程序显示数据刷新子程序主要是对显示缓冲器的显示数据进行刷新操作,当最高数据显示位为0时,将符号显示位移入下一位。显示数据刷新子程序流程图如图4.5所示:图4.5 显示数据刷新子程序流程图4.1.6 温度数据的计算处理方法 从DS18B20读取出的二进制值必须转换成十进制值,才能用于字符的显示。DS18B20的转换精度为912位,为了提高精度采用12位。在采用12位转换精度时,温度寄存器里的值是以0.0625为步进的,即温度值为寄存器里的二进制值乘以0.0

51、625,就是实际的十进制温度值。 通过观察表4.1可以发现,一个十进制与二进制间有很明显的关系,就是把二进制的高字节的低半字节和低字节的高半字节组成一字节,这个字节的二进制化为十进制后,就是温度值的百、十、个位字节,所以二进制值范围是0F,转换成十进制小数就是0.0625的倍数(015倍)。这样需要4位的数码管来表示小数部分。实际应用不必这么高的精度,采用1位数码管来显示小数,可以精确到0.1。表4.1 二进制与十进制的近似对应关系表4.2 源程序4.2.1 DS18B20的各条ROM命令 (1)Read ROM33H。这条命令允许总线控制器独到DS18B20的8位系列编码、唯一的序列号和8位

52、CRC码。只要在总线上存在单只DS18B20时,才能使用该命令。如果总线上有不止一个从机,则当所有从机试图同时传送信号时就会发生数据冲突(漏极开路连在一起形成相“与”的效果)。(2)Match ROM55H.这是一条匹配ROM命令,后跟64位ROM序列,让总线控制器在多点总线上定位一只特定的DS18B20.只有与64位ROM序列完全匹配的DS18B20才能响应随后的存储器操作.所有与64位ROM序列不匹配的从机都将等待复位脉冲.这条命令在总线上有单个或多个器件时都可以使用.(3)Skip ROM0CCH.这条命令允许总线控制器不用提供64位ROM编码就使用存储器操作命令,在单点总线情况下,可以

53、节省时间.如果总线上不止一个从机,则在Skip ROM命令之后跟着发一条读命令.由于多个从机同时传送信号,所以总线上就会发生数据冲突(漏极开路下拉效果相当于相“与”)。(4)Search ROM0F0H。当一个系统初次启动时,总线控制器可能并不知道单线总线上有多少个器件或它们的64位ROM编码。搜索ROM命令允许总线控制器用排除法识别总线上的所有从机的64位编码。(5)Alarm Search0ECH。这条命令的流程与Search ROM相同。然而,只有在最近一次测温后遇到符合报警条件的情况下,DS18B20才会响应这条命令。报警条件定义为温度高于TH或低于TL。只要DS18B20不掉电,报警

54、状态将一直保持,直到再一次测得的温度值达不到报警条件。(6)Write Scratchpad4EH。这条命令向DS18B20的暂存器TH和TL中写入数据。可以在任何时刻发出复位命令来中止写入。(7)Read Scratchapad0BEH。这条命令读取暂存器的内容。读取将从第一字节开始,一直进行下去,知道第九字节(CRC)读完。如果不想读完所有字节,则控制器可以在任何时间发出复位命令来中止读取。(8)Copy Scratchpad48H。这条命令把暂存器的内容拷贝到DS18B20的E²PROM存储器里,即把温度报警触发字节存入非易失性存储器里。如果总线控制器在这条命令之后跟着发出读时间隙,而DS18B20又忙于把暂存器拷贝到E²PROM存储器,则DS18B20就会输出一个0;如果拷贝结束,

温馨提示

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

评论

0/150

提交评论