基于单片机的饮水机温度控制系统Word格式.docx
《基于单片机的饮水机温度控制系统Word格式.docx》由会员分享,可在线阅读,更多相关《基于单片机的饮水机温度控制系统Word格式.docx(35页珍藏版)》请在冰点文库上搜索。
4.系统软件设计22
4.1主程序流程图及简要说明23
4.2A/D转换子程序24
4.3键盘子程序24
4.4控制子程序25
4.5显示子程序27
5.结论28
6.参考文献29
1.前言
所以我们必须能实时获取水温变化。
对于超过适宜范围的温度能够报警。
同时,我们也希望在适宜温度范围内可以由人们根据实际情况加以改变。
传统的温度采集电路相当复杂,需要经过温度采集、信号放大、滤波、AD转换等一系列工作才能得到温度的数字量,并且这种方式不仅电路复杂,元器件个数多,而且线性度和准确度都不理想,抗干扰能力弱。
现在常用的温度传感器芯片不但功率消耗低、准确率高,而且比传统的温度传感器有更好的线性表现,最重要的一点是使用起来方便。
如制冷,当温度高于水温上限时控制压缩机制冷,当温度超过设定值时具有示警功能。
2.方案设计
以单片机为核心的控制方案,其原理图如图2.3所示。
本方案通过温度传感器将温度信号转换为电流信号,信号放大后,经A/D转换器,A/D转换器将进来的模拟信号转换成数字信号,然后送到单片机处理,并将采集的温度与键盘设定的温度值进行比较,根据比较的结果,单片机输出相应的信号来控制外部设施,达到控制加热器加热或压缩机制冷的目的。
还具有显示、报警等功能。
2.3方案三原理框图
3.系统硬件电路设计
设计并制作一个基于单片机的热水器温度控制系统的电路,其结构框图如图3-1:
图3.1系统机构框图
硬件系统子模块:
(1)单片机最小系统电路部分;
(2)温度采集电路设计;
(3)A/D转换电路设计
(4)显示电路设计;
(5)键盘电路设计;
(6)报警电路设计;
(7)控制电路设计。
3.1单片机最小系统设计
本论文设计最小系统如图3.2所示,由主控器AT89C51、时钟电路和复位电路三部分组成。
图3.2单片机最小系统
3.1.1单片机选择
AT89C51单片机是ATMEL公司的AT89系列中的一种,该系列是当今世界上最新型的电擦写八位单片机之一,和51系列完全兼容,低电压、低电流、低功耗,价格低廉,很受到用户欢迎。
其管脚图如图3.3所示
图3.3AT89C51管脚图
AT89C51的引脚功能说明:
·
Vcc:
电源电压
GND:
地
P0口:
P0口是一组8位漏极开路型双向I/O口,也即地址/数据总线复用。
作为输出口用时,每位能吸收电流的方式驱动8个TTL逻辑门电路,对端口写“1”可作为高阻抗输入端用。
在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线复用,在访问期间激活内部上拉电阻。
在Flash编程时,P0口接受指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。
P1口:
P1是一个带内部上拉电阻的8位双向I/O口,P1的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。
对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。
作为输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。
Flash编程和程序校验期间,P1接受低8位地址。
P2口:
P2是一个带有内部上拉电阻的8位双向I/O口,P2的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。
在访问外部程序存储器或16位四肢的外部数据存储器(例如执行MOVX@DPTR指令)时,P2口送出高8位地址数据,在访问8位地址的外部数据存储器(例如执行MOVX@RI指令)时,P2口线上的内容(也即特殊功能寄存器(SFR)区中R2寄存器的内容),在整个访问期间不改变。
Flash编程和程序校验时,P2也接收高位地址和其他控制信号。
P3口:
P3是一个带有内部上拉电阻的8位双向I/O口,P3的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。
P3口还接收一些用于Flash闪速存储器编程和程序校验的控制信号。
RST:
复位输入。
当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。
·
ALE/PROG:
当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。
即使不访问外部存储器,ALE仍以时钟振荡频率的1/6输出固定的正脉冲信号,因此它可对外输出时钟或用于定时目的。
要注意的是,每当访问外部数据存储器时将跳过一个ALE脉冲。
对Flash存储器编程期间,该引脚还用于输入编程脉冲(PROG)。
如有必要,可通过对特殊功能寄存器(SFR)区中的8EH单元D0位置位,可禁止ALE操作。
该位置位后,只有一条MOVX和MOVC指令ALE才会被激活。
此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE无效。
PSEN:
程序存储允许输出是外部程序存储器的读选通型号,当89C51由外部存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲。
在此期间,当访问外部数据存储器,这两次有效的PSEN信号不出现。
EA/VPP:
外部访问允许。
欲使CPU仅访问外部程序存储器(地址为0000H—FFFFH),EA端必须保持低电平(接地)。
需注意的是:
如果加密位LB1被编程,复位时内部会锁存EA端状态。
如EA端为高电平(接Vcc端),CPU则执行内部程序存储器中的指令。
Flash存储器编程时,该引脚加上+12v的编程允许电源Vpp,当然这必须是该器件使用12v编程电压Vpp。
XTAL1:
振荡器反相放大器及内部时钟发生器的输入端。
XTAL2:
振荡器反相放大器的输出端。
鉴于AT89C51单片机所具有的特性及本论文设计控制的复杂性和兼顾显示、报警、键盘控制等较高要求,本论文设计选用AT89C51单片机作为中心控制器。
3.1.2时钟电路
时钟电路用于产生AT89C51单片机工作时所必需的时钟信号。
其电路与AT89C51的连接如图3.1所示。
AT89C51单片机本身就是一个复杂的同步时序电路,为了保证同步工作方式的实现,AT89C51单片机应在唯一的时钟信号控制下,严格按时序执行指令进行工作,而时序所研究的是指令执行中各个信号的关系。
在执行指令时,CPU首先要到指令存储器中取出需要执行的指令操作码,然后译码,并由时序电路产生一系列控制信号去完成指令所规定的操作。
CPU发出的时序信号有两种,一是用于片内对各个功能部件的控制。
另一种是对片外存储器或I/O口的控制,这种时序对于分析、设计硬件接口电路至关重要。
这也是单片机应用设计者最关心的问题。
时钟是单片机的心脏,单片机各个功能部件的运行都是以时钟频率为基准,有条不紊地工作。
因此,时钟频率直接影响单片机的速度,时钟电路的质量也直接影响单片机系统的稳定性。
AT89C51单片机内部有一个用于构成振荡器的高增益反相放大器,该高增益反相放大器的输入端为芯片引脚X1,输出引脚X2。
这两个引脚跨接石英晶体振荡器和微调电容,就构成一个稳定的自激振荡器。
虽然AT89C51有内部振荡电路,但要形成时钟,必须外接元件。
外接晶体以及X1和X2构成并联谐振电路。
电容的大小会影响振荡器频率的高低、振荡器的稳定性、起振的快速性和温度的稳定性。
除使用晶体振荡器外,如对时钟频率要求不高,还可以用陶瓷振荡器来代替。
电路中的电容容值通常选择为30PF左右,本电路选择的是20PF,这并不影响系统的工作和控制的结果。
晶体的振荡的频率的范围通常是在1.2MHZ到12MHZ之间。
晶体的频率越高,则系统的时钟频率就越高,单片机的运行速度也就越快。
但反过来运行速度越快对存储器的速度要求就越高,对印刷电路板的工艺要求也高。
AT89C51单片机常选择振荡频率6MHZ或12MHZ的石英晶体,随着集成电路制造工艺技术的发展,单片机的时钟频率也在逐步提高,现在的高速单片机芯片的时钟频率已经达到40MHZ。
考虑到本设计所用的各种器件对时钟频率的要求及整体电路的简洁性,本课题选用的是振荡频率为6MHZ的石英晶体。
3.1.3复位电路
AT89C51的复位是由外部的复位电路来实现的。
单片机复位电路设计的好坏,直接影响到整个系统工作的可靠性。
许多用户在设计完单片机系统,并在实验室调试成功后,在现场却出现了“死机”、“程序走飞”等现象,这主要是单片机的复位电路设计不可靠引起的。
因此选用一个适合本系统的复位电路极其重要。
常用的复位电路有四种方式:
(1)上电复位电路
(2)按键复位电路(3)脉冲复位电路(4)兼有上电复位与按键复位的电路。
由于考虑到结构和成本等原因,在很多设计里面,复位电路通常采用上电复位和按键复位两种。
根据本系统的特性,决定选用最简单的上电复位电路。
上电复位是通过外部复位电路的电容充电来实现的。
只要Vcc的上升时间不超过10ms,就可以实现自动上电复位。
当时钟频率选用6MHZ,电容C选用22F,电阻R选用1K。
该复位电路工作原理为:
在通电瞬间,在RC电路充电过程中,RST端出现正脉冲,保证RST引脚出现10ms以上稳定的高电平,从而使单片机复位。
3.2温度采集电路设计
本设计中的温度采集系统由DS18B20传感器负责。
其型号如图3.4所示:
图3.4
DS18B20工作原理为DS18B20的读写时序和测温原理与DS1820相同,只是得到的温度值的位数因分辨率不同而不同,且温度转换时的延时时间由2s减为750ms。
DS18B20测温原理如图3.2.2所示。
图中低温度系数晶振的振荡频率受温度影响很小,用于产生固定频率的脉冲信号送给计数器1。
高温度系数晶振随温度变化其振荡率明显改变,所产生的信号作为计数器2的脉冲输入。
计数器1和温度寄存器被预置在-55℃所对应的一个基数值。
计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当计数器1的预置值减到0时,温度寄存器的值将加1,计数器1的预置将重新被装入,计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。
图3.2.2中的斜率累加器用于补偿和修正测温过程中的非线性,其输出用于修正计数器1的预置值。
DS18B20内部结构图如图3.6所示:
3.3A/D转换电路设计
A/D转换部分电路的功能主要是将采集部分采集来的模拟信号转换成数字信号,然后输送到单片机进行数据处理。
主要器件有ADC0809、74LS02、74LS74等。
ADC0809与AT89C51连接电路如图3.7所示。
图3.7A/D转换电路
A/D转换器ADC0809共有八路模拟输入端,由于温度采集只有两路,因此只用到两路模拟输入端,其输入通道为IN0、IN1。
这两个通道的数据分别是温度采集电路的输出信号V01、V02,也就是转换为电压值的饮水机两个水箱水的温度值。
选择这两个通道需要通过设置ADC0809的ADDA、B、C的值,因为它对应的是八路模拟信号,而本系统只有两路模拟信号输入,因此,只需要将低位ADDA连到AT89C51的P2.2口,并根据P2.2口的电压是低电平或高电平来选择要检测哪个通道,当ADDA值为0时选的是IN0通道,当ADDA为1时选的是IN1通道。
而ADDB、ADDC只需接地即可。
3.3.1A/D转换器选择
A/D转换器的功能是将连续变化的模拟量转换成一个离散的数字量。
每一个数字量都是数字代码的按位组合,每一位数字代码都是一定的“权”,对应一定大小的模拟量。
为了将数字量转换成模拟量应该将其每一位都转换成响应的模拟量,然后求和即可得到与数字量成正比的模拟量。
目前,市面上有很多类型的A/D转换器,如:
ADC0804、ADC0809、AD574等,根据本控制的特点,选用ADC0809作为A/D转换器。
ADC0809八位逐次逼近式A/D转换器是一种单片CMOS器件,包括8位的模/数转化器,8通道多路转换器和与微处理器兼容的控制逻辑。
8通道多路转换器能直接连通8个单端模拟信号中的任何一个。
片内带有锁存功能的8路模拟多路开关,可以对8路0~5V的输入模拟电压信号分时进行转换,片内具有多路开关的地址译码和锁存电路、比较器、256RT型网络、树状电子开关、逐次逼近寄存器SAR、控制与时序电路等。
输出具有TTL三态锁存缓冲器,可以直接连接到单片机数据总线上。
1.ADC0809功能如下:
(1)分辨率为8位。
(2)最大不可调误差小于1LSB。
(3)单一+5V供电,模拟输入范围0~5V
(4)具有锁存控制的8路模拟开关。
(5)可锁存三态输出,输出与TTL兼容。
(6)功耗为15mW。
(7)不必进行零点和满度调整。
(8)转换速度取决于芯片的时钟频率。
时钟频率范围:
10~1280KHZ,当CLK=500kHZ时,转换速度为128S。
2.ADC0809管脚及功能
A/D转换器ADC0809的引脚图如图3.8所示。
图3.8ADC0809引脚图
IN0~IN7:
8路输入通道的模拟量输入端口。
2-1~2-8:
8位数字量输出端口。
START,ALE:
START为启动控制输入端口,ALE为锁存控制信号端口。
这两个信号端可连接在一起,当通过软件输入一个正脉冲,便立即启动模/数转换。
EOC,OE:
EOC为转换结束信号脉冲输出端口,OE为输出允许控制端口。
这两个信号也可连接在一起表示模/数转换结束。
OE端的电平由低变高,打开三态输出锁存器,将转换结果的数字量输出到数据总线上。
REF(+),REF(-),Vcc,GND:
REF(+)和REF(-)为参考电压输入端,Vcc为主电源输入端,GND为接地端。
一般REF(+)与Vcc连接在一起,REF(-)与GND连接在一起。
CLK:
时钟输入端口。
ADDA,B,C:
8路模拟开关的三位地址选通输入端,以选择对应的输入通道。
其地址码与对应通道关系如表3.3所示。
表3.3地址码与输入通道对应关系表
强调说明一点:
ADC0809虽然有八路模拟通道可以同时输入八路模拟信号,但每一个瞬间只能转换一路模拟信号,各路之间的切换由软件变换通道地址实现。
A/D转换器采用的转换方法主要有逐次逼近型A/D转换、双积分型A/D转换、并行A/D转换、串-并行A/D转换等,其中逐次逼近型A/D转换既照顾了转换的速度,又具有一定的精度,本系统中,传输数据的频率不高,对精度的要求也不是很高,因此,我们选用了常用的逐次逼近型A/D转换ADC0809。
3.4显示电路设计
大多数的单片机应用系统,都要配置输入设备和输出设备。
本系统的输出设备是显示器,根据本系统的设计特点,采用七段LED数码管作为显示器。
而本系统设计要求温度检测范围0℃~95℃,精度±
1℃。
数码管只需显示两位即可达到要求,因此,显示部分电路采用两个一位的LED数码管来组成显示器,没有要求显示小数点,LED数码管的dp脚悬空。
本设计显示电路的应用有两点,一是实时显示引水机水箱的水温值,另一个是显示键盘设定的温度上、下限值。
其电路连接如图3.9所示。
图3.9显示部分电路
通过一个74LS47连接7个100欧姆的电阻来驱动数码管显示。
数码管的VCC脚分别连接到两个三极管的共射极,而三极管的共基极连到一起接到+5V电源上。
共集极分别连接两个4.7K的电阻接到单片机AT89C51的P1.4、P1.5管脚。
LED显示块是由发光二极管显示字段的显示器件。
在单片机应用系统中应用非常普遍,通常使用的是七段LED,这种显示器有共阳极和共阴极两种,本设计选用的是共阳极。
共阳极LED显示器的发光二极管的阳极连接在一起,通常此公共阳极接正电压5V。
当某个发光二极管的阴极接低电平时,发光二极管被点亮,相应的段被显示。
使用LED显示器时,为了显示数字或符号,要为LED显示器提供代码,因为这些代码是通过各段亮与灭来为显示不同字型的。
7段发光二极管,再加上一个小数点位,共计8段。
因此提供给LED显示器的段码正好一个字节。
各字节中对应关系如表3.4.1所示。
表3.4.1各段与字节中各位的对应关系表
代码位
D7
D6
D5
D4
D3
D2
D1
D0
显示段
dp
G
f
e
d
c
b
a
将单片机I/O口的8位线与显示块的发光二极管的引出端(a~dp)相连,共阳极高电平有效,选通有效后8位并行输出口输出不同的数据就点亮相应的发光二极管,获得不同的数字或字符。
共阳极7段显示器显示数字对应的段码关系如表3.4.2所示。
表3.4.27段LED数字与段码对应关系表
显示数字
1
2
3
4
5
6
7
8
9
共阳极段码
C0H
F9H
A4H
B0H
99H
92H
82H
F8H
80H
90H
3.5键盘电路设计
键盘在单片机应用系统中能实现向单片机输入数据、传送命令功能,是人工干预单片机的主要手段。
键盘实质上是一组按键开关集合。
通常键盘所用开关为机械弹性开关,均利用了机械触点的合、断作用。
键的闭合与否,反映在输出电压是呈现高电平或低电平,如果高电平表示断开的话,那么低电平则表示键闭合,所以通过对电平高低状态的检测,便可确认按键按下与否。
为了确保CPU对一次按键动作只确认一次按键,必须消除抖动的影响,这样才能使键盘在单片机系统中的使用得更加稳定。
常用的键盘接口分为独立式按键接口和矩阵式键盘接口。
根据本系统的设计特点及要求,键盘的功能主要是用来设置温度上下限,因此本设计采用独立式键盘来完成这一功能要求。
其电路连接如图3.10所示。
图3.10独立式键盘与AT89C51连接图
1、键盘电路及其说明
独立式按键就是各个按键相互独立,每个按键各接一根输入线,一根输入线上的按键工作状态不会影响其他输入线上的工作状态。
因此,通过检测输入线的电平状态就可以很容易的判断出是哪一个按键按下了。
独立式按键电路配置灵活,软件简单。
但每一个按键需占用一根输入口线,在按键数量较多时学要较多的输入口线且电路结构复杂,故此种键盘适用与按键较少或操作速度较高的场合。
本设计,采用四按键键盘,所以在四个I/O口上接四个按键组成一个四按键的简易式键盘。
各线通过电阻接+5V,当键盘上没有键闭合时,所有的线断开,呈高电平状态。
当键盘上某一个键闭合时,该键所对应的线与连接单片机的线短路。
例如:
当S1号按键闭合时,它所在的线与连接线短路,使P3.2口为低电平,通过软件里对P3口查寻,如果只有P3.2口为低电平,那么就可以确定是S1键按下了,通过在软件里的设定,行使S1键的功能。
如果同时有多个P3口为低电平,则报警显示,然后检查是否有多个键按下,直到只有一个P3口为低电平时,停止报警,那个低电平的P3口上连接的按键则为按下的键,在软件里执行他应该达到的功能。
2、键盘功能说明
S1:
模式设置键,按一下进入到加热系统设置状态,再按一下切换到制冷系统设置状态。
S2:
步进加键,每按一下,要设置的限制值加1。
S3:
步进减键,每按一下,要设置的限制值减1。
S4:
确定键,确定前面所设的温度值。
当S1键按1下,进入加热或制冷模式后,数码管显示为00,00代表温度设置起点温度。
再按下按键S2数码管显示值将逐步从个位数往上加,直到想要设置的温度值,而按键S3是步进减键,按键每下一次,个位数减1。
S4键是确定键,通过它来确定前面所设定的数值。
3、键盘的机械抖动
若Y0为低电平,S1号键闭合一次,图中t1和t3分别为键的闭合和断开过程中的抖动期(呈现一串负脉冲),抖动时间长短和开关的机械特性有关,一般为5~10ms,t2为稳定的闭合期,其时间由按键动作所确定,一般为十分之几秒到几秒,t0、t4为断开期。
为了保证CPU对键盘的闭合仅作一次处理,在软件中必须去除抖动,在第一次检测到有按键下时,执行一段延时10ms的子程序后确认该按键电平是否仍保持闭合状态电平,如果闭合状态电平则确认有按键下,从而消除抖动的影响。
键盘的机械抖动示意图如图3.11所示。
图3.11键盘的机械抖动示意图
3.6报警电路设计
报警电路主要是由发光二极管和蜂鸣器组成的,具有声、光报警功能的简单电路,其电路如图3.12所示。
当温度超过设置的上、下限时,P2.2口输出高电平,三极管导通,蜂鸣器工作,发出声音。
P2.3口输出高电平时,发光二极管正向导通,发光报警。
图3.12报警电路
3.7控制电路设计
控制部分电路图如图3.13所示。
图3.13控制电路
该电路是由两个固态继电器作为控制开关,一个继电器控制加热装置,另一个继电器控制制冷装置。
固态继电器是一种无触点通断型电子开关,是四端有源器件,其中两个端子为控制输入端,另外两个为输出受控端。
为了实现输入与输出的隔离,器件采用了高耐压的光耦合器。
当输入信号有效时,电路呈导通状态,反之,呈断开状态,可以实现类似电磁继电器的开关功能。
固态继电器将MOSFET、GTR、普通晶闸管等组合在一起