DS18B20的测温原理描述如下。
器件中低温度系数晶振的振荡频率受温度的影响很小,用于产生固定频率的脉冲信号送给减法计数器1;高温度系数晶振随温度变化其振荡频率明显改变,所产生的信号作为减法计数器2的脉冲输出。
器件中还有一个计数门,当计数门打开时,DS18B20就对低温度系数振荡器产生的时钟脉冲进行计数进而完成温度测量。
计数门开启时间由高温度系数振荡器来决定,每次测量前,首先将-55℃所对应的一个基数分别置入减法计数器1、温度寄存器中,计数器1和温度寄存器被预置在-55℃所对应的一个基数值。
减法计数器1对低温度系数晶振产生的脉冲信号进行减法计算,当减法计数器1的预置数减到0时,温度寄存器的值加1,减法计数器1的预置将重新被装入,减法计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到减法计数器计数到0时,停止温度寄存器的累加,此时温度寄存器中的是数值就是所测温度值。
其输出用于修正减法计数器的预置值,只要计时器门仍未关闭就重复上述过程,直到温度寄存器值大致为被测温度值。
图2.4DS18B20的接线图
如图2.4所示,DS18B20温度传感器的1脚接地,2脚作为信号线,与AT89S51的P3.7管脚相接,3脚接电源,3脚与2脚间连接一个4.7K的电阻,用以抬高2脚的电位。
2.3显示模块设计[5]
在一般情况下,单片机使用并行驱动的方式进行LED的显示。
但采用并行驱动方式需要占用单片机大量I/O口,使用不太方便。
利用串入并出技术,使用74LHC164芯片就可以很容易解决I/O口的问题。
采用51单片机的串行方式0,只要两根线(数据与时钟)就能完成显示功能,而且串行口还可以跟其它芯片共用。
利用该方法设计的显示系统具有硬件结构简单,软件编程方便,价格低廉的特点。
本显示电路共设了四位,分别用于显示温度的百、十、个、小数位。
所以显示的温度可以精确到小数点后一位,即0.1℃。
其具体电路如图2.5所示。
图2.5串入并出显示电路
2.4键盘模块设计
键盘是计算机不可缺少的输入设备,是实现人机对话的纽带,借助键盘可以向计算机系统输入程序、置数、送操作命令、控制程序的执行走向等,所以应用极为广泛[7]。
2.4.1键盘工作原理
行列式键盘又称矩阵式键盘。
用I/O口线组成行、列结构,按键设置在行列的交点上。
因此,在按键数量较多时,可以节省I/O口线。
本设计中要应用16位按键,故采用此方法。
行线电平状态将由与此行线相连的列电平决定。
列线电平如果为低,则行线电平为低;列线电平如果为高,则行线电平亦为高。
这是识别矩阵键盘是否被按下的关键。
矩阵键盘中行、列线为多线共用,各按键均影响该键所在行和列的电平。
按键设置在行、列交点上,行、列线分别连接到按键开关,列线通过上拉电阻接到+5V上。
平时无按键动作时,列线处于高电平状态,而当有键按下时,各按键将彼此相互发生影响,所以必须将行、列线信号配合起来作适当的处理,才能确定闭合键的位置。
2.4.2键盘识别方法
按键设置在行、列交点上,行列线分别连接到按键开关的两端。
当列线通过上拉电阻接+5V时,被定位在高电平状态。
键盘中有无按键按下是由行线送入全扫描字、用行线读行线状态来判断的。
其方法是:
让所有行线均置为低电平,检查各列线电平是否有变化,如果有变化,则说明有键被按下;如果没有变化,则说明无键被按下。
实际编程时应考虑按键抖动的影响,通常采用软件延时(如20ms)的方法进行抖动消除处理。
识别具体按键的方法(扫描法)是:
逐行置低电平,其余各行置高电平,检查各列线电平的变化,如果某列电平由高电平变为低电平,则可以确定此行此列的交叉点处的按键被按下。
2.4.3键盘工作方式
单片机系统中,CPU既要忙于处理好各项工作任务,又要保证及时响应对键盘的操作,同时还要节省CPU的时间,所以选择一个好的键盘工作方式,可以提高一个单片机系统的工作效率。
键盘共有三种扫描方式,即编程扫描工作方式、定时扫描工作方式和中断扫描工作方式。
1)编程扫描工作方式:
编程扫描工作方式是利用CPU在完成其他工作的空余,调用键盘扫描子程序来响应键输入要求。
在执行键功能程序时,CPU不再响应键输入的要求。
2)定时扫描工作方式:
定时扫描工作方式是利用单片机内部定时器产生的定时中断(例如10ms),CPU响应中断后对键盘进行扫描,并在有键按下时转入键功能处理程序,则可以实现定时扫描。
3)中断扫描工作方式:
为了进一步提高CPU的工作效率,可以采用中断扫描工作方式,即只有在键盘上有键按下时,发出中断请求,CPU响应中断请求后,转中断服务程序,进行键盘扫描,识别键码。
本系统利用P1口对键盘进行控制,采用中断扫描方式的键盘。
电路图如图2.6所示,。
键盘的键名和对应功能如表2.1所示。
图2.6键盘电路
表2.1键盘设置与功能设定
键名
功能
UP
在设定温度时,增加设定值,每按一次加1
DOWN
在设定温度时,减小设定值,每按一次减1
ENTER
进入键盘输入状态,确定输入的数据
停机
使其停止加热,停机时停止显示,停止测量
2.5指示及报警电路
为使系统的人机交互界面更好,设置了两个指示灯和一个蜂鸣报警器。
当水位达到超高报警水位时,蜂鸣器报警,且红灯点亮,告诉工作人员应断开电磁阀,避免了水位溢出引起的危险;当水位达到超低报警水位时,蜂鸣器报警,且绿灯点亮,告诉工作人员应打开电磁阀,避免干烧的危险。
具体的电路如图2.7所示。
图2.7指示及报警电路
2.6功率驱动电路
2.6.1固态继电器简介
2.6.2功率驱动电路设计
图2.8功率驱动电路
本系统功率驱动部分采用单片机控制的固态继电器控温电路,其波形为完整的正弦波,对热惯性较大的被控对象,是一种稳定、可靠、较合理的控制方法,因而本系统采用过零触发方法[8]。
固态继电器控温电路如图2.8所示。
固态继电器选用欧姆龙公司的G3NB-240B型。
它带有过零触发功能,所以能实现过零触发交流调功。
其输出电流在带有散热器的情况下,最大能达到40A;输入电流为7mA,所以单片机的输出信号需要经74LS06,再驱动固态继电器。
系统采用SSR,通过过零触发方式,在一个控制周期Tc内,由AT89S51的P2.1口控制SSR的通断率。
当P2.1口输出高电平时,SSR才能够过零触发导通。
控制P2.1口输出高电平的时间Tx也就控制了Tc内导通周波数n,从而控制输入炉子平均功率的大小,实现控制温度的目的。
2.7水位检测及控制电路
2.7.1水位检测电路[9]
水位检测电路的目的是产生有效的输入信号。
主要原理是利用水的弱导电性。
因此通过水面的上升与下降来控制电信号的接通与断开:
当水位上升到电极位置时接通电信号;水位低于电极位置时断开电信号。
根据电极输出的电信号就能确定水位的位置,将电极输出的电信号当作输入信号经处理后送入单片机。
根据这个原理,我们选用五个水位电极,其中四个作为水位检测点,即高水位、低水位、超高水位报警、超低水位报警,另外一个接地作为公共电极。
由于水的导电性十分微弱,因此电极送出的电信号十分微弱,不能直接送入单片机,因此需要对该信号进行处理,这里我们选用PNP三极管开关电路。
电路接法如图2.9所示。
图2.9水位检测电路
当水位没有到达水位电极时,水位电极和公共电极没有导通,三极管截止,射极电压为高电平;当水位到达水位电极时,水位电极与公共电极导通,三极管饱和导通,射极电压为低电平。
之所以在水位没到达时输出高电平,是考虑到单片机复位时,各管脚都置高电位,这样就不会在刚复位时产生错误信号。
2.7.2水位控制电路
图2.10水位控制电路
本系统使用直流电磁阀控制水位,这里选用ZCW-2型电磁阀,其额定电压为DC12V,功率小于15W,介质温度最高为125℃,为常闭型。
由于单片机输出的控制信号无法直接控制电磁阀的通断,所以使用一个继电器对电磁阀进行控制。
另外再使用一只光耦,隔离单片机5V和电磁阀24V电源。
具体电路如图2.10所示。
当单片机输出低电平时,光耦导通,继电器吸合,电磁阀得电开通,向水箱内注水。
2.8电源电路
图2.11电源电路
控制系统主控制部分电源需要用5V直流电源供电,电磁阀也需要24V直流电。
所以本系统采用如图2.11所示的电源电路,把频率为50Hz、有效值为220V的单相交流电压转换为幅值稳定的5V和24V直流电压。
其主要原理是把单相交流电经过电源变压器、整流电路、滤波电路、稳压电路转换成稳定的直流电压。
由于输入电压为电网电压,一般情况下所需直流电压的数值和电网电压的有效值相差较大,因而电源变压器的作用显现出来起到降压作用。
降压后还是交流电压,所以需要整流电路把交流电压转换成直流电压。
由于经整流电路整流后的电压含有较大的交流分量,会影响到负载电路的正常工作。
需通过低通滤波电路滤波,使输出电压平滑。
稳压电路的功能是使输出直流电压基本不受电网电压波动和负载电阻变化的影响,从而获得稳定性足够高的直流电压。
本电路使用集成稳压芯片7805和7812解决了电源稳压问题。
2.9单片机选型及简介
由于系统控制方案简单,数据量也不大,考虑到电路的简单和成本等因素,因此在本设计中选用ATMEL公司的AT89S51单片机作为主控芯片。
主控模块采用单片机最小系统是由于AT89S51芯片内含有4kB的E2PROM,无需外扩存储器,电路简单可靠,其时钟频率为0~24MHz,并且价格低廉。
AT89S51是美国ATMEL公司生产的低功耗,高性能CMOS8位单片机,片内含4kbyte的可系统编程的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准8051指令系统及引脚。
它集Flash程序存储器既可在线编程(ISP)也可用传统方法进行编程及通用8位微处理器于单片芯片中。
AT89S51提供以下标准功能:
40个引脚,4kBytesFlash片内程序存储器,128bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器及时钟电路。
同时AT89S51可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。
空闲方式停止CPU的工作,但允许RAM,定时/计时器,串行通信口及中断系统继续工作。
掉电方式保存RAM中的内容,但振荡器停止工作并禁止其他所有部件工作直到下一个硬件复位。
AT89S51引脚说明:
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逻辑门电路。
对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可做输入口。
作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。
在访问外程序存储器或16位地址的外部数据存储器时,P2口送出高8位地址数据。
在访问8位地址的外部数据存储器时,P2口线上的内容(即特殊功能寄存器SFR区中P2寄存器的内容),在整个访问期间不改变。
Flash编程或校验时,P2亦接受高位地址和其他控制信号。
P3口:
P3口是一组带有内部上拉电阻的8位双向I/O口。
P3口输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。
对P3口写入“1”时,它们被内部上拉电阻拉高并可作为输入端口。
作输入端口时,被外部拉低的P3口将用上拉电阻输出电流I。
P3口除了作为一般的I/O口线外,更重要的用途是它的第二功能,P3口的第二功能如下表2.2所示。
表2.2P3口的第二功能
端口功能
第二功能
端口引脚
第二功能
RXD(P3.0)
串行输入口
T0(P3.4)
定时/计数器0外部输入
TXD(P3.1)
串行输出口
T1(P3.5)
定时/计数器1外部输入
INT0(P3.2)
外中断0
WR(P3.6)
外部数据存储器写选通
INT1(P3.3)
外中断1
RD(P3.7)
外部数据存储器读选通
RST:
复位输入。
当振荡工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。
WDT溢出将使该引脚输出高电平,设置SFRAUXR的DISRTO位(地址8EH)可打开或关闭该功能。
DISRTO位缺省为RESET输出高电平打开状态。
复位电路如图2.12
(1)所示。
ALE/PROG:
当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。
即使不访问外部存储器,ALE仍以时钟振荡频率的1/6输出固定的正脉冲信号,因此它可对外输出时钟或用于定时目的,要注意的是:
第当访问外部数据存储器时将跳过一个ALE脉冲。
如有必要,可通过对特殊功能寄存器(SFR)区中的8EH单元的D0位置位,可禁止ALE操作。
该位禁位后,只有一条MOVX和MOVC指令ALE才会被激活。
此外,该引脚伎被微弱拉高,单片机执行外部程序时,应设置ALE无效。
(1)
(2)
图2.12复位电路和晶振电路
:
程序储存允许(
)输出是外部程序存储器的读选通信号,当AT89S51由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲。
当访问外部数据存储器,没有两次有效的PSEN信号。
EA/VPP:
外部访问允许。
欲使CPU公访问外部程序存储器(地址0000H-FFFFH),EA端必须保持低电平(接地)。
需注意的是:
如果加密位LB1被编程,复位时内部会锁存EA端状态。
如EA端为高电平(接Vcc端),CPU则执行内部程序存储器中的指令。
Flash存储器编程时,该引脚加上+12V的编程电压Vpp。
XTAL1:
振荡器反相放大器及内部时钟发生器的输入端。
XTAL2:
振荡器反相放大器的输出端。
晶振电路如图2.12
(2)所示。
3软件的设计
3.1系统软件总体概述