基于89C51单片机太阳能水温水位控制系统_第1页
基于89C51单片机太阳能水温水位控制系统_第2页
基于89C51单片机太阳能水温水位控制系统_第3页
基于89C51单片机太阳能水温水位控制系统_第4页
基于89C51单片机太阳能水温水位控制系统_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

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

文档简介

1、摘 要 本温度设计采用现常见的89C51单片机,配以DS18B20数字温度传感器,该温度传感器可自行设置温度上下限。单片机将检测到的温度信号与输入的温度上、下限进行比较,由此作出判断是否启动继电器以开启设备。系统包括单片机模块、温度检测模块、水位检测模块和驱动电路设计四个部分。文中对每个部分功能、实现过程作了详细介绍。关键词: DS18B20数字温度传感器 89C51 水温水位 目录一概述11.1课题研究的目的及意义11.2技术指标1二总体设计方案1三详细设计方案21.1温度检测系统21.2水位检测系统4四元件说明51.1 工作原理51.2单片机的选择51.3温度传感器81.4水位传感器111

2、.5 显示元件12五硬件模块设计131.1单片机模块设计131.2温度检测模块141.3水位检测模块151.4 控制模块171.5 驱动电路设计17六软件设计181.2 温度检测系统181.3 水位检测系统201.4 DS18B20主程序23七结论24八参考文献24附 录25单片机与显示器件连接图25系统软件源代码26一概述1.1课题研究的目的及意义 目前市场上太阳能热水器的控制系统大多存在功能单一、操作复杂、控制不方便登问题,很多控制器只具有温度和水位显示功能,不具有温度控制功能。即使热水器具有辅助加热功能,也可能由于加热时间不能控制而产生过烧,从而浪费电能。鉴于此,我以89C51单片机为检

3、测控制核心,采用LED12864显示温度和时间,设计了一种太阳能热水器微控制器,不仅实现了时间、温度和水位参数的实时显示,而且具有时间设定、温度设定、水位设定与控制功能,停电后再来电时也不用重新设定。1.2技术指标设计并制作一个基于单片机的温度控制系统,能够对炉温进行控制。炉温可以在一定范围内由人工设定,并能在炉温变化时实现自动控制。若测量值高于温度设定范围,由单片机发出控制信号,经过驱动电路使加热器停止工作。当温度低于设定值时,单片机发出一个控制信号,启动加热器。通过继电器的反复开启和关闭,使炉温保持在设定的温度范围内。温度设定范围为099,最小区分度为1,温度控制的误差1能够用数码管精确显

4、示当前实际温度值按键控制:设置复位键、加一键、减一键 二总体设计方案 以89C51为主控制芯片,温度采集采用DS18B20温度传感器,通过外围电路来采集水位,用液晶LED 12864显示当前的水位、水温和时间,并且通过键盘来输入日期数据以及所需控制的水位水温。并且当水温水位超于限制时启动报警系统。如图2.1总体设计方案图所示。图2.1 总体设计方案图三详细设计方案3.1 总体结构设计方案一:测温电路的设计,可以使用DS18B20温度传感器利用其感温效应,在将随被测温度变化的电压或电流采集后,把采样得到的模拟信号送入ADC0809进行A/D转换读入单片机进行A/D转换后,通过串行口输入,就可以用

5、单片机进行数据的处理,同时在显示电路上,就可以将被测温度显示出来。方案二:考虑使用温度传感器,结合单片机电路设计,采用一只DS18B20温度传感器,直接读取被测温度值,之后进行A/D转换,依次完成设计要求。比较以上两种方案,很容易看出,采用方案二,电路比较简单,软件设计容易实现,故实际设计中拟采用方案二。在本系统的电路设计方框图如图3.1.1.2所示,它由三部分组成:主控芯片89C51;数据显示部分;传感器部分。加热继电器单 片 机DS18B20LED显示指示灯图3.1.1 温度计电路总体设计方案(1)控制部分采用传统的数字模似电路,功能可以实现,但电路复杂,温度误差大,成本高,可靠性也比较差

6、;于是我选择采用单片机89C51控制,它结构简单,可以减少外围电路的搭接,并且89C51使用方便,成本比较低,性能稳定,还可以控制各模块输入输出。但是由于其不能直接进行模数转换,因此要做外围电路设计中加AD0809芯片。(2)显示部分TC1602的液晶字符性显示器也适合运用于此控制系统当中的,并且功能特性也适用于此设计系统的功能要求。但我还希望此显示系统中能同时显示时间(年月日),所以1602可能就显得力不从心了,于是我选择了液晶LED 12864,它的显示特性很适用此设计系统的功能要求,也不会造成资源浪费。(3)传感器部分DS18B20温度传感器是美国DALLAS半导体公司最新推出的一种改进

7、型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温。这一部分主要完成对温度信号的采集和转换工作,由DS18B20数字温度传感器及其与单片机的接口部分组成。数字温度传感器DS18B20把采集到的温度经数模转换后通过数据引脚传到单片机的P1口,单片机接受温度并存储。此部分只用到DS18B20、AD0809和单片机,硬件很简单。3.2水位检测系统 对于水位进行控制的方式有很多,而应用较多的主要有3种,三种方式的实现如下:方案一:简单的机械式控制方式。其常用形式有浮标式、电极式等,这种控制形式的优点是结构简单,成本低廉。存在问题是精度不高,不能进行数值显示,另外很容易引起误动作,且只

8、能单独控制,与计算机进行通信较难实现。方案二:利用单片机进行水位检测和控制,基于数字电路的全自动控制,其工作过程是被测水位经过模拟信号采集模块进行采样,然后把采样得到的模拟信号送入ADC0809进行A/D转换读入单片机,再由单片机进行处理,得出结果是否启动/停止控制电路A/D转换输出控制单片机控制水位水位传感器执行信号以达到水位的控制,具体硬件流程框图入图3.2.1所示。图3.2.1 方案二具体流程框图方案三:采用89C51单片机为核心控制器的电路。因为单片机电路结构简单成本低廉、可靠性高,便于实现各个控制功能能很好的完成设计任务。水位检测由本设计使用的RC充放电水位传感器通过检测来实现水位的

9、改变。然后通过A/D转换把信号输入到单片机,获得当前水位显示。综合以上三种方案,方案一和方案二由于缺少温度检测模块,而水温也是影响太阳能热水器很重要的一方面:比如说水箱中水温度过高导致水沸腾这时候虽然水所在刻度不是满的,实际上已经溢出,这样说来方案一和方案二的设计算不上智能。方案三是在方案二的基础上完善和加强的,采用单片机键的双边通信,比起方案二更加方便,也更加合理。四元件说明4.1 工作原理本文阐述了基于单片机的水温水位控制系统的设计方法,此种方法是以89C51单片机为主控制单元,对水温水位参数进行控制,从而提高了电器的工作稳定性。以DS18B20为温度传感器的对水温进行数据采集并实现温度控

10、制。该控制系统还可以实时存储相关的温度数据以及水位高度并能记录当前的时间。为了实现功能本系统设计了相关的硬件电路和相关应用程序。硬件电路主要包括89C51单片机最小系统,测温电路、测水位电路、LCD12864液晶显示电路以及报警电路、键盘输入参数等。系统程序主要包括主程序,读出温度子程序,计算温度子程序、水位显示子程序、按键处理程序、12864液晶显示程序以及数据存储程序以及时间显示程序等 4.2单片机的选择单片机的选择在整个系统设计中至关重要,要满足大内存、高速率、通用性、价格便宜等要求,本课题选择89C51作为主控芯片。89C51是一种带4K字节闪烁可编程可擦除只读存储器的低电压,高性能C

11、MOS8位微处理器,俗称单片机。它是美国ATMEL公司的低电压,高性能CMOS8位单片机。89C2051是一种带2K字节闪烁可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除100次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的89C51是一种高效微控制器,89C2051是它的一种精简版本。89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。 实物图如图4.1.2所示。 图4.1.2所示实物图1.2.1主要特性: 与MCS-51 兼容 4K字

12、节可编程闪烁存储器 寿命:1000写/擦循环 数据保留时间:10年 全静态工作:0Hz-24Hz 三级程序存储器锁定 128*8位内部RAM 32可编程I/O线 两个16位定时器/计数器 5个中断源 可编程串行通道 低功耗的闲置和掉电模式 片内振荡器和时钟电路 1.2.2管脚说明: VCC:供电电压。 GND:接地。 P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必

13、须被拉高。 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口输出地址的高八位。在给出

14、地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。 P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。 P3口也可作为AT89C51的一些特殊功能口,如下表所示: 口管脚 备选功能 P3.0 RXD(串行输入口) P3.1 TXD(串行输出口) P3.2 /INT0(外部中断0) P3.3 /INT1(外部中断1)

15、 P3.4 T0(记时器0外部输入) P3.5 T1(记时器1外部输入) P3.6 /WR(外部数据存储器写选通) P3.7 /RD(外部数据存储器读选通) P3口同时为闪烁编程和编程校验接收一些控制信号。 RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。 ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在 FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉

16、冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。引脚图如下图4.1.2.2所示 图4.1.2.2 引脚图 1.3温度传感器美国Dallas半导体公司的数字化温度传感器DS18B20是世界上第一片支持 "一线总线"接口的温度传感器,在其内部使用了在板(ON-B0ARD)专利技术。1.3.1 DS18B20性能及结构DS18B20原理与特性本系统采用了DS18B20单总线可编程温度传感器,来实现对温度的采集和转换,大大简化了电路的复杂度,以

17、及算法的要求。首先先来介绍一下DS18B20这块传感器的特性及其功能: DSl8B20的管脚及特点 DS18B20可编程温度传感器有3个管脚。内部结构主要由四部分组成:64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。DS18B20的外形及管脚排列如下图4.1.3.1图4.1.3.1 DS18B20的外形及管脚图GND为接地线,DQ为数据输入输出接口,通过一个较弱的上拉电阻与单片机相连。VDD为电源接口,既可由数据线提供电源,又可由外部提供电源,范围3O55 V。本文使用外部电源供电。主要特点有: 1. 用户可自设定报警上下限温度值。 2. 不需要外部组件,能测量55

18、+125 范围内的温度。 3. 10 +85 范围内的测温准确度为±05 。 4. 通过编程可实现9l2位的数字读数方式,可在至多750 ms内将温度转换成12 位的数字,测温分辨率可达00625 。 5. 独特的单总线接口方式,与微处理器连接时仅需要一条线即可实现与微处理器双向通讯。6. 测量结果直接输出数字温度信号,以"一线总线"串行传送给CPU,同时可传送CRC校验码,具有极强的抗干扰纠错能力。7. 负压特性:电源极性接反时,芯片不会因发热而烧毁,但不能正常工作。8. DS18B20支持多点组网功能,多个DS18B20可以并联在唯一的三线上,实现组网多点测温

19、。DS18B20的内部结构 DS18B20内部功能模块如图4.1.3.2所示, 图4.1.3.2 DS18B20内部功能模块1.3.2 DS18B20工作原理DS18B20的读写时序和测温原理与DS1820相同,只是得到的温度值的位数因分辨率不同DS18B20 为9位12位A/D转换精度,而DS1820为9位A/D转换,虽然我们采用了高精度的芯片,但在实际情况上由于技术问题比较难实现,而实际精度此时温度寄存器中的数值即为所测温度。斜率累加器用于补偿和修正测温过程中的非线性,其输出用于修正计数器1的预置值。如下图的测温原理图不同,且温度转换时的延时时间由2s减为750ms。 DS18B20测温原

20、理如图4.1.3.3所示。图中低温度系数晶振的振荡频率受温度影响很小,用于产生固定频率的脉冲信号送给计数器1。则高温度系数晶振随温度变化其振荡率明显改变,所产生的信号作为计数器2的脉冲输入。计数器1和温度寄存器被预置在55所对应的一个基数值时。计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当计数器1的预置值减到0时,温度寄存器的值将加1,计数器1的预置将重新被装入,计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到计数器2计数到0时,停止温度寄存器值。 图4.1.3.3 DS18B20原理图1.3.3 DS18B20使用中注意事项 DS18B20虽然具有测温系统简单、测

21、温精度高、连接方便、占用口线少等优点,但在实际应用中也应注意以下几方面的问题:   较小的硬件开销需要相对复杂的软件进行补偿,由于DS18B20与微处理器间采用串行数据传送,因此,在对DS18B20进行读写编程时,必须严格的保证读写时序,否则将无法读取测温结果。在使用PL/M、C等高级语言进行系统程序设计时,对DS18B20操作部分最好采用汇编语言实现。   在DS18B20的有关资料中均未提及单总线上所挂DS18B20数量问题,容易使人误认为可以挂任意多个DS18B20,在实际应用中并非如此。当单总线上所挂DS18B20超过8个时,就需要解决微处理器的

22、总线驱动问题,这一点在进行多点测温系统设计时要加以注意。   连接DS18B20的总线电缆是有长度限制的。试验中,当采用普通信号电缆传输长度超过50m时,读取的测温数据将发生错误。当将总线电缆改为双绞线带屏蔽电缆时,正常通讯距离可达150m,当采用每米绞合次数更多的双绞线带屏蔽电缆时,正常通讯距离进一步加长。这种情况主要是由总线分布电容使信号波形产生畸变造成的。因此,在用DS18B20进行长距离测温系统设计时要充分考虑总线分布电容和阻抗匹配问题。   在DS18B20测温程序设计中,向DS18B20发出温度转换命令后,程序要等待DS18B20的返回信号,

23、一旦某个DS18B20接触不好或断线,当程序读该DS18B20时,将没有返回信号,程序进入死循环。这一点在进行DS1820硬件连接和软件设计时也要给予一定的重视。 测温电缆线建议采用屏蔽4芯双绞线,其中一对线接地线与信号线,另一组接VCC和地线,屏蔽层在源端单点接地。1.4水位传感器ADC0809是美国国家半导体公司生产的CMOS工艺8通道,8位逐次逼近式A/D模数转换器。其内部有一个8通道多路开关,它可以根据地址码锁存译码后的信号,只选通8路模拟输入信号中的一个进行A/D转换。目前仅在单片机初学应用设计中较为常见。  1.4.1 主要特性1)8路输入通道,8位A/D转换器

24、,即分辨率为8位。2)具有转换起停控制端。3)转换时间为100s(时钟为640kHz时),130s(时钟为500kHz时)4)单个+5V电源供电5)模拟输入电压范围0+5V,不需零点和满刻度校准。6)工作温度范围为-40+85摄氏度7)低功耗,约15mW。1.4.2 内部结构ADC0809是CMOS单片型逐次逼近式A/D转换器,内部结构如图所示,它由8路模拟开关、地址锁存与译码器、比较器、8位开关树型A/D转换器、逐次逼近寄存器、逻辑控制和定时电路组成。外部特性(引脚功能)ADC0809芯片有28条引脚,采用双列直插式封装,如图所示。下面说明各引脚功能。IN0IN7:8路模拟量输入端。2-12

25、-8:8位数字量输出端。ADDA、ADDB、ADDC:3位地址输入线,用于选通8路模拟输入中的一路ALE:地址锁存允许信号,输入,高电平有效。START: A/D转换启动脉冲输入端,输入一个正脉冲(至少100ns宽)使其启动(脉冲上升沿使0809复位,下降沿启动A/D转换)。EOC: A/D转换结束信号,输出,当A/D转换结束时,此端输出一个高电平(转换期间一直为低电平)。OE:数据输出允许信号,输入,高电平有效。当A/D转换结束时,此端输入一个高电平,才能打开输出三态门,输出数字量。CLK:时钟脉冲输入端。要求时钟频率不高于640KHZ。REF(+)、REF(-):基准电压。Vcc:电源,单

26、一+5V。GND:地。1.5 显示元件TC1602的液晶字符性显示器也适合运用于此控制系统当中的,并且功能特性也适用于此设计系统的功能要求。但我还希望此显示系统中能同时显示时间(年月日),所以1602可能就显得力不从心了,于是我选择了液晶LED 12864,它的显示特性很适用此设计系统的功能要求,也不会造成资源浪费。其管脚说明如下表4.1.6所示。表4.1.6 液晶12864管脚说明管脚符号功能123 ,16,184567891011GNDVDDNCRSEDB0DB7PSBRSTLED+LED-接地接入+5V电源电压空高:数据(低:指令)高:读(低:写)使能端数据线控制模式系统复位背光电源,

27、+5V背光电源, 0V12864液晶的具体指令介绍DR为数据寄存器:简称DR,它们负责存储微机要写到CGRAM或DDRAM的数据,或者存储MCU要从CGRAM或DDRAM读出的数据。因此,可将DR视为一个数据缓冲区,当RS及RW引脚信号为1且Enable引脚信号由1变为0时,读取数据;当RS引脚信号为1,RW引脚信号为0且Enable引脚信号由1变为0时,存入数据。AC为地址计数器:简称AC,负责计数写读CGRAM或DDRAM的数据地址,AC依照MCU对LCD的设置值而自动修改它本身的内容。IR为指令寄存器:简称IR,负责存储MCU要写给LCD的指令码,当RS及RW引脚信号为0且Enable引

28、脚信号由1变为0时,D0D7引脚上的数据便会存入到IR寄存器中。BF为忙碌信号:简称BF,当BF为1时,不接收微机送来的数据或指令;当BR为0时,接收外部数据或指令,所以,在写数据或指令到LCD之前,必须查看BF是否为0。只要把数据写到文本显示RAM中,就能显示文本内容,具体流程如下:先设定工作模式,接着信号的检测,再数据的传送。ST7920的显示RAM中提供了8个乘以4行的汉字空间, 当RAM进行写入显示在文本时,CGROM、HCGROM与CGRAM的字型就会显示出。ST7920A可以显示三种字型,分别是显示半宽的HC-GROM字型、中文CGRAM字型和CGRAM字型,在DDRAM中写入编码

29、来进行设定选择哪种字型,各个字型的详细编码如下:半宽字型显示 :只将一位字节写入DDRAM中,编码范围为02-7FH。显示中文字形:将两字节编码写入DDRAM,编码范围为A1A0HF7FEHGB或编码为A140H-D75FH BIG5的码。显示CGRAM字型:需两个字节的编码写入DDRAM中来实现这种字型,总共有四种编码方式它们分别是0000H、0002H、0004H、0006H。液晶显示器与单片机连接基本要注意以下三点:1.若以CMOS芯片为单片机时不需要电平转换电路来转换;若其单片机为TTL芯片则必须配备电平转换电路。2.模块读或者写控制线为单选,必须加读或者写信号转换电路(对读、写控制线

30、分开的单片机)。3.对于模块确定的编码地址,应选择相对应的译码电路。本设计用的液晶4行汉字第一行为温度,第二行为水位,第三行、第四行空缺,在GB2312编码中查询“温度”和“水位”的四个字得到的16位编码分别为:#CEC2、#B6C8、#CBAE、#CEBB,每个字的编码分为高8位和低8位,写入时先写入高8位,再写入低8位即可。五硬件模块设计1.1单片机模块设计控制模块是整个设计方案的核心,它控制了温度的采集、处理与显示、温度值的设定与温度越限时控制电路的启动。本控制模块由单片机89C51及其外围电成,电路如图5.1.1所示。图5.1.1 单片机控制模块电路该电路采用按键加上电复位,S2为复位

31、按键,复位按键按下后,复位端通过51的小电阻与电源接通,迅速放电,使RST引脚为高电平,复位按键弹起后,电源通过8.2K的电阻对10KF的电容C5重新充电,RST引脚端出现复位正脉冲.AT89S51内部有一个高增益反相放大器,用于构成振荡器,但要形成时钟脉冲,外部还需附加电路,本设计采用内部时钟方式,利用芯片内部的振荡器,然后在引脚XTAL1和XTAL2两端跨接晶体振荡器,就构成了稳定的自激振荡器,发出的脉冲直接送入内部时钟电路,C6和C7的值通常选择为30pF左右,晶振Y1选择12MHz.为了减小寄生电容,更好地保证振荡器稳定、可靠地工作,振荡器电容应尽可能安装得与单片机引脚XTAL1和XT

32、AL2靠近。单片机的31脚(EA)接+5V电源,表示允许使用片内ROM。1.2温度检测模块温度由DALLAS 公司生产的一线式数字温度传感器DS18B20 采集。DS18B20 测温范围为-55°C+125°C,测温分辨率可达0.0625°C,被测温度用符号扩展的16 位补码形式串行输出。CPU 只需一根端口线就能与诸多DS18B20 通信,占用微处理器的端口较少,可节省大量的引线和逻辑电路。本设计采用三引脚PR-35封装的DS18B20,其引脚图见图5.1.2。Vcc接外部+5V电源,GND接地,I/O与单片机的P3.4(T0)引脚相连。 图5.1.2 温度传感

33、器电路引脚图 1.3水位检测模块1.3.1 传感器电路 系统选用B2119压阻式压力传感器,压阻式压力传感器是利用单晶硅的压阻效应制成的器件。这种传感器精度高、工作可靠,容易实现数字化,比应变式压力传感器体积小而输出信号大。它是目前压力测试中使用最多的一种传感器。压阻式压力传感器使用集成电路工艺技术,在硅片上制造出四个等值的薄膜电阻,并组成电桥电路,当不受到压力作用时,电桥处于平衡状态,无电压输出;当受到压力作用时,电桥失去平衡,电桥输出电压。电桥输出的电压与压力成正比例。其工作原理图如5.1.3.1所示图5.1.3.1压阻式压力传感器原理图1.3.2 时钟电路与复位电路要使单片机按照设计要求

34、正常工作,完整单片机最基本的工作要求,考虑到系统无需精确地定时功能,且为了方便串口通信波特率的计算,采用11.0592MHz的晶振提供系统时钟。并附加复位电路,组成单片机最小系统。复位操作有上电自动复位和按键手动复位两种方式。我们采用上电自动复位,其是通过外部复位电路的电容充电来实现的。其电路图如图2-16(a)所示。这样,只要电源的上升时间不超过1ms,就可以实现自动上电复位,即接通电源就完成了系统的复位初始化。关于参数的选定,在振荡稳定后应保证复位信号高电平持续时间大于2个机器周期。当采用的晶体频率为6 MHz时,可采用C=22µF,R=1k;当采用的晶体频率为12 MHz时,可

35、采用C=10µF,R=8.2k。图2-16复位电路如果上述电路复位不仅要使单片机复位,而且还要使单片机的一些外围芯片也同时复位,那么上述电阻、电容参考值应作少许调整。对于CMOS型的89C51,由于在RST端内部有一个下拉电阻,故可将外部电阻去掉,而将外接电容减至1µF。1.3.3 AD采集转换电路本系统A/D芯片所选用的是ADC0809,该大规模集成电路芯片是一种由单一+5V电源供电,采用逐次逼近转换原理,能够对8路0+5V输入模拟电压进行分时转换的八位并行通用型可编程模数转换器。ADC0809由单片机控制驱动,对传感器进行定式循环采集,然后单片机将各测量参数传至PC机,

36、进行后台数据处理。电路连接如图5.1.3.3。 图5.1.3.3 A/D转换电路图 1.3.4 按键设计键盘在单片机应用系统中是一个很关键的部件,它能实现向单片机系统输入数据、发送命令等功能,是人工干预单片机的主要手段。考虑到本设计实际需要的按键较少,故采用独立式键盘接口电路。在程序查询方式下,通过I/O端口读入按键状态,当有按键按下时,相应的I/O端口变为低电平,而未被按下的按键在上拉电阻作用下为高电平,这样通过读I/O口的状态判断是否有按键按下。图5.1.3.4 系统按键电路1.4 控制模块 控制电路与单片机的P0.2口相连,由于单片机输出控制信号非常微弱,需要用三极管来驱动外围电路,三极

37、管选用NPN型的 9014,当检测温度低于设定温度时,在单片机的P0.2口输出高电平控制信号,使三极管9014导通,使继电器两控制端产生压差,从而使继电器吸合,常开触点接通,控制外部电路对锅炉进行加热。控制电路电路图如图5.1.4所示。图5.1.4 控制电路1.5 驱动电路设计 在单片机控制系统中,需要用开关量去控制和驱动一些执行元件,如发光二极管、继电器等。但89C51单片机驱动能力有限,且高电平比低电平驱动低。一般情况下,需要加驱动接口电路,且用低电平驱动。如图5.1.5所示开 始初始化DS18B20显示当前温度判断当前温度值超过设定温度上限启动风扇降低温度红灯亮设定温度上、下限启动电热炉

38、升高温度是否低于设定温度下限是绿灯亮否图5.1.5驱动电路六软件设计1.1 系统软件设计整体思路程序设计语言有三种:机器语言、汇编语言和高级语言。机器语言是机器唯一能“懂”的语言,用汇编语言或高级语言编写的程序(称为源程序)最终都必须翻译成机器语言的程序(成为目标程序),计算机才能“看懂”,然后逐一执行。高级语言是面向问题和计算过程的语言,它可通过于各种不同的计算机,用户编程时不必仔细了解所用的计算机的具体性能与指令系统,而且语句的功能强,常常一个语句已相当于很多条计算机指令,于是用高级语言编制程序的速度比较快,也便于学习和交流,但是本系统却选用了汇编语言。原因在于,本系统是编制程序工作量不大

39、、规模较小的单片机微控制系统,使用汇编语言可以不用像高级语言那样占用较多的存储空间,适合于存储容量较小的系统。同时,本系统对位处理要求很高,需要解决大量的逻辑控制问题。1.2 温度检测系统1.2.1 系统流程图开始CPU初始化参数设定是否有按键采样子程序显示实时液位数据处理子程序控制电机启停按键处理是否图6.1.2.1 系统流程图1.2.2 程序编写程序的功能是:启动DS18B20测量温度,将测量值与给定值进行比较,若测得温度小于设定值,则进入加热阶段,置P1.1为低电平,这期间继续对温度进行监测,直到温度在设定范围内,置P1.1为高电平断开可控硅, 关闭加热器,等待下一次的启动命令。当测得温

40、度大于设定值,则进入降温阶段,则置P1.2为低电平,这期间继续对温度进行监测,直到温度在设定范围内,置P1.2为高电平断开,关闭风扇,等待下一次的启动命令。WR1:CLR P1.0MOV R3,#6DJNZ R3,$RRC AMOV P1.0,CMOV R3,#23DJNZ R3,$SETB P1.0NOPDJNZ R2,WR1RET; 读DS18B21.3 水位检测系统1.3.1系统主程序流程图系统主程序的功能主要是完成对单片机的初始化,设置警戒液位的上下限,实时显示液位值以及键盘扫描如图6.1.3.1所示图6.1.3.1 主程序流程图1.3.2 显示与A/D转换的数据处理系统中,显示输出的

41、要求为压缩BCD码,而A/D转换输入的数据是8位16进制码,因此在实现显示之前需要编码的转换。对8位A/D转换器而言,其十六进制、相对满偏电压比率、相对电压幅值的关系对应如表6.1.3.2:十六进制二进制满刻度比率相对电压幅值Vref=2.5V高四位低四位高四位电压低四位电压F111115/1615/2564.8000.320E111014/1614/2564.4800.280D110113/1613/2564.1600.260C110012/1612/2563.8400.240B101111/1611/2563.5200.220A101010/1610/2563.2000.200910019

42、/169/2562.8800.180010008/168/2562.5600.160701117/167/2562.2400.140601106/166/2561.9200.120501015/165/2561.6000.100401004/164/2561.2800.080300113/163/2560.9600.060200102/162/2560.6400.040100011/161/2560.3200.020000000/160/2560.0000.000 表6.1.3.2 A/D转换幅值数据关系对照表显示转换部分程序简略如下:uchar dis_transform(uchar num

43、)uchar ac, quotient, play, mid ;ac = num%5;quotient = (num-ac)/5;if(ac>2)quotient+;ac=quotient%10;mid=(quotient-ac)/10;play=ac+mid*16;return play;1.3.3 系统主程序ORG 0000HAJMP MAINORG 0060HMAIN: MOV P1, #FFH ; P1 P3口初始化置1MOV P3,#FFHJNB P1.3 , AVT ; 若手动在自动位置,跳到自动模式程序AJMP MEN ; 否则转到手动模式子程序ENDAUT: NOP(空命

44、令)JNB P1.2 , LG ; 水位高LGJB P1.1 LD , ; 水位没低-LDCLR P3.1 ; 水位低报警JB P1.0, LDD ; 水位未低低-LDDCLR P3.0 ; 水位低低报警JNB 3.1 P1.6, Y1 ; M1已启动Y1CLR P1.4 ; 否则启动M1Y1:JNB P1.7 ,Y2 ; M2已启动-Y2 CLR P1.5 ; 否则启动M2Y2:ACALL DELAY ; 延时1分钟 AJMP AUT ; 返回自动模式LDD: JNB P1.6 ,Y3 ; 单独运行M1(LDD水位LD)CLR P1.4Y3: JB P1.7 Y2 SETB P1.5 AJM

45、P Y2 LG:CLR P3.2 ; 水位高报警 LD: AJMP MAIN ; 返回主程序 1.4 DS18B20主程序#include<reg51.h>#define uchar unsigned char#define uint unsigned intsbit DQ=P37;/ds18b20与单片机连接口sbit RS=P30;sbit RW=P31;sbit EN=P32;unsigned char code str1=" "unsigned char code str2=" "uchar fCode8;uchar data dis

46、data5;uint tvalue;/温度值uchar tflag;/温度正负标志七结论本文详细介绍了基于单片机89C51的温度控制系统的设计方案与软硬件实现。系统包括数据采集模块,单片机控制模块,显示模块和温度设置模块,驱动电路五个部分。文中对每个部分功能、实现过程作了详细介绍。完成了课题既定的任务,达到了预期的目标。系统具有如下特点:.采用智能温度传感器DS18B20采集温度数据,简化了硬件电路设计,温度采集数据更加精准;.89C51单片机的采用,有利于功能扩展;.电路设计充分考虑了系统可靠性和安全性。本课题软件和硬件相结合,有相当的难度,同时也有很大的实用性。八参考文献1 马忠梅.单片机

47、的C语言应用程序设计M.北京:北京航空航天大学出版社,1998 2 李晓荃.单片机原理与应用M.北京:电子工业出版社,2000年8月3 何立民 AVR单片机原理与接口技术M.北京:北京航空航天大学出版社,20024 杨帮文 新型继电器实用手册M.北京:北京人民邮电出版社.2004附 录单片机与显示器件连接图 系统软件源代码#include <reg52.h>#include <intrins.h>#define uchar unsigned charuchar hostmark;uchar idata sec,min,hr,date,mon,day,year;uchar

48、 idata uplq,downlq,numm,prelq,xdat,key;uchar xdata * idata numtab;uchar xdata * idata xmark;uchar idata num1,num2;int tab;uchar bdata iodat;uchar bdata ddat;sbit iodat7=iodat7;sbit ddat0=ddat0;sbit SCLK=P10;sbit IO_DATA=P11;sbit RST=P12;sbit adRD=P13;sbit adWR=P14;sbit E=P15;sbit DIS=P16;sbit RELAY=

49、P17;/*延迟子程序*yanshi()int i,j;for(i=0;i<120;i+)for(j=0;j<120;j+);/显示转换*uchar dis_transform(uchar num)uchar ac,quotient,play,mid;ac=num%5;quotient=(num-ac)/5;if(ac>2)quotient+;ac=quotient%10;mid=(quotient-ac)/10;play=ac+mid*16;return play;/液位显示*display()DIS=0;_nop_();_nop_();_nop_();_nop_();_n

50、op_();P0=dis_transform(prelq);_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();DIS=1;/*/DS1302读写*ds_read()uchar j;iodat=0x00;for(j=8;j>0;j-)iodat=iodat>>1;iodat7=IO_DATA;_nop_();SCLK=1;_nop_();SCLK=0;ds_write(uchar ad)uchar i;ddat=ad;for(i=8;i>0;i-)IO_DATA=ddat0;_nop_();SCLK=1;_nop_();ddat=ddat>>1;SCLK=0;/读取时间*uchar ds_gettime(uchar gadd) RST=0;_nop_();SCLK=0;_nop_();RST=1;ds_write(gadd);IO_DATA=1;ds_read();RST=0;return iodat; /设置时间*ds_settime(uchar sadd,uchar sdat)RST=0;_nop_();SCLK=0;_nop_();RST=1;ds_write(sadd);ds_write(sdat);RST=0;/*/*ad

温馨提示

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

评论

0/150

提交评论