基于单片机的温度控制系统 The Design of Temperature Control System Based on SCM 摘 要 本文提出的温度采集控制系统以单片机(AD590)为核心,由控制部分、显示部分和温度测量部分组成。该系统大部分功能通过硬件来实现,电路简单明了,系统稳定性很高。 这套温度控制系统可以方便地实现温度测量、温度显示等功能,并通过与单片机连接的键盘可以实时设定测控温度的下限,还可以连接相应的外围电路,在收到单片机发出的指令后对环境进行检测 本文首先描述系统硬件工作原理,并附以系统结构框图加以说明,着重介绍了本系统所应用的各硬件模块的功能和它的工作过程;其次,详细阐述了程序的各个模块及其实现过程。本系统的主要设计思想是以硬件为基础,软件和硬件相结合,最终实现各个模块的功能。
1 引 言在国民经济各部门,如电力、化工、机械、冶金、农业、医学以及人们的日常生活中,温度检测是十分重要的。在许多模拟量控制和监视应用中,温度测控通常是基于 -40℃~125℃温度范围内的应用,如环境监测、蔬菜大棚、粮库、热电偶冷端温度补偿、设备运行的可靠性等应用。实时采集温度信息,及时发现潜在故障,并采取相应的处理措施,对确保设备良好运行具有重要意义。 本文介绍了一个基于单片机的温度控制系统,该系统可以方便地实现温度采集、温度显示等功能。本系统的温度控制部分采用单片机完成。单片机有着体积小、功耗低、功能强、性能价格比高、使用电子元件较少、内部配线少、制造调试方便等显著优点,将其用于温度检测和控制系统中可大大地提高控制质量和自动化水平,具有良好的经济效益和推广价值。利用单片机对温度进行测控的技术,日益得到广泛应用。 在众多的温度控制系统中,测温元件常常选用热敏电阻、半导体测温二极管、三极管、集成温度传感器等。相比而言,集成温度传感器具有线性好、稳定度高、互换性强、易处理等突出优点,故在许多场所得到了广泛应用。本系统中单片机作为下位机,完成测温任务,并通过与单片机连接的键盘可以实时设定测控温度的下限。本系统还可以连接相应的外围加热电路,当环境温度低于设定下限温度时,单片机发出的指令,加热器起动对环境进行加热,当温度回升到下限温度时加热器停止加热。为了便于操作,还设计一个简单的操作面板,它主要由键盘与按钮开关组成,通过操作面板可以进行系统的开停、RESET、设置温度下限告警值等。键盘输入部分采用了键盘专用IC74C922,简化了软件编程,用起来非常方便。 系统软件主要由初始化程序、主程序、监控显示程序等组成。其中初始化程序是对单片机的接口工作方式,A/D转换方式等进行设置;显示程序包括对显示模块的初始化、显示方式设定及输出显示;主程序则完成对采集数据进行处理。 该系统应用范围相当广泛,同时采用单片机技术, 由于单片机自身功能强大,因而系统设计简单,工作可靠,抗干扰能力强,也可在此基础上加入通信接口电路,实现与上位机之间的通信。 2.1 功能与设计要求 这套温度采集、控制系统可以方便地实现温度测量、温度显示等功能,并通过与单片机连接的键盘可以随时设定测控温度的下限,还可以连接相应的外围电路,在收到单片机发出的指令后对环境进行监测,当温度回升到下限温度时加热器停止监测。 1、采集温度并显示温度值。对温度控制器而言,最基本的功能是测温功能即能时时采集被测环境的温度并通过显示部分显示出来。 2、设定测控温度下限。温度采集一般都具有设定限定温度功能,即预设一个温度值,一旦温度低于这个温度值,控制器就会发出提示,连接相应的外围电路就可以对环境进行检测。 3、采用专用直流供电电源。与其它的温度控制器相比,本系统的温度采集器输出模拟电流,易受干扰。因而必须以专用直流电源供电,分别为模拟部分和数字部分提供专用电压。 2.2 方案论证方案一 采用美国DALLAS半导体公司继DS1820之后推出的一种该进型智能温度传感器DS18B20作为检测元件,检测范围—55~125℃,最大分辨率可达0. 0625℃。DS18B20可以直接读出被测温度值,而且采用三线制与单片机相连,减少了外部的硬件电路,具有低成本和易使用的特点, 本电路由3个模块组成;主控制器,测温电路及显示电路。 主控制电路; 单片机AT89C2051具有低电压供电和小体积等特点。 显示电路; 采用4位共阳LED数码管,从P1口输出段码,到扫描用P3.0-P3.1口来实现,列驱动用9012三极管。 DS18B20与单片机的接口电路 DS18B20可以采用两种方式供电,一种是采用电源供电方法,如图此时DS18B20的1脚接地,2脚作为信号线,3脚接电源,另一种是寄生电源供电方式,单片机接口接单线总线,为保证有效的DS18B20时钟周期内提供足够的电源,可用一个MOSFET管来完成总线的上位。 当DS18B20处于写存储器操作和温度A/D转换操作时,总线上必须有强的上位,上位开启时最大为10uA。采用寄生电源供电方式时VDD和GND端军接地。由于单线制只有一根线,因此发送接口必须是三态的。 方案二 由AD590配以ADC0809。ADC0809是最常用的8位模数转换器,属于逐次逼近型。ADC0809采用单一的+5V供电,片内有带锁存功能的8路模拟开关,可对0—5V,8路模拟信号分时进行转换,完成一次转换的的时间是100US,数字输出信号具有TTL三态锁存器,可以直接与AT89C51相连。 2.2.1方案比较 方案一中使用DS18B20采集温度,结构较复杂,价格也稍显昂贵,适合较大规模的工业农业使用。成本较高故从以上两种方案,很容易看出采用方案二,电路不仅比较简单,软件设计也比较简单,故采用了方案二 系统组成方框图 2.2.1 传感器的选择测量温度有很多传感器。热电偶灵敏度较低,但能在很宽广的温度范围内使用;热敏电阻的工作温度范围较窄,但灵敏度高,有利于检测微小温差,其输出特性量非线性,检测时需要有线性化装置;廉价的集成电路(IC)温度传感器性能离散度很大,用于高精度测量时,必须进行校准;测温铂电阻温度系数的离散度很小,精确度高,灵敏度也较好,特别适用于1000度以下的温度测量 ,但价格昂贵。 集成电路温度传感器利用了半导体PN结电流电压特性和温度的相关性,与热敏电阻、热电偶相比 ,最大优点是输出线好,测温精度较高。感温部分、传感器驱动部分、信号处理部分等电路均集成化并封闭在一个小型管壳内,使用方便。 AD590是一种集成电路温度传感器,作为电流输出型传感器的特点是,具有很强的抗外界干扰能力。其输出电流和绝对温度成正比。当两端加上+4V~+30V之间的电压时,器件呈现高阻抗,输出电流按1uA/1.0K变化。电气上耐用,可承受正向+44V,反向 -20V的电压而不损坏,不必担心管脚接错。由于采用激光微调来较正IC内的薄膜电阻,而使AD590在298.2K(+25度)时输出稳定的298.2uA电流。基于以上优点,本系统采用AD590作为温度传感器。 2.2.2 控制芯片的选择本设计选用单片机为控制芯片是因为它有以下优点。第一,可靠性良好。单片机是按照工业控制要求所设计的,其抗工业噪声优于一般的CPU,程序指令及常数数据都烧写在ROM内,其许多信号通道均在同一个芯片内,因此可靠性高;第二,易扩充。单片机具有一般微电脑所必需的器件,如三态双向总线、并行及串行的输入/输出引脚,可以扩充为各种规模的微电脑系统;第三,控制功能强。为了满足工业控制的要求,单片机的指令除了输入/输出控制指令、逻辑判断指令外,还有更为丰富的条件分支跳跃指令。 利用单片机的智能性,可方便的实现具有智能的数据采集和处理。在采用单片机为实现形式时,有很多种单片机可以实现数据采集、数据处理功能,通常会用以下几种单片机来实现: 1、采用PIC来实现。美国微芯科技股份有限公司推出的采用RISC(精简指令集)和哈佛总线(Harvard)结构的PIC系列CMOS 8位单片机,其主要特点是数据总线是8位的,而其指令总线则有12位、14位和16位3种。 2、采用AVR来实现。AVR单片机的特点:速度快、片内资源丰富、保密性好、可重复擦写及在系统编程ISP、工作电压范围宽、功耗低、支持JTAG仿真、与C语言的完美配合。 3、采用AT89S52来实现。ATMEL公司生产的AT89S52单片机采用高性能的静态设计,由先进工艺制造,并带非易失性Flash程序存储器。它是一种高性能、低功耗的8位CMOS微处理芯片。 AT89S52是美国ATMEL公司生产的低功耗,高性能单片机,兼容标准AT89S52指令系统及引脚。它集Flash程序存储器既可在线编程(ISP)也可用传统方法进行编程及能用8位微处理器于单片机中,ATMEL公司的生产AT89S52可灵活应用于各种控制领域。基于以上优点本系统采用AT89S52作为主控芯片。 3 温度传感器简介温度的测量控制一般采用各式各样的温度传感器,常用的温度传感器及其测温范围(℃)为:热电偶(-184~2300),热电阻(-200~850),热敏电阻(-55~300),半导体(-55~150)。根据温度传感器输出方式及接口方式的不同,大体可以分为模拟温度传感器和数字温度传感器。 3.1 模拟温度传感器1、输出电压或电流信号的模拟温度传感器 热电偶、热电阻、热敏电阻及半导体温度传感器都是将温度值经过一定的接口电路转换后输出模拟电压或电流信号,利用这些电压或电流信号即可进行测量控制。如果想将这种模拟信号转换成微处理器可以处理的信号,需利用模数转换器将其转换为数码,然后由微处理器读取即可,如图3-1所示。 图3-1 采用A/D接口的电路 另一种转换方式是进行V/F变换。V/F变换器实际上是一个振荡频率随控制电压变化而变化的振荡电路。其特点是有良好的精度、线性度和积分输入,且电路简单。图3-2 为微处理器与V/F变换器及温度传感器的接口电路。其中V/F变换器采用AD公司的AD654。通过调整,AD654可输出0~500kHz的脉冲串,将输出与单片机的定时器/计数器T1相连进行计数,并用定时器T0进行定时。通过对所计的数进行计算与转换,便可得到传感器当前温度值。 电压输出温度传感器的主要特点是电源电压和电流比较低,在传输线路电压降和电压噪声不是主要影响因素时,其电压输出可直接成为控制系统和数据采集系统的输入信号。常用的电压输出半导体温度传感器有AD公司的TMP35/36/37、NS公司的LM35/45/50/60等。 在某些特殊场合,需使用电流输出的温度传感器。电流输出温度传感器的主要特点是输出阻抗高,输出电流不受传输线路电压降和电压噪声的影响,且对电源电压的脉动和漂移具有很强的抑制能力。电流输出温度传感器欲与微处理器接口时,一般需将电流变成电压,然后再用A/D转换器转换成微处理器可以处理的信号。这样的传感器有AD公司的AD590、TMP17等。 图3-2 采用V/F接口的电路 2、输出跳变信号的模拟温度传感器 在某些系统中,并不需要知道精确的温度值,而只需了解温度是否高于或低于某特定值即可。该信息可用来触发风扇、空调、加热器等控制单元。这种特殊的模拟温度传感器一般只是输出跳变信号进行控制,通常称之为温度控制器。 将传感器与比较器组合电路进行集成,使系统进一步简化。这种集成的温度控制器经常被称为温度开关。这种单片器件组合了传感器、比较器、电压基准和必要的电阻等多种器件。当温度超过预设门限时,输出电平发生跳变,控制加温或致冷器件通断。MAXIM公司的MAX6501/6502是热温开关,从厂家45℃到95℃预置了6种温度门限。MAX6503/6504是冷温开关,其温度门限为-15℃和5℃两种。MAX6501/6503为开漏输出,低电平有效。MAX6502/6504为推拉输出,高电平有效。MAX6501的输出经上拉电阻后可以直接驱动微处理器的中断或复位,如图3-3所示。 图3-3 采用温度开关的接口电路 MAX6502的输出经简单驱动后,可以直接控制风扇工作。通过一些简单的电路配合,还可以将其应用于温度窗口报警。分层次控制等。这样的芯片还有AD公司的AD22105等。 3.2 数字温度传感器将模拟温度传感器与数字转换接口电路集成在一起,就成为具有数字输出能力的数字温度传感器。随着半导体技术的迅猛发展,半导体温度传感器与相应的转换电路、接口电路以及各种其它功能电路逐渐集成在一起,形成了功能强大、精确、价廉的数字温度传感器。 1、单线输出的数字温度传感器 单线输出的特点是接口电路简单,测出的温度值精确,所以在一般应用中,这种芯片得到了偏爱。由于只有一根输出线,测量出的温度值必须转换成某种方式进行输出。常见的输出方式有时间输出、频率输出及数值输出等,然后再由微处理器将温度传感器输出的信号转换成真实温度值,进行进一步的处理与控制。 2、时间输出的温度传感器 AD公司的TMP03/04是常用的时间输出的数字温度传感器。它们输出经过调制后的矩形波,应用中只需测得其输出方波占空比T1/T2中T1和T2的实际时间宽度,即可计算出被测对象的温度。与微处理器连接时只需将芯片的输出与微处理器的定时器/计数器相连,就可很容易地测出T1、T2的时间宽度,并计算出相应的温度值。 MAXIM公司的MAX6578也是一种输出时间的温度传感器。它输出的方波信号周期正比于绝对温度。MAXIM公司的MAX6575 L/H芯片是另一种非常方便实用的时间输出的温度传感器。它的特点是在一根I/O线上最多可以同时接8只芯片,同时测8个点位的温度而不相互干扰。通过对管脚TS0、TS1的不同连接及选择“L”、“H”不同型号,可以设置芯片的不同延时系数。测量温度时,微处理器启动转换,经正比于绝对温度值的延时t后,MAX6575拉低I/O线。通过测量这个延时时间t,再利用所设置的该芯片的延时系数,可以计算出该芯片所测的温度值。由于各芯片延时系数不同,其延时时间并不会相互重叠,使用微处理器的定时器/计数器可以分别测出各个芯片的延时时间,再计算出各个芯片所测出的温度。 3、频率输出的单线温度传感器  MAX6577是输出频率信号的数字温度传感器。它输出占空比为1/2的方波,其频率正比于绝对温度。它的内部结构及使用方式与MAX6578非常相似。通过引脚TS0、TS1选择适当的频率/温度比例常数,再由微处理器的内部计数器测出频率后,计算出所测温度。其与微处理器的接口方式如图3-4所示。图3-4 时间输出的温度传感器 与微处理器的接口电路 4、数值输出的单线温度传感器 数值输出的单线温度传感器直接以串行方式输出芯片测出的具体温度数值,所以其时序非常重要。DALLAS公司的DS1820就是这样一种独特的温度传感器。它只需一个接口引脚即可通信,可用数据线供电,并具备多点测温能力。 其读写时序主要有复位、读时间片和写时间片三种时序操作。芯片本身带有命令集和存储器,微处理器通过发出控制命令,对芯片存储器进行读写,完成温度测量。芯片电源也可由微处理器的一个I/O口提供。微处理器在读写DS1820前先使其复位,检测到其应答信号后,微处理器发ROM操作命令,然后再发控制命令。多点温度测量时,只需并联多只DS1820并放在各测温点上,在使用前对各个芯片进行ROM搜索并将各个芯片的序列号保存起来。以后对每个DS1820寻址时,只要发相应的序列号,然后再对其进行其它操作即可。与DS1820类似的芯片还有DS1822。 5、基于总线协议输出的数字温度传感器 为了提高可靠性,方便使用,人们又设计了许多基于某种总线协议输出的数字温度传感器。这种温度传感器一般有多根线输出。输出格式和时序严格遵守某种协议,适用于各种场合,尤其是远端测量。常见的协议格式还有SMBus协议。 MAXIM公司的MAX1617~1619系列都是采用SMBus串行接口的远端温度传感器。MAX1619用来监测PC机内CPU的温度。它通过施加电流并测量正向结压测量外部PN结(分立晶体管、ASIC或CPU内)的结温,并通过SMBus二线串行接口将结果(8位精度)传给微处理器。 4 温度控制系统的硬件设计 4.1 AT89S51单片机简介
AT89S51单片机是低功耗的,具有4KB在线可编程FLASH存储器的单片机。它与通用AT89C51单片机的指令系统和管脚兼容。 AT89S51具有如下特征: - 片内程序存储器含有4KB的Flash存储器,允许在线编程,擦写周期可达1000次;
- 片内数据存储器含128字节的RAM;
- I/O口具有32根可编程I/O口;
- 具有两个16位可编程定时器;
- 中断系统是具有6个中断源,5个中断矢量,2级中断优先级的中断结够;
- 串行口是一个全双工的串行通信口;
- 具有两个数据指针DPTR0 DPTR1;
- 低功耗节电模式有空闲模式和掉线模式;
- 包含3级程序锁定位;
- AT89S51的电源电压为4.0—5.5V,AT89S51的电源电压为2.7—4.0V;
- 振荡器频率0-33MHZ(AT89S51),0-16MHZ(AT89LS51);
- 具有片内看门狗定时器;
- 具有断电标志;
4.1.1 端口功能简介P0 口:P0 口是一个 8 位漏极开路的双向 I/O 口。作为输出口,每位能驱动 8个 TTL 逻辑电平。对P0端口写“1”时,引脚用作高阻抗输入。当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。在这种模式下,P0 具有内部上拉电阻。在Flash编程时,P0口也用来接收指令字节;在程序校验时,输出指令字节。(程序校验时,需要外部上拉电阻) P1 口:P1 口是一个具有内部上拉电阻的 8 位双向 I/O 口,P1 输出缓冲器能驱动 4个TTL 逻辑电平。对 P1 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流。此外,P1.0和P1.2分别作定时器/计数器2的外部计数输入(P1.0/T2)和时器/计数器2的触发输入(P1.1/T2EX)。 P2 口:P2 口是一个具有内部上拉电阻的 8 位双向 I/O 口,P2 输出缓冲器能驱动 4个TTL 逻辑电平。对 P2 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。在访问外部程序存储器或用16位地址读取外部数据存储器(例如执行MOVX@DPTR)时,P2口送出高八位地址。在这种应用中,P2口使用很强的内部上拉电阻发送“1”。在使用8 位地址(如 MOVX @RI)访问外部数据存储器时,P2 口输出 P2 锁存器的内容。在Flash编程和校验时,P2口也接收高8位地址字节和一些控制信号。 P3 口:P3 口是一个具有内部上拉电阻的 8 位双向 I/O 口,P2 输出缓冲器能驱动 4个TTL 逻辑电平。对 P3 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流。 除了作为I/O使用外(内部有上拉电阻),还有一些特殊功能,由特殊寄存器来设置。 RST: 复位输入。晶振工作时,RST 脚持续 2个机器周期高电平将使单片机复位。看门狗计时完成后,RST脚输出96个晶振周期的高电平。特殊寄存器AUXR(地址8EH)上的DISRTO位可以使此功能无效。DISRTO默认状态下,复位高电平有效。 ALE/PROG:地址锁存控制信号(ALE)是访问外部程序存储器时,锁存低 8 位地址的输出脉冲。在Flash编程时,此引脚(PROG)也用作编程输入脉冲。在一般情况下,ALE以晶振六分之一的固定频率输出脉冲,可用来作为外部定时器或时钟使用。然而,特别强调,在每次访问外部数据存储器时,ALE脉冲将会跳过。如果需要,通过将地址为8EH的SFR的第0位置 “1”,ALE操作将无效。这一位置 “1”,ALE 仅在执行MOVX 或MOVC指令时有效。否则,ALE将被微弱拉高。这个ALE 使能标志位(地址为8EH的SFR的第0位)的设置对微控制器处于外部执行模式下无效。 PSEN:外部程序存储器选通信号(PSEN)是外部程序存储器选通信号。当AT89S52从外部程序存储器执行外部代码时,PSEN在每个机器周期被激活两次,而在访问外部数据存储器时,PSEN将不被激活。 EA/VPP:访问外部程序存储器控制信号。为了能从 0000H 到 FFFFH 的外部程序存储器读取指令,EA必须接GND。为了执行内部程序指令,EA应该接VCC。在Flash编程期间,EA也接收12伏VPP电压。 XTAL1:振荡器反相放大器和内部时钟发生电路的输入端。 XTAL2:振荡器反相放大器的输出端。
元器件的选择 1,AD590的性能特点与工作原理 AD590管脚封装图 AD590的基本电路图 工作原理 AD590的内部电路如电路图1.1所示。芯片中的R1 R2是 采用激光修正的校准电阻,它能使298.2K下的输出电流恰好为298.2uA首先有晶体VT8 VT11产生热力学温度成正比的电压信号。在通过R5 R6把电压信号转换成电流信号。保证良好的温度特性,R5 R6的电阻温度系数应非常小,这里采用激光修正的SICr薄膜电阻其电阻温度系数低至(-30~-50)*10—6/℃。VC10的集电极电流能够跟随VT9和VT11的集电极电流的变化,使总电流达到额定值。R5和R6也需要在25℃的标准温度下校准。 AD590等效于一个高阻抗的恒流源,其输出阻抗>10M欧姆,能大大减少因电源电压波动而产生的测温误差。例如,当电源电压从5V变化到10V时,所引起的电流最大变化量仅为1uA,等价于1℃的测温误差。 AD590的工作电压为+4~+30V,测温范围是测量范围是-55— +150℃,对应于热力学温度T每变化1K,输出电流就变化1uA。在298.15K(对应于25.15℃)时输出电流恰好等于298.15uA。这表明,其输出电流Io(uA)热力学温度T(K)严格成正比。电流温度系数K1的表达式为 K1=IoT=(3k/qr)ln8 中的k、q分别为波耳兹曼常数和电子电量,R是内部集成化电阻。式中的ln8表示内部晶体管VT9与VT11的发射结等效面积之比r=S9/S11=8倍,然后再取自然对数值。将k/q=0.0862Mv/K,R=538欧姆代入式中得到 K1=Io/T=1.000uA/K 因此,输出电流的微安数就代表着被测温度的热力学温度值。AD590的电流-温度(I-T)特性曲线如图2-1-3所示。热力学温标(K)与摄氏温标(℃)、华氏温标(℉)的换算关系如图2-1-4所示,有关系式 t(℃)=T(K)-273.15 t(℉)=(9/5)*t(℃)+32 。 2 ADC0809芯片 ADC0809采用逐次逼近式A/D转换原理,可实现8路模拟信号的分时采集,片内有8路模拟选通开关,以及相应的通道地址锁存与译码电路,转换时间为100us左右。ADC0809内部中多路开关可选通8个模拟通道,允许8路模拟量分时输入,共用一个A/D转换芯片进行转换。地址锁存与译码电路完成对A、B、C 3个地址位进行锁存与译码,其译码输出用于通道选择。8位A/D转换器是逐次逼近式,由控制与时序电路、逐次逼近寄存器、树状开关以及256欧姆电阻阶梯网络组成。输出锁存器用于存放和输出转换得到的数字量。ADC0809芯片为28引脚双列直插式封装。 ADC0809芯片引脚的功能: IN7-IN0:模拟量输入通道。ADC0809对输入模拟量的要求主要有:信号单极性,电压范围为0-5V。 A、B、C:地址线,模拟通道的选择信号。A为地位地址,C为高位地址。 ALE:地址锁存允许信号。 START:转换启动信号。START上跳沿时,所有内部寄存器清0;START下跳沿时,开始进行A/D转换;在A/D转换期间,START应保持低电平。 D7-D0:数据输出线。为三态缓冲输出形式,可以与单片机直接相连。D0为最低位,D7为最高位。 OE:输出允许信号。用于控制三态输出锁存器向单片机输出转换得到的数据。OE=0,输出数据线呈高电阻;OE=1输出转换得到的数据。 CLK:外部时钟信号引入端。ADC0809的内部没有时钟电路,所需时钟信号由外界提供。 EOC:转换结束信号。EOC=0,正在进行转换;EOC=1,转换结束。使用中该状态信号即可以作为查询的状态标志,又可以作为中断请求信号使用。 VCC:+5V电源。 VREF:参考电源。其典型值为+5V。 ADC0809与AT89S51接口 A/D转换器芯片与单片机的接口是数字量输入接口,其原理与并行I/O输入接口相同,需要有三态缓冲功能,即A/D转换器芯片须通过三态门“挂上”数据总线。ADC0809芯片已具有三态输出功能,因此,ADC0809与AT89S51的接口比较直接。
三,单元电路设计及软件设计 程序设计内容:ADC0809的CLK子那好由单片机的P3.3管脚提供。由于AD590的温度变化范围在-55℃~+150℃之间,经过10K电阻之后采样到的电压变化在2.182V~4.232之间,不超过5V电压所表示的范围,因此参考电压取电源电压VCC,(实测VCC=4.70V)。由此可计算出经过A/D转换之后的摄氏温度显示的数据为: 如果 (D×2350/128)<2732,则显示的温度为-(2732-(D×2350/128)) 如果(D×2350/128)≥2732,则显示的温度为+((D×2350/128)-2732) - #include <AT89X52.H>
- sbit START = P3^0 ; //地址锁存、转换信号
- sbit OE = P3^1 ; //输出允许信号
- sbit EOC = P3^2; //转换结束信号
- int code shu[]={0xc0,0xf9,0xa4,0xb0,0x99,
- 0x92,0x82,0xf8,0x80,0x90,0x8e}; //0-9数字码
- unsigned int i;
- char d;
- /*************显示程序*************/
- xianshi()
- {
- char k;
- P1=shu[i%10]; //小数
- P2=0x01;
- for(k=0;k<100;k++);
- P1=shu[i/10%10]&0x7f; //个位
- P2=0x02;
- for(k=0;k<100;k++);
- P1=shu[i/100];//十位
- P2=0x04;
- for(k=0;k<100;k++);
- if(d==1) //判断正负值
- {P1=0xbf;
- P2=0x08;
- for(k=0;k<20;k++);
- }
- P1=0xff;
- }
- main()
- {int j;
- while(1)
- {
- OE=1;//允许输出
- START=1;//寄存器清零
- for(j=0;j<20;j++);
- START=0; //地址锁存、开始进行A/D转换
- while(EOC==0); //判断转换是否完成
- {i=P0;
- if((i*184)<27320)
- {d=1;
- i=27320-(i*184);// -(2732-(i*2350/128))
- i/=100;
- }
- else
- {d=0;
- i=(i*184)-27320;// +((i*2350/128)-2732)
- i/=100;}
- }
- for(j=0;j<200;j++)
- xianshi();// 显示
- }
- }
复制代码
四,总体电路图 五,调试过程及测试结果 我们组仔细的检查了硬件部分,没有错误 。 我们把焊好的硬件部分通过计算机把编好的程序用单片机传送进去。这样完成了数字温度计的制作,然后用一字螺丝刀对滑动变阻器进行调试,在第一次时候我们没有达到预订的要求 温度的变化范围变化太大,为了达到温度的变化范围我们换了小阻值的电阻,由于电流过大把电阻烧了。最后经过几次的努力达到了技术指标的要求温度范围为-23.0— +19.6℃,最终我们完成了数字温度计的全部制作。 六,主要元器件清单
完整论文下载(word格式 可编辑):
基于单片机的温度控制系统资料.zip
(221.84 KB, 下载次数: 74)
|