优秀毕业设计  基于at89c51单片机的多点温度检测系统的设计_第1页
优秀毕业设计  基于at89c51单片机的多点温度检测系统的设计_第2页
优秀毕业设计  基于at89c51单片机的多点温度检测系统的设计_第3页
优秀毕业设计  基于at89c51单片机的多点温度检测系统的设计_第4页
优秀毕业设计  基于at89c51单片机的多点温度检测系统的设计_第5页
已阅读5页,还剩65页未读 继续免费阅读

下载本文档

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

文档简介

南京理工大学毕业设计说明书论文作者孙露学号104910252060教研室机电教研室专业机电一体化工程题目多点温度检测系统的设计指导者谢聪工程师评阅者2012年5月中文摘要本设计系统地介绍了基于DS18B20的多点温度测量系统的组成、设计方案、电路原理、程序设计以及系统仿真过程。DS18B20多点温度测量系统是以AT89C51单片机作为控制核心,智能温度传感DS18B20为控制对象,运用汇编语言编程实现系统的各种功能。该系统由单片机最小系统、传感器电路、报警电路、LCD显示电路、行列式键盘电路、电源电路六大部分组成。借助PROTEUS软件,实现了系统电路设计和仿真。它适用于电力工业、煤矿、森林、火灾、高层建筑等场所,还可以用于环境恶劣的工业控制现场。通过DS18B20的单总线技术,实现对远程环境的温度测量与监控。关键词DS18B20,仿真,测量系统,PROTEUS英文摘要TITLEMULTIPOINTTEMPERATUREDETECTIONSYSTEMDESIGNABSTRACTTHISSYSTEMINTRODUCEDONTHEDS18B20MULTIPOINTTEMPERATUREMEASUREMENTSYSTEMCOMPONENTS,DESIGN,CIRCUITTHEORY,PROGRAMDESIGNANDPRODUCTDEVELOPMENTPROCESSDS18B20MULTIPOINTTEMPERATUREMEASUREMENTSYSTEMISCONTROLLEDBYTHECOREAT89C51SCM,SMARTTEMPERATURESENSINGDS18B20TARGETSFORTHECONTROL,ANDISUSEDOFEDITCOLLECTEDMATERIALSLANGUAGEPROGRAMMINGSYSTEMFUNCTIONSTHESYSTEMISTHESMALLESTMCUSYSTEM,SENSORCIRCUIT,ALARMCIRCUITS,LCDDISPLAYCIRCUIT,THEFIVEMAJORDETERMINANTKEYBOARDCIRCUITCOMPONENTSTHESYSTEMISCONSTITUTEDFROMPROTEUSSOFTWARE,ANDTHESYSTEMDESIGNANDSIMULATION,ANDTHEEVENTUALADOPTIONOFHARDWAREVERIFICATIONSIXBIGPARTITISAPPLICABLETOELECTRICPOWERINDUSTRY,COALMINE,FOREST,AFIRE,KEYFIGURESBUILDINGETCPLACE,RETURNCANUSEDFORENVIRONMENTBADOFINDUSTRYCONTROLTHESPOTDS18B20THROUGHASINGLEBUSTECHNOLOGY,TOACHIEVETHELONGRANGEENVIRONMENTALTEMPERATUREMEASUREMENTANDMONITORINGKEYWORDSDS18B20,SIMULATION,MEASUREMENTSYSTEM,PROTEUS目录1绪论111课题设计背景112课题研究的目的意义113国内外现状及水平214课题研究内容22系统的需求分析与总体方案论证421基于模拟温度传感器设计方案422基于数字温度传感器设计方案523方案论证53电路设计731工作原理732DS18B20与单片机接口技术8321DS18B20的引脚功能8322DS18B20与单片机接口电路8323温度寄存器格式和温度/数据对应关系9324单片机对DS18B20的控制方法1033键盘电路设计13331行列式键盘与单片机接口电路13332键盘面板1334显示电路设计14341LCD引脚分布及功能14342单片机与图形液晶的接口电路1535报警电路设计1636电源电路设计174程序设计1841系统资源分配18411系统硬件资源分配18412系统软件资源分配1842系统流程设计18421主程序流程设计18422DS18B20程序流程设计20423显示程序流程21424键盘程序程序流程2243程序设计24431主程序设计245系统仿真2551PROTEUS仿真环境介绍2552原理图绘制2653程序加载27531程序编译27532程序加载2754系统仿真2855仿真结果分析33结束语34致谢35参考文献36附录一38附录二391绪论11课题设计背景温度是一个和人们生活环境有着密切关系的物理量,也是一种在生产、科研、生活中需要测量和控制的重要物理量,是国际单位制七个基本量之一,同时它也是一种最基本的环境参数。人民的生活与环境温度息息相关,物理、化学、生物等学科都离不开温度。在工业生产和实验研究中,在电力、化工、石油、冶金、机械制造、大型仓储室、实验室、农场塑料大棚甚至人们的居室里经常需要对环境温度进行检测,并根据实际的要求对环境温度进行控制。比如,发电厂锅炉的温度必须控制在一定的范围之内;许多化学反应的工艺过程必须在适当的温度下才能正常进行。炼油过程中,原油必须在不同的温度和压力条件下进行分流才能得到汽油、柴油、煤油等产品;没有合适的温度环境,许多电子设备不能正常工作,粮仓的储粮就会变质霉烂,酒类的品质就没有保障。可见,研究温度的测量具有重要的理论意义和推广价值。随着现代计算机和自动化技术的发展,作为各种信息的感知、采集、转换、传输相处理的功能器件,温度传感器的作用日益突出,成为自动检测、自动控制系统和计量测试中不可缺少的重要技术工具,其应用已遍及工农业生产和日常生活的各个领域。本设计就是为了满足人们在生活生产中对温度测量系统方面的需求。本设计要求系统测量的温度的点数为4个,测量精度为01,测温范围为55128。采用液晶显示温度值和路数,显示格式为温度的符号位,整数部分,小数部分,最后一位显示。显示数据每一秒刷新一次。12课题研究的目的意义21世纪科学技术的发展日新月异,科技的进步带动了测量技术的发展,现代控制设备的性能和结构发生了巨大的变化,我们已经进入了高速发展的信息时代,测量技术也成为当今科技的主流之一,被广泛地应用于生产的各个领域。对于本次设计,其目的在于(1)掌握数字温度传感器DS18B20的原理、性能、使用特点和方法,利用C51对系统进行编程。(2)本课题综合了现代测控、电子信息、计算机技术专业领域方方面面的知识,具有综合性、科学性、代表性,可全面检验和促进学生的理论素养和工作能力。(3)本课题的研究可以使学生更好地掌握基于单片机应用系统的分析与设计方法,培养创新意识、协作精神和理论联系实际的学风,提高电子产品研发素质、增强针对实际应用进行控制系统设计制作的能力。13国内外现状及水平传感器属于信息技术的前沿尖端产品,尤其是温度传感器被广泛用于工农业生产、科学研究和生活等领域,数量高居各种传感器之首。温度传感器的发展大致经历了以下三个阶段传统的分立式温度传感器含敏感元件;模拟集成温度传感器控制器;数字温度传感器。目前,国际上新型温度传感器正从模拟式向数字式、由集成化向智能化、网络化的方向发展,同时具有抑制串模干扰能力强、分辨力高、线性度好、成本低等优点。随着我国四个现代化和经济发展,我国在科技和生产各领域都取得了飞速的发展和进步,发展以温度传感器为载体的温度测量技术具有重大意义。DS18B20是美国DALLAS公司生产的单总线数字温度传感器,可把温度信号直接转换成串行数字信号供微机处理,而且可以在一条总线上挂接任意多个DS18B20芯片,构成多点温度检测系统无需任何外加硬件(单总线数字温度传感器DS18B20及其在单片机系统的应用)。单总线数字温度传感器,具有微型化、低功耗、高性能、抗干扰能力强、易于与微控制器接口优点,适合于各种温度测控系统(数字温度传感器DS18B20及其应用)。以DS18B20为例,介绍数字式温度传感器的功能特点及由DS18B20组成的温度测控网络系统的设计。随着社会的发展、农业生产也进人了工厂化、数字化时代,人们开始“使用人工设施、人工控制环境因素,使植物获得最适宜的生长条件,从而延长生产季节,获得最佳产出”,由此“工厂化农业”应运而生并被广泛接受(单总线温度传感器DS18B20及其在温室系统中的应用)。我国是一个人口众多的农业大国,粮食生产、需求与储备量很大,粮食在储备的过程中常因粮食的湿度过大而升温发热,又由于检测手段的落后造成温检系统错报或漏报,从而导致粮食大量的腐烂变质,给国家带来巨大的损失。这就对粮情检测系统提出了较高的要求(一种基于单线数字温度传感器DS18B20的储粮温度检测系统的设计)。而基于DS18B20设计的温度检测系统就可以实现这一需求。14课题研究内容本设计研究的主要内容如下(1)在广泛查阅温度检测控制理论和方法、测温技术和温度控制技术等资料的基础上,根据不同的控制要求及应用领域完成对系统方案的总体设计。本设计采用以AT89C51为核心的单片机系统,来实现对温度的检测、报警等功能。(2)研究比较各相关元器件的功能与特点,选择合适的元器件。(3)系统硬件设计。系统硬件设计主要包括温度检测、单片机数据采集处理、显示、键盘设定、报警电路等部分。(4)系统软件设计。本课题采用汇编语言,利用KEIL编译器进行编程及调试。主要研究DS18B20与单片机的通信协议、时序及一些通用程序等。本设计的难点分为硬件和软件两个方面。其中硬件开发的难点在于各种元器件的选择和使用,如各种电阻、电容等的选择。软件开发的难点在于DS18B20的时序,如果时序不正确,将无法读出正确的温度值,对系统产生很大的影响。2系统的需求分析与总体方案论证21基于模拟温度传感器设计方案该方案由单片机、模拟温度传感器AD590、运算放大器、AD转换器、44键盘、LCD显示电路、集成功率放大器、报警器组成,如图21所示。本方案采用模拟温度传感器AD590作为测温元件,传感器将测量的温度变换转换成电流的变化,再通过电路转换成电压的变化,使用运算放大器交将信号进行适当的放大,最后通过模数转换器将模拟信号转换成数字信号,传给给单片机,单片机将温度值进行处理之后用LCD显示,当温度值超过设置值时,系统开始报警。单片机模拟温度传感器模拟温度传感器LCD显示电路集成功放报警器44键盘模拟传感器AD590模拟温度传感器模拟温度传感器运算放大器多路选择器A/D转换图21基于模拟温度传感器的测量系统方案本方案使用的测温元件的性能指标如下(1)AD590的测温范围为55150。(2)AD590的电源电压范围为4V30V,电源电压可在4V6V范围变化,电流变化1MA,相当于温度变化1K。AD590可以承受44V正向电压和20V反向电压,因而器件反接也不会被损坏。(3)输出电阻为710MW。(4)精度高,AD590共有I、J、K、L、M五档,其中M档精度最高,在55150范围内,非线性误差为03。集成温度传感器具有线性好、精度适中、灵敏度高、体积小、使用方便,温度测量范围广等优点,得到广泛应用。集成温度传感器的输出形式分为电压输出和电流输出两种。电压输出型的灵敏度一般为10MV/K,温度0时输出为0,温度25时输出2982V。电流输出型的灵敏度一般为1MA/K。22基于数字温度传感器设计方案该方案使用了AT89C51单片机作为控制核心,以智能温度传感器DS18B20为温度测量元件,采用多个温度传感器对各点温度进行检测,通过44键盘模块对正常温度进行设置显示电路采用12864LCD模块,使用LM386作为报警电路中的功率放大器。图22基于数字温度传感器测量系统方案本课题采用数字温度传感器DS18B20作为测为测温元件,它具有如下特点(1)只要求一个端口即可实现通信。(2)在DS18B20中的每个器件上都有独一无二的序列号。(3)实际应用中不需要外部任何元器件即可实现测温。(4)测量温度范围在55到128之间。(5)数字温度计的分辨率用户可以从9位到12位选择。(6)内部有温度上、下限告警设置。23方案论证本设计要求测量的点数为4,测温范围为55128,精度为01。采用液晶显示,同时显示路数和温度,每秒刷新1次显示数据。综合模拟温度传感器和数字温度传感器的性能指标,以上两个方案都能达到设计的要求。方案一采用模拟温度传感器AD590,转换结果需要经过运算放大器和AD转换器传送给处理器。它控制虽然简单,成本低,但是后续电路复杂,且需要进单片机温度传感器温度传感器LCD显示电路集成功放报警器4键盘温度传感器DS18B20温度传感器温度传感器行温度标定,集成温度传感器AD590输出为电流信号,且输出信号较弱,所以需要后续放大及A/D转换电路,如采用普通运放则精度难以保证,而测量放大器价格较高,这样会使系统成本升高。方案二采用了数字温度传感器DS18B20,改变了传统温度测试方法。它能在现场采集温度数据,直接将温度物理量变换为数字信号并以总线方式传送到单片机进行数据处理,并且可根据实际要求通过简单的编程实现912位的数字式读数方式,因而使用DS18B20可使系统结构更趋简单,可靠性更高,大大提高系统的抗干扰能力。DS18B20体积小、经济、使用方便灵活,测试精度高,较高的性能价格比,有CRC校验,系统简明直观。适合于恶劣环境的现场温度测试,如环境控制、设备或过程控制、测温类消费电子产品等。方案二程序设计稍微复杂一些,但在毕业设计期间我用DS18B20做过温度计,也调试过LCD,并且已经用PROTEUS实现了系统的仿真。因此,该方案完全具有可行性,同时体现了技术的先进性,经济上也有很大的优势。综上所述,本课题采用方案二对系统进行设计。3电路设计31工作原理基于DS18B20多点温度测量系统以AT89C51为核心器件,以KEIL为系统开发平台,用汇编语言进行程序设计,以PROTEUS作为仿真软件设计而成的。系统主要由传感器电路、液晶显示电路、键盘电路、报警电路、电源电路组成,系统原理图如图31所示。图31系统原理图DS18B20是数字温度传感器,它的输入/输出采用数字量,以单总线技术,接收主机发送的命令,根据DS18B20内部的协议进行相应的处理,将转换的温度以串口发送给主机。主机按照通信协议用一个IO口模拟DS18B20的时序,发送命令(初始化命令、ROM命令、RAM命令)给DS18B20,转换完成之后读取温度值,在内部进行相应的数值处理,用图形液晶模块显示各点的温度。在系统启动之时,可以通过44键盘设置各点温度的上限值,当某点温度超过设置值时,报警器开始报警,液晶显示该传感器的路数、设置温度值、实际温度值,从而实现了对各点温度的实时监控。每个DS18B20有自己的序列号,因此本系统可以在一根总线上挂接了4个DS18B20,通过CRC校验,对各个DS18B20的ROM进行寻址,地址符合的DS18B20才作出响应,接收主机的命令,向主机发送转换的温度。采用这种DS18B20寻址技术,使系统硬件电路更加简单。32DS18B20与单片机接口技术321DS18B20的引脚功能DS18B20的引脚功能描述见表31。表31DS18B20引脚功能描述序号名称引脚功能描述1GND地信号2DQ数字输入输出引脚,开漏单总线接口引脚,当使用寄生电源时,可向电源提供电源3VDD可选择的VDD引脚,当工作于寄生电源时,该引脚必须接地322DS18B20与单片机接口电路如图32所示,为单片机与DS18B20的接口电路。DS18B20只有三个引脚,一个接地,一个接电源,一个数字输入输出引脚接单片机的P17口,电源与数字输入输出脚间需要接一个47K的电阻。图32DS18B20与单片机接口电路323温度寄存器格式和温度/数据对应关系DS18B20温度寄存器如表32所示。其寄存器有16位,高5位为符号位,低13位为数据位。当寄存器高5位为1时,表示温度为负,否则为正。表32温度寄存器格式BIT7BIT6BIT5BIT4BIT3BIT2BIT1BIT0LSBYTE表33温度/数据的关系BBIT15BIT14BIT13BIT12BIT11BIT10BIT9BIT8MSBYTE如果测得的温度大于0,只要将测到的数值乘于00625即可得到实际温度;如果温度小于0,测得的数值需要取反加1再乘00625,即可得到实际的温度值。如表33所示,是DS18B20的温度与数据的对应关系。2322212021222324SSSSS262524DS18B20单片机P17VDGNQ47K324单片机对DS18B20的控制方法DS18B20采用严格的单总线通信协议,以保证数据的完整性。该协议定义了几种信号类型复位脉冲、应答脉冲、写0、写1、读0和读1。除了应答脉冲所有这些信号都由主机发出同步信号。总线上传输的所有数据和命令都是以字节为单位。且低位在前,高位在后。(1)初始化序列复位脉冲和应答脉冲在初始化过程中,主机通过拉低单总线至少480S,以产生复位脉冲TX,然后主机释放总线并进入接收RX模式。当总线被释放后,5K的上拉电阻将单总线拉高。DS18B20检测到这个上升沿后,延时15S60S,通过拉低总线60S240S产生应答脉冲。初始化脉冲如图33所示。温度输出2进制输出16进制125000001111101000007D0H8500000101010100000550H20062500000001100100010191H10125000000001010001000A2H0500000000000010000008H000000000000000000000H051111111111111000FFF8H101251111111101011110FF5EH2506251110111001101111EE6FH551111111010010000FE90H图33DS18B20初始化时序(2)DS18B20的读写控制在写时序期间,主机向DS18B20写入数据;而在读时序期间,主机读入来自DS18B20的数据。在每一个时序,总线只能传输一位数据。读/写时序如图34所示。DS18B20写时序DS18B20存在两种写时序“写1”和“写0”。主机在写1时序向DS18B20图34DS18B20读写时序写入逻辑1,而在写0时序向DS18B20写入逻辑0。所有写时序至少需要60S,且在两次写时序之间至少需要1S的恢复时间。两种写时序均以主机拉低总线开始。产生写1时序主机拉低总线后,必须在15S内释放总线,然后由上拉电阻将总线拉至高电平。产生写0时序主机拉低总线后,必须在整个时序期间至少480US至少480US主机初始化主机初应答PRESNCEPULSE6024主机写”0时序主机写”1“时序主机读”0时序主机读”1“时序30US15US15US15US15US30US30US15US15US15US15US30US保持低电平(至少60S)。在写时序开始后的15S60S期间,DS18B20采样总线的状态。如果总线为高电平,则逻辑1被写入DS18B20;如果总线为低电平,则逻辑0被写入DS18B20。读时序DS18B20只能在主机发出读时序时才能向主机传送数据。所以主机在发出读数据命令后,必须马上产生读时序,以便DS18B20能够传送数据。所有读时序至少60S,且在两次独立的读时序之间至少需要1S的恢复时间。每次读时序由主机发起,拉低总线至少1S。在主机发起读时序之后,DS18B20开始在总线上传送1或0。若DS18B20发送1,则保持总线为高电平;若发送0,则拉低总线。当传送0时,DS18B20在该时序结束时释放总线,再由上拉电阻将总线拉回空闲高电平状态。DS18B20发出的数据在读时序下降沿起始后的15S内有效,因此主机必须在读时序开始后的15S内释放总线,并且采样总线状态。DS18B20的命令序列根据DS18B20的通讯协议,主机(单片机)控制DS18B20完成温度转换必须经过三个步骤每一次读写之前都要对DS18B20进行复位操作,复位成功后发送一条ROM指令,最后发送RAM指令,这样才能对DS18B20进行预定的操作。ROM命令通过每个器件64BIT的ROM码,使主机指定某一特定器件(如果有多个器件挂在总线上)与之进行通信。DS18B20的ROM如表34所示,每个ROM命令都是8BIT长。表34DS18B20ROM命令指令协议功能读ROM33H读DS18B20中的编码即64位地址符合ROM55H发出此命令后,接着发出64位ROM编码,访问单总线上与该编码相对应的DS18B20,使之作出响应,为下一步对该DS18B20的读写作准备搜索ROM0F0H用于确定挂接在同一总线上DS18B20的个数和识别64位ROM地址,为操作各器件作好准备跳过ROM0CCH忽略64位ROM地址,直接向DS18B20温度转换命令,适用于单个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”33键盘电路设计331行列式键盘与单片机接口电路根据本设计需要,本系统采用了44键盘实现对温度值和功能键的设定。行列式键盘与单片机的接口电路如图35所示,H0H3为行线,接单片机P2口的高4位,L0L3为列线,接单片机P2口的低4位。初始化时键盘行线为高电平,列线为低电平。键盘的行线接4输入与门,4输入与门的输出接单片机的外部中断0引脚P32口。当有键按下时,将产生中断,在中断程序里对按键进行扫描,得到按键的键值。图3544键盘结构332键盘面板键盘面板如图36所示,本系统使用的键盘有10数字键,5个功能按键。在系统启动时,先按“设置”键,然后按相应的数字键,按“左移”或者“右移”键改变其他温度的值。按“确认”键之后系统正式启动。系统在运行过程之中可以通过按“重新设置”键,对温度重新进行设置。图36键盘面板34显示电路设计341LCD引脚分布及功能(1)12864液晶显示屏共有20个引脚,其引脚名称及引脚编号的对应关系如图37所示图3712864液晶显示模块引脚分布图123456789101213145161781920VSDVORS/WEDB0DB7DB6DB5DB4DB3DB2DB1CS1CS2/RTVEAK0213设置确认右移左移重新设置987645(2)引脚功能如表35所示表3512864液晶显示模块引脚功能引脚符号引脚功能引脚符号引脚功能1VSS电源地15CS1CS11芯片选择左边6464点2VDD电源正5V16CS2CS21芯片选择右边6464点3VO液晶显示驱动电源17/RST复位(低电平有效)4RSH数据输入;L指令码输入18VEELCD驱动负电源5R/WH数据读取;L数据写入19A背光电源()6E使能信号。20K背光电源()714DB0DB7数据线有些型号的模块19、20脚为空脚342单片机与图形液晶的接口电路LCD与单片机的接口电路如图38所示单片机对LCD的控制方法将在下一章中详细介绍。图38LCD与单片机的接口电路35报警电路设计本系统设计中有报警器,使用LM386作为报警器的功率放大器,如图39所示。LM386是一种音频集成功放,具有自身功耗低、电压增益可调整、电源电压范围大、外接元件少和总谐波失真小等优点,广泛应用于录音机和收音机之中。LM386的输入端接单片机的引脚P34,输出端接扬声器。当实际温度超过设置的温度值时,单片机引脚输出一定频率的信号,信号经过音频功放放大之后,发出报警声。图39LM386功放电路36电源电路设计电源是整个系统的能量来源,它直接关系到系统能否运行。在本系统中单片机、液晶显示、报警等电路需要5V的电源,因此电路中选用稳压芯片7805,其最大输出电流为15A,能够满足系统的要求,其电路如图310所示。图310电源电路4程序设计41系统资源分配411系统硬件资源分配本系统电路连接及硬件资源分配如图41所示。采用AT89C51单片机作为核心器件,DS18B20作为温度测量装置,通过AT89C51的P17口将温度值送入单片机处理,利用12864LCD显示器和44键盘作为人机接口。图41系统硬件资源分配412系统软件资源分配本系统采用了汇编语言进行程序设计,系统自动为各个变量分配内存区域。用户可以将变量定义在DATA区、IDATA区、PDATA区、XDATA区,常量定义在CODE区。42系统流程设计421主程序流程设计主程序先对系统资源进行初始化,调用LCD显示子程序,显示启动画面。然后进入键盘设置界面。当设置键按下后,开始设置各点的温度,设置完之后,如果确认键按下,则系统开始工作。首先调用DS18B20初始化子程序,再发送ROM命令,读取DS18B20转换的温度值。当读取的温度大于设置的温度值时,报警器开始报警,LCD显示温度的实际值、设置值、路数、状态。接下来对第二、三、四路温度进行采集,处理,显示。P0P0712864LCD显示模块P34P3报警器P35734键盘P20P23P24P2744L03H03P32/INT0A89C1P17四输入与门DS18B2030312主程序流程如图42所示图42主程序流程初始化设置键按下设置各点温度确认键按下YN读取温度值温度值高于设置值调用LCD显示报警YN初始化命令发送ROM命令匹配第一路读取温度值温度值高于设置值调用LCD显示报警YN初始化命令发送ROM命令匹配第二路读取温度值温度值高于设置值调用LCD显示报警YN初始化命令发送ROM命令匹配第三路读取温度值温度值高于设置值调用LCD显示报警YN初始化命令发送ROM命令匹配第四路开始422DS18B20程序流程设计由上一章单片机对DS18B20的控制方法,设计出如下程序流程图43写命令子程序流程图图44DS18B20复位子程序流程图图45DS18B20读温度子程序流程图DQ置1置0延时573微秒DQ置1延时,等待DS18B20响应DQ0初始化成功返回DQ初始化不成功YNI8置DQ0AT处理后的八位符号值温度度存放单元TEMPLDATA25H实时温度低八位存放单元TEMPHDATA26H实时温度高八位存放单元TEMP_THDATA27H高温报警值存放单元TEMP_TLDATA28H低温报警值存放单元TEMPHCDATA29H百位和十位BCD码存放单元TEMPLCDATA2AH个位和小数BCD码存放单元LCD_XEQU2FHLCD地址变量LCD_RSEQUP10LCDRS端LCD_RWEQUP11LCDRW端LCD_ENEQUP12LCDEN端FLAG1EQU20H0DS18B20存在标志位FLAG2EQU20H2负数标志位FLAG3EQU20H3负数时,十位为零(灭0显示标志位)FLAG4EQU20H4正数时,百位为零、十位也为零(灭0显示标志位)FLAG5EQU20H1负温度下限标志位FLAG6EQU21H0按键1操作标志位FLAG7EQU21H1按键2操作标志位FLAG8EQU21H2按键3操作标志位FLAG9EQU21H3按键4操作标志位DATE_LINEEQUP37DS18B20总线ORG0000HJMPMAINMAINMOVSP,60HMOVA,00HMOVR0,20H将20H2FH单元清零MOVR1,10HCLEARMOVR0,AINCR0DJNZR1,CLEARCALLSET_LCDCALLRE_18B20MOVTEMP_TH,50H设置温度上限报警值为80度MOVTEMP_TL,14H设置温度下限报警值为20度SETBFLAG5FLAG50正温度下限,FLAG51负温度下限STARTCALLRESET18B20复位子程序JNBFLAG1,START1DS1820不存在CALLMENU_OKCALLREAD_E2温度报警值拷贝到暂存器JMPSTART2START1CALLMENU_ERRORCALLTEMP_BJ显示温度标记JMPSTART2CALLRESETJNBFLAG1,START1DS1820不存在MOVA,0CCH跳过ROM匹配CALLWRITEMOVA,44H发出温度转换命令CALLWRITE由单片机向单总线发送四个DS18B20的ROM序列号CALLDELAYLCALLRESETMOVA,55HLCALLWRITEMOVA,28HLCALLWRITEMOVA,24HLCALLWRITEMOVA,0C5HLCALLWRITEMOVA,39HLCALLWRITEMOVA,00HLCALLWRITEMOVA,00HLCALLWRITEMOVA,00HLCALLWRITEMOVA,05FHLCALLWRITEMOVA,0BEHLCALLWRITELCALLREADMOV74H,TEMPLMOV75H,TEMPHLCALLRESETMOVA,55HLCALLWRITEMOVA,28HLCALLWRITEMOVA,30HLCALLWRITEMOVA,0C5HLCALLWRITEMOVA,0B8HLCALLWRITEMOVA,00HLCALLWRITEMOVA,00HLCALLWRITEMOVA,00HLCALLWRITEMOVA,08EHLCALLWRITEMOVA,0BEHLCALLWRITELCALLREADMOV76H,TEMPLMOV77H,TEMPHLCALLRESETMOVA,55HLCALLWRITEMOVA,28HLCALLWRITEMOVA,31HLCALLWRITEMOVA,0C5HLCALLWRITEMOVA,0B8HLCALLWRITEMOVA,00HLCALLWRITEMOVA,00HLCALLWRITEMOVA,00HLCALLWRITEMOVA,0B9HLCALLWRITEMOVA,0BEHLCALLWRITELCALLREADMOV78H,TEMPLMOV79H,TEMPHLCALLRESETMOVA,55HLCALLWRITEMOVA,28HLCALLWRITEMOVA,32HLCALLWRITEMOVA,0C5HLCALLWRITEMOVA,0B8HLCALLWRITEMOVA,00HLCALLWRITEMOVA,00HLCALLWRITEMOVA,00HLCALLWRITEMOVA,0E0HLCALLWRITEMOVA,0BEHLCALLWRITELCALLREADMOV7AH,TEMPLMOV7BH,TEMPHLCALLRESET22键盘SMKEYMOVP2,030HMOVA,P2ANLA,0F0HCJNEA,030H,HKEYSJMPJ_00HKEYCALLCLR_2LINE先对LCD第二行进行清屏LCALLDELAY10MOVA,P2ANLA,0F0HMOVB,ACJNEA,030H,WKEYSJMPJ_00WKEYMOVP2,03HMOVA,P2ANLA,0FHORLA,BJBACC0,BANWE4JMPBANWE5BANWE4JBACC4,XUANZE4JMPXUANZE3BANWE5JBACC5,XUANZE1JMPXUANZE2JMPJ_00XUANZE1SETBFLAG6CLRFLAG7CLRFLAG8CLRFLAG9JMPJ_00XUANZE2SETBFLAG7CLRFLAG6CLRFLAG8CLRFLAG9JMPJ_00XUANZE3SETBFLAG8CLRFLAG7CLRFLAG6CLRFLAG9JMPJ_00XUANZE4SETBFLAG9CLRFLAG7CLRFLAG8CLRFLAG6J_00NOPJBFLAG6,TEMPH11JBFLAG7,TEMPH22JBFLAG8,TEMPH33JBFLAG9,TEMPH44JMPST_00TEMPH11MOVDPTR,T_1指针指到显示消息“TEMP”MOVA,2显示在第二行CALLLCD_PRINT调字符串显示子程序MOVTEMPL,74H把从DS18B20读出的初始温度低八位送TEMPLMOVTEMPH,75H把从DS18B20读出的初始温度高八位送TEMPHLCALLSTART3调温度转换、显示子程序JMPST_00回到START2,重新发出温度转换命令TEMPH22MOVDPTR,T_2指针指到显示消息“TEMP”MOVA,2显示在第二行CALLLCD_PRINTMOVTEMPL,76HMOVTEMPH,77HLCALLSTART3JMPST_00TEMPH33MOVDPTR,T_3指针指到显示消息“TEMP”MOVA,2显示在第二行CALLLCD_PRINTMOVTEMPL,78HMOVTEMPH,79HLCALLSTART3JMPST_00TEMPH44MOVDPTR,T_4指针指到显示消息“TEMP”MOVA,2显示在第二行CALLLCD_PRINTMOVTEMPL,7AHMOVTEMPH,7BHLCALLSTART3JMPST_00ST_00JMPSTART2START3CALLCONVTEMP把从DS18B20读到的初始温度转换组合成两个字节的BCD码CALLDISPBCD把温度折分成单个BCD码并设灭零显示标志位CALLTEMP_COMP显示温度比较结果符号CALLTEMP_BJ显示温度标记CALLLCD_DISP显示温度百位、十位、个位、小数点及小数位还有符号RETSET_LCD对LCD做初始化设置及测试CLRLCD_ENCALLINIT_LCD初始化LCDCALLSTORE_DATA将自定义字符存入LCD的CGRAMRETINIT_LCD8位I/O控制LCD接口初始化MOVA,38H双列显示,字形57点阵CALLWCOMCALLDELAY1MOVA,0EHCALLWCOMCALLDELAY1MOVA,38H双列显示,字形57点阵CALLWCOMCALLDELAY1MOVA,0CH开显示,显示光标,光标不闪烁CALLWCOMCALLDELAY1MOVA,01H清除LCD显示屏CALLWCOMCALLDELAY1RETWCOM以8位控制方式将命令写至LCDMOVP0,A写入命令CLRLCD_RSRSL,RWL,D0D7指令码,E高脉冲CLRLCD_RWSETBLCD_ENACALLDELAY1CLRLCD_ENRETWDATA以8位控制方式将数据写至LCDMOVP0,A写入数据SETBLCD_RSCLRLCD_RWSETBLCD_ENCALLDECLRLCD_ENCALLDERETDEMOVR7,250DJNZR7,RETDELAYMOVR0,100DEL2MOVR1,100DEL3DJNZR1,DEL3DJNZR0,DEL2RETDELAY10MOVR6,20HQ6MOVR5,0BBHQ5DJNZR5,Q5DJNZR6,Q6RETDELAY1延时5MSMOVR6,25DL2MOVR7,100DJNZR7,DJNZR6,DL2RETSTORE_DATAMOVA,40HCALLWCOMMOVR2,08HMOVDPTR,D_DATAMOVR3,00HS_DATAMOVA,R3MOVCA,ADPTRCALLWDATA写入数据INCR3DJNZR2,S_DATARETD_DATADB0CH,12H,12H,0CH,00H,00H,00H,00HRE_18B20JBFLAG1,RE_18B20ARETRE_18B20ACALLRESETMOVA,0CCH跳过ROM匹配LCALLWRITEMOVA,4EH写暂存寄存器LCALLWRITEMOVA,TEMP_THTH报警上限)LCALLWRITEMOVA,TEMP_TLTL报警下限)LCALLWRITEMOVA,7FH12位精确度LCALLWRITERETRESETSETBDATE_LINENOPCLRDATE_LINEMOVR0,6BH主机发出延时复位低脉冲MOVR1,04HTSR1DJNZR0,MOVR0,6BHDJNZR1,TSR1SETBDATE_LINE然后拉高数据线NOPNOPNOPMOVR0,32HTSR2JNBDATE_LINE,TSR3等待DS18B20回应DJNZR0,TSR2JMPTSR4延时TSR3SETBFLAG1置标志位,表示DS1820存在JMPTSR5TSR4CLRFLAG1清标志位,表示DS1820不存在JMPTSR7TSR5MOVR0,06BHTSR6DJNZR0,时序要求延时一段时间TSR7SETBDATE_LINERETWRITEMOVR2,8一共8位数据CLRCWR1CLRDATE_LINE开始写入DS18B20总线要处于复位(低)状态MOVR3,07DJNZR3,总线复位保持16微妙以上RRCA把一个字节DATA分成8个BIT环移给CMOVDATE_LINE,C写入一个BITMOVR3,3CHDJNZR3,等待100微妙SETBDATE_LINE重新释放总线NOPDJNZR2,WR1写入下一个BITSETBDATE_LINERETREADMOVR4,2将温度低位、高位、TH、TL从DS18B20中读出MOVR1,TEMPL存入25H、26H、27H、28HRE00MOVR2,8RE01CLRCYSETBDATE_LINENOPNOPCLRDATE_LINE读前总线保持为低NOPNOPNOPSETBDATE_LINE开始读总线释放MOVR3,09延时18微妙DJNZR3,MOVC,DATE_LINE从DS18B20总线读得一个BITMOVR3,3CHDJNZR3,等待100微妙RRCA把读得的位值环移给ADJNZR2,RE01读下一个BITMOVR1,AINCR1DJNZR4,RE00RETMENU_OKMOVDPTR,M_OK1指针指到显示消息MOVA,1显示在第一行CALLLCD_PRINTMOVDPTR,M_OK2指针指到显示消息MOVA,2显示在第一行CALLLCD_PRINTRETT_1DB“TEMP1“,0T_2DB“TEMP2“,0T_3DB“TEMP3“,0T_4DB“TEMP4“,0M_OK1DB“SUNLU“,0M_OK2DB“YANGZHOUZHIDA“,0M2_LINEDB“,0CLR_2LINE显示实时温度前,先对第二屏进行清屏MOVDPTR,M2_LINECALLLINE2RETLCD_PRINT在LCD的第一行或第二行显示字符CJNEA,1,LINE2判断是否为第一行LINE1MOVA,80H设置LCD的第一行地址CALLWCOM写入命令JMPFILLLINE2MOVA,0C0H设置LCD的第二行地址CALLWCOMFILLCLRA填入字符MOVCA,ADPTR由消息区取出字符CJNEA,0,LC1判断是否为结束码RETLC1CALLWDATA写入数据INCDPTR指针加1JMPFILL继续填入字符RETREAD_E2CALLRESETMOVA,0CCH跳过ROM匹配LCALLWRITEMOVA,0B8H把EEPROM里的温度报警值拷贝回暂存器CALLWRITERETTEMP_BJMOVA,0CBHCALLWCOMMOVDPTR,BJ1指针指到显示消息MOVR1,0MOVR0,2BBJJ1MOVA,R1MOVCA,ADPTRCALLWDATAINCR1DJNZR0,BBJJ1RETBJ1DB00H,“C“MENU_ERRORMOVDPTR,M_ERROR1指针指到显示消息1MOVA,1显示在第一行CALLLCD_PRINTMOVDPTR,M_ERROR2指针指到显示消息1MOVA,2显示在第一行CALLLCD_PRINTRETM_ERROR1DB“DS18B20ERROR“,0M_ERROR2DB“TEMP“,0CONVTEMPMOVA,TEMPH判温度是否零下ANLA,80HJZTEMPC11温度零上转TEMPC11CLRC温度零下,清进位MOVA,TEMPL低字节送累加器CPLA取反ADDA,01H加1MOVTEMPL,A求补后,低字节送入TEMPLMOVA,TEMPH高字节送累加器CPLA取反ADDCA,00H加低字节取反加1后的进位MOVTEMPH,A求补后,高字节存入TEMPHSETBFLAG2负数标志位置1TEMPC11正、负数公共处理程序MOVA,TEMPL温度值低八位送入累加器ANLA,0FH屏蔽高四位,只留小数位MOVDPTR,TEMPDOTTAB小数部分BCD码转换表数据块首地址送数据指针MOVCA,ADPTR查表MOVTEMPLC,ATEMPLC的低四位为小数部分转换后的BCD码MOVA,TEMPL温度值低字节送累加器ANLA,0F0H取出高四位SWAPA把高四位交换到低四位中去MOVTEMPL,A再存入TEMPLMOVA,TEMPH温度值高字节送累加器ANLA,0FH取出低四位SWAPA交换高低四位ORLA,TEMPL重新组合为一个字节带符号的温度值(一位符号,七位绝对值)MOVTEMP_ZH,A温度的符号值存入TEMP_ZH即SXXX,XXXXLCALLHEX2BCD1调温度的符号值转换成个、十、百位BCD码子程序MOVTEMPL,A把转换后的个位和十位BCD码送入TEMPLANLA,0F0H取出高四位即十位BCD码SWAPA把十位BCD码交换到低四位MOVTEMPHC,A十位BCD码存入TEMPHCMOVA,TEMPL把转换后的个位和十位BCD码送入AANLA,0FH取出低四位即个位BCD码SWAPA把低四位交换到高四位ORLA,TEMPLC和小数BCD码重新组合成一个字节MOVTEMPLC,A存入TEMPLCMOVA,R4取出百位BCD码JZTEMPC12如果A为0,即百位为零,程序返回ANLA,0FH如果百位不为0,取出百位BCD码SWAPA把百位BCD码交换到A的高四位MOVR4,A转换成XXXX0000后再存入R4MOVA,TEMPHC取出带显示符号的十位BCD码到AANLA,0FH取出十位BCD码ORLA,R4和百位BCD码整合成一个字节MOVTEMPHC,A存入TEMPHCTEMPC12RETHEX2BCD1十六进制BCDMOVB,064H100送入BDIVAB符号值温度A100MOVR4,A商A存入R4,即百位数BCD码MOVA,0AH10送入AXCHA,BA、B交换DIVAB余数1SWAPA商A的高低四位交换ORLA,B然后和余数相或,即A中高四位为十位BCD码,低四位为个位BCD码RET小数部分码表TEMPDOTTABDB00H,00H,01H,01H,02H,03H,03H,04HDB05H,05H,06H,06H,07H,08H,08H,09HDISPBCD把温度数据折分成四个BCD码MOVA,TEMPLC把个位和小数位BCD码取出到AANLA,0FH取出小数BCD码,MOV70H,A把小数B

温馨提示

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

评论

0/150

提交评论