电冰箱温度控制系统设计.docx
《电冰箱温度控制系统设计.docx》由会员分享,可在线阅读,更多相关《电冰箱温度控制系统设计.docx(28页珍藏版)》请在冰豆网上搜索。
电冰箱温度控制系统设计
电冰箱温度控制系统设计
电冰箱温度控制系统设计
一、引言
电冰箱是每个家庭现代化厨房必备的家用电器之一,它是利用电能在箱体内形成低温环境,用于冷藏冷冻各种食品和其他物品的家用电器设备。
它的主要任务就是控制压缩机、化霜加热等来保持箱内食品的最佳温度达到食品保鲜的目的,即保证所储存的食品在经过冷冻或冷藏之后保持色、味、水分、营养基本不变。
从1918年世界上第一台电机压缩式电冰箱研制成功,随着科学技术的飞速发展电冰箱也在不断的演变和更新尤其是近年来高新技术的迅猛崛起更使得电冰箱的发展日新月异。
现代社会每一个家庭都处在快节奏的生活中人们大多已无闲暇的时间和精力花费在经常性的采购日常生活用品上。
因此集中时间大量采购的新型生活方式已为越来越多的人所接受从而决定了大容量电冰箱将是一种国际化的发展趋势。
传统的机械式直冷式电冰箱的控制原理是根据蒸发器的温度控制制冷压缩机的启、停,使电冰箱内的温度保持在设定温度范围内。
一般,当蒸发器温度升至3~5℃时启动压缩机制冷;当温度低于-10~-20℃时停止制冷,关断压缩机。
随着微机技术的飞速发展,单片机以其体积小、价格低、应用灵活等优点在家用电器、仪器仪表等领域中得到了广泛的应用。
采用单片机进行控制,可以使电冰箱的控制更准确、灵活、直观。
本次所设计的就是基于51单片机的电冰箱温度控制系统,以AT89C51单片机为核心控制压缩机的启动和停止,解决了传统电冰箱控制系统存在的不足,可以使控制更准确、更灵活。
本次设计的目的是设计一个温度控制系统,要求:
1.利用键盘分别控制冷藏室、冷冻室温度(0~5℃,-7~-18℃);
2.显示各室的温度值;
3.制冷压缩机运行后若突然断电要有30秒延时;
4.各个门开后超过2分钟要报警。
本次设计的意义是通过此次设计加深对测控系统原理与设计课程的理解,掌握微机化测控系统设计的思路,了解一般设计过程。
二、电冰箱温度控制系统硬件电路设计
1.总体设计方案
以AT89S51单片机为核心,来实现各个模块的功能。
温度传感器模块、键盘输入模块作为系统的输入模块,液晶显示模块、温度控制器模块、报警模块作为系统的输出模块,构成基本电路,原理框图如图2-1所示:
温度传感器(经指导老师建议,使用DS18B20,因其自带A/D转换模块)从设备环境的不同位置采集温度,单片机AT89S51获取采集的温度值,经处理得到当前环境中一个比较稳定的温度值,再根据当前设定的温度上下限值,通过加热和降温对当前温度进行调整。
当采集的温度经处理后超过设定温度上限时,单片机通过三极管驱动继电器开启降温设备(压缩制冷器),当采集的温度经处理后低于设定温度下限时,单片机通过三极管驱动继电器开启升温设备(加热器)。
图2-1冰箱控制原理图
当由于环境温度变化太剧烈或由于加热或降温设备出现故障,或者温度传感头出现故障导致在一段时间内不能将环境温度调整到规定的温度限内的时候,单片机通过三极管驱动扬声器发出警笛声。
系统中将通过串口通讯连接PC机存储温度变化时的历史数据,以便观察整个温度的控制过程及监控温度的变化全过程。
2.主控制部分方案
AT89S51是一个低功耗,高性能CMOS8位单片机,片内含4kBytesISP(In-systemprogrammable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISPFlash存储单元,AT89S51在众多嵌入式控制应用系统中得到广泛应用。
2.1AT89S51主要性能特点
1、4kBytesFlash片内程序存储器;
2、128bytes的随机存取数据存储器(RAM);
3、32个外部双向输入/输出(I/O)口;
4、2个中断优先级、2层中断嵌套中断;
5、6个中断源;
6、2个16位可编程定时器/计数器;
7、2个全双工串行通信口;
8、看门狗(WDT)电路;
9、片内振荡器和时钟电路;
10、与MCS-51兼容;
11、全静态工作:
0Hz-33MHz;
12、三级程序存储器保密锁定;
13、可编程串行通道;
14、低功耗的闲置和掉电模式。
2.2管脚说明
VCC:
电源电压输入端。
GND:
电源地。
P0口:
P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。
当P1口的管脚第一次写1时,被定义为高阻输入。
P0能够用于外部程序数据存储器,它可以被定义为数据/地址的低八位。
在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。
PDIP封装的AT89S51管脚图
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口除了作为普通I/O口,还有第二功能:
P3.0RXD(串行输入口)
P3.1TXD(串行输出口)
P3.2/INT0(外部中断0)
P3.3/INT1(外部中断1)
P3.4T0(T0定时器的外部计数输入)
P3.5T1(T1定时器的外部计数输入)
P3.6/WR(外部数据存储器的写选通)
P3.7/RD(外部数据存储器的读选通)
P3口同时为闪烁编程和编程校验接收一些控制信号。
I/O口作为输入口时有两种工作方式,即所谓的读端口与读引脚。
读端口时实际上并不从外部读入数据,而是把端口锁存器的内容读入到内部总线,经过某种运算或变换后再写回到端口锁存器。
只有读端口时才真正地把外部的数据读入到内部总线。
89C51的P0、P1、P2、P3口作为输入时都是准双向口。
除了P1口外P0、P2、P3口都还有其他的功能。
RST:
复位输入端,高电平有效。
当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
ALE/PROG:
地址锁存允许/编程脉冲信号端。
当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的低位字节。
在FLASH编程期间,此引脚用于输入编程脉冲。
在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。
因此它可用作对外部输出的脉冲或用于定时目的。
然而要注意的是:
每当用作外部数据存储器时,将跳过一个ALE脉冲。
如想禁止ALE的输出可在SFR8EH地址上置0。
此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。
另外,该引脚被略微拉高。
如果微处理器在外部执行状态ALE禁止,置位无效。
PSEN:
外部程序存储器的选通信号,低电平有效。
在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。
但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
EA/VPP:
外部程序存储器访问允许。
当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。
注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。
在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
XTAL1:
片内振荡器反相放大器和时钟发生器的输入端。
XTAL2:
片内振荡器反相放大器的输出端。
2.3下载程序
AT89SXX系列单片机实现了ISP下载功能,故而取代了89CXX系列的下载方式,也是因为这样,ATMEL公司已经停止生产89CXX系列的单片机,现在市面上的AT89CXX多是停产前的库存产品。
1.控制线,共4根。
(1)输入:
RST——复位输入信号,高电平有效。
在振荡器工作时,在RST上作用两个机器周期以上的高电平,将器件复位。
EA/Vpp——片外程序存储器访问允许信号,低电平有效。
在编程时,其上施加12V的编程电压。
(2)输入,输出:
ALE/PROG——地址锁存允许信号,输出。
用做片外存储器访问时,低字节地址锁存。
ALE以1/6的振荡频率稳定速率输出,可用做对外输出的时钟或用于定时。
在EPROM编程期间,作输入。
输入编程脉冲。
ALE可以驱动8个LSTTL负载。
(3)输出:
PSEN——片外程序存储器选通信号,低电平有效。
在从片外程序存储器取指期间,在每个机器周期中,当PSEN有效时,程序存储器的内容被送上P0口(数据总线)。
PSEN可以驱动8个LSTTL负载。
2.I/O口:
4个口,32根
单片机51系列共有四个8位双向并行I/O通道口,分别是P0、P1、P2、P3,各具有特殊的电路结构,每位均有自己的锁存器、输出驱动器和输入缓冲器。
这种结构,在数据输出时可锁存,即输出新的数据之前,通道口上原数据一直保持不变,但对输入信息是不锁存的,因此从外部输入的信息必须保持到取数指令执行完为止。
在这四个8位双向并行I/O通道口中,我们应该选择哪一个通道口作为输入信号和输出信号的端口呢?
下面我们先来了解一下四个通道口的结构。
(1)P0口介绍
P0口在访问外部存储器时,P0口既是一个真正的双向数据总线口,又是从分时输出8位地址口。
它包括一个输出锁存器,两个三态缓冲器,一个输出驱动电路和一个输出控制电路
(2)P1口介绍
P1口是专门为用户使用的I/O口,是准双向口,P1口为8位准双向口,每一位均可单独定义为输入或输出口。
在编程校验期间,用做输入低位字节地址。
P1口可以驱动4个LSTTL负载。
(3)P2口介绍
P2口也是双向口。
它是供系统扩展时输出高8位地址。
如果没有系统扩展时,也可以作为用户的I/O口使用。
P2口作为外部数据存储器或程序存储器的地址总线的高8位输出口AB8-AB15,P0口由ALE选通作为地址总线的低8位输出口AB0-AB7。
外部的程序存储器由PSEN信号选通,数据存储器则由WR和RD读写信号选通,因为2=64k,所以89S51最大可外接64kB的程序存储器和数据存储器
(4)P3口介绍
P3口是个双功能口,第一功能作通用I/O口,第二功能是作变异功能用,为适应引脚的第二功能的需要,增加了第二功能控制逻辑,在真正的应用电路中,第二功能显得更为重要。
由于第二功能信号有输入输出两种情况,我们分别加以说明。
P3口的输入输出及P3口锁存器、中断、定时/计数器、串行口和特殊功能寄存器有关,P3口的第一功能和P1口一样可作为输入输出端口,同样具有字节操作和位操作两种方式,在位操作模式下,每一位均可定义为输入或输出。
表2-1P3口的第二功能
端口引脚
功能特征
P3.0
串行输入口(RXD)
P3.1
串行输出口(TXD)
P3.2
外中断0(INT0)
P3.3
外中断1(INT1)
P3.4
定时/计数器0的外部输入口(T0)
P3.5
定时/计数器1的外部输入口(T1)
P3.6
外部数据存储器写选通(WR)
P3.7
外部数据存储器读选通(RD)
现在我们已经对四个8位双向并行I/O口有了初步的了解。
根据以上的介绍我们知道只有P1口是标准的I/O口,所以我们选用P0口作为数据端口,P0口可逐位分别定义各口线为输入或输出线。
2.4AT89S51单片机的中断系统
本次设计的报警器是利用外部中断触发单片机中断处理程序,以实现报警的功能。
所以,以下内容是对89S51单片机的中断系统的介绍。
1.中断:
程序执行过程中,允许外部或内部事件通过硬件打断程序的执行,使其转向为处理内部事件的中断服务程序中去;完成中断服务的程序后,CPU继续原来被打断的程序,这样的过程称为中断过程。
2.中断源:
能产生中断的外部和内部事件。
89S51有5个中断源:
(1)INT0:
外部中断0请求,低电平有效。
通过P3.2引脚输入。
(2)INT1:
外部中断1请求,低电平有效。
通过P3.3引脚输入。
(3)T0:
定时器/计数器0溢出中断请求。
(4)TI:
定时器/计数器1溢出中断请求。
(5)TXD/RXD:
串行口中断请求。
当串行口完成一帧数据的发送或接收时,便请求中断。
每一个中断源都对应一个中断请求标志位,它们设置在特殊功能寄存器TCON和SCON中。
当这些中断源请求中断时,相应的标志分别有TCON和SCON中的相应位来锁存。
3.AT89S51中断系统有以下4个特殊功能寄存器:
(1)定时器控制寄存器TCON(用6位);
(2)串行口控制寄存器SCON(用2位);
(3)中断允许寄存器IE;
(4)中断优先级寄存器IP。
其中,TCON和SCON只有一部分用于中断控制。
通过对以上各特殊功能寄存器的各位进行置位或复位等操作,可实现各种中断控制功能。
4.中断的响应过程及中断矢量地址
中断处理过程可分为3个阶段:
中断响应、中断处理和中断返回。
89C51的CPU在每个机器周期的S5P2期间顺序采样每个中断源,CPU在下一个机器周期S6期间按优先级顺序查询中断标志。
如查询到某个中断标志为1,则将在接下来的机器周期S1期间按优先级进行中断处理。
中断系统通过硬件自动将相应的中断矢量地址装入PC,以便进入相应的中断服务程序。
表2既是各个中断源对应的中断矢量地址。
由于89S51系列单片机的两个相邻的中断源中断服务程序入口地址相距只有八个单元,一般的中断服务程序是容纳不下的,通常是在相应的中断服务程序入口地址中放一条常跳转指令LJMP,这样就可以转到64KB任何可用区域了。
表2-2中断源及其对应的矢量地址
中断源
中断矢量地址
外部中断0()
0003H
定时器/计数器0(T0)
000BH
外部中断1()
0013H
定时器/计数器1(T1)
001BH
串行口中断(RI、TI)
0023H
中断服务程序从矢量地址开始执行,一直到返回指令RETI为止。
RETI指令的操作一方面告诉中断系统该中断服务程序已执行完毕,另一方面把原来压入堆栈保护断点地址从栈顶弹出,装入程序寄存器PC,使程序返回到被中断的程序断点处继续执行。
5.在编写中断服务程序时应注意:
(1)在中断矢量地址单元处存放一条无条件转移指令(如LJMP××××H),使中断程序可灵活的安排在64KB程序存储器的任何空间。
(2)在中断服务程序中,用户应注意用软件保护现场,以免中断返回后丢失原寄存器、累加器中的信息。
(3)若要在执行当前中断程序时禁止更高优先级中断,则可先用软件关闭CPU中断或禁止某中断源中断,在中断返回前在开放中断。
2.5AT89S51单片机的优势
1.性能强大
AT89S51具有完整的输入输出、控制端口、以及内部程序存储空间。
与我们通常意义上的微机原理类似,可以通过外接A/D,D/A转换电路及运放芯片实现对传感器传送信息的采集,且能够提供以点阵或LCD液晶及外接按键实现人机交互,能对内部众多I/O端口连接步进电机对外围设备进行精确操控,具有强大的工控能力。
2.易于学习
AT89S51系列单片机编写程序的基本流程。
其语法结构与我们常用的计算机C语言基本相同,不同之处在于增加了控制具体引脚工作的语句和命令,相对于计算机C语言,单片机C语言更简练和明确.可以控制每个引脚的输入输出状态。
其主要语句集中在例如:
“ifelse”、“while”、“for”等循环与判断语句上,相比计算机C语言更简单。
有过计算机C语言学习经历经过一段时间的熟悉就能够熟练进行编程.
使用AT89S51系列单片机编程,可以在没有实物单片机的情况下在普通电脑上进行程序编写甚至是调试工作。
一般工作中使用Keil公司开发的51单片机编程软件进行编程,它采用目前流行的开友环境,集编辑,编译和仿真于一体。
在该软件上用户可以编写汇编语言或C语言源程序,并利用该软件生成单片机能运行的程序。
3.价格低廉
AT89S51芯片价格便宜,适合对大批量的计量仪器进行规模化改造,其单片售价不超过5元。
3.测温模块的选择方案
3.1DS18B20简介
DS18B20是一种单端通信的数字式温度传感器,这就大大减小了温度测量电路的复杂程度。
我们把单片机的一条I/O分配给温度传感器,即可完成温度采集。
单片机通过对温度传感器的初始化,发出温度转换命令,写入和读出数据的命令来实现温度的测量。
本系统在温度采集中使用的DS18B20测温原理图如图3-1所示:
图中低温度系数晶振的振荡频率受温度的影响很小,用于产生固定频率的脉冲信号,送给减法计数器1;高温度系数晶振振荡频率随着温度变化,变化明显,所产生的信号作为减法计数器2的脉冲输入。
图中还隐含着计数门,当计数门打开时,DS18B20就对低温度系数振荡器产生的时钟脉冲进行计数,进而完成温度测量,计数门的开启时间由高温度系数振荡器来决定。
每次测量前,首先将-55℃所对应的一个基数分别置入减法计数器1、温度寄存器中。
图3-1DS18B20测温原理图
DS18B20是一种使用方便的温度传感器,其性能特点如下:
(1)具有独特的单线接口方式,只要求一个端口即可实现通信;
(2)内含64位经过激光修正的只读存储器ROM;(3)在DS18B20中的每个器件上都有独一无二的序列号;
(4)实际应用中不需要外部任何元器件即可实现测温;
(5)测量温度范围在-55℃到+125℃之间,测量分辨率为0.0625℃;
(6)数字温度计的分辨率用户可以从9位到12位选择;
(7)内部有温度上、下限告警设置,用户可分别设定各路温度的上、下限;
(8)支持多接点;
(9)可用数据线供电,电压范围:
3.0~5.5V;
(10)负压特性:
电源极性接反时,温度计不会因发热而烧毁,但不能正常工作。
系统所选的是3脚的PR-35封装DS18B20数字温度传感器,引脚功能如表3所示。
表3-1DS18B20详细引脚功能描述
DS18B20的内部有一个高速暂存RAM和一个非易失性的可电擦除的EEPRAM,后者存放高温度和低温度触发器TH、TL。
高速暂存存储器由9个字节组成,其分配如表3.2所示。
当温度转换命令发布后,经转换所得的温度值以二字节补码形式存放在高速暂存存储器的第1和第2个字节。
单片机可通过单线接口读到该数据,读取时低位在前,高位在后,对应的温度计算:
当符号位S=0时,直接将二进制位转换为十进制;当S=1时,先将补码变为原码,再计算十进制值。
第3和第4字节是TH和TL的拷贝,是易失性的,每次上电复位时被刷新,第5字节为配置寄存器,它主要用来确定温度值的数字转换分辨率。
6、7、8字节保留未用,为全逻辑1,第9字节是冗余检验字节。
根据DS18B20的通信协议,主机控制DS18B20完成温度转换必须经过3个步骤:
每一次读写之前都要对DS18B20进行复位,复位成功后发送一条ROM指令,最后发送RAM指令,这样才能对DS18B20进行预订的操作。
表3-2DS18B20暂存寄存器分布
表3-3ROM指令
表3-4RAM指令
主CPU将数据下拉500微秒,然后释放,DS18B20收到信号等待16到60微秒,然后发出60到240微秒的存在低脉冲,主CPU收到此信号表示复位成功。
ROM指令如表3-3所示,RAM指令如表3-4所示。
DS18B20的温度采集过程:
如图3-2所示。
3.2DS18B20的工作时序
DS18B20的工作时序主要包括初始化时序、写时序、读时序。
初始化时序下:
(1)先将数据线置高电平;
(2)延时2ms;
(3)数据线拉到低电平;
(4)延时750us(从480us到960us);
(5)数据线拉到高电平;
(6)延时等待。
如果初始化成功,在15到60us时间之内产生一个由DS18B20返回的低电平,据该状态可以来确定它的存在,但是应注意不能无限的进行等待,不然会使程序进入死循环,所以要进行超时判断;
(7)若CPU读到了数据线上的低电平后,还要做延时,其延时的时间从发出的高电平算起(第五步的时间算起)最少要480us;
(8)将数据线再次拉高到高电平1后结束。
DS18B20写数据时序如下:
(1)数据线先置低电平;
(2)延时时间为15us;
(3)按从低位到高位的顺序发送数据(一次只发送一位);
(4)延时时间为45us;
(5)将数据线拉到高电平;
(6)重复上述步骤,直到发送完整个字节;
(7)最后将数据线拉高。
从DS18B20读数据时序如下:
(1)将数据线拉高;
(2)延时2us;
(3)将数据线拉低;
(4)延时6us;
(5)将数据线拉高;
(6)延时4us;
(7)读数据线的状态得到1个状态位,并且进行数据处理;
(8)延时30us;
(9)重复上述步骤,直到读取完一个字节。
3.3DS18B20的连接电路
DS18B20的常用连接电路图如图3-3所示。
图3-3DS18B20连接电路
4.各单元的设计
4.1单片机时钟电路及复位电路
(1)时钟电路
时钟电路对于单片机系统而言是必须的,因为单片机内部是由各种各样的数字逻辑器件构成,而这些器件又必须按时间顺序完成。
所以在管脚的XTAL1和XTAL2引脚外接石英晶体和俩个谐振电容,电容采用2个30u电容,采用12M的石英晶体。
这样就可以构成单片机的基本时钟电路,时钟频率为12M。
电路图如图4-1所示:
图4-1单片机时钟电路
(2)复位电路
复位电路是对单片机进行初始化操作,使单片机处于一个确定的初始状态。
而要AT89S51复位得在RESET引脚上加5V的高电平信号就可以了。
复位电路参数为30U的电解电容和10kΩ的电阻。
如图4-2为单片机的复位电路。
图4-2复位电路
复位电路的作用是使单片机实行位操作,复位主要操作是把PC初始化为0000H,使单片机从程序存储器的0000H单元开始执行程序。
程序存储器的0003H单元即MCS-51单片机的外部中断0的中断处理程序的入口地址留出的0000H~00002H三个单元地址,仅能够放置一条转移指令,因此,单片机的主程序的第一条指令通常情况下是一条无条件转移指令。
除PC之外,复位还对其他一些特殊功能的寄存器也有影响,它们的复位状态如下表所示。
利用它们的复位状态,可以减少应用程序中的初始化编程,如表4-1所示,SP=07H,P0-P4的锁存器均为FFH外,其他所有的寄存器均为0.单片机的复位状态不影响片内RAM的状态。
表4-1寄存器复位状态
寄存器
复位状态
寄存器
复位状态
PC
0000H
TMOD
00H
ACC
00H
TCON
00H
PSW
00H
TL0
00H
SP
07H
TH0
00H
DPTR
0000H
TL1
00H
P0`P3
FFH
TH1
00H
IP