温度测量及显示仿真实现毕业论文.doc_第1页
温度测量及显示仿真实现毕业论文.doc_第2页
温度测量及显示仿真实现毕业论文.doc_第3页
温度测量及显示仿真实现毕业论文.doc_第4页
温度测量及显示仿真实现毕业论文.doc_第5页
已阅读5页,还剩88页未读 继续免费阅读

下载本文档

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

文档简介

盐城工学院学士学位论文(毕业设计说明书) 2010温度测量及显示仿真实现毕业论文目 录1 概述.11.1 课题研究的背景.11.2 课题研究的意义.11.3 课题研究的目的.21.4 课题研究的任务及要求.22 系统总体设计方案.3 2.1 系统的功能设计.3 2.2 系统的组成与工作原理.32.2 系统的设计说明.33 系统硬件电路的设计.4 3.1 系统硬件电路构成及测量原理.4 3.1.1 系统硬件电路构成.4 3.1.2 系统测量原理.5 3.2 单片机AT89C51.5 3.2.1 AT89C51的主要性能参数.5 3.2.2 功能特性概述.6 3.2.3 引脚功能说明.6 3.2.4 时钟振荡器.8 3.2.5 AT89C51软件编程模式.8 3.2.6 单片机最小系统设计.9 3.2.7 关于单片机上拉和阻值选择的问题.11 3.3 数字温度传感器DS18B20.12 3.3.1 DS18B20技术性能描述 .12 3.3.2 数字温度传感器DS18B20的简单介绍12 3.3.3 AT89C51单片机与DS18B20的接口.16 3.3.4 DS18B20使用中注意事项.18 3.4 液晶显示器LCD1602.19 3.4.1 LCD1602简介.19 3.4.2 指令集.20 3.4.3 LCD1602使用方法.24 3.4.4 LCD1602的典型电路.26 3.5 存储器芯片24C04A.27 3.5.1 24C04A的特点.27 3.5.2 24C04A的一般说明.28 3.5.3 24C04A的总线特性.284 系统的软件设计.31 4.1 系统的总体设计思路.31 4.2 系统的程序设计.31 4.2.1 主程序.31 4.2.2 读出温度子程序.31 4.2.3 温度转化命令子程序32 4.2.4 计算温度子程序32 4.2.5 显示数据刷新子程序 .33 5 PROTEUS软件仿真.33 5.1 PROTEUS 仿真器与集成开发环境KEIL.33 5.1.1 PROTEUS 仿真器. 33 5.1.2 集成开发环境KEIL.34 5.2 绘制温度测量系统仿真电路图.34 5.3 实现温度测量系统的仿真.356 结束语.38参考文献.39致谢.40附录1:程序清单.41附录2:设计图纸.48温度测量及显示仿真实现1 概 述1.1 课题研究的背景测量控制的作用是从生产现场中获取各种参数,运用科学计算的方法,综合各种先进技术,使每个生产环节都能够得到有效的控制,不但保证了生产的规范化、提高产品质量、降低成本,还确保了生产安全。所以,测量控制技术已经被广泛应用于炼油、化工、冶金、电力、电子、轻工和纺织等行业。随着单片机技术的迅速兴起与蓬勃发展,其稳定、安全、高效、经济等优点十分突出,所以其应用也十分广泛。单片机已经无处不在,与我们生活息息相关,并且渗透到生活的方方面面。单片机的特点是体积小,也就是其集成特性,其内部机构是普通计算机系统的简化,增加一些外围电路,组成了一个完整的小系统,单片机具有很强的可扩展性。它具有和普遍计算机类似的、强大的数据处理功能,通过使用一些科学的算法,可以获得很强的数据处理能力。所以单片机在工业中的应用可以极大地提高工业设备的智能化、数据处理能力和处理效率,而且单片机无需占很大的空间。随着温度检测理论和技术的不断更新,温度传感器的种类也越来越多,在微机系统中使用的传感器,必须是能够将非电量转换成电量的传感器,目前常用的有热电偶传感器、热电阻传感器和半导体集成传感器等,每种传感器根据其自身特性,都有它自己的应用领域。本设计所介绍的数字温度计与传统的温度计相比,具有读数方便,测温范围广,测温精确,其输出温度采用数字显示,主要用于对测温比较精确的场所,或者科研实验室使用,该设计控制器使用单片机AT89C51,测温传感器使用DS18B20,用液晶显示器LCD1602实现温度显示,并用24C04A作为存储器,能准确达到以上要求。1.2 课题研究的意义温度是一个非常重要的物理量,因为它直接影响燃烧、化学反应、发酵、烘烤、煅烧、蒸馏、浓度、挤压成形、结晶以及空气流动等物理和化学过程。温度控制失误可能引起生产安全、产品质量、产品产量等一系列问题,因此对温度检测的意义就越来越大。温度采集控制系统在工业生产、科学研究和人们的生活领域中,得到了广泛应用。在工业生产过程中,很多时候都需要对温度进行严格的监控,以使得生产能够顺利进行,产品的质量才能够得到充分的保证。使用自动温度控制系统可以对生产环境的温度进行自动控制,保证生产的自动化、智能化能够顺利安全进行,从而提高企业的生产效率。在实际生产、生活等各个领域中,温度是环境因素的不可或缺的一部分,对温度及时精确的控制和检测显得尤为重要。比如,农业上土壤各个层面上的温度将会影响植物的生长;在医院的监护中也用到温度的测量;在工业中,料筒里外上限温度要求不一,以及热处理中工件各个部件的温度对工件形成后的性能至关重要等等。现代电子工业的飞速发展对自动测试的要求越来越高,采用单片机对温度进行控制,不仅具有控制方便和组态简单的优点,而且可以提高被控温度的技术指标。针对以上情况,在控制成本的前提下,通过本设计设计一款能够实时检测控制温度,又具有对系统设定不同的报警温度的温度控制报警系统功能。此系统能够满足现代生产生活的要求,效率高,具有较强的稳定性和灵活性。通过本系统提高对于温度控制的认识,在学习实践中提高对理论的认知能力,达到学习实践相结合的目的。采用先进的科学技术,加以丰富的实际经验和知识,向社会提供各种超值安全设备服务,给用户带来安全和放心。本文给出了一个简单的单片机系统,该系统是单片机AT89C51采集温度信号并显示的实例,主要叙述了其硬件和软件设计的原理。温度传感器选用目前常用的数字温度传感器DS18B20,采用24C04A存储并用液晶显示器LCD1602显示,当温度低于0时会自动报警,最后使用proteus仿真。根据系统的总体设计在充分理解选用的各个芯片的原理以及与单片机接口原理、编程原理的基础上,进行电路原理图的设计。原理图见附录2。1.3 课题设计的目的 (1)加强对单片机和C51语言的认识,充分掌握和理解各部分设计的工作原理、设计过程,选择适合的芯片器件,模块化编程等多项知识。 (2)用单片机模拟实现具体应用,使个人设计能够真正实现。 (3)把理论知识和实践相结合,在实践中锻炼。 (4)提高利用已学知识分析和解决问题的能力。1.4 课题设计的任务及要求本次毕业设计的任务是针对实际要求,灵活应用所学知识,结合教材以及参考资料,用AT89C51单片机模拟实现温度实时测量及显示等功能,以达到巩固单片机基础知识、掌握单片机系统开发过程和提高动手实践能力的目的。毕业设计的设计要求: (1)使用数字温度传感器DS18B20实现温度数据的采集、传输。 (2)使用液晶显示器LCD1602实现所采集温度的显示。 (3)使用24CO4A作为存储器存储数据。 (4)当温度低于0时,蜂鸣器自动报警。 (5)设计正确的原理图和编写正确的程序代码。 (6)实现proteus仿真。 2系统总体设计2.1 系统的功能设计系统要完成的设计功能如下:u 实现对外界环境温度参数的实时采集,测量空间的温度:根据测量空间或设备的实际需要,由温度传感器对关键温度敏感点进行测量,由单片机对其数据进行循环检测、显示、存储,实现温度的测量。u 实现对所采集的温度进行控制:当温度值低于或高于设定的某温度值范围时,报警电路相应地会发出警告声。u 在PROTEUS软件下仿真:在PROTEUS环境下实现硬件和软件的调试,并进行仿真。u 软件编程应具有功能强大、便于操作和执行速度快等特点。要求达到的技术指标:测温范围:-20100测温精度:正负0.52.2 系统的组成与工作原理 以单片机为控制核心,采用温度测量技术,以温度传感器作为测量元件,构成温度测量系统。该系统可分为温度测量电路以及显示电路,见图1。选用的主要器件有:单片机AT89C51,温度传感器DS18B20,液晶显示器LCD1602,扬声器等。图1 硬件结构图本系统以单片机AT89C51为核心,数据采集、显示都要通过单片机。数据采集通过单总线的温度传感器DS18B20完成;由液晶显示器实时显示接收的数值;当温度值超过系统所规定得范围值时,系统会自动发出报警声。在整个系统中单片机部分采用C语言编程。2.3 系统设计说明本设计是一个数字温度测量及控制系统,能测量环境中的温度,并能在超限的情况下报警,保证环境保持在限定的温度中。该系统的总体设计思路如下:温度传感器DS18B20把所测得的温度发送到AT89C51单片机上,经过51单片机处理,将把温度在显示电路上显示,本系统显示器为点阵字符LCD1602液晶显示模块,检测范围560。本系统除了显示温度以外还可以设置一个温度值,对所测量的温度进行监控,当温度高于或低于设定温度时,开始报警并启动相应程序。自动报警主机的核心器件是单片机,它是整个系统的心脏,由它来接受报警信号并控制协调各功能模块的正常工作,考虑到系统的功能和经济性因素,采用的是当今流行的性价比比较高的AT89C51。所以温度控制系统采用AT89C51八位机作为微处理单元进行控制,温度传感器把采集的信号与单片机里的数据相比较来控制温度控制器。根据系统的设计要求,选择DS18B20作为本系统的温度传感器,选择单片机AT89C51为测量控制系统的核心来完成数据采集、处理、显示、报警等功能。选用美国DALLAS半导体公司最新推出的一种改进型智能数字温度传感器DS18B20,与传统的热敏电阻等测温元件相比,它省去了采样/保持电路、运放、数/模转换电路以及进行长距离传输时的串/并转换电路,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现912位的数字值读数方式,简化了电路,缩短了系统的工作时间,降低了系统的硬件成本。3 系统硬件电路的设计3.1 系统硬件电路构成及测量原理 由于系统要对环境温度进行测量,因此采用单片机对单总线系统进行现场监控是非常经济实惠的方案,其硬件连接非常简单,可用单片机并口P1、P2、P3中的任一端口与单总线来实现双向数据传输。3.1.1 系统硬件电路构成本系统以单片机为核心,组成一个集温度的采集、显示、存储为一身的闭环系统,其原理框图如图2所示。温度传感器采集温度信号,温度传感器有模拟输出和数字输出传感器两种形式,这里我将选用具有数字输出的DS18B20;单片机是系统的核心,选用AT89C51;系统采用液晶屏LCD1602显示温度值;使用存储器24C04A来存储数据;采用蜂鸣器进行报警。整个电路图的结构是比较简单的:直接使用AT89C51单片机、温度传感器DS18B20、液晶显示屏LCD1602、存储器24C04A、蜂鸣器和一排上拉电阻构成。由于AT89系列单片机与MCS-51系列单片机兼容,所以,本系统中的单片机选用AT89C51。整个电路图的关键是AT89C51的P0口接上一组排阻。在这里先简要介绍下AT89C51单片机的几个端口,P0作为地址数据总线时,T1和T2是一起工作的,构成推挽结构。高电平时,T1打开,T2截止;低电平时,T1截止,T2打开。这种情况下不用外接上拉电阻。当T1打开,T2截止,输出高电平的时候,因为内部电源直接通过T1输出到P0口线上,因此驱动能力(电流)可以很大,可以驱动8个TTL负载。图2 温度测量系统硬件电路原理图 温度传感器的作用是采集环境温度。由于智能温度传感器DS18B20既能对温度进行测量,又能把温度的二进制值转换成十进制值,所以本设计选用智能温度传感器DS18B20。传感器和数字转换电路都被集成在一起,每个DS18B20都具有唯一的64位序列号,并且DS18B20只有一个数据输入/输出口,因此,多个DS18B20可以并联到2或3根线上,CPU只需一根端口线就能与诸多DS18B20进行通信,而它们只需简单的通信协议就能加以识别,这样就节省了大量的引线和逻辑电路。由于该温度计采用数字输出形式,故不需要A/D转换器。单片机主要是对温度传感器DS18B20进行编程,读取温度传感器的温度值,并把温度值通过显示器显示出来。尽管DS18B20的分辨率可以达到0.0625,但其测量精度为0.5。因此使用液晶屏LCD1602显示屏就足够了,显示3位整数(负温度时,为2位整数),1位小数。3.1.2 系统工作原理采用单总线技术设计的温度测量系统,整个系统以AT89C51单片机为主机,其它设备为从设备。本系统通过单总线可以挂接很多个智能温度传感器DS18B20,用于不同地方的温度测量。该温度测量系统的工作原理就是进行单片机编程,是智能温度传感器DS18B20正常工作,去测量外界环境的实际温度,使用存储器存储数据,并由数字显示电路显示当时的温度值,另外根据其温度值判断是否需要发出蜂鸣声。3.2 单片机AT89C513.2.1 AT89C51的主要性能参数u 与MCS-51产品指令系统完全兼容u 4K字节可重复擦写Flash闪速存储器u 1000次擦写周期u 全静态操作:0Hz-24MHzu 三级加密程序存储器u 128*8字节内部RAMu 32个可编程I/O口线u 2个16位定时/计数器u 6个中断源u 可编程串行UART通道u 低功耗空闲和掉电模式3.2.2 功能特性概述AT89C51提供以下标准功能:4K字节Flash闪速存储器,128字节内部RAM,32个I/O口线,两个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。同时,AT89C51可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。掉电方式保存RAM中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。3.2.3 引脚功能说明 AT89C51的引脚排列如图3所示。下面简要介绍其各引脚的功能。图3 引脚排列图(1)VCC:电源电压(2)GND:地(3)P0口:P0口是一组8位漏极开关型双向I/O口。作为输出口时,每位能吸收电流的方式驱动8个TTL逻辑门电路,对端口写“1”可作为高阻抗输入端用。在访问外部数据存储器或程序存储器时,这组口线分别转换地址(低8位)和数据总线复用,在访问期间激活内部上拉电阻。在Flash编程时,P0口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。(4)P1口:P1是一个带内部上拉电阻的8位双向I/O口,P1的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。Flash编程和程序校验期间,P1接收低8位地址。(5)P2口:P2是一个带有内部上拉电阻的8位双向I/O口,P2的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。在访问外部程序存储器或16位地址的外部数据存储器(例如执行MOVX DPTR指令)时,P2口送出高8位地址数据。在访问8位地址的外部数据存储器(如执行MOVX R1指令)时,P2口线的内容(也即特殊功能寄存器SFR区中R2寄存器的内容),在整个访问期间不改变。(6)P3口:P3口是一组带有内部上拉电阻的8位双向I/O口。P3口输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对P3口写入“1”时,它们被上拉电阻拉高并可作为输出端口。作输入端时,被外部拉低的P3口将用上拉电阻输出电流(IIL)。 P3口除了作为一般的I/O口线外,更重要的用途是它的第二功能,如表1所示。表1 P3口的第二功能端口引脚第二功能P3.0 RXD(串行输入口)P3.1 TXD(串行输出口)P3.2INTO(外中断0)P3.3INT1(外中断1)P3.4T0(定时/计数器0)P3.5T1(定时/计数器1)P3.6WR(外部数据存储器写选通)P3.7RD(外部数据存储器读选通)(7)RST:复位输入。当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。(8)ALE/PROG:当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。即使不访问外部存储器,ALE仍以时钟振荡器频率的1/6输出固定的正脉冲信号,因此它对外输出时钟或用于定时目的。要注意的是:每当访问外部数据存储器时将跳过一个ALE脉冲。(9)PSEN:程序存储允许(PSEN)输出是外部程序存储器的读选通信号,当AT89C51由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲。在此期间,当访问外部数据存储器,这两次有效地PSEN信号不出现。(10)EA/VPP:外部访问允许。欲使CPU仅访问外部程序存储器(地址为0000H-FFFFH),EA端必须保持低电平(接地)。需要注意的是:如果加密位LB1被编程,复位时内部会锁存EA端状态。Flash存储器编程时,该引脚加上+12V的编程允许电源Vpp,当然这必须是该器件是使用12V编程电压Vpp。(11)XTAL1:振荡器反相放大器的内部时钟发生器的输入端。(12) XTAL2:振荡器反相放大器的输出端。3.2.4 时钟振荡器AT89C51中有一个用于构成内部振荡器的高增益反向放大器,引脚XTAL1和XTAL2分别是该放大器的输入端和输出端。这个放大器与作为反馈元件的片外石英晶体或陶瓷谐振器一起构成自激振荡器,振荡电路如图4所示。外接石英晶体(或陶瓷谐振器)及电容C1、C2接在放大器的反馈回路中构成并联振荡电路,对外接电容C1、C2虽然没有十分严格的要求,但电容容量的大小会轻微影响振荡频率的高低,振荡器工作的稳定性,起振的难易程度及温度稳定性,如使用石英晶体,推荐电容使用30pF 10pF,而如使用陶瓷谐振器择选择40pF 10pF。图4 内/外部振荡电路用户也可以采用外部时钟。这种情况下,外部时钟脉冲接地XTAL1端,即内部时钟发生器的输入端,XTAL2则悬空。由于外部时钟信号时通过一个2分频触发器后作为内部时钟信号的,所以对外部时钟信号的占空比没有特殊要求,但最小高电平持续时间和最大的低电平持续时间应符合产品技术条件的要求。3.2.5 AT89C51软件编程模式 AT89C51有两种可用软件编程的省电模式,它们是空闲模式和掉电工作模式。其外部引脚状态如表2所示。这两种方式是控制专用寄存器PCON(即电源控制寄存器)中的PD(PCON.1)和IDL(PCON.0)位来实现的。PD是掉电模式,当PD=1时,激活掉电工作模式,单片机进入掉电工作状态。IDL是空闲等待方式,当IDL=1,激活空闲工作模式,单片机进入睡眠状态。如需同时进入两种工作模式,即PD和IDL同时为1,则先激活掉电模式。表2 空闲和掉电模式外部引脚状态模式程序存储器ALEPSENP0P1P2P3空闲模式内部11数据数据数据数据空闲模式外部11浮空数据地址数据掉电模式内部00数据数据数据数据掉电模式外部00浮空数据数据数据(1)空闲节电模式在空闲工作模式状态,CPU保持睡眠状态而所有片内的外设仍保持激活状态,这种方式由软件产生。此时,片内RAM和所有特殊功能寄存器的内容保持不变。空闲模式可由任何允许的中断请求或硬件复位终止。终止空闲工作模式的方法有两种,其一是任何一条被允许中断的事件被激活,IDL(PCON.0)被硬件清除,既刻终止空闲工作模式。程序会首先响应中断,进入中断服务程序,执行完中断服务程序并紧随RETI(中断返回)指令后,下一条要执行的指令就是单片机进入空闲模式那条指令后面的一条指令。其二是通过硬件复位也可将空闲工作模式终止。需要注意的是,当由硬件复位来终止空闲工作模式时,CPU通常是从激活空闲模式那条指令的下一条指令开始继续执行程序的,要完成内部复位操作,硬件复位脉冲要保持两个机器周期(24个时钟周期)有效,在这种情况下,内部禁止CPU访问片内RAM,而允许访问其它端口。为了避免可能对端口产生意外写入,激活空闲模式的那条指令后一条指令不应是一条对端口或外部存储器的写入指令。(2)掉电模式在掉电模式下,振荡器停止工作,进入掉电模式的指令是最后一条被执行的指令,片内RAM和特殊功能寄存器的内容在终止掉电模式前被冻结。退出掉电模式的唯一方法是硬件复位,复位后将重新定义全部特殊功能寄存器但不改变RAM中的内容,在Vcc恢复到正常工作电平前,复位应无效,且必须保持一定时间以使振荡器重启动并稳定工作。3.2.6 单片机最小系统设计目前的单片机开发系统只能够仿真单片机,却没有给用户提供一个通用的最小系统。由设计的要求做很小集成度的最小系统应用在一些小的控制单元。其应用特点是:(1) 全部I/O口线均可供用户使用。(2) 内部存储器容量有限(只有4KB地址空间)。(3) 应用系统开发具有特殊性 单片机最小系统如图5所示,其中有4个双向的8位并行I/O端口,分别记作P0、P1、P2、P3,都可用于数据的输入和输出,P3口具有第二功能为系统提供一些控制信号。时钟电路用于产生C51单片机工作所必须的时钟控制信号,内部电路在时钟信号的控制在下,严格地按照时序指令工作。C51内部有一个用于构成振荡器的高增益反向放大器,该高增益反向放大器的输入端为芯片的引脚XTAL1,输出端为XTAL2。这两个引脚跨接石英晶体振荡器和微调电容,就构成了一个稳定的自激振荡器。电路中的微调电容通常选择为30pF左右,该电容的大小会影响到振荡器频率的高低、振荡器的稳定性和起振的快速性。晶体的振荡频率为12MHz。把EA脚接高电平,单片机访问片内程序存储器,但在PC值超过0FFFH(4Kbyte地址范围)时,将自动转向执行外部程序存储器内的程序。图5 最小系统图AT89C51的复位是由外部的复位电路来实现。采用最简单的外部按键复位电路。按键自动复位是通过外部复位电路来实现的。我们选用时钟频率为12MHz,C1取47uF。 3.2.7 关于单片机上拉和阻值选择的问题 51单片机P0口的作为I/O的问题,主要是看51单片机P1口的电路就很容易理解了,主要是一个锁存器和推拉结构,在此作些说明。当用作输出,所有口线的状态都与SFR锁存位的设置有密切的联系。 P0作为一般端口时,T1就永远的截止,T2根据输出数据0导通和1截止,导通时拉地,当然是输出低电平;截止时,P0口就没有输出了(注意:这种情况就是所谓的高阻浮空状态),如果加上外部上拉电阻,输出就变成了高电1。其他端口P1、P2、P3,在内部直接将P0口中的T1换成了上拉电阻,所以不用外接,但内部上拉电阻太大,电流太小,有时因为电流不够,也会再并一个上拉电阻。在某个时刻,P0口上输出的是作为总线的地址数据信号还是作为普通I/O口的电平信号,是依靠多路开关MUX来切换的.而MUX的切换,又是根据单片机指令来区分的.当指令为外部存储器I/O口读/写时,比如 MOVX A,DPTR ,MUX是切换到地址/数据总线上;而当普通MOV传送指令操作P0口时,MUX是切换到内部总线上的。 P0口为低除外。当P0口的一个位写入0时,这个位被拉低。但是对P0口的其中一个位写入1时,这个位呈现高阻,也就是未能连机,不能使用。要想获得1输出,你必须在P0口外加上拉电阻。一般驱动LED的上拉电阻为470,外接逻辑电路的上拉电阻为4.7K。一些口线被作为简单的高电平输入也与SFR锁存位有关。因为P1、P2、P3有内部上拉电阻,可以随意被拉高,拉低。而P0口作为高电平输入时,会呈现高阻态。 P0口和P2口的输入缓冲被用来作存取外部存贮用,P0口用作外部存储器的低位字节的位址,并与数据读写多工。输出第一位元址,当位置线是16位时,P2口用作高8位的位址线,因此当对外面存储时,P0口、P2口没法当作I/O口线。 P1口具有内部上拉电阻,当端口用作输入时,必须通过指令将端口的位锁存器置1,以关闭输出驱动场效应管,这时P1口的引脚由内部上拉电阻拉为高电平,所以向P1写入1,工作正常。 P0则不同,它没有内部上拉电阻,在驱动场效应管的上方有一个提升场效应管,它只是在对外存储器进行读写操作,用作地址/数据时才起作用,当向位锁存器写入1,使驱动场效应管截止,则引脚浮空,所以写入1而未获得。 P0口上拉电阻的阻值: 1、如果是驱动LED,那么用1K左右的就行了。如果希望亮度大一些,电阻可减小,最小不要小于200欧姆,否则电流太大;如果希望亮度小一些,电阻可增大,增加到多少呢,主要看亮度情况,以亮度合适为准,一般来说超过3K以上时,亮度就很弱了,但是对于超高亮度的LED,有时候电阻为10K时觉得亮度还能够用。我通常就用1k的。 2、对于驱动光耦合器,如果是高电位有效,即耦合器输入端接端口和地之间,那么和LED的情况是一样的;如果是低电位有效,即耦合器输入端接端口和VCC之间,那么除了要串接一个14.7k之间的电阻以外,同时上拉电阻的阻值就可以用的特别大,用100k500K之间的都行,当然用10K的也可以,但是考虑到省电问题,没有必要用那么小的。3、对于驱动晶体管,又分为PNP和NPN管两种情况:对于NPN,毫无疑问NPN管是高电平有效的,因此上拉电阻的阻值用2K20K之间的,具体的大小还要看晶体管的集电极接的是什么负载,对于LED类负载,由于发管电流很小,因此上拉电阻的阻值可以用20k的,但是对于管子的集电极为继电器负载时,由于集电极电流大,因此上拉电阻的阻值最好不要大于4.7K,有时候甚至用2K的。对于PNP管,毫无疑问PNP管是低电平有效的,因此上拉电阻的阻值用100K以上的就行了,且管子的基极必须串接一个110K的电阻,阻值的大小要看管子集电极的负载是什么,对于LED类负载,由于发光电流很小,因此基极串接的电阻的阻值可以用20k的,但是对于管子的集电极为继电器负载时,由于集电极电流大,因此基极电阻的阻值最好不要大于4.7K。4、对于驱动TTL集成电路,上拉电阻的阻值要用110K之间的,有时候电阻太大的话是拉不起来的,因此用的阻值较小。但是对于CMOS集成电路,上拉电阻的阻值就可以用的很大,一般不小于20K,我通常用100K的,实际上对于CMOS电路,上拉电阻的阻值用1M的也是可以的,但是要注意上拉电阻的阻值太大的时候,容易产生干扰,尤其是线路板的线条很长的时候,这种干扰更严重,这种情况下上拉电阻不宜过大,一般要小于100K,有时候甚至小于10K。3.3 数字温度传感器DS18B203.3.1 DS18B20技术性能描述 独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。 测温范围 55125,固有测温分辨率0.5。 支持多点组网功能,多个DS18B20可以并联在唯一的三线上,最多只能并联8个,如果数量过多,会使供电电源电压过低,从而造成信号传输的不稳定,实现多点测温 工作电源: 35V/DC 在使用中不需要任何外围元件 测量结果以912位数字量方式串行传送 3.3.2 数字温度传感器DS18B20的简单介绍一、 DS18B20的外形和内部结构DS18B20内部结构主要由四部分组成:64位光刻ROM 、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。DS18B20采用常见的小功率三极管相同的TO-92封装方式,其封装与引脚图如图6所示。引脚1为地线;引脚2为数据线,应与主CPU的I/O相接;引脚3接外部电源,如采用寄生电源方式,该引脚悬空。图6 DS18B20封装与引脚图三、 DS18B20工作原理 DS18B20的内部结构如图7所示。图7 DS18B20内部结构图DS18B20的读写时序和测温原理与DS1820相同,只是得到的温度值的位数因分辨率不同而不同,且温度转换时的延时时间由2s 减为750ms。图中低温度系数晶振的振荡频率受温度影响很小,用于产生固定频率的脉冲信号送给计数器1。高温度系数晶振 随温度变化其振荡率明显改变,所产生的信号作为计数器2的脉冲输入。计数器1和温度寄存器被预置在55所对应的一个基数值。计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当计数器1的预置值减到0时,温度寄存器的值将加1,计数器1的预置将重新被装入,计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。图8中的斜率累加器用于补偿和修正测温过程中的非线性,其输出用于修正计数器1的预置值。 图8 DS18B20测温原理框图三、 DS18B20的供电方式DS18B20的电源可以外部提供从芯片的VDD输入,也可以由数据线本身提供而无需再接外部电源(从数据线“窃电”),称为寄生电源方式。(1)DS18B20寄生电源强上拉供电方式改进的寄生电源供电方式如下图9所示,为了使DS18B20在动态转换周期中获得足够的电流供应,当进行温度转换或拷贝到 E2存储器操作时,用MOSFET把I/O线直接拉到VCC就可提供足够的电流。在强上拉方式下可以解决电流供应不走的问题,因此也适合于多点测温应用,缺点就是要多占用一根I/O口线进行强上拉切换。图9 寄生电源工作方式(2)DS18B20的外部电源供电方式 外部电源供电方式如图10所示。在外部电源供电方式下,DS18B20工作电源由VDD引脚接入,此时I/O线不需要强上拉,不存在电源电流不足的问题,可以保证转换精度,同时在总线上理论可以挂接任意多个DS18B20传感器,组成多点测温系统。注意:在外部供电的方式下,DS18B20的GND引脚不能悬空 ,否则不能转换温度,读取的温度总是85。图10 外部电源工作方式四、DS18B20的具体说明DS18B20内部具有地址分配如表3所示的9字节RAM。其实字节0和字节1存放DS18B20的温度测量值;字节4存放配置字节,用于设定温度测量的分辨率等参数;字节8是DS18B20自己生成的循环冗余校验码(CRC),在主CPU读取DS18B20数据时,用于校验读取数据的正确性。表3 DS18B20内部RAM分配字节0(Byte0)温度值低字节 TL字节5(Byte5)保留字节1(Byte1)温度值高字节 TH字节6(Byte6)保留字节2(Byte2)TL或用户Byte1字节7(Byte7)保留字节3(Byte3)TH或用户Byte2字节8(Byte8)CRC校验字节字节4(Byte4)配置字节 CONFIG主CPU经DQ向DS18B20发送温度测量(变换)等命令,DS18B20将测量的温度值存放在DS18B20的RAM 字节0和字节1中。除温度变换命令外,还有几个命令,见表4。 表4 DS18B20的部分命令指令代码(十六进制)指令代码(十六进制)Skip ROM(跳过ROM)CChRead Scratchpad(读RAM)BEhConvert Temperature(温度变换)44hWrite Scratchpad(写RAM)4Ehl 命令CCh,跳过ROM。该命令跳过ROM中64位长的序号,既不关心每一个DS18B20中唯一的序号,因此该命令只能在“一总线”上仅接有一个DS18B20时应用。在仅使用单只的DS18B20时,使用该命令可以简化编程。l 命令44h,温度变换。DS18B20接收到该命令后将触发温度测量,收到命令数百毫秒后,温度才能测量完毕,将测量的值存入RAM的字节0和字节1中。l 命令BEh,读RAM存储器。该命令读取DS18B20内部RAM中的数据。读取数据中的头两个字节就是测量的温度值。DS18B20收到BEh命令后,将内部RAM中的数据释放到“一总线”DQ上。设定DS18B20使用默认的12位转换,DS18B20内部RAM中温度值存放在字节0(记为TL)和字节1(记为TH)中,TL和TH的格式如下。TL(Byte0): TH(Byte1): 存储器TH中的bit15bit11为符号位,如果温度为负数,则bit15bit11全为1,否则全为0。存储器TH中的bit10bit0共11位存储温度值。TL的bit3bit0存储温度的小数部分,TL的LSB(最低位)的“1”表示0.0625。将存储器中的二进制数求补,再分别将整数部分和小数部分转换成十进制数合并后就得到被测温度值(-55125)。表5是DS18B20中的测量数据与温度值对应关系的例子。表5 输出与温度的对应关系举例温度二进制输出十六进制输出+1250000 0111 1101 000007D0h+850000 0101 0101 00000550h+25.06250000 0001 1001 00010191h+10.1250000 0000 1010 001000A2h+0.50000 0000 0000 10000008h00000 0000 0000 00000000h-0.51111 1111 1111 1000FFF8h-10.1251111 1111 0101 1110FE5Eh-25.06251111 1110 0110 1111FE6Fh-551111 1100 1001 0000FC90h比如,当DS18B20的数据为“0000 0000 1010 0010”时,即TH=(0000 0000)、TL=(1010 0010),根据TL和TH的格式计算温度值为:26*0+25*0+24*0+23*1+22*0+21*1+20*0+2(-1)*0+2(-2)*0+2(-3)*1+2(-4)*0=10.125 由于TH中的S为0,所以得到的数为正,即+10.125。3.3.3 AT89C51单片机与DS18B20的接口可以使用AT89C51的任意一个I/O口连接DS18B20。如图11所示,将DS18B20的数据引脚DQ与单片机的P1.7相连,DS18B20使用外接电源,R1为上拉电阻。只需要占用单片机的一个I/O口,使用非常方便。每只DS18B20都可以设置成两种供电方式,即数据总线供电方式和外部供电方式。采取数据总线供电方式可以节省一根导线,但完成温度测量的时间较长;采用外部供电方式则多用一根导线,但测量速度较快。注意:单片机与DS18B20通过一总线进行数据交换,无论读和写均是从最低位(LSB)开始。数据线DQ是双向的,既承担单片机向DS18B20传输命令,也是DS18B20向单片机回送温度等数据的通道。因此时序关系很重要,有3个关键时序需要掌握。下面将对这三个关键时序进行简要介绍。图11 AT89C51与DS18B20连接的电路原理图(1)DS18B20的初始化DS18B20的初始化是由单片机控制的,是DS18B20一切命令的初始条件。DS18B20的初始化时序如图12所示。主机发送一个复位脉冲(最短时间为480us的低电平信号),接着释放总线并进入接收状态。DS18B20会在检测到上升沿后等待1560us,然后发送一个低电平的存在脉冲(60240us)告知主机,主机在60240us的期间接收到低电平,即表示DS18B20存在,并已知初始化成功。图12 DS18B20初始化时序图(2)DS18B20的写时序如图13所示,整个写时间隙需要持续至少60us,连续写2位数据的间隙最少1us。主机将总线由高电平拉至低电平后就触发了一个写时间隙,主机必须在15us内将所有的位送到总线上。DS18B20在1560us间开始对总线进行采样,如果此时总线上为低电平写入的位是0,若为高电平写入的位是1。(3)DS18B

温馨提示

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

评论

0/150

提交评论