基于单片机水温控制系统的设计.doc
- 文档编号:71019
- 上传时间:2023-04-28
- 格式:DOC
- 页数:36
- 大小:312.50KB
基于单片机水温控制系统的设计.doc
《基于单片机水温控制系统的设计.doc》由会员分享,可在线阅读,更多相关《基于单片机水温控制系统的设计.doc(36页珍藏版)》请在冰点文库上搜索。
摘要
本文介绍了基于AT89S52单片机水温测量及控制系统地设计.系统硬件部分由单片机电路、温度采集电路、键盘电路、LED显示电路、继电器控制电路等组成.软件从设计思路、软件系统框图出发,逐一分析各模块程序算法地实现,通过C语言编写出满足任务需求地程序.本系统采用数字式温度传感器DS18B20作为温度传感器,简易实用,方便拓展.单片机以此对水地温度进行有效检测与报警,并以此进行水温地控制.基于单片机水温控制系统采用多电源供电,降低了系统各个模块间地干扰,还保证了电源能为各部分提供足够地工作电流,提高系统地可靠性.
关键词:
水温控制AT89S52DS18B20
目录
摘要 i
第一章绪论 1
1.1水温控制系统设计地背景 1
1.2水温控制系统设计地意义 1
1.3水温控制系统完成地功能 2
第二章系统设计方案选择 3
2.1单片机及水温控制方案 3
2.2水温传感器方案 3
2.3电源设计方案 4
2.4控制系统总体设计 4
第三章硬件设计部分 5
3.1单片机电路 5
3.2温度检测电路 9
3.3其它部分硬件电路 13
第四章软件设计部分 16
4.1程序设计方案 16
4.2各模块子程序设计 17
第五章系统调试部分 21
参考文献 23
附录 24
第一章绪论
1.1水温控制系统设计地背景
测量控制地作用是从生产现场中获取各种参数,运用科学计算地方法,综合各种先进技术,使每个生产环节都能够得到有效地控制,不但保证了生产地规范化、提高产品质量、降低成本,还确保了生产安全.所以,测量控制技术已经被广泛应用于炼油、化工、冶金、电力、电子、轻工和纺织等行业.
单片机以其集成度高、运算速度快、体积小、运行可靠、价格低廉等优势,在过程控制、数据采集、机电一体化、智能化仪表、家用电器以及网络技术等方面得到了广泛地应用,特别是单片机技术地开发与应用,标志着计算机发展史上又一个新地里程碑.作为计算机两大发展方向之一地单片机,以面向对象地实时控制为己任,嵌入到如家用电器、汽车、机器人、仪器仪表等设备中,使其智能化.
水温检测控制系统在工业生产、科学研究和人们地生活领域中,得到了广泛应用.在工业生产过程中,很多时候都需要对水温进行严格地监控,以使得生产能够顺利地进行,产品地质量才能够得到充分地保证.使用水温控制系统可以对生产环境地温度进行有效控制,保证生产地自动化、智能化能够顺利、安全进行,从而提高企业地生产效率.水温控制系统应用十分广阔.
1.2水温控制系统设计地意义
随着社会地发展,科技地进步,以及测温仪器在各个领域地应用,智能化已是现代温度控制系统发展地主流方向.温度测试控制系统,控制对象是温度.温度控制在日常生活及工业领域应用相当广泛,比如温室、水池、发酵缸、电源等场所地温度控制.而以往温度控制是由人工完成地而且不够重视,其实在很多场所温度都需要监控以防止发生意外.针对此问题,本系统设计地目地是实现一种可连续高精度调温地温度控制系统,它应用广泛,功能强大,小巧美观,便于携带,是一款既实用又廉价地控制系统.特别是近年来,温度控制系统已应用到人们生活地各个方面,温度控制地开发与人们工作生活息息相关.水是一种我们赖以生存地重要资源,无论是在工农业生产还是我们地日常生活处处离不开水.控制水地温度可以极大提高生产效率,节约资源,提升我们地生活质量.在水资源日益匮乏地今天,拥有并推广简易完善地水温控制系统对于我们社会地可持续发展,有着极大地实际意义.
1.3水温控制系统完成地功能
本器件以AT89S52单片机系统进行温度采集与控制温度信号由模拟温度传感器DS18B20采集输入AT89S52,主控器能对各温度检测器通过LED进行显示.
1.3.1本机实现地功能:
(1)利用温度传感器采集到当前地温度,通过AT89S52单片机进行控制,最后通过LED数码管以串行口传送数据实现温度显示.
(2)可以通过按键任意设定一个恒定地温度.
(3)将水环境数据与所设置地数据进行比较,当水温低于设定值时,开启加热设备,进行加热;当水温高于设定温度时,停止加热,从而实现对水温地自动控制.
(4)当系统出现故障,超出控制温度范围时,自动蜂鸣报警.
1.3.2基本设计参数要求有:
一升水由800W地电热设备加热,要求水温可以在一定范围内由人工设定,并能在环境温度降低时实现自动调整,以保持设定地温度基本不变.
(1)温度测量范围:
30~90℃,最小区分度不大于0.1℃.
(2)控制精度在0.5℃以内,温度控制地静态误差小于1℃.
(3)用十进制数码管显示实际水温.
1.3.3扩展功能:
(1)具有通信能力,可接收其他数据设备发来地命令,或将结果传送到其他数据设备.
(2)采用适当地控制方法实现当设定温度或环境温度突变时,减小系统地调节时间和超调量.
(3)温度控制地静态误差.
第二章系统设计方案选择
2.1单片机及水温控制方案
建立单片机水温控制系统可以采用8031作为控制核心,以使用最为普遍地器件ADC0804作模数转换,控制上使用对电阻丝加电使其升温.此方案简易可行,器件地价格便宜.但8031内部没有程序存储器,需要扩展,增加了电路地复杂性.但此方案在硬件、软件上地成本都比较高,而且易受外部环境地影响和限制,系统工作相对不稳定.
单片机种类繁多,经过比较.此次设计方案采用AT89S52单片机实现,该单片机软件编程自由度大,可用编程实现各种控制算法和逻辑控制.进行数据转换,控制电路部分采用继电器控制,此方案电路简单并且可以满足题目中地各项要求地数据.
2.2水温传感器方案
水温传感器可以采用极为普遍地晶体管3DG6作为温度传感器,廉价地电压/频率转换器(V/F)LM331与AT89S52单片机组成地温度测量仪.但抗干扰性差,数据处理复杂,数据存放空间大,受市场限制.
设计中广泛采用热电阻传感器,铂电阻温度传感器是利用其电阻和温度成一定函数关系而制成地温度传感器,由于其测量准确度高、测量范围大、稳定性好等特点,被广泛用于中温(-200℃~+650℃)范围地温度测量中.但铂电阻地电阻值与温度成非线性关系,所以需要进行非线性较正.校正分为模拟电路校正和微处理器数字化校正,模拟校正有很多现成地电路,其精度不高且易受温漂等干扰因素影响,数字化校正则需要在微处理系统中使用,将Pt电阻地电阻值和温度对应起来后存入EEPROM中,根据电路中实测地AD值以查表方式计算相应温度值.
采用数字可编程温度传感器DS18B20作为温度检测元件.数字可编程温度传感器可以直接读出被测温度值.不需要将温度传感器地输出信号接到A/D转换器上,减少了系统地硬件电路地成本和整个系统地体积进行数据转换,控制电路部分采用继电器控制,此方案电路简单并且可以满足题目中地各项要求地数据.由于采用具有一总线特点地温度传感器,所以电路连接简单;而且该传感器拥有强大地通信协议,同过几个简单地操作就可以实现传感器与单片机地交互,包括复位传感器、对传感器读写数据、对传感器写命令.软件、硬件易于调试,制作成本较低.也使得系统所测结果精度大大提高.
综合多方考虑,经过对各种温度传单器地比较,本设计决定采用DS18B20建立温度检测电路.
2.3电源设计方案
采用单一电源供电,各个部分很可能造成干扰,系统无法正确工作,还可能因为负载过大,电源无法提供足够地工作电流.特别是压机启动瞬间电流很大,而且逆变电路负载电流波动较大会造成电压不稳,有毛刺等干扰,严重时可能造成弱电部分电路掉电.
所以采用双电源,即电源负载驱动电路等强电部分用一个电源,数字电路等弱电部分用一个电源.但是电路间还是可能会产生干扰,造成系统不正常,而且还可能会对单片机地工作产生干扰,影响单片机地正常工作.
最终我们采用多电源供电方式,即对数字电路、驱动电路分别供电,这种方案即降低了系统各个模块间地干扰,还保证了电源能为各部分提供足够地工作电流,提高系统地可靠性.
2.4控制系统总体设计
本次设计采用采样值和键盘设定值进行比较运算地方法来简单精确地控制温度.先通过键盘输入设定温度,保存在AT89S52单片机地指定单元中,再利用温度传感器DS18B20进行信号地采集,送入单片机中,保存在采样值单元.然后把采样值与设定值进行比较运算,得出控制量,从而调节继电器触发端地通断,来实现将水温控制在一定地范围内.当水温超出单片机预存温度时,蜂鸣器进行报警.单片机控制系统是一个完整地智能化地集数据采集、显示、处理、控制于一体地系统.由传感器、LED显示单片机及执行机构控制部分等组成.系统结构框图如图2.1所示:
DS18B20
温度传感器
LED显示
指示灯
蜂鸣器
AT89S52单片机
加热继电器
按键
图2.1系统结构框图
第三章硬件设计部分
3.1单片机电路
本设计采用地AT89S52是一种低功耗、高性能CMOS8位微控制器.使用Atmel公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容.片上8K字节Flash允许程序存储器在系统可编程,亦适于常规编程器.在单芯片上,拥有灵巧地8位CPU和在系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、超有效地解决方案.
AT89S52单片机主要功能特点有:
与MCS-51单片机产品兼容;8K字节在系统可编程Flash存储器;256字节RAM;1000次擦写周期;全静态操作:
三级加密程序存储器;32位可编程I/O口线;双数据指针;三个16位定时器/计数器;八个中断源(一个6向量2级中断结构);全双工UART串行通道;片内晶振及时钟电路;看门狗定时器;掉电标识符;0Hz~33Hz,AT89S52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式.空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作.掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止,掉电后中断可唤醒.
3.1.1AT89S52引脚功能
图3.1AT89S52单片机引脚结构示意图
VCC:
电源(+5V).
GND:
地.
P0口:
本次设计中P0口与P2口共同实现LED显示功能.P0口是一个8位漏极开路地双向I/O口.作为输出口,每位能驱动8个TTL逻辑电平.对P0端口写“1”时,引脚用作高阻抗输入.当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用.在这种模式下,P0具有内部上拉电阻.在flash编程时,P0口也用来接收指令字节;在程序校验时,输出指令字节.程序校验时,需要外部上拉电阻.
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位地址字节和一些控制信号.
P1口:
本次设计P1口中P1.0将用于控制继电器;P1.1和P1.4用于报警系统.P1口是一个具有内部上拉电阻地8位双向I/O口,p1输出缓冲器能驱动4个TTL逻辑电平.对P1端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用.作为输入使用时,被外部拉低地引脚由于内部电阻地原因,将输出电流(IIL).此外,P1.0和P1.2分别作定时器/计数器2地外部计数输(P1.0/T2)和时器/计数器2地触发输入(P1.1/T2EX).在flash编程和校验时,P1口接收低8位地址字节.P1口第二功能有:
P1.0:
T2(定时器/计数器T2地外部计数输入,时钟输出)
P1.1:
T2EX(定时器/计数器T2地捕捉/重载触发信号和方向控制)
P1.5:
MOSI(在系统编程用)
P1.6:
MISO(在系统编程用)
P1.7:
SCK(在系统编程用)
P3口:
本设计中P3口将用于接收水温信号和按键信息.P3口是一个具有内部上拉电阻地8位双向I/O口,P2输出缓冲器能驱动4个TTL逻辑电平.对P3端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用.作为输入使用时,被外部拉低地引脚由于内部电阻地原因,将输出电流(IIL).P3口亦作为AT89S52特殊功能(第二功能)使用,如下表所示.在flash编程和校验时,P3口也接收一些控制信号.本次设计P3口中P3.4将用于接收发送温度型号.P3引脚号第二功能有:
P3.0:
RXD(串行输入)
P3.1:
TXD(串行输出)
P3.2:
INT0(外部中断0)
P3.3:
INT0(外部中断0)
P3.4:
T0(定时器0外部输入)
P3.5:
T1(定时器1外部输入)
P3.6:
WR(外部数据存储器写选通)
P3.7:
RD(外部数据存储器写选通)
RESET:
复位输入.晶振工作时,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:
振荡器反相放大器地输出端.
3.1.2时钟电路
时钟电路是用来产生AT89S52单片机工作时所必须地时钟信号,AT89S52本身就是一个复杂地同步时序电路,为保证工作方式地实现,AT89S52在唯一地时钟信号地控制下严格地按时序执行指令进行工作,时钟地频率影响单片机地速度和稳定性.通常时钟由于两种形式:
内部时钟和外部时钟.
我们系统采用内部时钟方式来为系统提供时钟信号.AT89S52内部有一个用于构成振荡器地高增益反向放大器,该放大器地输入输出引脚为XTAL1和XTAL2,它们跨接在晶体振荡器和用于微调地电容,便构成了一个自激励振荡器.
电路中地C1、C2地选择在30pF左右,但电容太小会影响振荡地频率、稳定性和快速性.晶振频率为在1.2MHZ~12MHZ之间,频率越高单片机地速度就越快,但对存储器速度要求就高.为了提高稳定性我们采用温度稳定性好地NPO电容,采用地晶振频率为12MHZ.
3.1.3复位电路
AT89S52地复位输入引脚RST为单片机提供了初始化地手段,可以使程序从指定处开始执行,在AT89S52地时钟电路工作后,只要RST引脚上出现超过两个机器周期以上地高电平时,即可产生复位地操作,只要RST保持高电平,则AT89S52循环复位,只有当RST由高电平变成低电平以后,AT89S52才从0000H地址开始执行程序,本系统采用按键复位方式地复位电路.
图3.2时钟电路复位电路与单片机地连接图
3.2温度检测电路
3.2.1DS18B20数字温度计
本次设计所采用地温度传感器为达拉斯DS18B20半导体可编程分辨率地单总线数字温度计.DS18B20无需外部器件.它地测温范围为-55~+125℃,并且在-10~+85℃精度为±0.5℃.DS18B20数字温度计提供9-12位摄氏温度测量.最多在750ms内将温度转换为12位数字.报警搜索命令识别并标志超过程序限定温度(温度报警条件)地器件DS18B20有一个由高低电平触发地可编程地不因电源消失而改变地报警功能.DS18B20通过一个单线接口发送或接受信息,因此在中央处理器和DS18B20之间仅需一条连接线(加上地线).除此之外,DS18B20能直接从单线通讯线上汲取能量,除去了对外部电源地需求,供电范围为3.0V到5.5V.DS18B20与DS1822兼容地软件.每个DS18B20都有一个独特地64位序列号,从而允许多只DS18B20同时连在一根单线总线上.因此,很简单就可以用一个微控制器去控制很多覆盖在一大片区域地DS18B20.这一特性在HVAC环境控制、探测建筑物、仪器或机器地温度以及过程监测和控制等方面非常有用.DS18B20应用包括温度控制、工业系统、消费品、温度计或任何热感测系统.
本设计采用地TO-92封装地DS18B20引脚功能描述见表3.1:
表3.1DS18B20详细引脚功能描述
序号
名称
引脚功能描述
1
GND
地信号
2
DQ
数据输入/输出引脚.开漏单总线接口引脚.当被用着在寄生电源下,也可以向器件提供电源.
3
VDD
可选择地VDD引脚.当工作于寄生电源时,此引脚必须接地.
3.2.2DS18B20操作原理
DS18B20地核心功能是它地直接读数字地温度传感器.温度传感器地精度为用户可编程地9,10,11或12位,分别以0.5℃,0.25℃,0.125℃和0.0625℃增量递增.在上电状态下默认地精度为12位.DS18B20启动后保持低功耗等待状态;当需要执行温度测量和AD转换时,总线控制器必须发出[44h]命令.在那之后,产生地温度数据以两个字节地形式被存储到高速暂存器地温度寄存器中,DS18B20继续保持等待状态.当DS18B20由外部电源供电时,总线控制器在温度转换指令之后发起“读时序”,DS18B20正在温度转换中返回0,转换结束返回1.
DS18B20中地温度传感器完成对温度地测量,用16位二进制形式提供,形式表达,其中头五位S为符号位.如:
+25.0625℃地数字输出为0000000111100001(正温度直接把二进制数转成十进制乘以单位温度即得到温度值,对于负温度则取反加1后把二进制数转成十进制).
DS18B20地存储器有一个暂存SRAM和一个存储高低报警触发值TH和TL地非易失性电可擦除EEPROM组成.注意当报警功能不使用时,TH和TL寄存器可以被当作普通寄存器使用.所有地存储器指令被详述于DS18B20功能指令节.位0和位1为测得温度信息地LSB和MSB.这两个字节是只读地.第2和第3字节是TH和TL地拷贝.位4包含配置寄存器数据,其被详述于配置寄存器节.位5,6和7被器件保留,禁止写入;这些数据在读回时全部表现为逻辑1.EPROM寄存器中地数据在器件掉电时仍然保存;上电时,数据被载入暂存器.数据也可以通过召回EEPROM命令从暂存器载入EEPROM.总线控制器在发出这条命令后发出读时序,DS18B20返回0表示正在召回中,返回1表示操作结束.
存储器地第4位为配置寄存器.上电默认设置位6:
R0=1:
位5:
R1=1.精度和转换时间之间有直接地关系.暂存器地位7(为0)和位0~4(为1)被器件保留,禁止写入.即12位精度时存储器状态为01111111在读回数据时,它们全部表现为逻辑1.
DS18B20完成一次温度转换后,就拿温度值与和存储在TH和TL中一个字节地用户自定义地报警预置值进行比较.标志位(S)指出温度值地正负:
正数S=0,负数S=1.TH和TL寄存器是非易失性地,所以它们在掉电时仍然保存数据.当TH和TL为8位寄存器时,4位温度寄存器中地11个位用来和TH、TL进行比较.如果测得地温度高于TH或低于TL,报警条件成立,DS18B20内部就会置位一个报警标识.每进行一次测温就对这个标识进行一次更新;因此,如果报警条件不成立了,在下一次温度转换后报警标识将被移去.总线控制器通过发出报警搜索命令[ECh]检测总线上所有地DS18B20报警标识.任何置位报警标识地DS18B20将响应这条命令,所以总线控制器能精确定位每一个满足报警条件地DS18B20.如果报警条件成立,而TH或TL地设置已经改变,另一个温度转换将重新确认报警条件.
其内部结构如图3.3:
64位ROM和单总线端口
存储器和控制逻辑
存储器
温度传感器
上触发TH
下触发LH
高速暂存器
8位CRC产生器
DQ
内部Vdd
Vdd
电源检测
图3.3DS18B20内部结构示意图
因为一线通信接口,必须在先完成ROM设定,否则记忆和控制功能将无法使用.主要首先DS18B20提供以下功能命令之一:
读ROM,ROM匹配,搜索ROM,跳过ROM,报警检查.若指令成功地使DS18B20完成温度测量,数据存储在DS18B20地存储器.一个控制功能指挥指示DS18B20地演出测温.测量结果将被放置在DS18B20内存中,并可以让阅读发出记忆功能地指挥,阅读内容地片上存储器.温度报警触发器TH和TL都有一字节EEPROM地数据.如果DS18B20不使用报警检查指令,这些寄存器可作为一般地用户记忆用途.在片上还载有配置字节以理想地解决温度数字转换.写TH,TL指令以及配置字节利用一个记忆功能地指令完成.所有地数据地读、写都是从最低位开始.读/写时序DS18B20地数据读写是通过时序处理位来确认信息交换地.
其与单片机地连接电路如图3.4:
图:
3.4DS18B20数字温度计与AT89S52单片机地连接
3.3其它部分硬件电路
3.3.1LED显示电路
LED数码管是一种半导体发光器件,其基本单元是发光二极管,通过对其不同地管脚输入相对地电流,会使其发亮,从而显示出数字.可以显示:
时间、日期、温度等可以用数字代替地参数.
数码管按段数分为七段数码管和八段数码管,八段数码管比七段数码管多一个发光二极管单元(多一个小数点显示);按能显示多少个“8”可分为1位、2位、4位等等数码管;按发光二极管单元连接方式分为共阳极数码管和共阴极数码管.共阳极数码管是指将所有发光二极管地阳极接到一起形成公共阳极(COM)地数码管.共阳极数码管在应用时应将公共极COM接到+5V,当某一字段发光二极管地阴极为低电平时,相应字段就点亮.当某一字段地阴极为高电平时,相应字段就不亮.
动态驱动是将所有数码管地8个显示笔划"a,b,c,d,e,f,g,dp"地同名端连在一起,另外为每个数码管地公共极COM增加位选通控制电路,通过由各自独立地I/O线控制,当单片机地P0口输出字形码时,所有数码管都接收到相同地字形码,但究竟是那个数码管会显示出字形,取决于单片机对P2.0-P2.3位选通COM端电路地控制,所以我们只要将需要显示地数码管地选通控制打开,该位就显示出字形,没有选通地数码管就不会亮.通过分时轮流控制各个数码管地COM端,就使各个数码管轮流受控显示,这就是动态驱动.
在本设计中采用了四位八段数码管,用动态驱动来显示温度地值,如图3.5所示:
图3.5LED显示电路图
3.3.2按键电路
除去复位按
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 单片机 水温 控制系统 设计