数字温度计设计-毕业设计_第1页
数字温度计设计-毕业设计_第2页
数字温度计设计-毕业设计_第3页
数字温度计设计-毕业设计_第4页
数字温度计设计-毕业设计_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

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

文档简介

数字温度计设计-毕业设计数字温度计设计-毕业设计数字温度计设计-毕业设计数字温度计设计-毕业设计编制仅供参考审核批准生效日期地址:电话:传真:邮编:数字温度计设计学生:XXX指导教师:XXX内容摘要:在这个信息化高速发展的时代,单片机已经成为最经典的微控制器,单片机技术普及到我们的生活,工作,科研,各个领域,已经成为一种较为成熟的技术,作为一名工科类学生,我们已经学习了单片机,就应该把它熟练的应用到我们的实际生活当中。本文将要介绍一种单片机控制的数字温度计,这种温度计属于多功能温度计,它具有读数方便,测温范围广,测温准确,数字显示,适用范围宽等特点。主要用于对测温要求比较准确的场所,或科研室使用,该设计控制器使用单片机AT89S51,测温传感器使用DS18B20,本温度计可以调整显示日期、时间,可设定最低、最高温度报警值。测量温度超过设定的温度上、下限,启动蜂鸣器和指示灯报警。温度显示稳定。在实现温度显示的同时,能准确达到以上要求。关键词:数码管显示数字温度计DS18B20AT89S51DesignfordigitalthermometerAbstract:Intheinformationageofhigh-speeddevelopment,SCMhasbecomeoneofthemostclassicmicrocontroller,SCMtechnologyspreadtoourlives,work,research,invariousfields,hasbecomeamorematuretechnology,asanengineeringstudent,wehavestudiedtheSCM,itshouldbeagoodapplicationtoouractuallife.Thispaperwillintroduceakindofmicrocontrollercontrolofthedigitalthermometer,thethermometerbelongstothemultifunctionthermometer,ithasreadingconvenience,awiderangeoftemperaturemeasurement,accuratetemperaturemeasurement,digitaldisplay,wideapplicationrangeandotherfeatures.Mainlyusedformoreaccuratetemperaturemeasurementrequirementsofplaces,orscientificresearchroom,theuseofSCMAT89S51controllerdesign,theuseofDS18B20temperaturesensor,thethermometercanadjustthedisplaydate,time,cansettheminimum,maximumtemperaturealarmvalue.Measuringthetemperatureexceedsthesettemperature,lowerlimit,startalarmbuzzerandindicatorlight.Temperaturestability.Intherealizationoftemperaturedisplayatthesametime,canaccuratelyachievetheaboverequirements.Keywords:SCMdigitalcontroldigitalpipedisplaythermometerDS18B20AT89S52devices目录前言 11数字温度计设计方案的论证 1方案一 1方案二 12数字温度计详细设计 2主控制器AT89S51 2AT89S51的特点及特性: 2管脚功能说明 3振荡器特性 5芯片擦除 5温度采集部分的设计 5温度传感器DS18B20 5DS18B20温度传感器与单片机的接口电路 10显示部分电路设计 1274LS164引脚功能及特性 12显示电路 13报警电路的实现 14报警上、下限调整电路实现 14复位电路的实现 143系统软件设计 15主程序 15读出温度子程序 16温度转换命令子程序 17计算温度子程序 18显示数据刷新子程序 19系统的调试过程 194结束语 20附录1:程序清单 21附录2:整体设计原理图 29参考文献: 30数字温度计设计前言随着人们生活水平的不断提高,单片机在我们的日常生活中越来越广泛,它带给人们的方便是不可否定的,不如说,数字温度计,现在人们对它的要求是越来越高,要为现代人工作、科研、生活、提供更好的更方便的设施就需要从单片机技术着手,一切向着数字化控制,智能化控制方向发展。本设计将介绍的数字温度计与传统的温度计相比,具有读数方便,测温范围广,测温准确的特点,其输出温度采用数字显示,该设计的控制器使用单片机AT89S51,测温传感器使用DS18B20,用3位共阳极LED数码管以串口传送数据,实现温度显示,能准确达到以上列出的要求。随着时代的进步与发展,单片机技术已经普及到我们生活,工作,科研,各个领域,已经成为一种较为成熟的技术。本文将介绍一种基于单片机控制的数字温度计,本温度计属于多功能温度计,可以设置上下报警温度,但温度不在设置范围内时,可以报警。1数字温度计设计方案的论证方案一由于本次设计是测温电路,可以使用热敏电阻之类的器件利用其感温效应,在将随被测温度变化的电压或电流采集过来,进行A/D转换后,就可以用单片机进行数据的处理,在显示电路上,就可以将被测温度显示出来,这种设计需要用到A/D转换电路,感温电路相对比较麻烦。方案二★因为要考虑到温度传感器,在单片机电路设计中,大多都是使用传感器,所以这是非常容易想到的,所以可以采用一只温度传感器DS18B20,这类传感器,可以很容易直接读取被测温度值,进行转换,可以满足设计要求。★方案二的总体设计框图温度计电路设计总体设计方框图如图所示,控制器采用单片机AT89S51,温度传感器采用DS18B20,用5位LED数码管以串口传送数据实现温度显示。单片机复位单片机复位报警点按键调整时钟振荡主控制器LED显示温度传感器图总体设计框图从以上两种方案,很容易得出一个观点:采用方案二,电路比较简单,软件设计也比较简单。2数字温度计详细设计主控制器AT89S51AT89S51的特点及特性:AT89S51引脚图如图所示,共有40个引脚,4kbytesflash片内程序存储器,128bytes的随机存取存储器(ram),32个外部双向输入/输出(i/o)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(wd)电路,片内时钟振荡器。图AT89S51引脚图此外,AT89S51设计和配置了振荡频率可为0hz,并且可以通过软件设置省电模式。空闲模式下,CPU暂停工作,而ram定时计数器,串行口,外中断系统可继续工作,掉电模式冻结振荡器而保存ram的数据,停止芯片其它功能直至外中断激活或硬件复位。同时该芯片还具有pdip、tqfp和plcc等三种封装形式,以适应不同产品的需求。主要功能特性:兼容mcs-51指令系统4k可反复擦写(>100次)ipflashrom32个双向i/o口工作电压2个16位可编程定时/计数器时钟频率0-33mhz全双工uart串行中断口线128x8bit内部ram2个外部中断源低功耗空闲和省电模式中断唤醒省电模式3级加密位看门狗(wdt)电路软件设置空闲和省电功能灵活的isp字节和分页编程双数据寄存器指针管脚功能说明VCC:供电电压。GND:接地。P0口:P0口为一个8位漏极开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FLASH编程时,P0口作为原码输入口,当FLASH进行校验时,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”P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部上拉为低电平,P3口将输出电流(ILL)P3口也可作为AT89C51的一些特殊功能口,如以下所诉:P3口管脚备选功能RXD(串行输入口)TXD(串行输出口)/INTO(外部中断0)/INTO(外部中断1)T0(计时器0外部输入)T1(计时器1外部输入)WR(外部数据存储器写选通)RD(外部数据存储器读选通)P3口同时为闪烁编程和编程校验接收一些控制信号。RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。通常情况下,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而需要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如果想禁止ALE的输出,可以在SFR8EH地址上置0。此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚将被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。/EA/VPP:当/EA保持低电平时,则在此期间为外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间为内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。XTAL1:来自反向振荡器的输入及内部时钟工作电路的输入。XTAL2:来自反向振荡器的输出。振荡器特性XTAL1和XTAL2分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件,XTAL2应不接。有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。芯片擦除整个PEROM阵列和三个锁定位的电擦除可通过正确的控制信号组合,并保持ALE管脚处于低电平10ms来完成。在芯片擦除操作中,代码阵列全被写“1”且在任何非空存储字节被重复编程以前,该操作必须被执行。此外,AT89S51设有稳态逻辑,可以在低到零频率的条件下静态逻辑,支持两种软件可选的掉电模式。在闲置模式下,CPU停止工作。但RAM,定时器,计数器,串口和中断系统仍在工作。在掉电模式下,保存RAM的内容并且冻结振荡器,禁止所用其他芯片功能,直到下一个硬件复位为止。单片机AT89S51具有低电压供电和体积小等特点,四个端口只需要两个口就能满足电路系统的设计需要,很适合便携手持式产品的设计使用系统可用二节电池供电。温度采集部分的设计温度传感器DS18B20DS18B20温度传感器是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现9~12位的数字值读数方式。TO-92封转的DS18B20的引脚排列见下图(底视图),其管脚功能描述见表。图引脚排列图表DS18B20详细引脚功能描述序号名称引脚功能说明1GND地信号2DQ数据输入/输出引脚。开漏单总线接口引脚。当被用着在寄生电源下,也可以向器件提供电源。3VDD可选择的VDD引脚。当工作于寄生电源时,此引脚必须接地。DS18B20的性能特点如下:独特的单线接口仅需要一个端口引脚进行通信;多个DS18B20可以并联在唯一的三线上,实现多点组网功能;无须外部器件;可通过数据线供电,电压范围为~;零待机功耗;温度以9或12位数字;用户可定义报警设置;报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件;负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作;DS18B20采用3脚PR—35封装或8脚SOIC封装,其内部结构图如图所示。6464位ROM和单线接口存储器与控制逻辑高速缓存低温触发器TL8位CRC发生器I/O温度传感器高温触发器配置寄存器CVDD图DS18B20内部结构64位ROM的结构开始8位是产品类型的编号,接着是每个器件的唯一序号,共有48位,最后8位是前面56位的CRC检验码,这也是多个DS18B20可以采用一线进行通信的原因。温度报警触发器TH和TL,可通过软件写入户报警上下限。DS18B20温度传感器的内部存储器还包括一个高速暂存RAM和一个非易失性的可电擦除的EERAM。高速暂存RAM的结构为8字节的存储器,结构如图所示。头2个字节包含测得的温度信息,第3和第4字节TH和TL的拷贝,是易失性的,每次上电复位时被刷新。第5个字节,为配置寄存器,它的作用是来确定温度值的数字转换分辨率。DS18B20工作时寄存器中的分辨率转换为相应精度的温度数值。该字节各位的定义如图所示。低5位一直为1,TM是工作模式位,用于设置DS18B20在工作模式还是测试模式,DS18B20出厂时该位被设置为0,用户要去改动,R1和R0决定温度转换的精度位数,来设置分辨率。温度LSB温度MSBTH用户字节1TL用户字节2配置寄存器保留保留保留CRCTMR1R011111图DS18B20字节定义由表可见,DS18B20温度转换的时间比较长,而且分辨率越高,所需要的温度数据转换时间越长。因此,在实际应用中要将分辨率和转换时间权衡考虑。高速暂存RAM的第6、7、8字节保留未用,表现为全逻辑1,第9字节读出前面所有8字节的CRC码,可用来检验数据,从而保证通信数据的准确性。当DS18B20接收到温度转换命令后,开始启动转换。转换完成后的温度值就以16位带符号扩展的二进制补码形式存储在高速暂存存储器的第1、2字节。单片机可以通过单线接口读出该数据,读数据时低位在先,高位在后,数据格式以℃/LSB形式表示。当符号位S=0时,表示测得的温度值为正值,可以直接将二进制位转换为十进制;当符号位S=1时,表示测得的温度值为负值,要先将补码变为原码,再计算十进制。表是一部分温度值对应的二进制温度数据。表DS18B20温度转换时间表R1R0分辨率/位温度最大转向时间/ms009011010113751112750DS18B20完成温度转换后,就把测得的温度值与RAM中的TH、TL字节内容作比较。若T>TH或T<TL,则将该器件内的报警标志位置位,并对主机发出的报警搜索命令作出响应。因此,可用多只DS18B20同时测量温度并进行报警搜索。在64位ROM的最高有效字节中存储有循环冗余检验码(CRC)。主机ROM的前56位来计算CRC值,并和存入DS18B20的CRC值作比较,以判断主机收到的ROM数据是否正确。DS18B20的测温原理是这样的,器件中低温度系数晶振的振荡频率受温度的影响很小,用于产生固定频率的脉冲信号送给减法计数器1;高温度系数晶振随温度变化其晶振频率明显改变,所产生的信号作为减法计数器2的脉冲输入。器件中还有一个计数门,当计数门打开时,DS18B20就对低温度系数振荡器产生的时钟脉冲进行计数进而完成温度测量。计数门的开启时间由高温度系数振荡器来决定,每次测量前,首先将—55%所对应的一个基数分别置入减法计数器1、温度寄存器中,计数器1温度寄存器被预置在—55%所对应的一个基数值。减法计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当减法计数器1预置值减到0,温度寄存器的值将加1减法计数器1预置将重新被装入,减法计数器1新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到减法计数器计数到0,停止温度寄存器的累加,此时温度寄存器中的数值就是所测温度值。其输出用于修正减法计数器的预置值,只要计数器门仍未关闭就重复上述过程,直到温度寄存器值大致被测温度值。表一部分温度对应值表温度/℃二进制表示十六进制表示+125000001111101000007D0H+8500000101010100000550H+00000001100100000191H+000000001010000100A2H+00000000000000100008H000000000000010000000H1111111111110000FFF8H1111111101011110FF5EH1111111001101111FE6FH-551111110010010000FC90H另外,由于DS18B20单线通信功能是分时完成的,它有严格的时隙概念,因此读写时序很重要。系统对DS18B20的各种操作按协议进行。操作协议为:初始化DS18B20(发复位脉冲)→发ROM功能命令→发存储器操作命令→处理数据。DS18B20温度传感器与单片机的接口电路DS18B20可以采用两种方式供电,一种是采用电源供电方式,此时DS18B20的1脚接地,2脚作为信号线,3脚接电源。另一种是寄生电源供电方式,如图所示单片机端口接单线总线,为保证在有效的DS18B20时钟周期内提供足够的电流,可用一个MOSFET管来完成对总线的上拉。单片机单片机VCCGNDDS18B20029DS18B29DS18B29VCCGNDGND图DS18B20与单片机的接口电路当DS18B20处于写存储器操作和温度A/D转换操作时,总线上必须有强的上拉,上拉开启时间最大为10us。采用寄生电源供电方式时VDD端接地。由于单线制只有一根线,因此发送接口必须是三态的。由于DS18B20是在一根I/O线上读写数据,因此,对读写的数据位有着严格的时序要求。DS18B20有严格的通信协议来保证各位数据传输的正确性和完整性。该协议定义了几种信号的时序:初始化时序、读时序、写时序。所有时序都是将主机作为主设备,单总线器件作为从设备。而每一次命令和数据的传输都是从主机主动启动写时序开始,如果要求单总线器件回送数据,在进行写命令后,主机需启动读时序完成数据接收。数据和命令的传输都是低位在先,其复位时序如图所示。图DS18B20的复位时序对于DS18B20的读时序分为读0时序和读1时序两个过程。对于DS18B20的读时隙是从主机把单总线拉低之后,在15秒之内就得释放单总线,以让DS18B20把数据传输到单总线上。DS18B20在完成一个读时序过程,至少需要60us才能完成。其时序图如图所示。图DS18B20的读时序图对于DS18B20的写时序仍然分为写0时序和写1时序两个过程。对于DS18B20写0时序和写1时序的要求不同,当要写0时序时,单总线要被拉低至少60us,保证DS18B20能够在15us到45us之间能够正确地采样I/O总线上的“0”电平,当要写1时序时,单总线被拉低之后,在15us之内就得释放单总线。其时序图如图所示。图DS18B20的写时序图显示部分电路设计74LS164引脚功能及特性74LS164是一个串入并出的8位移位寄存器,其引脚图如图所示。它常用于单片机系统中,下面就来总结一下这个元件的基本知识。图74LS164引脚图图74LS164功能图图逻辑符合图串行输入带锁存时钟输入,串行输入带缓冲异步清除最高时钟频率可高达36Mhz功耗:10Mw/bit74系列工作温度:0℃toVCC最高电压:7V输入最高电压:7V最大输出驱动能力高电平:—低电平:8mA显示电路显示电路如图所示,采用5位共阳LED数码管,从P3口RXD,TXD串口输出段码。显示电路是使用的串口显示,这种显示最大的优点就是使用的资源比较少,该显示电路只使用单片机的3个端口,,.并配以4片串入并出移位寄存器74LS164(LED驱动)四只数码管采用74LS164右移寄存器驱动,显示比较清晰。其工作过程如下:串行数据由发送,移位时钟由送出。在移位时钟的作用下,串行口发送缓冲器的数据一位一位地移入74LS164中。四片74LS164串级扩展为4个8位并行输出口,分别连接到4个LED显示器的段选端作静态显示。图温度显示电路报警电路的实现蜂鸣器可以在被测温度不在上下限范围内时,发出报警鸣叫声音,同时LED数码管将没有被测温度值显示。报警上、下限调整电路实现有三个独立式按键可以分别调整温度计的上下限报警设置,图中的蜂鸣器可以在被测温度不在上下限范围内时,发出报警鸣叫声音,同时LED数码管将没有被测温度值显示,这时可以调整报警上下限,从而测出被测的温度值。复位电路的实现图中的按键复位电路是上电复位加手动复位,使用起来比较方便,在程序跑飞时,可以手动复位,这样就不必重启单片机电源,就可以实现复位。图单片机主板电路3系统软件设计系统程序主要包括主程序,读出温度子程序,温度转换命令子程序,计算温度子程序,显示数据刷新子程序等。主程序调用显示子程序1S到到调用显示子程序1S到到初次上电发温度转换开始命令读出温度值温度计算处理显示数据判断NYYN初始化图主程序流程图读出温度子程序读出温度子程序的主要功能是读出RAM的9字节,在读出时需进行CRC校验,校验有错时不进行温度数据的改写。其程序流程图如图所示。发DS18B20复位命令发DS18B20复位命令发跳过ROM命令发读取温度命令读取操作,CRC校验9字节完CRC校验移入温度暂存器结束YNYN图读温度流程图温度转换命令子程序温度转换命令子程序主要是发温度转换开始命令,当采用12位分辨率时转换时间约为750ms,在本程序设计中采用1s显示程序延时法等待转换的完成。温度转换命令子程序流程图如图所示。发跳过ROM命令发跳过ROM命令发DS18B20复位命令发温度转换开始命令结束图温度转换流程图计算温度子程序计算温度子程序将RAM中读取值进行BCD码的转换运算,并进行温度值正负的判定,其程序流程图如图所示。开始开始温度零下温度值取补码置“Y_”标志计算整数位温度BCD值计算小数位温度BCD值置“+”标志结束N图计算温度流程图显示数据刷新子程序显示数据刷新新子程序主要是对显示缓冲器中的显示数据进行刷新操作,当最高显示位为0时将符号显示位移入下一位。程序流程图如图所示。温度数据移入显示寄存器温度数据移入显示寄存器十位数0百位数0十位数显示符号百位数不显示百位数显示数据(不显示符号)结束NYYN图显示数据刷新流程图系统的调试过程当操作者按下或松开按键时,按键会产生机械抖动。这种抖动发生在按下或松开的瞬间,一般持续几到几十毫秒,抖动时间随按键的结构不同而不同。在扫描键盘过程中,必须想办法消除按键抖动,否则会引起错误。在键盘扫描中,应当防止一次键而有多个对应键输入的情况。这种情况的发生是由于键扫描速度与键处理速度较快,当按下的键还未松开时,键扫描程序和键处理程序已执行了多遍。这样,由于程序执行和按键动作不同步而造成按一次键有多个值输入的错误状态。为避免发生这种情况,必须保证按一次键。CPU只对改键作一次处理。为此,在扫描程序中不仅要检测是否有按键按下,在有键按下的情况下,作一次键处理,而且在键处理完毕之后,还应检测按下的键是否松开,只有当按下的键松开以后,程序才往下执行。这样每按一个键,只作一个键处理,把两者达到同步,消除按一次按键有多次键值输入的错误情况。4结束语此次课程设计是我大学生活中的重要一部分。从最初的选题,开题到写课程设计直到完成本次设计。期间,查找资料,老师指导,与同学交流,反复修改设计,每一个过程都是对自己能力的一次检验和提升。通过本次实践,锻炼了设计实践能力,此次课程设计是对我专业知识和专业基础知识一次实践检验和巩固,同时也是走向工作岗位前的一次热身。这次课程设计收获很多,比如学会了查找相关资料相关标准,分析数据,提高了自己的制作能力。终于完成了我的课程设计,虽然在做的过程中遇到很多的难题,比如缺乏综合应用专业知识的能力,对材料的不了解等等。由于时间有限,未能完成全部安装与调试工作,对设计结果没有作出最后的检验,也感到遗憾。这次实践是对自己大学两年所学的一次大检阅,使我明白自己知识还很不全面。面临着即将毕业,要做的事情有很多,但自己的求学之路还很漫长,以后更应该在工作实践中不断学习,努力使自己成为一个对社会有所贡献的人。本次课程设计的重点在于软件算法的设计,需要很有技巧的程序算法,虽然以前也要求写程序,但是我觉得写一个好的程序并不是一件简单的事,只有当我们尝试着去做,才能真正掌握,只学习理论有些东西是很难理解的,更加谈不上掌握了。从这次的课程设计中,我真正意识到,在以后的学习中,要理论联系实际,把我们所学的理论知识用到实际当中,程序只有在经常的写和读的过程中才能提高,这就是我在这次课程设计中的最大收获。这次课程设计得到了老师和同学的帮助,我非常感谢他们。每次遇到不懂的问题,我最先是自己想办法解决,其次是向同学、老师请教,而且他们都会耐心的帮助我解决问题。感谢曾经在各方面给予我帮助的同学们,在大学生活即将结束的日子里,我们再一次演绎了团结互助的童话,把一个复杂的,从来没有上手的毕业设计圆满完成了,正是因为有了你们的帮助,才让我不仅学到了本次课程设计所涉及的新知识以外的东西,那就是团结的力量。最后,感谢所有在这次课程设计中给予过我帮助的人。附录1:程序清单1.数字温度计部分程序清单初始化程序SIOKEQU5FHTEMPUTEREQU39HTEMPHEQU5EHTEMPLEQU5DHMS50EQU5CHSIGNEQU5BHS1BITS2BITS3BITS4BITORG0000HLJMPMORG000BHLJMPTOITORG0030HMAIN:MOVSP,#60HMOVTMOD,#01HMOVTH0,#3CHMOVTL0,#0B0HSETBETOSETBTR0SETBEAMOVTEMPH,#30MOVTEMPL,#9MOVTEMPUTER,#15;温度最始值MOVS1OK,#00HMOVSIGN,#00HMOV38H,#0BHMOV37H,#0CHMOV36H,#0BHACALLDISPACALLTIS主程序START:JBS1,NET1ACALLT12MSJBS1,NET1JNBS1,$INCSIGNMOVA,SIGNCJNEA,#1,TIAOACALLTIAOTLTIAO:CJNEA,#2,NET1MOVSIGN,#0ACALLTIAOTHNET1:MOVA,SIOKCJNEA,#1,STARTMOVA,TEMPUTERSUBBA,TEMPHJNB,ALEMMOVA,TEMPUTERSUBBA,TEMPLJB,ALEMSETBACALLWENDUACALLDISPMOVSIOK,#00HAJMPSTARTALEM:MOV36H,#0CHMOV37H,#0CHMOV38H,#0CHCLRACALLDISPACALLTISLCALLWENDULCALLDISPMOVSIOK,#00HSJMPSTART温度总子程序wendu:ACALLINIT_1820ACALLRE_CONFIGACALLGET_TEMPERACALLTEMPER_COVRETDS18B20初始化程序INIT_1820;SETBNOPCLRMOVR0,#06BHMOVR1,#03HTSR1:DJNZRO,TSR1;延时MOVR0,#6BHDJNZR1,TSR1SETBNOPNOPNOPMOVR0,#25HTSR2:JNB,TSR3DJNZR0,TSR2LJMPTSR4;延时TSR3:SETB;置标志位,表示DS18B20不存在LJMPTSR5TSR4:CLR;消标志位,表示DS18B20不存在LJMPTSR7TSR5:MOVR0,#06BHMOVR1,303HTSR6:DJNZR0,TSR6;延时MOVR0,#6BHDJNZR1,TSR6TSR7:SETBRET重新写DS18B20暂存存储器设定值RE_CONFIG:JB,RE_CONFIG1;若DS18B20存在,转RE_CONFIG1RETRE_CONFIG1;MOVA,#0CCH;发SKIPROM命令LCALLWRITE_1820MOVA,#4EH;发写暂存存储器命令LCALLWRITE_1820MOVA,#00H;TH(报警上限)中写入00HLCALLWRITE_1820MOVA,#00H;TL(报警下限)中写入00HLCALLWRITE_1820MOVA,#1FH;选择9位温度分辨率LCALLWRITE_1820RET读出转换后的温度值GET_TEMPERSETB;定时入口LCALLINIT_1820JB,TSS2RET;若DS18B20不存在则返回TSS2:MOVA,#0CCH;跳过ROM匹配LCALLWRITE_1820MOVA,#44H;发出温度转换命令LCALLWRITE_1820LCALLINIT_1820MOVA,#0CCH;跳过ROM匹配LCALLWRITE_1820MOVA,#0BEH;发出读温度命令LCALLWRITE_1820LCALLREAD_1820MOV37H,A;将读出的温度数据保存RET写DS18B20的程序WRITE_1820MOVR2,#8CLRCWR1:CLRNOPNOPNOPNOPRRCAMOV,CMOVR3,#35DJNZR3,$SETBNOPDJNZR2,WR1SETBRET读DS18B20的程序,从DS18B20中读出两个字节的温度数据READ_1820;MOVR4,#2;将温

温馨提示

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

评论

0/150

提交评论