基于单片机的多点温度测量系统.doc_第1页
基于单片机的多点温度测量系统.doc_第2页
基于单片机的多点温度测量系统.doc_第3页
基于单片机的多点温度测量系统.doc_第4页
基于单片机的多点温度测量系统.doc_第5页
免费预览已结束,剩余25页可下载查看

下载本文档

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

文档简介

毕业论文(设计) 题 目 基于单片机的多点温度测量系统 学生姓名 学 号 院 系 专 业 指导教师 二一 年 五 月 二十 日目 录一、引言2二、系统设计方案的选择32.1方案设计32.2 方案的利弊及选择4三、电路设计53.1 AT89S51 简介53.1.1 主要特性53.1.2 引脚功能说明73.1.3 中断83.1.4 晶体振荡器特性103.2 数字温度传感器DS18B20 简介113.2.1DS18B20技术性能描述123.2.2 DS18B20的内部结构123.2.3 DS18B20测温原理143.2.4 DS18B20与单片机的典型接口设计153.2.5 DS18B20的精确延时问题163.2.6 DS18B20 的命令序列173.2.7 DSl8B20的工作过程及时序183.3 系统工作原理193.4 系统各部分电路设计20四、程序设计224.1 软件设计总体思路及主程序流程图224.2 多点温度的巡回测量234.3 显示流程图24五、产品调试255.1 测试环境及工具255.2 测试方法255.3 测试结果分析265.4 整机调试26六、结束语26参考资料27基于单片机的多点温度测量系统李鑫南京信息工程大学信息工程系,南京 210044摘要:温度测量系统在日常生活和工农业生产中有广泛的应用。本课题主要介绍基于AT89S51单片机和DS18B20数字温度传感器的多点温度测量系统。该系统利用多个数字温度传感器DS18B20采集不同地点的温度,经过主控芯片AT89S51单片机运算后,通过LED数码显示模块实时显示温度数据,测量精度可以达到0.5。本论文首先在绪论中介绍了该系统的背景和应用;第二章确定了设计方案;第三章论述了整个硬件的设计进程,包括芯片功能介绍,元器件的选择和电路图的设计;第四章论述了系统软件的编写进程;第五章主要论述了整个系统初步完成后的测试和调试过程,并对整个设计制作过程作了总结。基于AT89S51单片机和DS18B20数字温度传感器的多点温度测量系统具有硬件组成简单、多点测量、精度高、读数简单实时、测温范围广等优点。关键词:AT89S51单片机,DS18B20数字温度传感器,多点测量一、引言自20世纪40年代第一台电子通用计算机诞生以来以来。经过七十多年的发展,电子计算机经历了从电子管、晶体管、中小规模集成电路到大规模集成电路这样四个阶段,尤其是随着半导体集成技术的飞跃发展,七十年代初诞生了一代新型的电子计算机微型计算机,使得计算机应用日益广泛;而单片微型计算机(SCM)的问世,则更进一步推动了这一发展趋势,使计算机应用渗透到各行各业,达到了前所未有的普及程度。我国开始使用单片机是在1982年,短短五年时间里发展极为迅速。1986年在上海召开了全国首届单片机开发与应用交流会,有的地区还成立了单片微型计算机应用协会,那是全国形成的第一次高潮。截止今日,单片机应用技术飞速发展,我们上因特网输入一个“单片机”的搜索,将会看到上万个介绍单片机的网站,这还不包括国外的。由于单片机具有体积小、功耗低、控制功能强、扩展灵活、微型化和使用方便等独特优点,因此,在家用电器、医用设备、航空航天、儿童玩具、智能仪器仪表、工业自动控制、专用设备的智能化管理及过程控制、计算机智能终端等许多方面,都已得到了广泛的应用,因而受到人们高度重视,取得了一系列科研成果,成为传统工业技术改造和新产品更新换代的理想机种,具有广阔的发展前景。随着电子技术以及应用需求的发展,单片机技术得到了迅速的发展,在高集成度,高速度,低功耗以及高性能方面取得了很大的进展。伴随着科学技术的发展,电子技术有了更高的飞跃,我们现在完全可以运用单片机来代替人工测量,这样既省时又省力。在日常生活及工农业生产中经常要用到温度的检测及控制,传统的测温元件有温度计、热电偶和热点阻。而热电偶和热电阻测出的一般都是电压,再转换成对应的温度,需要比较多的外部硬件支持,硬件电路复杂,软件调试复杂,制作成本高,采用数字温度传感器可以避免这个问题。本数字温度测量系统采用美国ATMEL 公司生产的AT89S51单片机作为主控芯片和美国DALLAS半导体公司推出的智能温度传感器DS18B20作为检测元件。按照系统设计功能的要求,确定系统由3个模块组成:主控测温电路,显示电路及报警电路。二、系统设计方案的选择温度测量的方法多种多样,从最常见的水银温度计到高端的光纤复合型油气井下压力温度测量系统,千奇百怪,应有尽有,数也数不尽。在日常生活和工农业生产中应用比较广泛的自动温度测量系统主要就是由温度传感器和单片机组成的。2.1方案设计方案一:该方案由模拟温度传感器、运算放大器、A/D转换器、键盘、显示电路、集成功率放大器、报警电路等组成。如图2.1所示。图2.1 方案一温度测量系统方案框图传统的热电侧、热电阻、热敏电阻及半导体温度传感器都是将温度值经过一定的接口电路转换后输出模拟电压或电流信号,利用这些电压或电流信号即可进行测量控制。如果想将这种模拟信号转换成微处理器可以处理的信号,需利用模数转换器将其转换为数码,然后由微处理器读取即可。常见的模拟温度传感器AD公司TMP35/36/37、AD590、TMP17,NS公司的LM35/45/50/60等,该方案可采用AD590为温度传感器。首先将传感器将测量的温度变换转换成电流的变化,再通过电路转换成电压的变化,使用运算放大器交将信号进行适当的放大,最后通过模数转换器将模拟信号转换成数字信号,传给给单片机,单片机将温度值进行处理之后用数码显示 ,当温度值超过设置值时,系统开始报警。方案二:该方案由数字温度传感器、单片机、键盘、显示电路、报警电路等组成。如图2.2所示。温度传感器温度传感器温度传感器温度传感器单片机 键盘LED显示电路报警电路图2.2 方案二温度测量系统方案框图将模拟温度传感器与数字转换接口电路集成在一起,就成为具有数字输出能力的数字温度传感器。随着半导体技术的迅猛发展,半导体温度传感器与相应的转换电路、接口电路以及和种其它功能电路逐渐集成在一起,形成了功能强大、精确、价廉的数字温度传感器。 常见的数字温度传感器有AD公司的TMP03/04、AD7814,MAXIM公司的MAX6575L/H芯片、MAX16171619系列,DALLAS公司的DS1820、DS18B20等。该方案使用DS18B20作为温度传感器。将温度传感器采集到的数据输入单片机,运算后显示在LED显示器上,通过键盘切换不同的温度传感器,当温度超过设置值时,系统开始报警。2.2 方案的利弊及选择方案一采用模拟温度传感器,转换结果需要经过运算放大器和AD转换器传送给处理器。虽然它控制简单,但是电路复杂,不容易实现对多点温度进行测量和监控。由于采用了多个分立元件和数模转换器,容易出现误差,且模拟信号容易受干扰,测量结果不是很准确,因此本方案并不适合多点的高精度温度测量。方案二采用智能温度传感器DS18B20,它直接输出数字量,精度高,电路简单,只需要模拟DS18B20的读写时序,根据DS18B20的协议读取转换的温度。此方案硬件电路简单,程序设计稍微复杂一些,需要用到C语言进行编写。该方案适合多点的高精度温度测量。主控芯片方面采用市面上常见的AT89S51单片机。显示电路采用LED显示模块,报警电路采用一个无源蜂鸣器。三、电路设计3.1 AT89S51 简介AT89S51是美国ATMEL公司生产的低功耗,高性能COMS 8位单片机,片内含4k bytes的可系统编程的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准8051指令系统及引脚。它集Flash程序存储器既可在线编程(ISP)也可用传统方法进行编程及通用8为微处理器于单芯片中,ATMEL公司的功能强大,低价位AT89S51单片机可提供许多高性价比的应用场合,可灵活应用于各种控制领域。其实物如图3.1所示。图 3.1 AT89S51实物图3.1.1 主要特性 兼容MCS-51指令系统 4k可反复擦写(1000次)ISP Flash ROM 32个双向I/O口 4.5-5.5V工作电压 2个16位可编程定时/计数器 时钟频率0-33MHz 全双工UART串行中断口线 128x8bit内部RAM 2个外部中断源 低功耗空闲和省电模式 中断唤醒省电模式 3级加密位 看门狗(WDT)电路 软件设置空闲和省电功能 灵活的ISP字节和分页编程 双数据寄存器指针 图 3.2 AT89S51方框图 AT89S51提供以下标准功能:4K字节Flash闪速存储器,128字节内部RAM,32个I/O口线,看门狗(WDT),两个数据指针,两个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。同时,AT89S51可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。掉电方式保存RAM中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。3.1.2 引脚功能说明 Vcc: 电源电压 GND: 接地 P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。 P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。 P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。 P3.0 RXD(串行输入口) P3.1 TXD(串行输出口) P3.2 /INT0(外部中断0) P3.3 /INT1(外部中断1) P3.4 T0(记时器0外部输入) P3.5 T1(记时器1外部输入) P3.6 /WR(外部数据存储器写选通) P3.7 /RD(外部数据存储器读选通) P3口同时为闪烁编程和编程校验接收一些控制信号。I/O口作为输入口时有两种工作方式即所谓的读端口与读引脚读端口时实际上并不从外部读入数据而是把端口锁存器的内容读入到内部总线经过某种运算或变换后再写回到端口锁存器只有读端口时才真正地把外部的数据读入到内部总线上面图中的两个三角形表示的就是输入缓冲器CPU将根据不同的指令分别发出读端口或读引脚信号以完成不同的操作这是由硬件自动完成的不需要我们操心1然后再实行读引脚操作否则就可能读入出错为什么看上面的图如果不对端口置1端口锁存器原来的状态有可能为0Q端为0Q为1加到场效应管栅极的信号为1该场效应管就导通对地呈现低阻抗,此时即使引脚上输入的信号为1也会因端口的低阻抗而使信号变低使得外加的1信号读入后不一定是1若先执行置1操作则可以使场效应管截止引脚信号直接加到三态缓冲器中实现正确的读入由于在输入操作时还必须附加一个准备动作所以这类I/O口被称为准双向口89C51的P0/P1/P2/P3口作为输入时都是准双向口接下来让我们再看另一个问题从图中可以看出这四个端口还有一个差别除了P1口外P0 P2 P3口都还有其他的功能。 RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。 :当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。 :外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次有效。但在访问外部数据存储器时,这两次有效的信号将不出现。 EA/VPP:当EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,EA将内部锁定为RESET;当EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。 XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。 XTAL2:来自反向振荡器的输出。振荡器特性:XTAL1和XTAL2分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件,XTAL2应不接。有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。 3.1.3 中断AT89S51共有5个中断向量:2个外中断(INT0和INT1),2个定时中断(Timer0和Timer1)和一个串行中断。这些中断如图3.3。图 3.3 中断源方框图这些中断源各自的禁止和使能位参见特殊功能寄存器的IE。IE也包含总中断控制位EA,EA清0,将关闭所有中断。值得注意的是表3-1中的IE.6和IE.5没有定义,用户不要访问这些位,它是保留为以后的AT89产品作扩展用途。定时器0和定时器1的中断标志TF0和TF1,它是定时器溢出时的S5P2时序周期被置位,该标志保留至下个时序周期。表3-1:中断控制寄存器3.1.4 晶体振荡器特性 AT89S51中有一个用于构成内部振荡器的高增益反相放大器,引脚XTAL1和XTAL2分别是该放大器的输入端和输出端。这个放大器与作为反馈元件的片外石英晶体或陶瓷谐振器一起构成自激振荡器,振荡电路参见图1.6。外接石英晶体(或陶瓷谐振器)及电容C1、C2接在放大器的反馈回路中构成并联振荡电路。对外接电容C1、C2虽然没有十分严格的要求,但电容容量的大小会轻微影响振荡频率的高低、振荡器工作的稳定性、起振的难易程度及温度稳定性。如果使用石英晶体,我们推荐电容使用30pF10pF,而如使用陶瓷谐振器建议选择40pF10pF。用户也可以采用外部时钟。采用外部时钟的电路如图3.4右图所示。这种情况下,外部时钟脉冲接到XTAL1端,即内部时钟发生器的输入端,XTAL2则悬空。由于外部时钟信号是通过一个2分频触发器后作为内部时钟信号的,所以对外部时钟信号的占空比没有特殊要求,但最小高电平持续时间和最大的低电平持续时间应符合产品技术条件的要求。图3.4 晶体接线图和外接时钟电路图3.2 数字温度传感器DS18B20 简介DS18B20是美国DALLAS半导体公司继DS1820之后最新推出的一种改进型智能温度传感器。与传统的热敏电阻相比,他能够直接读出被测温度并且可根据实际要求通过简单的编程实现912位的数字值读数方式。可以分别在93.75 ms和750 ms内完成9位和12位的数字量,并且从DS18B20读出的信息或写入DS18B20的信息仅需要一根口线(单线接口)读写,温度变换功率来源于数据总线,总线本身也可以向所挂接的DS18B20供电,而无需额外电源。因而使用DS18B20可使系统结构更趋简单,可靠性更高。他在测温精度、转换时间、传输距离、分辨率等方面较DS1820有了很大的改进,给用户带来了更方便的使用和更令人满意的效果。其实物如图3.5所示。图3.5 DS18B20实物图3.2.1DS18B20技术性能描述(1) 独特的单线接口方式:DS18B20与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通信。(2)在使用中不需要任何外围元件。(3)可用数据线供电,电压范围:+3.0+5.5 V。(4)测温范围:-55 +125 。固有测温分辨率为0.5 。(5)通过编程可实现912位的数字读数方式。(6)用户可自设定非易失性的报警上下限值。(7)支持多点组网功能,多个DS18B20可以并联在惟一的三线上,实现多点测温。(8)负压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作。3.2.2 DS18B20的内部结构 DS18B20采用3脚PR35封装或8脚SOIC封装,其内部结构框图如图3.6所示。图3.6 DS18B20内部结构(1) 64 b闪速ROM的结构如下: 开始8位是产品类型的编号,接着是每个器件的惟一的序号,共有48位,最后8位是前56位的CRC校验码,这也是多个DS18B20可以采用一线进行通信的原因。(2) 非易市失性温度报警触发器TH和TL,可通过软件写入用户报警上下限。(3) 高速暂存存储器 DS18B20温度传感器的内部存储器包括一个高速暂存RAM和一个非易失性的可电擦除的E2RAM。后者用于存储TH,TL值。数据先写入RAM,经校验后再传给E2RAM。而配置寄存器为高速暂存器中的第5个字节,他的内容用于确定温度值的数字转换分辨率,DS18B20工作时按此寄存器中的分辨率将温度转换为相应精度的数值。该字节各位的定义如下: 低5位一直都是1,TM是测试模式位,用于设置DS18B20在工作模式还是在测试模式。在DS18B20出厂时该位被设置为0,用户不要去改动,R1和R0决定温度转换的精度位数,即是来设置分辨率,如表2所示(DS18B20出厂时被设置为12位)。表3-2:R1和R0模式表 由表3-2可见,设定的分辨率越高,所需要的温度数据转换时间就越长。因此,在实际应用中要在分辨率和转换时间权衡考虑。 高速暂存存储器除了配置寄存器外,还有其他8个字节组成,其分配如下所示。其中温度信息(第1,2字节)、TH和TL值第3,4字节、第68字节未用,表现为全逻辑1;第9字节读出的是前面所有8个字节的CRC码,可用来保证通信正确。 当DS18B20接收到温度转换命令后,开始启动转换。转换完成后的温度值就以16位带符号扩展的二进制补码形式存储在高速暂存存储器的第1,2字节。单片机可通过单线接口读到该数据,读取时低位在前,高位在后,数据格式以0062 5 /LSB形式表示。温度值格式如下: 对应的温度计算:当符号位S=0时,直接将二进制位转换为十进制;当S=1时,先将补码变换为原码,再计算十进制值。表3是对应的一部分温度值。表3-3:部分温度值DS18B20完成温度转换后,就把测得的温度值与TH,TL作比较,若TTH或TTL,则将该器件内的告警标志置位,并对主机发出的告警搜索命令作出响应。因此,可用多只DS18B20同时测量温度并进行告警搜索。 (4) CRC的产生 在64 b ROM的最高有效字节中存储有循环冗余校验码(CRC)。主机根据ROM的前56位来计算CRC值,并和存入DS18B20中的CRC值做比较,以判断主机收到的ROM数据是否正确。3.2.3 DS18B20测温原理 图3.7 DS18B20内部测温电路框图 DS18B20的测温原理如图3.7所示,图中低温度系数晶振的振荡频率受温度的影响很小,用于产生固定频率的脉冲信号送给减法计数器1,高温度系数晶振随温度变化其震荡频率明显改变,所产生的信号作为减法计数器2的脉冲输入,图中还隐含着计数门,当计数门打开时,DS18B20就对低温度系数振荡器产生的时钟脉冲后进行计数,进而完成温度测量。计数门的开启时间由高温度系数振荡器来决定,每次测量前,首先将-55 所对应的基数分别置入减法计数器1和温度寄存器中,减法计数器1和温度寄存器被预置在-55 所对应的一个基数值。减法计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当减法计数器1的预置值减到0时温度寄存器的值将加1,减法计数器1的预置将重新被装入,减法计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到减法计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。图3.7中的斜率累加器用于补偿和修正测温过程中的非线性,其输出用于修正减法计数器的预置值,只要计数门仍未关闭就重复上述过程,直至温度寄存器值达到被测温度值,这就是DS18B20的测温原理。 另外,由于DS18B20单线通信功能是分时完成的,他有严格的时隙概念,因此读写时序很重要。系统对DS18B20的各种操作必须按协议进行。操作协议为:初始化DS18B20(发复位脉冲)发ROM功能命令发存储器操作命令处理数据。各种操作的时序图与DS1820 相同。图3.8 DS18B20与微处理器的典型连接3.2.4 DS18B20与单片机的典型接口设计以MCS51单片机为例,图3.8中采用寄生电源供电方式, P11口接单线总线为保证在有效的DS18B20时钟周期内提供足够的电流,可用一个MOSFET管和89C51的P10来完成对总线的上拉。当DS18B20处于写存储器操作和温度A/D变换操作时,总线上必须有强的上拉,上拉开启时间最大为10 s。采用寄生电源供电方式是VDD和GND端均接地。由于单线制只有一根线,因此发送接收口必须是三态的。主机控制DS18B20完成温度转换必须经过3个步骤:初始化、ROM操作指令、存储器操作指令。假设单片机系统所用的晶振频率为12 MHz,根据DS18B20的初始化时序、写时序和读时序,分别编写3个子程序:INIT为初始化子程序,WRITE为写(命令或数据)子程序,READ为读数据子程序,所有的数据读写均由最低位开始,实际在实验中不用这种方式,只要在数据线上加一个上拉电阻4.7 k,另外2个脚分别接电源和地。序号名称引脚功能描述1GND地信号2DQ数字输入输出引脚,开漏单总线接口引脚,当使用寄生电源时,可向电源提供电源3VDD可选择的VDD引脚,当工作于寄生电源时,该引脚必须接地表3-4 :DS18B20详细引脚功能描述3.2.5 DS18B20的精确延时问题虽然DS18B20有诸多优点,但使用起来并非易事,由于采用单总线数据传输方式,DS18B20的数据I/O均由同一条线完成。因此,对读写的操作时序要求严格。为保证DS18B20的严格I/O时序,需要做较精确的延时。在DS18B20操作中,用到的延时有15 s,90 s,270 s,540 s等。因这些延时均为15 s的整数倍,因此可编写一个DELAY15(n)函数,源码如下:Void delay15(n) Unsigned char n; do _nop_( );/01. _nop_( );/12 n-while(n) 只要用该函数进行大约15 sN的延时即可。有了比较精确的延时保证,就可以对DS18B20进行读写操作、温度转换及显示等操作。3.2.6 DS18B20 的命令序列 初始化 ROM命令跟随着需要交换的数据; 功能命令跟随着需要交换的数据。访问DS18B20必须严格遵守这一命令序列,如果丢失任何一步或序列混乱,DS18B20都不会响应主机(除了Search ROM 和Alarm Search这两个命令,在这两个命令后,主机都必须返回到第一步)。a初始化:DS18B20所有的数据交换都由一个初始化序列开始。由主机发出的复位脉冲和跟在其后的由DS18B20发出的应答脉冲构成。当DS18B20发出响应主机的应答脉冲时,即向主机表明它已处在总线上并且准备工作。b. ROM命令:ROM命令通过每个器件64-bit的ROM码,使主机指定某一特定器件(如果有多个器件挂在总线上)与之进行通信。DS18B20的ROM如表5所示,每个ROM命令都是8 bit长。c. 功能命令:主机通过功能命令对DS18B20进行读/写Scratchpad存储器,或者启动温度转换。DS18B20的功能命令如下表所示。指令协议功能读ROM33H读DS18B20中的编码(即64位地址)符合ROM55H发出此命令后,接着发出64位ROM编码,访问单总线上与该编码相对应的DS18B20,使之作出响应,为下一步对该DS18B20的读写作准备搜索ROM0F0H用于确定挂接在同一总线上DS18B20的个数和识别64位ROM地址,为操作各器件作好准备跳过ROM0CCH忽略64位ROM地址,直接向DS18B20V 温度转换命令,适用于单个DS18B20工作告警搜索命令0ECH执行后,只有温度超过庙宇值上限或下限的片子才做出响应温度转换44H启动DS18B20进行温度转换,转换时间最长为500ms(典型为200ms),结果丰入内部9字节RAM中读暂存器BEH读内部RAM中9字节的内容写暂存器4EH发出向内部RAM的第3、4字节写上、下温度数据命令,紧该温度命令之后,传达两字节的数据复制暂存器48H将RAM中第3、4字内容复制到E2PROM中重调E2PROM0B8H将E2PROM中内容恢复到RAM中的第3、4字节读供电方式0B4H读DS18B20的供电模式,寄生供电时DS18B20发送“0”,外部供电时DS18B20发送“1”表3-5 :DS18B20的命令序列3.2.7 DSl8B20的工作过程及时序DS18B20工作过程中的协议由四个部分组成:初始化,ROM操作命令,存储器操作命令,处理数据。其工作时序包括初始化时序、写时序和读时序。典型的单总线命令序列:第一步:初始化;第二步:ROM操作命令(跟随需要交换的数据);第三步:功能命令(跟随需要交换的数据)。每次访问单总线器件,必须严格遵守这个命令序列,如果序列混乱,则单总线器件不会影响主机。但是该限制对于搜索ROM命令和报警搜索命令例外,在执行两者中任何一条命令之后,主机不能执行其后的功能命令,必须返回至第一步。 (1)初始化单总线上的所有处理均从初始化开始;它由主机发送的复位脉冲和从机发送的存在脉冲组成。存在脉冲使主机知道线上的DS18B20是否准备好。 (2)ROM操作命令总线主机检测到DS18B20的存在便可以发出ROM操作命令。(3)存储器操作命令在执行ROM操作命令后执行存储器操作命令。3.3 系统工作原理基于DS18B20多点温度测量系统以AT89S51为中心器件,以KEIL为系统开发平台,用C语言进行程序设计,以PROTEUS作为仿真软件设计而成的。系统主要由传感器电路、LED显示电路、报警电路组成。DS18B20是智能温度传感器,它的输入/输出采用数字量,以单总线技术,接收主机发送的命令,根据DS18B20内部的协议进行相应的处理,将转换的温度以串口发送给主机。主机按照通信协议用一个IO口模拟DS18B20的时序,发送命令(初始化命令、ROM命令、功能命令)给DS18B20,并读取温度值,在内部进行相应的数值处理,用LED显示各点的温度。在系统启动之时,可以通过键盘设置各点温度的上限值,当某点温度超过设置值时,报警器开始报警,从而实现了对各点温度的实时监控。 每个DS18B20有自己的序列号,因此本系统可以在一根总线上挂接了2个DS18B20,通过CRC校验,对各个DS18B20的ROM进行寻址,地址符合的DS18B20才作出响应,接收主机的命令,向主机发送转换的温度。采用这种DS18B20寻址技术,使系统硬件电路更加简单。DS18B20虽然有测温简单的特点,但在实际应用中应注意一下几点: (1)较小的硬件开销需要相对复杂的软件进行补偿, 由于DS1820与微处理器间采用串行数据传送,因此,在对DS1820进行读写编程时,必须严格的保证读写. (2)在DS1820的有关资料中均未提及单总线上所挂DS1820数量问题,容易使人误认为可以挂任意多个DS1820,在实际应用中并非如此。当单总线上所挂DS1820超过8个时,就需要解决微处理器的总线驱动问题,这一点在进行多点测温系统设计时要加以注意。(4)在DS18 20测温程序设计中,向DS1820发出温度转换命令后,程序总要等待DS1820的返回信号,一旦某个DS1820接触不好或断线,当程序读该DS1820时,将没有返回信号,程序进入死循环。这一点在进行DS1820硬件连接和软件设计时也要给予一定的重视.3.4 系统各部分电路设计图3.9 系统主电路 图 3.10 测温电路图 图 3.11 键盘电路图图 3.12 显示部分电路图 图 3.13 复位电路 图 3.14 报警电路图 3.15 时钟电路图 3.16 电源电路四、程序设计4.1 软件设计总体思路及主程序流程图 本系统采用C语言编写,主程序主要由四部分构成,上电后首先对系统进行初始化,相继完成温度采集、温度处理、数据显示、键盘处理等四项功能。温度采集部分主要完成2个温度测试点的温度数据采集;温度处理部分主要是将采集到的温度数据与用户设定的各点上下限温度值进行比较处理,并判断是否超出设定的上下限值,如果超出则蜂鸣器报警;数据显示部分主要实现温度数据的显示,显示方式根据设计要求支持1到18个温度测试点的轮流循环显示和固定显示两种方式;键盘处理部分主要实现用户对系统参数的设置,结合显示部分,实现用户与系统之间的人机接口。系统软件主流程如图4.1所示: 图4.1系统软件主程序 4.2 多点温度的巡回测量开关K1打开,将T断开处接上。由于已经在上面获取了多个DS18B20的ROM代码并在89S51单片机内部的E2PROM中建立了测量位置点和传感器64位ROM代码之间的关系表,因此对多个温度的巡回测量的步骤如下:(1)发跳过ROM命令CCH。(2)发启动所有在线的DS18B20进行温度转换命令44H。(3)延迟1s。(4)发匹配ROM命令55H。(5)按照EPROME中建立的关系表的顺序取出64位ROM代码发送到单总线。(6)发读温度值命令BEH,读取温度值。(7)进行CRC校验和数据处理后送LCD显示器显示。(8)重复第4步到第7步,直到所有的DS18B20测量处理完。(9)再重复第1步到第8步,进行下一轮的巡回测量。如果只对某一个DS18B20进行温度测量,只要将第1步跳过ROM命令CCH,改为匹配ROM命令55H,将拨动开关拨到和要测量的DS18B20的编号相对应的数值上,单片机读取拨动开关的数值(编号)n,到EPROM建立的关系表中从(n -1)8开始的单元取出ROM代码发送到总线,去掉第8步,其余和上面步骤相似即可。测试中,DS18B20选择芯片出厂时默认的12位转换精度,转换的结果用16位符号扩展的二进制补码读数形式提供。图4.2度测量电路流程图4.3 显示流程图图4.3数码管的显示流程显示程序的处理过程是通过单片机对数码管进行扫描,显示按键的键值,设置其上(下)限的值,从而判断其所策温度的大小。五、产品调试5.1 测试环境及工具测试温度:0100摄氏度。(模拟多点不同温度值环境)测试仪器及软件:数字万用表,温度计0100摄氏度,串口调试助手。测试方法:目测。5.2 测试方法使系统运行,观察系统硬件检测是否正常(包括单片机最小系统,键盘电路,显示电路,温度测试电路等)。系统自带测试表格数据,观察显示数据是否相符合即可。用杯子装一杯温水,用玻璃胶棒将DS18B20封好,和一支温度计同时放入温水中,然后通电,将DS18B20测到的温度显示到LED上。将两者测到的温度进行比较,发现二者温度相近,然后往杯中注入部分冷水,再次比较,发现二者温度差距,通过测试可知温度检测部分电路工作正常。5.3 测试结果分析自检正常,各点温度显示正常,串口传输数据正确。因为芯片是塑料封装,所以对温度的感应灵敏度不是相当高,需要一个很短的时间才能达到稳定。5.4 整机调试将硬件及软件结合起来进行系统的统一调试。调试过程中,当某个温度测量点的温度值超过其上、下限值时,发出声光报警信号,并累计报警的温度测量点的个数;当显示报警的温度测量点的温度值时,其编号闪烁显示;可手动切除声光报警信号。六、结束语经过几个月的奋战我的毕业设计终于完成了。毕业设计不仅是对大学几年来所学知识的一种检验,而且也是对自己能力的一种提高。通过这次毕业设计使我明白了原来自己的知识还比较欠缺。自己要学习的东西还太多,以前总是觉得自己什么东西都会,什么东西都好像懂了一样,有点眼高手低。通过这次毕业设计,我才明白学习是一个长期积累的过程,在以后的工作、生活中都应该不断的学习,努力提高自己的知识和综合素质。 在这几个月的时间里,我和指导老师经过了多次交流,通过和老师的交流使我学会了很多设计技巧及方法。有不懂的地方及遇到自己难以解决的问题便向老师请教,老师每次都耐心指导我,并一步一步把我引向成功。我在老师那里不仅学到了很多额外的知识,同时也学到了不少解决问题的方式方法,在此我非常感谢帮助过我的指导老师王新蕾。在设计过程中,我通过查阅大量有关资料,与同学交流经验和自学,并向老师请教等方式,使自己学到了不少知识,也经历了不少艰辛,但收获同样巨大。在整个设计中我懂得了许多东西,也培养了我独立工作的能力,树立了对自己工作能力的信心,相信会对今后的学习工作生活有非常重要的影响。虽然这个设计做的也不太好,但是在设计过程中所学到的东西是这次毕业设计的最大收获和财富,使我终身受益。参考资料1 胡振宇,刘鲁源,杜振辉DS18B20接口的C语言程序设计J单片机与嵌入式系统应用,2002,(7)2 金伟正单线数字温度传感器的原理与应用J.电子技术应用,2000,(6):66683 何立民单片机高级教程北京航空航天大学出版社.2004.74 粟世明、刘湘涛.单片机原理与应用电子工业出版社.2006.85 李华MCU-51系列单片机实用接口技术北京:北京航空航天大学出版社,1993.66 陈光东单片机微型计算机原理与接口技术(第二版)武汉:华中理工大学出版社,1999.47 徐淑华,程退安,姚万生单片机微型机原理及应用哈尔滨:哈尔滨工业大学出版社,1999.6.8 锻九州放大电路实用设计手册沈阳:辽宁科学技术出版社,2002.510 马田华等可编程单总线数字式温度传感器DS18B2的原理与应用电子质量2004.711 于永学等1-Wire总线数字温度传感器DS18B20及应用电子产品世界2003.1212 张胜全D18B20数字温度计在微机温度采集系统中的序编制南京:南京大学出版社1998.313 Dallas Semiconductor Data BooksZ. Dallas Semiconductor Corporation,200015 曹志刚.现代通讯原理M.清华大学出版社,199216 胡欣.DS18S20及其在温度巡回检测中的应用J.电子技术,2002(5) 17 周晗晓,袁慧梅单片机系统的印制板设计与抗干扰技术电子工艺技术2004.618 h

温馨提示

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

评论

0/150

提交评论