基于单片机的智能温度控制系统毕业设计_第1页
基于单片机的智能温度控制系统毕业设计_第2页
基于单片机的智能温度控制系统毕业设计_第3页
基于单片机的智能温度控制系统毕业设计_第4页
基于单片机的智能温度控制系统毕业设计_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

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

文档简介

1绪论在工业生产中,电流、电压、温度、压力、流量、流速和开关量都是常用的主要被控参数。其中,温度控制也越来越重要。在工业生产的很多领域中,人们都需要对各类加热炉、热处理炉、反响炉和锅炉中的温度进行检测和控制。采用单片机对温度进行控制不仅具有控制方便、简单和灵活性大等优点,而且可以大幅度提高被控温度的技术指标,从而能够大大的提高产品的质量和数量。因此,单片机对温度的控制问题是一个工业生产中经常会遇到的控制问题。1.1温度控制器的开展状况温度是表征物体冷热程度的物理量,是工业生产和日常生活中经常测量的物理量,也是人类研究最早测量方法最多的物理量之一。因而温度检测仪应用领域之广,使用数量之多,一直高居各类测量仪之首。近百年来,温度传感器的开展大致经历了以下三个阶段:传统的分立式温度传感器〔含敏感元件〕;模拟集成温度传感器/控制器;智能温度传感器〔即数字温度传感器〕。a)分立式温度传感器传统的热电偶、热电阻、热敏电阻及半导体温度传感器,均属于分立式温度传感器,传感器本身就是一个完整的、独立的感温元件。此类传感器通常要配温度变送器,以获得标准的模拟量〔电压或电流〕输出信号。b)模拟集成温度传感器集成传感器是采用硅半导体集成工艺而制成的,因此亦称硅传感器或单片集成传感器。可完成温度测量及模拟信号输出功能的专用IC,它属于一种简单的集成温度传感器,适合远距离测量、控温,不需要进行非线性校准,典型产品有AD590、AD592等。c)模拟集成温度控制器模拟集成温度控制器主要包括温控开关、可编程温度控制器,典型产品有LM56、AD22105和MAX6509。d)智能温度传感器智能温度传感器〔亦称数字温度传感器〕是在20世纪90年代中期问世的。智能温度传感器是微电子技术、计算机技术和自动测试技术的结晶,它也是集成温度传感器领域中最具活力和开展前途的一种新产品。目前,国际上许多著名的集成电路生产厂已经开发出上百种智能温度传感器产品。1.2课题研究必要性随着电子技术和微型计算机的迅速开展,微机测量和控制技术得到了迅速的开展和广泛的应用。单片机具有处理能强、运行速度快、功耗低等优点,应用在温度测量与控制方面,控制简单方便,测量范围广,精度较高。温度是工业生产中常见并且十分重要的参数之一,特别是在冶金、石油、食品、印染等工厂中。由于不同的工艺所需的温度变化曲线各不相同,而现有的温度控制仪大多只能进行恒温控制。因此许多生产过程中加热、保温、降温以及自然降温等操作都是由人工操作的,这就不可防止地产生各种误差,进而影响产品质量,个别采用的温度自动控制系统由于造价较高、操作复杂等原因又限制了在中小企业的应用,因此研究和开发一种实用的温度控制系统成为当务之急。在工业生产过程中需要实时测量控制温度,尤其是在高危生产行业,如花炮生产,煤矿行业等。但依靠人工检测控制既浪费时间,物力,人力,又有一定的危险性,且数据也不准确,因此研究自动的温度测量控制方法和装置具有重要的意义。1.3现代控制系统相对传统控制系统的优势传统的控制系统主要由测量电路和控制电路组成,所具备的功能较少,也比拟弱,而且结构很复杂。计算机技术的迅速开展,使得传统的控制系统发生了根本性的变革,即采用微机作为控制系统的核心,代替传统的控制系统的传统的电子线路,从而成为新一代的微机化控制系统。将微机技术引入控制系统中,不仅可以解决传统控制系统不能解决的问题,而且还能简化电路、增加或增强功能、提高控制精度和可靠性,显著增强测控系统的自动化、智能化程度,而且可以缩短系统研制周期、降低本钱、易于升级和维护。因此,现代控制系统设计,特别是高精度、高性能的控制系统,目前已很少不采用计算机技术的了。计算机技术的引入,可以为控制系统带来以下一些新特点和新功能:a)自动调零功能在每次采样前对传感器的输出值自动清零,从而大大降低因控制系统漂移变化造成的误差。b)数字滤波功能利用已算机软件对测量数据进行处理,可以抑制各种干扰和脉冲信号。c)数据处理功能利用计算机技术可以实现传统仪器无法实现的各种复杂的处理和运算功能。d)复杂控制规律利用计算机技术不仅可以实现经典的PID控制,还可以实现各种复杂的控制规律,例如,自适应控制、模糊控制等。e)自我诊断功能采用计算机技术后,可对控制系统进行监测,一旦发现故障那么立即进行报警,并可显示故障部位或可能的故障原因,对排除故障的方法进行提示。微机化的控制系统是以微机为核心、测量控制一体化的系统,这种系统对被控对象的控制是依据对被控对象的测量结果断定的。1.4课题设计特点和应用领域课题采用的是单总线数字温度传感器DS18B20,可直接将温度转换值以16位数字码的方式串行输出:将温度转化为数字编码只需1秒左右。而且它具有独特单线接口方式,即与微处理器接口时仅需占用1个I/O口;支持多节点;测温时无需任何外部元件,可以通过数据线直接供电,具有超低功耗工作方式。测温范围为—55℃~+125℃,测温度精度可到达0.0625系统可以应用于温度要求在—55℃~+125.9℃之间的任何领域。比方:铁路,粮库,水果,蔬菜存储仓库的温度控制,以及多路温度测控仪,各种养殖场的温度控制监测。由于本系统的测温精度可达1.5智能温度控制器的课题主要内容课题的任务是应用单片机及DS18B20单总线器件设计一套温度检测系统,实现对温度的测量及显示,并通过按键人为设定温度上下限!而且在温度超上限价或下限量有控制功能,系统以高性能/价格比的89S52为核心,完成对数据的分析、处理、显示、温度上下限设置、超限自动控制,采用单线数字温度传感器DS18B20来完成对温度的采样和转换。由于课题是完成对温度的实时监测,因而系统的核心局部就是如何实现温度采集。系统采用的是美国DALLAS公司继DS1820之后推出的一种改良型智能温度传感器DS18B20来完成这一任务的。DS18B20与传统的热敏电阻相比,它能够直接读出被测温度并且可根据实际要去通过简单的编程实现9-12位的数字值读数方式,可分别在93.75ms和750ms内完成9位和12位的数字量,并且从DS18B20读出的信息或写入DS18B20的信息仅从一根口线,温度变换功率来源于数据总线,总线本身可以为所接的DS180B20供电,而无需外电源。DS18B20需在严格的时序控制下才能进行正常操作。对DS18B20的操作包括初始化操作、读/写时间片。总线上的所有操作均从初始化开始,初始化或对RAM、ROM操作。主CPU通过“时间片〞来写入或读出DS18B20中的数据。概括说,主CPU经过单线接口访问DS18B20的工作流程为:对DS18B20进行初始化→ROM操作命令→存储器〔包括RAM和EERAM〕操作命令→数据处理。主CPU对ROM操作完毕,即发出控制操作命令,使DS18B20完成温度测量并将测量结果存入高速暂存器中,然后单片机可读出此温度转换值,并随之进行数据处理、送显示等操作。2智能温度控制系统根本构成及工作原理2.1系统的硬件构成课题设计的硬件局部由89S52单片机、DS18B20、74LS14、74LS273锁存器以及假设干电容、7个发光二极管、4只数码管、5个按键、11.0592MHZ晶振组成。〔结构如图2.1〕温度传感器温度传感器89S52显示器与接口控制电路量限设定与控制键盘与接口控制电路图2.1系统设计结构图以下对各组成部件功能进行简单介绍:89S52单片机用于温度的采集,数据处理,存储温度上下限和超温控制。DS18B20是单总线数字温度传感器,输出方式为串行单线输出,主要作用是把温度值以数字形式输出和存储转换精度控制字。第三章将作出详细介绍,此处不做过多赘述。74LS02或非门,用于选择锁存器〔与写信号或非〕。74LS14施密特触发器,用于键盘消抖。74LS273锁存器。用锁存显示位、段码以及指示信号。按键用于输入和查看温度上下限,使单片机复位,每隔2小时发送0.5秒的启动电机的正脉冲。晶振是为单片机提供工作脉冲。数码管用于显示温度值。发光二极管用于上下限溢出报警,温度超限报警及控制,设置上/下限指示,正常工作指示。各功能对应的指示灯设置如表2.1:表2.1指示灯设置功能第几灯点亮显示温度第1灯0x02显示下限温度1、20x03设下限温度标志位2、70x41设下限温度十位2、60x21设下限温度个位2、50x11设下限温度十分位2、40x09显示上限温度1、30x06设上限温度标志位3、70x44设上限温度十位3、60x24设上限温度个位3、50x14设上限温度十分位3、40x0C低于下限温度1、2、4、5、6、70x7B高于上限温度1、3、4、5、6、70x7E2.2系统的软件构成课题原方案用汇编语言完成。后来决定使用C语音编写程序,系统的软件由温度数据采集、数据处理、温度显示及按键处理等局部组成。89S52完成的功能主要是数据处理、数据分析、控制计算、进制转换、数据显示、按键处理以及电机控制等。温度采样和转换局部由DS18B20来完成。系统的工作原理首先,由温度传感器DS18B20对温度进行采样和转换,将测量结果送给单片机,单片机将输入的温度值进行数据处理,并将温度值与设定的温度值上下限进行比拟。根据比拟结果进行相应的处理。假设温度超限那么报警指示灯亮,以便进行及时处理。系统原理框图如图2.2所示:DS18B20DS18B2089S52显示器指示灯段锁存位锁存锁存器图2.2系统原理图3智能温度控制系统硬件设计本章是论文核心局部,主要介绍基于单片机的温度控制系统硬件总体设计,按照设计方案,整个温控系统硬件主要包括以下单元:按键输入,温度采集、处理,温度超限报警,定时发出脉冲等。温度控制的核心为温度的采集和处理,系统选用特别适用于编程及数据处理的MS-51单片机89S52,并通过89S52实现对其他各组成局部的编程控制。下面是核心原件的介绍:3.1数字温度传感器DS18B20详述DS18B20简介DS18B20是美国DALLAS半导体公司生产的可组网数字式温度传感器,在其内部使用了在板〔ON-B0ARD〕专利技术。全部传感元件及转换电路集成在形如一只三极管的集成电路内。与其它温度传感器相比,DS18B20具有以下特性:a)独特的单线接口方式:DS18B20与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。

b)在使用中不需要任何外围元件。c)可用数据线供电,电压范围:+3.0V~+5.5V。

d)测温范围:-55℃~+125℃。固有测温分辨率为0.1℃。

e)通过编程可实现9~12位的数字读数方式。

f〕用户可自设定非易失性的报警上下限值。

g外形如图3.1所示。其体积只有DS1820的一半,引脚定义相同。a)DQ:数据输入输出引脚b)VDD:可接电源,也可接地。因为每只DS18B20都可以设置成两种供电方式。采用数据总线方式时VDD接地,可以节省一根传输线,但完成温度测量的时间较长;采用外部供电方式那么接5V,多用一根导线,但测量速度较快。图3.1DS18B20外观DS18B20的内部结构它主要由4局部组成:64位ROM、温度传感器、非易失性的温度报警触发器TH和TL、高速暂存器。64位ROM用于存储DS18B20序列号,其首字节固定为28H,表示产品类型码,后6个字节是每个器件的编码,最后1个字节是CRC校验码。温度报警触发器TH和TL存储用户通过软件写入的报警上下极限。高速暂存器由9个字节组成,其中有2个字节RAM单元用来存放温度值,前1个字节为温度值的补码低8位,后1个字节为字符号位和温度值的补码高3位。其内部结构框图如图3.2所示:电电源检测64位ROM和单线接口8位CRC生成器存储器和控制器配置存放器高温触发器TH高速缓存存储器温度灵敏元件低温触发器TL图3.2DS18B20内部结构框图DS18B20的测温原理DS18B20测量温度采用了特有的温度测量技术,其温度测量电路如图3.3所示。预置预置斜率累加器计数器1计数器2=0=0低温度系数振荡高温度系数振荡加1停止比拟预置温度存放器设备/管理LSB图3.3DS18B20测温结构图图3.3中低温度系数晶振的振荡频率受温度的影响很小,用于产生固定频率的脉冲信号送给减法计数器1,高温度系数晶振随温度变化其震荡频率明显改变,所产生的信号作为减法计数器2的脉冲输入,图中还隐含着计数门,当计数门翻开时,DS18B20就对低温度系数振荡器产生的时钟脉冲后进行计数,进而完成温度测量。计数门的开启时间由高温度系数振荡器来决定,每次测量前,首先将-55℃所对应的基数分别置入减法计数器1和温度存放器中,减法计数器1和温度存放器被预置在-55℃所对应的一个基数值。减法计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当减法计数器1的预置值减到0时温度存放器的值将加1,减法计数器1的预置将重新被装入,减法计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到减法计数器2计数到0时,停止温度存放器值的累加,此时温度存放器中的数值即为所测温度。图3.3DS18B20的转换精度控制字及分辨率设置设置转换精度控制字格式如表3.1所示表3.1转换精度控制字格式MSBLSB0R1R011111分辨率设置如表3.2所示:表3.2分辨率设置R1R0分辨率〔位〕最大转换时间〔ms〕00993.750110187.510113751112750由表可见,设定的分辨率越高,所需要的温度数据转换时间越长。因此,在实际应用中需要在分辨率与转换时间二者之间权衡考虑。在芯片出厂时R1和R0被配置为“1”DS18B20的温度数字关系用12位精度测出的温度值用16位二进制补码形式表示,如表3.3所示:表3.3DS18B20存储器映像图232221202-12-22-32-4MSBLSBSSSSS262524MSBLSB图中S为符号位,S=1,温度为负值;S=0,温度为正值。DS18B20用12位精度测出的数字量〔用16位二进制补码形式表示〕如表3.4所示:表3.4局部温度与对应的数字温度输出之间的对应关系温度〔℃〕数字输出〔二进制〕数字输出〔十六进制〕+125000001111101000007D0+8500000101010100000550+25.062500000001100100010191+10.125000000001010001000A2+0.500000000000010000008000000000000000000000-0.51111111111111000FFF8-10.1251111111101011110FF5E-25.06251111111001101111FE6F-551111110010010000FC90DS18B20的内存结构图DS18B20的存储器包括SRAM存储器和非易失的EEPROM存储器,EEPROM用于存放触发报警上限值存储器〔TH〕和触发报警下限存储器〔TL〕。当DS18B20在使用过程中并未使用报警功能时,TH和TL可作为普通用途的存储器单元使用。DS18B20的存储组织结构如表3.5所示。表3.5DS18B20内部存储器组织结构图便笺存储器〔期间上电默认值〕EEPROM存储器0温度数字量低位字节〔50H〕无1温度数字量高位字节〔05H〕2TH/用户存放器字节1TH/用户存放器字节13TL/用户存放器字节2TL/用户存放器字节24配置存放器配置存放器5保存〔FFH〕无6保存〔0CH〕7保存〔10H〕8CRCDS18B20的操作命令DS18B20是一种可编程的数字温度传感器,它的工作是靠计算机给它发控制命令进行的,DS18B20和计算机在工作过程中的协议主要有:初始化、ROM存储器操作命令、RAM存储器操作命令。分别说明如下:a)初始化单总线上的所有处理均从初始化开始。初始化过程是主机通过向作为从机DS18B20芯片发一个有时间宽度要求的初始化脉冲实现的。初始化完成后,才可进行读写操作。b)对ROM的5种操作命令一旦主CPU检测到附属器件的存在,就可以发出ROM操作命令。所有ROM操作命令均为8位〔二进制〕字长。主CPU可以发出ROM操作命令有以下五种:1)读ROM命令〔READROM,约定代码33H〕。该命令允许主CPU读取DS18B20中的8位产品系列编码,48位序列号以及8位的CRC。该命令适用于总线上接一片DS18B20的情况。当总线上挂有多片DS18B20时禁止使用该命令,否那么多片DS18B20同时发送数据,必然会导致互相冲突。2)符合ROM命令〔MATCHROM,约定代码55H〕。主CPU在发出“符合〞ROM命令后,接着发出64位的ROM数据序列,从而使主CPU实现对单线总线上特定DS18B20的寻址。只有与ROM序列严格相符的DS18B20,才能对后续的存储器操作命令作出响应。所有与64位ROM序列不相符的DS18B20将等待复位脉冲。该命令对于总线上挂有单个、或多个器件的情况均适用。3)搜索ROM命令〔SEARCHROM,约定代码F0H〕。搜索ROM命令允许主CPU使用一种“消除法〞〔ELMINATION〕来识别总线上所有DS18B20的64位ROM编码,即完成整个系统的初始化工作。为以后对各个单线器件作好准备。该局部也是对DS18B20芯片进行软件编程的重点和难点。4)跳过ROM命令〔SKIPROM,约定代码为CCH〕。在单线总线系统中,该命令使主CPU不必提供64位ROM编码就能访问各片DS18B20。该命令主要用于向所有的DS18B20同时发出温度转换命令,从而大大节省访问各个器件的时间。但有一点必须注意,主CPU如果在发出SKIPROM命令之后,又发出了读存储器命令,那么由于多片DS18B20同时向总线上提供数据且在漏极开路状态下产生“线与〞的结果,此时读出的数据已经没有实际意义了。5)报警搜索命令〔ALARAMSEARCH,有约定代码ECH〕。该命令的流程与搜索ROM命令的流程相同。仅在最后一次温度测量出现报警的情况下。DS18B20才对该命令做出响应。报警的条件定义为温度超过上限〔T>TH〕,或者低于下限〔T<TL〕。上电时,DS18B20预置报警条件为设定状态,直到首次温度测量结果既不超过上限TH,也不低于TL时,报警信号才被解除。c)存储器操作命令存储器操作命令共有6条,具体如下:1)温度转换命令〔CONVERTT〕{44H}。令DS18B20进行温度转换。如果住CPU在该命令之后为读时序,如果DS18B20正忙于进行温度转换,即读得“0”;当温度转换完成时,DS18B20那么返回“12)读暂存存储器〔READSCRATCHPAD〕{BEH}。该命令为读暂存存储器9个字节的内容。从字节0开始读,直至读到字节8。主CPU可以在读暂存存储器期间发出一个复位脉冲来终止读操作。3)写暂存存储器〔WRITESCRATCHPAD〕{4EH}。主CPU送给DS18B20的2个字节数据就分别写入触发存放器TH和触发存放器TL中,顺序是先写TH,到写TL。主CPU也可以在写暂存存储器期间发出一个复位脉冲来终止写操作。4)复制暂存存储器{COPYSCRATCHPAD}{48H}。该命令把触发存放器中的TH、TL字节分别复制到EERAM的TH、TL的字节上。假设主CPU发出命令后又进行读操作,只要DS18B20正忙于复制,主CPU就读“0”;当复制工作完成后,DS18B20又返回“15)重新调出EERAM〔RECALLEERAM〕{B8H}。该命令是把存储器在E2RAM温度触发器TH、TL内的数据重新调入暂存器的TH、TL字节。每次DS18B20上电时也自动进行这种操作,因此,只要器件接通电源,暂存存储器的TH、TL中已经有效的数据供使用。假设主CPU在发出该命令之后又进行读操作,只要DS18B20正忙于进行调出,主CPU就读得“0”〔表示“忙碌〞〕;完成调出操作后DS18B20既返回“1”〔表示6)读电源〔READPOWERSUPPLY〕{B4H}。此项命令发送给DS18B20之后,对主CPU发出的每条读命令,DS18B20都向主CPU提供电源方式信号“0”〔表示由寄生电源供电〕或者“1DS18B20的工作时序主机使用时间隙来读写DS18B20的数据位和写命令字的位。a)初始化主机总线T0时刻发送复位脉冲〔最短为480us的低电平信号〕,接着在T1时刻释放总线并进入接受状态,DS18B20再检验到总线的上升沿之后,等待15us~60us,接着在T2时刻发出存在脉冲〔60us~240us〕,如图3.4所示。T0T0t4480-960us15-60us60-240us480usT2T1T3T2T1T3图3.4DS18B20初始化时序图b)写时间隙当主机总线在T0时刻从高拉至低电平时,就产生写时间隙,如图3-5〔a,b〕,从T0时刻开始15us之内应将所需写的位送到总线上,DS18B20在T0后15us~60us间对总线采样。假设为低电平,那么写入的是0,如图3.5〔a〕;假设为高电平,那么写入的位是1,见图3.5〔b〕。连续写2位时间间隙应大于1us。T1T1T0>1us>60us15us15-45us图3.5〔a〕写0时序15us15usT1T015-45us>60us>1us图3.5〔b〕写1时序c)读时间隙如图3.6,总线T0时刻从高拉至低电平时,总线只需保持低电平1us。之后在T1时刻将总线拉高,产生读时间隙,读时间隙在T1时刻和T2时刻前有效。T2距T0为15us,也就是说,T2时刻前主机必需完成读位,并在T0后的60us~120us内释放总线。T1T0T1T0T3T2>60us15us15us图3.6读时序DS18B20与单片机的硬件接口因为DS18B20是单线接口器件,因此它与单片机硬件接口十分简单,只需占用单片机的一个双向的I/O口,其接口电路见图3.7。在此采用外部电源供电,占用89S52的P1.0口。VDDVDD4.7K89S52P1.0DS18B20P1.0+5VGNDDQ外接+5V图3.7单片机接口电路DS18B20使用中考前须知

DS18B20虽然具有测温系统简单、测温精度高、连接方便、占用口线少等优点,但在实际应用中也应注意以下几方面的问题:a)较小的硬件开销需要相对复杂的软件进行补偿,由于DS1820与微处理器间采用串行数据传送,因此,在对DS1820进行读写编程时,必须严格的保证读写时序,否那么将无法读取测温结果。在使用PL/M、C等高级语言进行系统程序设计时,对DS1820操作局部最好采用汇编语言实现。b)在DS1820的有关资料中均未提及单总线上所挂DS1820数量问题,容易使人误认为可以挂任意多个DS1820,在实际应用中并非如此。当单总线上所挂DS1820超过8个时,就需要解决微处理器的总线驱动问题,这一点在进行多点测温系统设计时要加以注意。c)连接DS1820的总线电缆是有长度限制的。试验中,当采用普通信号电缆传输长度超过50m时,读取的测温数据将发生错误。当将总线电缆改为双绞线带屏蔽电缆时,正常通讯距离可达150m,当采用每米绞合次数更多的双绞线带屏蔽电缆时,正常通讯距离进一步加长。这种情况主要是由总线分布电容使信号波形产生畸变造成的。因此,在用DS1820进行长距离测温系统设计时要充分考虑总线分布电容和阻抗匹配问题。d)在DS1820测温程序设计中,向DS1820发出温度转换命令后,程序总要等待DS1820的返回信号,一旦某个DS1820接触不好或断线,当程序读该DS1820时,将没有返回信号,程序进入死循环。这一点在进行DS1820硬件连接和软件设计时也要给予一定的重视。3.2MCS-51系列单片机简介MCS-51系列单片机MCS-51系列单片机研制于1980年,由Intel公司所开发,其结构是8048的延伸,改良了8048的缺点,其ROM、RAM都可扩充至64KB,也增添了如乘〔MUL〕、除〔DIV〕、减〔SUBB〕、比拟〔CJNE〕、栈入〔PUSH〕、栈出〔POP〕、16位数据指针、布尔代数运算等指令,以及串行通信能力和5个中断源。8052有6个中断源。MCS-51系列单片机特点如下:(1)专为控制应用所设计的八位CPU;(2)具有布尔代数的运算能力;(3)32条双项且可被独立寻址的I\O口;(4)芯片内有128字节可供存储数据的RAM〔8052:256字节〕;(5)内部有两组16位定时器〔8052有3个〕;(6)具有全多工传输信号UART;(7)5个中断源,且具有两级〔高/低〕优先权顺序的中断结构;(8)芯片内有4KB〔8KB/8052〕的程序存储器〔ROM〕;(9)芯片内有时钟〔CLOCK〕振荡器电路;(10)程序存储器可扩展至64KB〔ROM〕;(11)数据存储器可扩展至64KB〔RAM〕。MCS-51系列单片机引脚介绍a)时钟电路引脚MCS-51单片机的时钟可以由内部方式和外部方式产生,XTAL1〔19脚〕和XTAL2〔18脚〕即为单片机的两个时钟引脚。1)内时钟引脚8051单片机片内有振荡电路,只需在XTAL1和XTAL2间外接石英晶体和电容组成的并联振荡电路〔晶振器〕,晶体可以在固有频率1.2~12MHz的晶振器之间任选晶体,电容可以在20~60pF的电容之间任选,通常选择30pF的瓷片电容。在单片机控制的数字显示温度计电路设计的这个局部,就是采用内时钟引脚,其中晶振器为6MHz,两个电容均为30pF。2)外时钟方式,XTAL1接地,XTAL2接外部振荡器。由于XTAL2端的电平不是TTL电平,故接一个上拉电阻。外部振荡器的频率应低于12MHz。b)制信号引脚,包括RST/Vpd、ALE/PROG非、PSEN非、EA非/Vpp。下面分别对其进行介绍:1)RST/Vpd〔9脚〕:复位信号/备用电源引脚当输入的复位信号延续2个机器周期以上,高电平即为有效,用以完成单片机的复位操作。复位后影响片内特殊功能存放器的状态,但不影响片内RAM状态。同一引脚的Vpd是备用电源输入端〔Vpd接+5V备用电源〕。在Vcc断电时,为保证RAM中的信息不丧失,可使此引脚完成掉电保护功能。2)ALE/PROG非〔30脚〕;地址锁存允许信号/编程脉冲输入端在系统扩展时,ALE用于控制把P0口输出的低8位地址送入锁存器锁存起来,以实现低位地址和数据的分时传送。此外由于ALE是以1/6晶振频率的固定频率输出的正脉冲,因此可作为外边时钟或外部定时脉冲使用。对片内带有4kbyteEPROM的8751编写固化程序时,PROG非作为编程脉冲输入端。3)PSEN非〔29引脚〕:外边程序存储器读选通信号为低电平有效,8051在访问片外程序存储器时,此引脚端输出负脉冲作为读片外程序存储器的选通信号,以实现外部ROM单元的读操作。要检查8051上电平后CPU能否正常到程序存储器中读取指令码,可以用示波器观察引脚PSEN非有无脉冲输出,假设有说明正常。4)EA非/Vpp〔31脚〕:内部和外部程序存储器选择信号当引脚接高电平时,CPU只访问片内4kbyte的EPROM/ROM,执行内部程序存储器中的指令,但在程序计数器计数超过OFFFH时〔即地址大于4kbyte时〕,将自动转向执行片外大于4kbyte程序存储器内的程序。假设EA非引脚接低电平时,CPU只访问外部程序存储器,而不管片内是否有程序存储器。对于8031单片机〔片内无ROM〕需外扩EPROM,故必须将EA非引脚接地。在对EPROM编写固化程序时,需对此引脚施加21V的编程电压。c)I/O〔输入/输出〕接口引脚1)并行I/O接口的特点MCS-51有4个8位并行I/O接口P0~P3,他们都是双向端口,可以进行输入或者输出操作,每个口都有口锁存器和口驱动器两局部组成。此外,它还有一个全双工串行通信口。这4个端口为MCS-51与外围器件或外围设备进行信息(数据、地址、控制信号)交换提供了多功能的输入/输出通道,也为MCS-51扩展外部功能、构成应用系统提供了必要的条件。它们的特点如下:a、4个并行I/O接口都是双向的。P0口为漏极开路,P1、P2、P3口均具有内部上拉电阻,它们有时被称为准双向口。b、4个并行口的32条I/O接口线都可以独立地用于输入或输出操作。c、当4个并行口的I/O接口线有作输入操作时,必须对该口的锁存器进行写1操作,以保证从I/O接口线输入数据的正确性,这也是4个并行接口有时被称为“准〞双向的含义。2)I/O接口电路功能汇总MCS-51单片机内部属单总线结构,因此使系统在结构上增加了灵活性。通过总线,用户可根据应用需要进行多功能的系统扩展,构成用户的实际应用系统。MCS-51系列中的8031单片机,因其内部在结构上无程序存储器,所以它的应用系统必定为一个扩展的系统。因此,MCS-51的4个并行I/O接口中的P0、P1、P2、P3口根本上都具备有这两项功能:a、P0口:P0口是一个多功能口除可以作为通用的输入/输出口外,还具备用于系统扩展的第二功能。在MCS-51的进行系统扩展时,它作为地址/数据总线口。通过外接地址锁存器,MCS-51的内部单总线可从P0口被扩展成8位的数据总线和16位地址总线的低8位。在实际应用中,P0口先送出外部存储器16位地址中的低8位至地址锁存器锁存,然后再由P0口进行8位数据的输入或输出;b、P1口:P1口作为通用I/O接口,它的每一位都可以别编程为通用I/O接口线;c、P2口:P2口也是一个多功能口,与P0口相似,它除可被用作I/O接口外,在进行系统扩展时,还可以输16位地址总线中的高8位,和P0口共同构成16位的地址总线。当然,在P0口和P2口用作地址/数据总线时,它们都不能再作为通用I/O接口;d、P3口:P3口也是一个多功能口,除可以作为通用I/O接口外,还具有多种控制功能,为通用I/O接口时和MCS-51其他具有控制功能的输入/输出引线在一起,共同形成MCS-51的控制总线。P3口在作为第二功能〔控制功能〕使用时,它的每一位功能定义如表3.8所示。表3.8P3口各引脚定义口线第二功能信号名称P3.0RXD串行数据接收P3.1TXD串行数据发送P3.2INT0外部数据0申请P3.3INT1外部数据1申请P3.4T0定时器/计数器0输入P3.5T1定时器/计数器1输入P3.6WR外部RAM写选通P3.7RD外部RAM读选通一个信号引脚,既是第一功能又是第二功能,在使用时也不会引起混乱和造成错误,理由如下:a、对于各种型号的芯片,其功能的第一功能信号是相同的,所不同的只在引脚的的第二功能信号上;b、对于9、30和31各个引脚,由于第一功能信号与第二功能信号是单片机在不同工作方式下的信号,因此不会发生使用上的矛盾;c、P3口线的情况却有所不同,它的第二功能信号都是单片机的重要控制信号。因此在实际使用时,总是先按需要优先选用它的二功能,剩下不用的才作为口线使用。d)MCS-51单片机的复位方式和复位电路1)复位操作:复位是单片机的初始化操作,其主要功能是把PC初始化为0000H,使单片机从0000H单元开始执行程序。除了进入系统的正常初始化之外,当由于程序运行出错或者操作错误使系统处于死锁状态时,为摆脱困境,也需按复位键以重新启动。a、复位操作还对单片机的个别引脚信号有影响,例如把ALE和PSEN非信号变为无效状态,即ALE=0,PSEN=1;b、复位信号及其产生RST引脚是复位信号的输入端,复位信号是高电平有效,其有效时间持续24个振荡脉冲周期〔即2个机器周期〕以上,假设使用频率为6MHz的晶振,那么复位信号持续时间应超过4us才能完成复位操作。整个复位电路包括芯片内外两局部。外部电路产生的复位信号〔RST〕送施密特触发器,再由片内复位电路在每个机器周期的S5时刻对施密特触发器的输出进行采样。然后才得到内部复位操作所需要的信号。3.3显示温度值的LED显示器接口简介LED显示器是单片机应用系统中常用的廉价输出设备。它是由假设干个发光二极管组成的,当发光二极管导通时,相应一个笔画划发光,控制某段发光二极管导通,就能显示出某个数码或字符。在静态显示系统中,每位显示器都应有各自的锁存器、译码器〔假设采用软件译码,译码器可省去〕与驱动器,用以锁存各自待显示数字的BCD码或字段码。因此,静态显示系统在每一次显示输出后能够保持显示不变,仅在待显示数字需要改变时,才更新其数字显示锁存器中的内容。这种显示占用CPU的时间少,显示稳定可靠。缺点是,当显示的位数较多时,占用的I/O口较多。在动态显示的系统中,CPU需定时地对每位LED显示器进行扫描,每位LED显示器分时轮流工作,每次只能使一位LED显示,但由于人的视觉暂留现象,仍感觉所有的LED显示器都在同时显示。这种显示的优点是使用硬件少,占用I/O口少。缺点是占用CPU时间长,只要不执行显示程序,就立刻停止显示。但随着大规模集成电路的开展,目前已有能自动对显示器进行扫描的专用显示芯片,使电路既简单又占用CPU时间。在我们所设计的温度计中数码管显示就是利用的动态显示。4智能温度控制系统软件设计课题的程序用KeilC51语言编写,由于使用了C语言,存放器的分配、不同的存储器的寻址及数据类型等细节可由编译器管理,尤其是数学运算不必人工干预,大大缩短了变成与调试的时间,提高了效率,降低了编成难度,使编程更加简便。系统的控制软件可分为主程序,DS18B20通信程序,按键程序等模块。主程序可分为系统的初始化,自检子程序,温度显示子程序三局部。温度显示子程序完成温度采集,温度值的BCD转换,调显示子程序,超温报警和控制。DS18B20通信程序主要由DS18B20初始化程序,DS18B20读字节程序,DS18B20写字节程序组成。按键程序主要完成温度上、下限的设置和显示,在单片机控制下每2小时发送0.5秒的启动电机的正脉冲。本系统有五个按键,依次是:复位键、K1键、K2键、K3键、K4键。按键程序主要包括INT1中断子程序、定时器T0中断子程序、INT1中断子程序、定时器T1中断子程序、定时器T2子程序。其中,复位键局部放入主程序中,作为主程序的一局部。K4键功能:每2小时发送0.5秒的启动电机的正脉冲。下面是主程序和各个子程序的流程图。4.1主程序流程图系统完成的是对周围温度进行检测,采用DS18B20传感器。当温度超过设定温度范围时,进行报警。引入单片机控制是实现系统智能化很重要的一个局部,采用单片机可以实现程序控制和监视的功能。系统采用89S52和DS18B20的连接进行实时控制和数据处理。软件编程负责设置温度上、下限,然后让系统根据设置的程序完成控制功能。主程序流程图如图4.1所示。NNY响应中断有中断响应?显示当前温度数码管指示灯自检系统初始化开始中断结束报警温度超限?启动加热源或通风风扇YN图4.1主程序流程图4.2子程序流程图及程序内容DS18B20初始化子程序流程图DS18B20在初始化序列期间,总线控制器拉低总线并保持480us以发出〔TX〕一个复位脉冲,然后释放总线,进入接收状态〔RX〕。单总线由5K上拉电阻拉到高电平。当DS18B20探测到I/O引脚上的上升沿后,等待15~60us,然后发出一个由60~240us低电平信号构成的存在脉冲。完成对DS18B20的初始化操作,在每次测温前必须对其进行初始化,否那么系统无法正常运行。所以这个步骤很重要。DS18B20初始化子程序流程如图4.2所示。YYN低电平复位脉冲持续480~960us释放总线拉低总线DS18B20响应?返回图4.2DS18B20初始化子程序流程图voidRST18B20(void)/*DS18B20初始化子程序*/{DQ=0;delay(15);DQ=1;delay(2);do{}while(DQ==1);do{}while(DQ==0);}DS18B20写字节子程序N延时15~60us写入数据释放总线拉低总线写完1字节?返回YDS18B20写字节由两种写时序组成:写1时序和写0时序。总线控制器通过写1时序写逻辑1到DS18B20,写0时序写逻辑0到DS18B20。所有写时序必须最少持续60us,包括两个写周期之间至少1us的恢复时间。当总线控制器把数据线从逻辑高电平拉到低电平的时候,写时序开始总线控制器要生产一个写时序,必须把数据线拉到低电平然后释放,在写时序开始后的15us释放总线。当总线被释放的时候,5K的上拉电阻将拉高总线。总控制器要生成一个写0时序,必须把数据线拉到低电平并持续保持〔至少60us〕。总线控制器初始化写时序后,DS18B20在一个15us到60us的时间内对N延时15~60us写入数据释放总线拉低总线写完1字节?返回Y图4.3DS18B20写字节流程图voidwrite_zi(ucharwr)/*向DS18B20写字节子程序*/{uchari;for(i=0;i<8;i++){DQ=0;_nop_();DQ=wr&0x01;delay(5);DQ=1;wr>>=1;}}DS18B20读字节子程序N读出1位释放总线延时60us拉低总线读完1字节?返回Y总线控制器发起读时序时,DS18B20仅被用来传输数据给控制器。因此,总线控制器在发出读暂存器指令[BEh]或读电源模式指令[B4h]后必须立刻开始读时序,DS18B20可以提供请求信息。除此之外,总线控制器在发出发送温度转换指令[44h]或召回EEPROM指令[B8h]之后读时序,所有读时序必须最少60us,包括两个读周期间至少1us的恢复时间。当总线控制器把数据线从高电平拉到低电平时,读时序开始,数据线必须至少保持1us,然后总线被释放。在总线控制器发出读时序后,DS18B20通过拉高或拉低总线上来传输1或0。当传输逻辑0结束后,总线将被释放,通过上拉电阻回到上升沿状态。从DS18B20输出的数据在读时序的下降沿出现后15us内有效。因此,总线控制器在读时序开始后必须停止把N读出1位释放总线延时60us拉低总线读完1字节?返回Y图4.4DS18B20读字节子程序ucharread_zi(void)/*从DS18B20读出字节子程序*/{uchari,u=0;for(i=0;i<8;i++){DQ=0;u>>=1;DQ=1;if(DQ==1)u|=0x80;delay(4);}return(u);}温度显示子程序温度显示子程序主要完成温度的读出和显示的功能。当温度为零下是显示为“—〞号;当温度为零上时消隐。当测定温度低于设定温度下限值时,第1、2、4、5、6、7个发光二极管点亮;当测定温度高于设定温度上限值时,第1、3、4、5、6、7个发光二极管亮。起到报警作用。温度显示子程序流程图如图4.5所示。YYN温度为正值?Tem[0]=17Tem[0]=16温度值取负别离十位送tem[1]别离个位送tem[2]别离十分位送tem[3]调显示子程序读出温度值返回图4.5温度显示子程序floatWL=-10.0,WH=30.0;/*WH、WL用于存储上、下限温度*/voidshowT(void)/*温度显示子程序*/{ucharidatatem[4];floatwd=0;/*wd为采集的温度值*/intm;for(;;){wd=cewen();if(wd<0)/*判断温度是否为正*/{wd=-wd; tem[0]=16;/*温度为负值,数码管第1位显示负号*/}elsetem[0]=17;/*温度为正值,数码管第1位不显示*/tem[1]=wd/10;/*将温度值各位别离出来*/m=wd*10;tem[2]=m%100/10;tem[3]=m%10;display(tem+3);deng=0x02;/*显示温度,第1个发光二极管亮*/if(wd<=WL)deng=0x7B;/*低于温度下限,第1、2、4、5、6、7个发光二极管亮*/if(wd>=WH)deng=0x7E;/*高于温度上限,第1、3、4、5、6、7个发光二极管亮*/}}温度采集子程序流程图写入跳过ROM指令〔CCH〕写入温度转换指令〔44H〕调DS18B20初始化子程序写入跳过ROM指令〔CCH〕写入温度转换指令〔44H〕调DS18B20初始化子程序写入跳过ROM指令〔CCH〕写入读温度值指令〔BEH〕将温度值高8位赋给bm温度值低8位赋给am将bm值赋给wendzwendz左移8位与am相或将wendz的累加值赋给duzhi读温度值2次?duzhi取平均值Duzhi转化为十进制数将温度值四舍五入精确到0.1返回YN调DS18B20初始化子程序图4.6温度采集子程序流程图floatcewen(void)/*采集温度子程序*/{ucharam,bm;/*am,bm分别是从DS18B80读取的温度低8位和高8位值*/intwendz=0,i;/*wemdz是单次温度采集值*/floatduzhi=0;for(i=0;i<2;i++)/*采集两次温度值*/{RST18B20();/*DS18B20初始化*/write_zi(0xCC);/*跳过DS18B20片内ROM*/write_zi(0x44);/*进行温度转换*/RST18B20();write_zi(0xCC);write_zi(0xBE);/*DS18B20暂存器值*/am=read_zi();bm=read_zi();wendz=bm;wendz<<=8;wendz|=am;duzhi+=wendz;}duzhi/=2;/*取两次采集温度平均值*/duzhi*=0.0625;/*将采集温度值转换为十进制数*/duzhi+=0.05;/*将采集温度值四舍五入,精确到0.1*/return(duzhi);}显示子程序显示子程序是对数码管进行逐位扫描,显示先从显示缓冲区取出要显示的数据,再根据该数据从table表中取出相应的段码完成显示。显示子程序流程图如图4.7所示。返回返回送段码显示第3位?查字码表table送字码取位信号延时1ms显示完成?查字码表table1位选移位YNYN显示缓冲区首地址及位选图4.7显示子程序voiddisplay0(ucharidata*p)/*不显示数码管左起第4位*/{ucharsel,i;sel=0x01;for(i=0;i<4;i++){sel=~sel;duan=table[*p];if(sel!=0xfe)wei=sel;delay(210);wei=0xff;p--;sel=~sel;sel=sel<<1;}}voiddisplay1(ucharidata*p)/*不显示数码管左起第3位*/{ucharsel,i;sel=0x01;for(i=0;i<4;i++){sel=~sel;duan=table[*p];if(sel!=0xfd)wei=sel;delay(210);wei=0xff;p--;sel=~sel;sel=sel<<1;}}voiddisplay2(ucharidata*p)/*不显示数码管左起第2位*/{ucharsel,i;sel=0x01;for(i=0;i<4;i++){sel=~sel;duan=table[*p];if(sel!=0xfb)wei=sel;delay(210);wei=0xff;p--;sel=~sel;sel=sel<<1;}}voiddisplay3(ucharidata*p)/*不显示数码管第1位*/{ucharsel,i;sel=0x01;for(i=0;i<4;i++){sel=~sel;duan=table[*p];if(sel!=0xf7)wei=sel;delay(210);wei=0xff;p--;sel=~sel;sel=sel<<1;}}voiddisplayQ(ucharidata*p)/*数码管小数点全显示,用于自检子程序*/{ucharsel,i;sel=0x01;for(i=0;i<4;i++){sel=~sel;duan=table1[*p];wei=sel;delay(100);wei=0xff;p--;sel=~sel;sel=sel<<1;}}按键子程序流程图YNYNNYYNYN按K3键设置数值设置数值位闪烁K2键按下?显示温度下限显示温度上限将设置值送上下限温度存储变量显示测量温度返回K1键第一次按下K1键第二次按下?K2键第五次按下?K1键第三次按下?开中断图4.8按键子程序流程图voidint1_srv(void)interrupt2using0{inttiao=0,n=0,j=0,m=1,k,d;/*n为K2键的按键次数,k,d为温度下限、上限的标志位*/inta,b;/*a,b,wl.wh为下限、上限温度处理的中间变量*/floatwl,wh;ucharidatadis_buf[4];/*用于存放上、下限温度别离后的各位数值和标志位*/TR0=1;/*开启定时器T0中断*/delay(500);if(INT1==0)/*K1键第1次按下*/for(;;){while(INT1==0);wl=WL;if(wl<0.0)/*对下限温度进行别离处理*/{dis_buf[0]=16;wl=-wl;}elsedis_buf[0]=17;a=wl*10;dis_buf[1]=a/100;dis_buf[2]=(a%100)/10;dis_buf[3]=(a%100)%10;display(dis_buf+3);/*显示下限温度,第1、2个发光二极管亮*/deng=0x03;if(dx==0)/*K2键按下*/{if(dx==0){while(dx==0);wl=WL;if(wl<0.0){dis_buf[0]=16;wl=-wl;k=1;}else{dis_buf[0]=17;k=0;}a=wl*10;b=WH*10;dis_buf[1]=a/100;dis_buf[2]=(a%100)/10;dis_buf[3]=(a%100)%10;for(;;){if(ds==0)/*K3键按下*/{if(ds==0){while(ds==0);switch(n)/*设置下限温度各位的数值*/{case0:if(dis_buf[3]<9){dis_buf[3]++;break;}else{dis_buf[3]=0;break;}case1:if(dis_buf[2]<9){dis_buf[2]++;break;}else{dis_buf[2]=0;break;}case2:if(dis_buf[1]<5){dis_buf[1]++;break;}else{dis_buf[1]=0;break;}case3:if(m==0){dis_buf[0]=17;m++;k=0;break;}else{dis_buf[0]=16;m=0;k=1;break;}}}}if(TF0)/*每隔100ms显示一次下限温度*/{j++;if(j==2){display(dis_buf+3);j=0;}TH0=-(50000/256);TL0=-(50000%256);TF0=0;}elseswitch(n){case0:display0(dis_buf+3);deng=0x09;break;/*K2键按第1次,第4位数码管不显示*/case1:display1(dis_buf+3);deng=0x11;break;/*K2键按第2次,第3位数码管不显示*/case2:display2(dis_buf+3);deng=0x21;break;/*K2键按第3次,第2位数码管不显示*/case3:display3(dis_buf+3);deng=0x41;break;/*K2键按第4次,第1位数码管不显示*/}if(dx==0){if(dx==0){while(dx==0);if(n<4)n++;}}if(n==4)/*K2键按第5次,将设置的温度值存入上、下温度变量*/{if(k==0)a=dis_buf[3]+dis_buf[2]*10+dis_buf[1]*100;if(k==1)a=-(dis_buf[3]+dis_buf[2]*10+dis_buf[1]*100);n=0;if(b>(a+5))/*如果设置的温度下限值低于上限值0.5℃{WL=a;WL/=10;WH=b;WH/=10;}break;}}}}if(INT1==0)/*K1键第2次按下*/for(;;){while(INT1==0);wh=WH;/*对上限温度进行别离处理*/if(wh<0){dis_buf[0]=16;wh=-wh;}elsedis_buf[0]=17;b=wh*10;dis_buf[1]=b/100;dis_buf[2]=(b%100)/10;dis_buf[3]=(b%100)%10;display(dis_buf+3);/*显示上限温度,第1、3个数码管亮*/deng=0x06;if(dx==0)/*K2键按下*/{if(dx==0){while(dx==0);wh=WH;if(wh<0){dis_buf[0]=16;wh=-wh;d=1;}else{dis_buf[0]=17;d=0;}a=WL*10;b=wh*10;dis_buf[1]=b/100;dis_buf[2]=(b%100)/10;dis_buf[3]=(b%100)%10;for(;;){if(ds==0)/*K3键按下*/{if(ds==0){while(ds==0);switch(n)/*设置上限温度各位数值*/{case0:if(dis_buf[3]<9){dis_buf[3]++;break;}else{dis_buf[3]=0;break;}case1:if(dis_buf[2]<9){dis_buf[2]++;break;}else{dis_buf[2]=0;break;}case2:if(dis_buf[1]<5){dis_buf[1]++;break;}else{dis_buf[1]=0;break;}case3:if(m==0){dis_buf[0]=17;m++;d=0;break;}else{dis_buf[0]=16;m=0;d=1;break;}}}}if(TF0)/*每隔100ms显示一次上限温度*/{j++;if(j==2){display(dis_buf+3);j=0;}TH0=-(50000/256);TL0=-(50000%256);TF0=0;}elseswitch(n){case0:display0(dis_buf+3);deng=0x0C;break;/*K2键按第1次,第4位数码管不显示*/case1:display1(dis_buf+3);deng=0x14;break;/*K2键按第2次,第3位数码管不显示*/case2:display2(dis_buf+3);deng=0x24;break;/*K2键按第3次,第2位数码管不显示*/case3:display3(dis_buf+3);deng=0x44;break;/*K2键按第4次,第1位数码管不显示*/}if(dx==0){if(dx==0){while(dx==0);if(n<4)n++;}}if(n==4)/*K2键按第5次,存储设置的数值*/{if(d==0)b=dis_buf[3]+dis_buf[2]*10+dis_buf[1]*100;if(d==1)b=-(dis_buf[3]+dis_buf[2]*10+dis_buf[1]*100);n=0;if(b>(a+5))/*如果设置的温度上限值高于下限值0.5℃{WL=a;WL/=10;WH=b;WH/=10;}break;}}}}tiao=1;if(INT1==0){if(INT1==0)break;}}while(INT1==0);if(tiao==1)break;}}发送脉冲子程序流程图YNK4键按下?开INT1中断启动T2定时YNK4键按下?开INT1中断启动T2定时T2定时到?T1定时到?启动T1定时并开T1中断关T1定时器发送0.5秒脉冲初始化NYYN开始图4.9发送脉冲子程序流程图#include<intrins.h>#include<absacc.h>#include<reg52.h>#definedengXBYTE[0x7FFF]intcoun=0,con=0;/*coun和con分别是定时器T2和T1的中断次数计数变量*/voidT1_zd(void)interrupt3using0/*定时器T1中断子程序*/{con++;if(con==10)/*定时0.5秒到*/{con=0;TR1=0;/*关闭定时器T1*/deng=0x01;}TH1=(65536-50000)/256;TL1=(65536-50000)%256;}voidT2_zd(void)interrupt5using0/*定时器T2中断子程序*/{coun++;TF2=0;if(coun==200000)/*定时2小时到*/{coun=0;deng=0x02;TR1=1;/*启动定时器T1*/}}voidint1_zd(void)interrupt2using0/*外部中断INT1*/{TR2=1;/*启动定时器T2*/ET2=1;ET1=1;}main(){T2CON=0x00;TH2=(65536-36000)/256;TL2=(65536-36000)%256;TMOD=0X10;TH1=(65536-50000)/256;TL1=(65536-50000)%256;IT1=1;/*设INT1为跳变沿触发中断*/EX1=1;EA=1;deng=0x40;while(1){};5智能温度控制系统可靠性和精度分析传统的A/D转换器大多采用积分式或逐次比拟式转换技术,其噪声容限低,抑制混叠噪声及量化噪声的能力比拟差。课题采用了高性能的Σ-Δ式A/D转换器,它能以很高的采样速率和很低的采样分辨力将模拟信号转换成数字信号,再利用过采样、噪声整形和数字滤波技术,来提高有效分辨力。Σ-Δ式A/D转换器不仅能滤除量化噪声,而且对外围元件的精度要求低;由于采用了数字反响方式,因此比拟器的失调电压及零点漂移都不会影响温度的转换精度。这种智能温度传感器兼有抑制串模干扰能力强、分辨力高、线性度好、本钱低等优点。系统将转换精度控制字R1和R0配置为“1〞,将精度到达最高为0.0625℃结论在基于单片机的智能温度控制系统的研究和设计过程中,借

温馨提示

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

最新文档

评论

0/150

提交评论