




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
XXX学院单片机技术课程设计说明书课题名称基于单片机的多点温度采集设计系别专业班级学号姓名XXX指导教师2023年6月30日摘要本论文介绍的是基于AT89C51单片机数字温度计设计,表达模块化设计思想。论文重点阐述了硬件模块——MCU模块、温度的感应模块、控制模块、显示模块的设计。软件同样采用模块化设计,软件模块——中断模块、温度转化模块。温度是生产过程和科学实验中普遍而且重要的物理参数之一。在生产过程中,为了高效地进行生产,必须对它的主要参数,如温度、压力、流量等进行有效的控制。温度控制在生产过程中占有相当大的比例。温度测量是温度控制的根底,技术已经比拟成熟。传统的测温元件有热电偶和二电阻。而热电偶和热电阻测出的一般都是电压,再转换成对应的温度,这些方法相比照拟复杂,需要比拟多的外部硬件支持。我们用一种相比照拟简单的方式来测量。我们采用美国DALLAS半导体公司继DS1820之后推出的一种改良型智能温度传感器DS18B20作为检测元件,温度范围为-55~125ºC,最高分辨率可达0.0625ºC。DS18B20可以直接读出北侧温度值,而且采用三线制与单片机相连,减少了外部的硬件电路,具有低本钱和易使用的特点。关键字:微控制器;数字控制;温度计;AT89C51;DS18B20。AbstractThispaperintroducesthedesignbasedonAT89C51digitalthermometer,reflectthemodulardesignthought.Paperexpoundsthehardwaremodule-module,temperaturesensingMCUmodule,controlmodule,displaymoduledesign.Thesoftwarealsomodulardesign,softwaremodule-module,fresh-interrupttemperatureconversionmodule.Thetemperatureistheproductionprocessandscientificexperimentscommonandimportantphysicalparameterof.Intheprocessofproduction,tohighlyefficientproduction,itneedstomainparameters,suchastemperature,pressure,andflowrateofeffectivecontrol.Temperaturecontrolinproductionprocessoccupiesalargeproportion.Temperaturemeasurementisthefoundationoftemperaturecontrol,technologyhasmoremature.Thetraditionalmeasuringtemperatureelementshavethermocoupleandtworesistance.Andthermocoupleandheatresistanceofthemeasureiscommonlyvoltage,againconvertedintothecorrespondingtemperature,thesemethodsrelativelycomplex,needmoreoftheexternalhardwaresupport.Weusearelativelysimplewaytomeasure.WeadopttheDALLASsemiconductorcompanyfollowingtheDS1820rollsoutafteranimprovedversionoftheintelligenttemperaturesensorDS18B20asthetestcomponents,temperaturerangefor-55to125C,thehighestresolutiontimeintegrationcanbeupto0.0625DHSC.DS18B20canreadoutdirectly,andthetemperatureinnorthofthethreewireandsingle-chipmicrocomputerislinkedtogether,reducetheexternalhardwarecircuit,withlowcostandeasytousefeatures.Keyword:microcontroller,digitalcontrol,Thethermometer,AT89C51,DS18B20.目录摘要1Abstract2目录31绪论42设计任务与要求4设计任务4设计要求43总体设计方案5总体设计方案5方案一5方案二5方案二的总体设计图6主控电路设计6主控制器AT89C51的介绍6温度传感器DS18B20的介绍9DS18B20的工作协议12显示电路设计15DS18B20温度传感器与单片机的接口电路16系统整体硬件电路184系统软件设计19主程序19读出温度子程序19温度转换命令子程序20显示数据子程序215调试过程226总结与体会23致谢24参考文献25附录一26附录二33绪论随着“信息时代〞的到来,作为获取信息的手段——传感器技术得到了显著的进步,其应用领域越来越广泛,对其要求越来越高,需求越来越迫切。传感器技术已成为衡量一个国家科学技术开展水平的重要标志之一。因此,了解并掌握各类传感器的根本结构、工作原理及特性是非常重要的。由于传感器能将各种物理量、化学量和生物量等信号转变为电信号,使得人们可以利用计算机实现自动测量、信息处理和自动控制,但是它们都不同程度地存在温漂和非线性等影响因素。传感器主要用于测量和控制系统,它的性能好坏直接影响系统的性能。因此,不仅必须掌握各类传感器的结构、原理及其性能指标,还必须懂得传感器经过适当的接口电路调整才能满足信号的处理、显示和控制的要求,而且只有通过对传感器应用实例的原理和智能传感器实例的分析了解,才能将传感器和信息通信和信息处理结合起来,适应传感器的生产、研制、开发和应用。另一方面,传感器的被测信号来自于各个应用领域,每个领域都为了改革生产力、提高工效和时效,各自都在开发研制适合应用的传感器,于是种类繁多的新型传感器及传感器系统不断涌现。温度传感器是其中重要的一类传感器。其开展速度之快,以及其应用之广,并且还有很大潜力。为了提高对传感器的认识和了解,尤其是对温度传感器的深入研究以及其用法与用途,基于实用、广泛和典型的原那么而设计了本系统。本文利用单片机结合传感器技术而开发设计了这一温度监控系统。设计任务与要求设计任务设计基于单片机控制的多点温度采集数字温度计,该多点温度采集设计属于单线挂接2个DS18B20的两路温度数据采集,并且通过两个4位1体的数码管进行温度显示,同时要显示当前通道号。设计要求1、控制器使用MCS-51系列单片机。2、DS18B20集成温度传感器的工作原理及其单片机的连接电路识别、程序控制。3、实现DS18B20的温度转换数字采集。4、实现4位1体的数码管进行温度显示,同时要显示当前通道号。5、单线挂接2个DS18B20的两路温度采集。6、软件仿真设计+硬件设计。总体设计方案总体设计方案方案一由于本设计是测温电路,可以使用热敏电阻之类的器件利用其感温效应,在将随被测温度变化的电压或电流采集过来,进行A/D转换后,就可以用单片机进行数据的处理,在显示电路上,就可以将被测温度显示出来,这种设计需要用到A/D转换电路感温电路比拟麻烦。该方案一的设计流程如图3.1所示:温度传感器温度传感器A/D转换电路单片机数码管显示图3.1流程图在设计时钟电路时,可以用时钟芯片,DS1302是DALLAS公司推出的涓流充电时钟芯片,内部包含实时时钟/日历和31字节的静态RAM。它可以与微处理器通过简单的串行接口。实时时钟/日历提供秒,分钟,小时,日期,月份,和一年的信息。本月底日期会自动调整几个月少于31天,包括更正为闰年。时钟运行或者在24小时或12小时格式的上午/下午指标。接口的DS1302与微处理器简化使用同步串行通信。只有三个电线需要沟通的时钟/内存:I/O〔数据线〕,以及时钟〔串行时钟〕。数据还可以转到和时钟/RAM的1字节的时间或在突发的多达31个字节。在DS1302的设计操作非常低的功耗和保存数据和时钟信息不到1μW。在DS1302的前身是在DS1202。除了根本的报时功能,DS1202,DS1302具有的附加功能的双电源引脚的主要和备用电源,可编程的涓流充电器VCC1,并增设7个字节的暂存记忆。方案二由于用A/D转换比拟麻烦,进而考虑到用温度传感器,在单片机电路设计中,大多都是使用传感器,所以这是非常容易直接读取温度值,进行转换,就可以满足设计要求。在设计时钟电路时,由于实现的功能比拟少,利用单片机内部资源,定时/计数器,中断系统就可以完成,需要在用时钟芯片,而且会增加外围电路。方案二的总体设计图主控电路设计温度计、时钟电路设计总体设计框图如图3.2.1所示,控制器采用单片机AT89S51,温度传感器采用DS18B20,用4位LED数码管以并行传送数据实现温度、时钟的显示。复位电路复位电路时钟电路DS18B20电路AT89C51单片机数码管显示图3.2.1总体设计主控制器AT89C51的介绍AT89C51是一种带4K字节闪烁可编程可擦除只读存储器〔FPEROM—FalshProgrammableandErasableReadOnlyMemory〕的低电压,高性能CMOS8位微处理器,俗称单片机。AT89C2051是一种带2K字节闪烁可编程可擦除只读存储器的单片机。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。单片机AT89C51的封装图为图3.2.2,本设计的单片机原理图为图3.2.3。图3.2.2单片机AT89C51的封装图图3.2.3单片机原理图1.单片机AT89C51主要特性有以下几点1.MCS-51兼容4K字节可编程闪烁存储器。2.寿命是1000写/擦循环。3.数据保存时间为10年。4.全静态工作在0Hz-24Hz。5.三级程序存储器锁定。6.128*8位内部RAM。7.32可编程I/O线。8.两个16位定时器/计数器。9.5个中断源。10.可编程串行通道。10.低功耗的闲置和掉电模式。11.片内振荡器和时钟电路。2.单片机AT89C51的管脚如下说明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口也可作为AT89C51的一些特殊功能口,如下说明:P3.0RXD〔串行输入口〕。P3.1TXD〔串行输出口〕。P3.2/INT0〔外部中断0〕。P3.3/INT1〔外部中断1〕。P3.4T0〔记时器0外部输入〕。P3.5T1〔记时器1外部输入〕。P3.6/WR〔外部数据存储器写选通〕。P3.7/RD〔外部数据存储器读选通〕。P3口同时为闪烁编程和编程校验接收一些控制信号。RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR的8EH地址上置0。此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。EA/VPP:当/EA保持低电平时,那么在此期间外部程序存储器〔0000H-FFFFH〕,不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源〔VPP〕。XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2:来自反向振荡器的输出。3.振荡器特性XTAL1和XTAL2分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件,XTAL2应不接。有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的上下电平要求的宽度。4.芯片擦除整个PEROM阵列和三个锁定位的电擦除可通过正确的控制信号组合,并保持ALE管脚处于低电平10ms来完成。在芯片擦操作中,代码阵列全被写“1〞且在任何非空存储字节被重复编程以前,该操作必须被执行。此外,AT89C51设有稳态逻辑,可以在低到零频率的条件下静态逻辑,支持两种软件可选的掉电模式。在闲置模式下,CPU停止工作。但RAM,定时器,计数器,串口和中断系统仍在工作。在掉电模式下,保存RAM的内容并且冻结振荡器,禁止所用其他芯片功能,直到下一个硬件复位为止。温度传感器DS18B20的介绍这里我们用到温度芯片DS18B20。使用集成芯片,能够有效的减小外界的干扰,提高测量的精度,简化电路的结构。使用集成芯片,已经慢慢的成为设计电路的一种趋势。本系统使用温度芯片也正是顺应了这一趋势。DS18B20温度传感器是美国DALLAS半导体公司最新推出的一种改良型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现9~12位的数字值读数方式。DS18B20的性能特点如下:1.独特的单线接口仅需要一个端口引脚进行通信;2.多个DS18B20可以并联在惟一的三线上,实现多点组网功能;3.无须外部器件;4.可通过数据线供电,电压范围为3.0~5.5V;5.零待机功耗;6.温度以9或12位数字;7.用户可定义报警设置;8.报警搜索命令识别并标志超过程序限定温度〔温度报警条件〕的器件;9.负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作;DS18B20采用3脚PR-35封装或8脚SOIC封装,其内部结构框图如图3.2.4所示:I/OCI/OC64位ROM和单线接口高速缓存存储器与控制逻辑温度传感器高温触发器TH低温触发器TL配置存放器8位CRC发生器Vdd图3.2.4DS18B20内部结构64位ROM的结构开始8位是产品类型的编号,接着是每个器件的惟一的序号,共有48位,最后8位是前面56位的CRC检验码,这也是多个DS18B20可以采用一线进行通信的原因。温度报警触发器TH和TL,可通过软件写入户报警上下限。DS18B20温度传感器的内部存储器还包括一个高速暂存RAM和一个非易失性的可电擦除的EERAM。高速暂存RAM的结构为8字节的存储器,结构如图3.2.5所示。头2个字节包含测得的温度信息,第3和第4字节TH和TL的拷贝,是易失的,每次上电复位时被刷新。第5个字节,为配置存放器,它的内容用于确定温度值的数字转换分辨率。DS18B20工作时存放器中的分辨率转换为相应精度的温度数值。该字节各位的定义如图3.2.5所示。低5位一直为1,TM是工作模式位,用于设置DS18B20在工作模式还是在测试模式,DS18B20出厂时该位被设置为0,用户要去改动,R1和R0决定温度转换的精度位数,来设置分辨率。温度LSB温度MSBTH用户字节1TL用户字节2配置存放器保存保存保存CRC图3.2.5DS18B20字节定义由表3.2.6可见,DS18B20温度转换的时间比拟长,而且分辨率越高,所需要的温度数据转换时间越长。因此,在实际应用中要将分辨率和转换时间权衡考虑。高速暂存RAM的第6、7、8字节保存未用,表现为全逻辑1。第9字节读出前面所有8字节的CRC码,可用来检验数据,从而保证通信数据的正确性。℃/LSB形式表示。当符号位S=0时,表示测得的温度值为正值,可以直接将二进制位转换为十进制;当符号位S=1时,表示测得的温度值为负值,要先将补码变成原码,再计算十进制数值。表3.2.7是一局部温度值对应的二进制温度数据。R1R0分辨率/位温度最大转向时间/ms009011010113751112750表3.2.6DS18B20温度转换时间表DS18B20完成温度转换后,就把测得的温度值与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+8500000101010100000550H00000001100100000191H000000001010000100A2H00000000000000100008H000000000000010000000H1111111111110000FFF8H1111111101011110FF5EH1111111001101111FE6FH-551111110010010000FC90H表3.2.7一局部温度对应值表DS18B20的工作协议由于DS18B20单线通信功能是分时完成的,它有严格的时隙概念,因此读写时序很重要。系统对DS18B20的各种操作按协议进行。操作协议为:初使化DS18B20〔发复位脉冲〕→发ROM功能命令→发存储器操作命令→处理数据。1、初始化单总线上的所有处理均从初始化序列开始。初始化序列包括总线主机发出一复位脉冲,接着由附属器件送出存在脉冲。存在脉冲让总线控制器知道DS1820在总线上且已准备好操作。初始化过程复位和存在的脉冲如图3.2.8所示:图3.2.8复位脉冲2、ROM操作命令一旦总线主机检测到附属器件的存在,它便可以发出器件ROM操作命令之一。所有ROM操作命令均为8位长。这些命令列表如下:ReadROM(读ROM)[33h]此命令允许总线主机读DS18B20的8位产品系列编码,唯一的48位序列号,以及8位的CRC。此命令只能在总线上仅有一个DS18B20的情况下可以使用。如果总线上存在多于一个的附属器件,那么当所有从企图同时发送时将发生数据冲突的现象〔漏极开路会产生线与的结果〕。MatchROM(符合ROM)[55h]此命令后继以64位的ROM数据序列,允许总线主机对多点总线上特定的DS18B20寻址。只有与64位ROM序列严格相符的DS18B20才能对后继的存贮器操作命令作出响应。所有与64位ROM序列不符的从片将等待复位脉冲。此命令在总线上有单个或多个器件的情况下均可使用。SkipROM(跳过ROM)[CCh]在单点总线系统中,此命令通过允许总线主机不提供64位ROM编码而访问存储器操作来节省时间。如果在总线上存在多于一个的附属器件而且在SkipROM命令之后发出读命令,那么由于多个从片同时发送数据,会在总线上发生数据冲突〔漏极开路下拉会产生线与的效果〕。SearchROM(搜索ROM)[F0h]当系统开始工作时,总线主机可能不知道单线总线上的器件个数或者不知道其64位ROM编码。搜索ROM命令允许总线控制器用排除法识别总线上的所有从机的64位编码。AlarmSearch(告警搜索)[ECh]此命令的流程与搜索ROM命令相同。但是,仅在最近一次温度测量出现告警的情况下,DS18B20才对此命令作出响应。告警的条件定义为温度高于TH或低于TL。只要DS18B20一上电,告警条件就保持在设置状态,直到另一次温度测量显示出非告警值或者改变TH或TL的设置,使得测量值再一次位于允许的范围之内。贮存在EEPROM内的触发器值用于告警。3、存储器操作命令WriteScratchpad〔写暂存存储器〕[4Eh]这个命令向DS18B20的暂存器中写入数据,开始位置在地址2。接下来写入的两个字节将被存到暂存器中的地址位置2和3。可以在任何时刻发出复位命令来中止写入。这个命令读取暂存器的内容。读取将从字节0开始,一直进行下去,直到第9〔字节8,CRC〕字节读完。如果不想读完所有字节,控制器可以在任何时间发出复位命令来中止读取。CopyScratchpad〔复制暂存存储器〕[48h]这条命令把暂存器的内容拷贝到DS18B20的E2存储器里,即把温度报警触发字节存入非易失性存储器里。如果总线控制器在这条命令之后跟着发出读时间隙,而DS18B20又正在忙于把暂存器拷贝到E2存储器,DS18B20就会输出一个“0〞,如果拷贝结束的话,DS18B20那么输出“1〞。如果使用寄生电源,总线控制器必须在这条命令发出后立即起动强上拉并最少保持10ms。ConvertT〔温度变换〕[44h]这条命令启动一次温度转换而无需其他数据。温度转换命令被执行,而后DS18B20保持等待状态。如果总线控制器在这条命令之后跟着发出读时间隙,而DS18B20又忙于做时间转换的话,DS18B20将在总线上输出“0〞,假设温度转换完成,那么输出“1〞。如果使用寄生电源,总线控制器必须在发出这条命令后立即起动强上拉,并保持500ms。RecallE2〔重新调整E2〕[B8h]这条命令把贮存在E2中温度触发器的值重新调至暂存存储器。这种重新调出的操作在对DS18B20上电时也自动发生,因此只要器件一上电,暂存存储器内就有了有效的数据。在这条命令发出之后,对于所发出的第一个读数据时间片,器件会输出温度转换忙的标识:“0〞=忙,“1〞=准备就绪。ReadPowerSupply〔读电源〕[B4h]对于在此命令发送至DS18B20之后所发出的第一读数据的时间片,器件都会给出其电源方式的信号:“0〞=寄生电源供电,“1〞=外部电源供电。DS18B20读/写时序图如图3.2.9所示:4、处理数据DS18B20的高速暂存存储器由9个字节组成,其分配如图3.8所示。当温度转换命令发布后,经转换所得的温度值以二字节补码形式存放在高速暂存存储器的第0和第1个字节。单片机可通过单线接口读到该数据,读取时低位在前,高位在后。DS18B20温度采集转化后得到的12位数据,存储在DS18B20的两个8比特的RAM中,二进制中的前面5位是符号位,如果测得的温度大于或等于0,这5位为0,只要将测到的数值乘于0.0625即可得到实际温度;如果温度小于0,这5位为1,测到的数值需要取反加1再乘于0.0625即可得到实际温度。温度转换计算方法举例:例如当DS18B20采集到+125℃的实际温度后,输出为07D0H,那么:实际温度=07D0H*0.0625=2000*0.0625=1250℃。例如当DS18B20采集到-55℃的实际温度后,输出为FC90H,那么应先将11位数据位取反加1得370H〔符号位不变,也不作为计算〕,那么实际温度=370H*0.0625=880*0.0625=550℃。显示电路设计在数字系统中,经常需要将数字、文字和符号的二进制码翻译成人们习惯的形式直观地显示出来,本实验是将二进制编码用十进制数显示出来。可以用液晶显示屏或数码管来显示,但是考虑到本钱问题本实验的器件选用常用的共阴极半导体数码管。LED数码管是目前最常用的数字显示器,本实验采用4位七段共阴极数码管,它的内部电路及图形符号如图3.2.4所示。当有高电平驱动时,相应的笔段会发光。一个LED数码管可用来显示一位0-9十进制数和一个小数点。LED数码管要显示BCD码表示的十进制数字需要有一个专门的译码器,该译码器不但要完成译码功能,还要有相当的驱动能力。单片机通过P0口向锁存器74HC573发出数据来控制数码管段选,并通过P2口向译码器74HC138发出信号来控制数码管位选。图3.2.5为显示电路。图3.2.4LED数码管图3.2.5显示电路共阴数码管使用条件有以下三点:1.数码管每段以及小数点上都加上限流电阻。2.使用电压段根据发光颜色决定;小数点那么根据发光颜色决定。3.使用电流,在静态时总电流为80mA〔每段10mA〕;动态时平均电流为4-5mA峰值电流100mA。上面是七段数码管引脚图,其中共阳极数码管引脚图和共阴极的是一样的。共阳数码管使用考前须知说明有以下三点:1、数码管外表不要用手触摸,不要用手去弄引角。2、焊接温度:260度;焊接时间:5S。3、外表有保护膜的产品,可以在使用前撕下来。DS18B20温度传感器与单片机的接口电路DS18B20可以采用两种方式供电,一种是采用外部电源供电方式,单点温度监控如图3.3.1,DS18B20的1脚接地,2脚作为信号线,3脚接电源,外部电源供电方式是DS18B20最正确的工作方式,工作稳定可靠,坑干扰能力强,而且电路也比拟简单,可以开发出稳定可靠的多点温度监控系统,如图3.3.2。另一种是寄生电源供电方式,如图3.3.3所示单片机端口接单线总线,为保证在有效的DS18B20时钟周期内提供足够的电流,可用一个MOSFET管来完成对总线的上拉。当DS18B20处于写存储器操作和温度A/D转换操作时,总线上必须有强的上拉,上拉开启时间最大为10us。采用寄生电源供电方式时VDD端接地。由于单线制只有一根线,因此发送接口必须是三态的。图3.3.1DS18B20单点测温度电路原理图图3.3.2DS18B20多点测温度电路原理图图3.3.3寄生电源强上拉供电方式电路图本实验设计是基于单片机多点温度采集设计,即单线挂接2个DS18B20的两路温度数据采集,并且通过两个4位1体的数码管进行温度显示,同时要显示当前通道号。所以我们选着如图3.3.2多点温测电路原理图。系统整体硬件电路系统整体硬件电路包括,传感器数据采集电路,温度显示电路复位电路,晶振电路,驱动电路,主板电路等,如附录二图2所示:系统软件设计主程序主程序的主要功能是负责温度的实时显示、读出并处理DS18B20的测量的当前温度值。主控程序首先进行系统初始化,然后读入DS18B20的测量的当前温度数据,经过温度数据转换后输出相应的温度值,并把第一路显示出来,接着读入第二个DS18B20测量出来的温度数据,经过转换后并显示出来。如下列图4.2所示:初始化初始化开始调用读温度子程序1调用读温度子程序2显示程序图4.1主程序流程图读出温度子程序读出温度子程序的主要功能是首先发DS18B20复位命令,发跳过ROM命令,访问单总线上与该编码相对应的DS18B20,为下一步对该DS18B20的读/写做准备,发读取温度命令,读出RAM中的9字节,在读出时需进行CRC校验,校验有错时不进行温度数据的改写。其程序流程图如图4.3所示:YY发DS18B20复位命令发跳过ROM命令发读取温度命令读取操作,CRC校验9字节完?CRC校验正?确?移入温度暂存器结束NNY图4.3读出温度流程图温度转换命令子程序温度转换命令子程序主要是发温度转换开始命令,当采用12位分辨率时转换时间约为750ms,在本程序设计中采用1s显示程序延时法等待转换的完成。温度转换命令子程序流程图如下列图4.4所示:发DS18B20复位命令发DS18B20复位命令发跳过ROM命令发温度转换开始命令结束图4.4温度转换命令流程图显示数据子程序显示数据子程序主要是对显示缓冲器中的显示数据进行刷新操作,当温度数据移入显示程序后,数码管开始显示第一路标号和温度值,接着扫描第二路的温度数据并显示其的标号和温度值。程序流程图如图4.5:温度数据移入显示温度数据移入显示显示第几路温度显示十位的温度值显示个位的温度值开始结束图4.5显示数据程序流程图调试过程在调试过程中,首先,用万用表来检测实验板上的各个器件的引脚是否接通,是否有虚焊,这个步骤是非常重要的,这关联到整个调试过程是否成功。因为本实验设计的板可以下载程序到单片机上并且用到四位一体的数码管来显示,所以我们设计了一个简单的LED扫描程序来检测数码管工作是否正常和实验板的下载功能是否正常。在用DS18B20传感器前,还需要通过串口读取出它的序列号,然后把它的序列号读取出后编写到主程序上才能用它来工作。在DS18B20测温过程中,温度值是分别在两个四位一体的数码管上显示,由于测量温度的室温环境是一样的,所以刚开始时两个数码管上显示的温度是一样的。为了可以使两个DS18B20所测量的温度值不一样,可以用打火机在某一个DS18B20的附近灼烧使其测量的温度值有所变化,这样可以证实DS18B20是否工作正常也可以证实其是否符合我们的实验设计的要求。总结与体会经过半个多月的学习和努力,基于单片机的多点温度采集设计也终于完成了,也的我们为之快乐一下。通过这次对数字温度计设计与制作,让我了解设计硬件电路,调试程序,各种芯片的用法,如何简化电路等等。也让我了解了关于数字温度计的原理与设计理念,要设计一个电路总要先用仿真,访真成功之后才实际接线的。但是最后的成品却不一定与仿真时完全一样,因为,再实际接线时有着各种各样的条件制约。所以,在设计时应考虑两者的差异,从中找出最适合的设计方法。在这一次的学习中,让我真正意识到自己的知识面还不够广和掌握知识的能力还要不断的提高,在这次的实验设计中我们遇到了很多我们都不懂的问题,而且这些问题对于我们来说在学习单片机过程中所必须要会懂的问题。在以后的学习中,我们要经常多写、多读程序,这样才能提高自己的编程水平。要理论联系实际,把所学的东西用到实际中去,然而单片机又是一门注重实践一门学科,这也是我这次设计中的一点小小的收获吧!致谢感谢学长们和同学们对我这次实验设计制作的帮助和指导。让我学到了很多知识,掌握了许多专业知识,以及让我学到了要把一件事做好做成那么必须要付出很大的努力和要有一颗持之以恒的心。本次毕业论文是在我的同学的悉心指导和帮助下完成的,特别是在甘学长和同学们帮助解决本设计中遇到的许多问题。从他那里我不仅学到了电路设计的相关知识,更重要的是掌握了更多的查询、搜集信息的能力以及对事严谨的工作态度。在他的指教和鼓励中我的硬件设计以及动手能力有了进一步的提高,同时他更教会我工作要一丝不苟,要脚踏实地,要有自己的工作日程的道理,在今后的学习工作中我将铭记甘学长的谆谆教诲,更将以他为典范,不断鼓励自己进步。还有要感谢刘老师的帮助和指导,他严肃的科学态度,严谨的治学精神,精益求精的工作作风,深深地感染和鼓励着我,在此,向刘老师表示诚挚的谢意!从课题的选择到论文相关工作的最终完成,刘老师都始终给予我细心的指导和不懈的支持,在此十分感谢刘老师。同时还有感谢所有的同学,正是有了你们的支持和鼓励,此次毕业设计才会顺利完成。参考文献[3]杨欣.电路设计与仿真—附录一/***************************************************************功能:实现基于AT89C51单片机的多点温度采集 ***************************************************************/#include<reg51.h>#include<intrins.h>#include<stdio.h>#defineucharunsignedchar#defineuintunsignedintsbitDQ=P1^7;ucharcodetable[10]={0xFC,0x60,0xDA,0xF2,0x66,0xB6,0xBE,0xE0,0xFE,0xF6}; //数码管共阴uchards18b20_num1[8]={0x94,0x00,0x00,0x03,0x4b,0x9e,0xfc,0x28}; //选取第一路DS18B20的序列号uchards18b20_num2[8]={0x8f,0x00,0x00,0x03,0x06,0x94,0x48,0x28}; //选取第二路DS18B20的序列号ucharbuffer[]={0,0,0};uchartemp_value1=0;uchartemp_value=0;uchartemp[]={0,0,0};/***************************************************************功能:延时 ***************************************************************/voiddelay(unsignedinttime){ unsignedinti,j; for(i=0;i<time;i++) for(j=0;j<135;j++);}/***************************************************************功能:延时600us ***************************************************************/voiddelay600us(void){ uchari; for(i=0;i<255;i++);}/***************************************************************功能:延时60us ***************************************************************/voiddelay60us(void){ uchari; for(i=0;i<20;i++);}/***************************************************************功能:延时240us ***************************************************************/voiddelay240us(void){ uchari; for(i=0;i<80;i++);}/***************************************************************功能:复位脉冲 ***************************************************************/bitresetpulse(void){ DQ=0; delay600us(); //延时500us DQ=1; delay60us(); //延时60us return(DQ); }/***************************************************************功能:ds18b20的初始化 ***************************************************************/voidds18b20_init(void){ while(1) { if(!resetpulse()) //收到ds18b20的应答信号 { //printf("resetsuccessful!"); //delay240us(); //延时240us DQ=1; delay600us(); //延时240us break; } else resetpulse(); //否那么再发复位信号 }}/***************************************************************功能:向ds18b20写命令 ***************************************************************/voidds18b20_writecommand(ucharcommand){ uchari; for(i=0;i<8;i++) { if((command&0x01)==0) { DQ=0; //写0 delay60us(); //延时60us _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); DQ=1; _nop_(); _nop_(); } else //写1 { DQ=0; _nop_(); _nop_(); //延时2us DQ=1; delay60us(); //延时60us _nop_(); _nop_(); _nop_(); _nop_(); } command=_cror_(command,1); //右移1位 }}/***************************************************************功能:序列号匹配子程序 ***************************************************************/bitmatch_rom(uchar*rom){ uchari; ds18b20_init(); ds18b20_writecommand(0x55); for(i=8;i>0;i--) { ds18b20_writecommand(*(rom+i-1));// rom++; } return1;}/***************************************************************功能:读ds18b20数据 ****参数:返回读到的数据 ***************************************************************/uchards18b20_readdata(void){ ucharreaddata; uchari; for(i=0;i<8;i++) { DQ=0; _nop_(); _nop_(); _nop_(); DQ=1; //释放总线 //delay15us(); 注意不需要 if(DQ==0) //如果读到的是0 { readdata=readdata&0x7f; delay60us(); } else //读到的是1 { readdata=readdata|0x80; delay60us(); } if(i<7)readdata=_cror_(readdata,1); } returnreaddata;}/***************************************************************功能:显示第一路温度值 ***************************************************************/v
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 区块链技术在碎片化市场中的作用与影响-洞察阐释
- 基于非整倍性的复杂网络分析-洞察阐释
- 3D界面布局与用户体验-洞察阐释
- 精准喷水技术与水资源优化配置-洞察阐释
- 航空可持续发展与投资融资策略-洞察阐释
- 角膜表面改性材料研究-洞察阐释
- 增强现实动画设计-洞察阐释
- 保险科技与保险营销策略-洞察阐释
- 绿色物流战略与散货运输可持续性探讨-洞察阐释
- 知识管理中的隐私保护与平衡-洞察阐释
- 慈善专项捐赠协议书
- 2025年高考数学二轮热点题型归纳与演练(上海专用)专题06数列(九大题型)(原卷版+解析)
- 2025中国铁路南宁局集团有限公司招聘高校毕业生32人四(本科及以上学历)笔试参考题库附带答案详解
- 国开政治经济学形考任务1-4试题及答案
- 第1章 整式的乘法(单元测试)(原卷)2024-2025学年湘教版七年级数学下册
- 《高中数学知识竞赛》课件
- 2025-2030年中国城市燃气行业发展分析及发展战略研究报告
- 人民医院关于印发对口支援工作管理办法(暂行)
- 施工现场环境保护措施试题及答案
- 2025年下半年浙江嘉兴市水务投资集团限公司招聘92人易考易错模拟试题(共500题)试卷后附参考答案
- 2025我国生产性服务业较快发展背后仍需关注三大问题
评论
0/150
提交评论