基于单片机的恒温水箱控制系统的软件设计文档格式.docx
- 文档编号:21781949
- 上传时间:2023-02-01
- 格式:DOCX
- 页数:36
- 大小:1.13MB
基于单片机的恒温水箱控制系统的软件设计文档格式.docx
《基于单片机的恒温水箱控制系统的软件设计文档格式.docx》由会员分享,可在线阅读,更多相关《基于单片机的恒温水箱控制系统的软件设计文档格式.docx(36页珍藏版)》请在冰豆网上搜索。
自70年代以来,由于工业过程控制的需要,特别是在微电子技术和计算机技术的迅猛发展,以及自动控制理论和设计方法发展的推动下,国外恒温控制系统发展迅速,并在智能化、自适应参数的自整定等方面取得了很大的科技成果。
在这方面以日本、美国、德国、瑞典等国技术领先,并且都生产出了一批商品化的性能优异的温度控制器及仪器仪表。
目前,国外温度控制系统及仪表正朝着高精度智能化、小型化等方面快速发展。
虽然温度控制系统在国内各行各业的应用已经十分广泛,但从国内生产的温度控制器及技术来讲,其总体发展水平仍然不高,同国外的日本、美国、德国等先进国家相比,仍然有着较大的差距。
我国目前在恒温控制技术这方面总体技术水平处于20世纪80年代中后期水平,成熟产品主要以“点位”控制及常规的PID控制器为主,它只能适应一般温度系统控制,难于控制滞后、复杂、时变的温度系统控制。
在适应于较高控制场合的智能化、自适应控制仪表领域内,国内技术还不十分少戊熟,形成商品化并广泛应用构控制仪表较少。
因此,我国在恒温控制等控制仪表行业,J国外还有着一定的差距。
从过程量的检测角度出发,温度是最常见的过程变量之一,它是一个非常重要的过程变量,因为它直接影响燃烧、化学反应、发酵、烘烤、煅烧、蒸馏、浓度、挤压成形,结晶以及空气流动等物理和化学过程。
而恒温控制技术在工业领域应用非常广泛,由于其具有情况复杂、参数多变、运行惯性大、控制滞后等特点,它对控制调节器要求较高。
其温度控制不好就可能引起生产安全,产品质量和产量等一系列问题。
尽管恒温控制很重要,但是要控制好温度常常会遇到意想不到的困难。
随着嵌入式系统开发技术的快速发展及其在各个领域的广泛应用,人们对电子产品的小型化和智能化要求越来越高,作为高新技术之一的单片机以其体积小、价格低、可靠性高、适用范围大以及本身的指令系统等诸多优势,在各个领域、各个行业都得到了广泛应用。
本系统的设计基于单片机的恒温水箱控制系统,可以用于水温控制系统和液位控制系统等各种电器电路中。
它以单片机STC12C5A60S2为核心,通过数码管显示温度和液位以及按键来实现人机对话,使用温度转换芯片DS18B20实时采集温度并通过数码管显示,同时通过LM1024检测液位并通过数目管显示,而且提供各种运行指示灯用来指示系统现在所处状态,如:
温度设置、加热、停止加热等,整个系统通过四个按键来设置加热温度和控制运行模式。
第二章系统总体设计
2.1设计目的和任务
设计一个恒温水箱自动调节控制系统[1],水箱内的水温可以在一定范围内由人一设定,并能在环境温度降低时实现自动调节以保持与设定的温度基本不变,同时时刻显示水箱液位。
本课题要求通过单片机、A/D及D/A转换、发光二级管、LED驱动芯片实现水箱液位及温度检测和显示,并实现相应控制,高效、安全、智能运行。
2.2系统设计总体方案
本文所要设计的课题是基于单片机控制的恒温水箱控制系统的设计[2],主要是介绍了对水箱温度的显示、控制、液位及报警,实现了温度的实时显示及控制。
水箱水温控制部分,提出了用DS18B20、STC12C5A60S2单片机及LED的硬件电路完成对水温的实时检测及显示,利用DS18B20与单片机连接由软件与硬件电路配合来实现对加热电阻丝的实时控制及超出设定的上下限温度的报警系统。
水箱液位显示部分,提出了用LM1024、STC12C5A60S2单片机及数目管等器件电路完成水箱内液位的检测及显示,利用LM1024与单片机连接由软件与硬件电路配合来实现水箱内液位控制及超出设定的上下限液位的报警系统。
炉内温度控制部分,由DS18B20检测炉内温度,用中值滤波的方法取一个值存入程序存取器内部一个单元作为最后检测信号,并在LED中显示。
控制器是用STC12C5A60S2单片机,用PID算法对检测信号和设定值的差值进行调节后输出控制信号给执行机构,去调节电阻炉的加热功率,从而控制炉内温度。
它具有微型化、低功耗、高性能、抗干扰能力强、易配微处理器等优点,特别适合于构成多点的温度测控系统,可直接将温度转化成串行数字信号供微机处理,而且每片DS18B20都有唯一的产品号,可以一并存入其ROM中,以便在构成大型温度测控系统时在单线上挂接任意多个DS18B20芯片[1]。
从DS18B20读出或写入DS18B20信息仅需要一根口线,其读写及其温度变换功率来源于数据总线,该总线本身也可以向所拄接的DS18B20供电,而且不需要额外电源。
同时DS18B20能提供九位温度读数,它无需任何外围硬件即可方便地构成温度检测系统。
而且利用本次的设计主要实现温度测试,温度显示,温度门限设定,超过设定的门限值时自动启动加热装置等功能。
而且还要以单片机为主机,使温度传感器通过一根口线与单片机相连接,再加上温度控制部分和人机对话部分来共同实现温度的监测与控制[2]。
2.3软件总体设计
软件总体设计[3]分:
按键、数码管、LED指示灯、温度检测、液位检测以及报警模块部分。
采用分块设计,整体统筹,各功能模块软件设计如下:
首先接通电源系统开始工作,系统开始工作后,通过按键设定温度值的上限值和下限值,确定按键将设定的温度值存储到指定的地址空间,温度传感器开始实时检测,调用显示子程序显示检测结果,调用比较当前显示温度值与开始设定的温度值比较,如果当前显示值低于设定值就通过继电器起动加热装置,直到达到设定值停止加热,之后进行保温,如果温度高于上限进行报警。
第三章硬件系统介绍
3.1单片机介绍
3.1.1STC12C5A60S2主要性能和功能特性
STC12C5A60S2/AD/PWM系列单片机[4]是宏晶科技生产的单时钟/机器周期(1T)的单片机,是高速/低功耗/超抗干扰的新一代8051单片机,指令代码完全兼容传统8051,但速度快8-12倍。
内部集成MAX810专用复位电路,2路PWM,8路高速10位A/D转换(250K/S,即25万次/秒),针对电机控制,强干扰场合。
它是增强型8051CPU,1T,单时钟/机器周期,指令代码完全兼容传统8051。
工作电压:
3.3V--3.5V工作频率范围:
0~35MHz,相当于普通8051的0~420MHz,通用I/O口40个,复位后为:
准双向口/弱上拉(普通8051传统I/O口)。
可设置成四种模式:
准双向口/弱上拉,强推挽/强上拉,仅为输入/高阻,开漏。
每个I/0口驱动能力均可达到20mA,但整个芯片最大不要超过120mA。
ISP(在系统可编程)/IAP(在应用可编程),无需专用编程器,无需专用仿真器可通过串口(P3.0/P3.1)直接下载用户程序,数秒即可完成一片。
共4个16位定时器。
两个与传统801兼容的定时器/计数器,16位定时器TO和T1,没有定时器2,但有独立波特率发生器做串行通讯的波特率发生器,再加上2路PCA模块可再实现2个16位定时器。
PWM(2路)/PCA(可编程计数器阵列,2路),可用来实现2路D/A使用、2个定时器、2个外部中断(上升沿中断/下降沿中断均可分别或同时支持)。
A/D转换,10位精度ADC,共8路,转换速度可达250K/S(每秒钟25万次)。
3.1.2基于STC12C5A60S2的最小应用系统
关于复位电路:
时钟频率低于12MHz时,可以不用C1,R1接1K电阻到地;
时钟频率高于12MHz时,建议使用第二复位功能脚(STCI2CSA60S2系列在RST2/EXLVD/P4.6口STC12C5201AD系列在RST2/EXLVD/P1.2口)。
关于晶振电路:
如果外部时钟频率在33MHz以上时,建议直接使用外部有源晶振。
如果使用内部R/C振荡器时钟(室温情况下5V单片机为:
11MHz~17MHz,3V单片机为8MHz~12MHz),XTAL1和XTAL2脚浮空。
如果外部时钟频率在27MHz以上时,使用标称频率就是基木频率的晶体,不要使用三泛音的晶体,否则如参数搭配不当,就有可能振在基频,此时实际频率就只有标称频率的1/3了,或直接使用外部有源晶振,时钟从XTAL1脚输入,XTAL2脚必须浮空。
最小应用系统如下图
3-1所示。
图3-1最小应用系统
3.2键盘设计
键盘是单片机应用系统中的生要输入设备,单片机使用的键盘[5]分为编码键盘和非编码键盘。
编码键盘采用硬件线路来实现键盘的编码,每按下一个键,键盘能够自动生成按键代码,并有去抖功能。
因此使用方便,但硬件较复杂。
非编码键盘仅仅提供键开关状态,由程序来识别闭合键,消除抖动,产生相应的代码,转入执行该键的功能程序。
非编码键盘中键的数量较少,硬件简单,在单片机中应用非常广泛。
图3-2为按键和STC12C5A60S2的接线图,检测仪共设有4个按键,每个按键由软件来决定其功能,4个按键功能分别为:
(1)SW1:
设定按键(设定按键)
(2)SWZ:
加法按键(当前位加5)
(3)SW3:
减法按键(当前位减5)
(4)SW4:
退出设置键(系统初始化)
图3-2按键
3.3数码管及指示灯显示
(l)数码管显示说明
各个数码管[6]的段码都是单片机的数据口输出,即各个数码管输入的段码都是一样的,为了使其分别显示不同的数字,可采用动态显示的方式,即先只让最低位显示0(含点),经过一段延时,再只让次低位显示l,如此类推。
由视觉暂留,只要我们的延时时间足够短,就能够使得数码的显示看起来非常的稳定清楚。
本论文中使用了3个数码管,其中前两位使用动态扫描显示实测温度,在设置加热温度的时候,两个数码管是闪烁,以提示目前处在温度设置状态。
第三位数码管静态显示符号“℃”。
如下图3-3所示,U1显示温度,U2显示液位。
图3-3数码管电路
(2)运行指示灯一说明
本热水器温度控制系统中共使用到3个LED指示灯和2个四位一体共阳极数码管。
数码管右边的红色LED是加热指示灯,当刚开机或温度降到设定温度5℃以下时,该灯会亮,表示日前处于加热状态;
温度上升到设定温度时,该LED灭,同时数码管右边的绿色LED亮,表示目前处于保温状态,用户可以使用热水器;
当温度再次下降到设定温度5℃以下时,绿色LED火,红色加热的LED灯亮,不断循坏。
图3-4发光二极管电路
3.4温度检测设计
这里我们用到温度芯片[7]DS18B20。
DS18B20是DALLAS公司生产的一线式数字温度传感器,具有3引脚TO-92小体积封装形式。
测温分辨率可达0.0625℃,被测温度用符号扩展的16位数字量方式串行输出。
其工作电源既可在远端引入,也可采用寄生电源方式产生。
CPU只需一根端口线就能与诸多DS18B20通信,占用微处理器的端口较少,可节省大量的引线和逻辑电路。
DS18B20支持“一线总线”接口,测量温度范围为-55°
C~+125°
C,在-10~+85°
C范围内,精度为±
0.5°
C。
现场温度直接以“一线总线”的数字方式传输,大大提高了系统的抗干扰性。
适合于恶劣环境的现场温度测量,如:
环境控制、设备或过程控制、测温类消费电子产品等。
典型接线电路如图3-5所示
图3-5DS18B20电路
3.5液位检测设计
LM1042是美国国家半导体公司(NSC)推出的集成液位传感器[8]。
它内含模拟开关、放大器、锯齿波发生器、电平检测器、恒流源、重复振荡器、探头故障检测器等电路。
可适配两只热敏电阻探头。
其内部的探头故障检测器和电平检测器可以监测探头的工作状态,并具有复位和延迟开关功能,并可实现电路的切换和抑制瞬间干扰。
利用外接的热敏电阻探头在液体和空气中的不同热阻,便可实现对各种液体液面高度的测量。
其模拟电压输出端可输出与液面高度成线性关系的电压信号,电压范围为+0.2--+6V,最大输出电流可达10mA,可以直接驱动模拟式指示仪表,也可以配数字电压表以显示其测量结果。
其内部的重复振荡器可以进行单次测量和多次测量模式的选择。
图3-6LM1042应用电路
3.6报警电路设计
由于加热停止后,加热管还有余热,当采集到的外界温度高于当前所设定温度上限值时,程序就会进入报警子程序,触发蜂鸣器进行报警。
报警电路原理图如图3-7所示。
图3-7报警电路
图中的三极管的作用是增加驱动能力。
当程序进入报警子程序时,把P2.4置0,就会触发蜂鸣器,为了使报警声音效果更好,对P2.7取反,发出报警嘟噜声音。
3.7继电器控制设计
如果温度偏低和液位偏低,就需要控制热敏电阻或水泵加热加水。
这就需要用到继电器,作为控制器件。
如图3-8所示。
图3-8继电器电路
第四章系统软件设计
4.1键盘程序设计
此流程为键盘扫描[9]处理,CPU通过检测各数据线的状态(0或1)就能知道是否有按键闭合以及哪个按键闭合。
键盘管理程序的功能是检测是否有按键闭合,如果有按键闭合,消除抖动,根据键号转到相应的键处理程序,按键流程图如图4-1所示。
图4-1按键作用流程图
4.2数码管及指示灯显示程序设计
数码管显示[10]分静态和动态显示两种,前者用于数目管较少时,后者主要用于数码管较多时节省I/O口。
本设计需要用到2个四位一体共阳极数码管,有硬件电路知P0口输入段选信号,P2.0-P2.2经过三线-八线译码器控制八个数码管显示,节省I/O口。
下面以八位数目管动态显示为例说明编程过程。
#include<
reg52.h>
#defineucharunsignedchar
#defineuintunsignedint
unsignedcharcodewei[]={0xf8,0xf9,0xfa,0xfb,0xfc,0xfd,0xfe,0xff};
//P2口的片选位
unsignedcharcodetable[]={//定义共阳极数码管编码
0xc0,0xf9,0xa4,0xb0,//方便编程时调用
0x99,0x92,0x82,0xf8,
0x80,0x90,0x88,0x83,
0xc6,0xa1,0x86,0x8e};
voiddelay(uintx)//软件延迟
{
uinta,b;
for(a=x;
a>
0;
a--)
for(b=50;
b>
b--);
}
voidmain()
uchari;
while
(1)//数码管动态显示循环入口
{
P2=wei[0];
P0=table[a4];
delay
(1);
P2=wei[1];
P0=table[a3];
P2=wei[2];
P0=table[a2];
P2=wei[3];
P0=table[a1];
P2=wei[4];
P0=table[b4];
P2=wei[5];
P0=table[b3];
P2=wei[6];
P0=table[b2];
P2=wei[7];
P0=table[b1];
}
在用C语言编程时,共阳极数组编码的编写有利于输出调用,在实际应用实用很广。
编码定义方法与C语言中的数组定义方法非常相似,不同的地方就是在数组类型后面多了一个code关键字,code即表示编码的意思。
需要注意的是,单片机C语言中定义数组时是占用内存空间的,而定义编码时是直接分配到程序空间中,编译后编码占用的是程序存储空间,而非内存空间。
上面unsignedchar是数组类型,也就是数组中元素变量类型,table是数组名,我们可以自由定义它,但是不要和关键字重名;
table后面必须加中括号[],中括号内部要注明当前数组内的元素个数,也可不注明,C51编译器在编编译时能够自动计算出来,通常我们不注明。
等号右边用一个大括号包含所有元素,大括号后面加一个分号,大括号内部元素与元素之间用逗号隔开,注意,最后一个元素后面不要加逗号。
需要注意的是在调用数组时,table后面中括号里的数字是从0开始的,对应后面大括号里的第1个元素。
有了这种编码方法,我们在写数码管显示程序时就会方便很多。
while语句的说明:
格式是:
while(表达式)
{内部语句(内部可为空)}
特点:
先判断表达式,后执行内部语句。
原则:
若表达式不是0,即为真,那么执行语句。
否则跳出while语句,执行后面的语句。
for语句的说明:
格式:
for(表达式1;
表达式2;
表达式3)
{语句(内部可为空)}
执行过程:
第1步,求解一次表达式1。
第2步,求解表达式2,若其值为真(非0即为真),则执行for中语句,然后执行第3步;
否则结束for语句,直接跳出,不再执行第3步。
第3步,求解表达式3。
第4步,跳到第2步重复执行。
需要注意的是,三个表达式之间必须用分号隔开。
利用for语句和while语句可以写出简单的延时语句。
所谓数目管动态扫描显示,即轮流向各位数目管送出字形码和相应的位选,利用发光二极管的余辉和人眼视觉暂留作用,使人的感觉好像各位数目管同时都在显示,而实际上多位数码管是一位一位轮流显示的,只是轮流的速度非常快,人眼已经无法分辨出来。
LED指示灯有P1.4~P1.7控制显示。
LED发亮条件:
电压1.7-1.8v,电流3mA。
如供电电压为5V,需串联个分压电阻,经计算为1K可以满足,若要增加亮度,减小分压电阻值。
控制时,只要给P1.4~P1.7口低电平就可点亮发光二极管。
4.3温度检测程序设计
由于DS18B20采用的是一根数据线实现数据的双向传输,而对STC12C5A60S2单片机来说,硬件上并不支持单总线协议,因此,我们必须采用软件的方法来模拟单总线的协议时序来完成对DS18B20芯片的访问。
DS18B20单线通信功能是分时完成的,它有严格的时隙概念。
因此系统对DS18B20的各种操作必须按协议进行。
操作协议为:
初始化DS18B20(发复位脉冲)→发ROM功能命令→发存储器操作命令→处理数据。
DS18B20虽然具有测温系统简单、测温精度高、连接方便、占用I/O口少等优点。
4.3.1DS18B20指令
64位光刻ROM寄存器涉及指令:
①33H--读ROM。
读DS18B20温度传感器ROM中的编码(即64位地址)。
②55H--匹配ROM。
发出此命令之后,接着发
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 单片机 恒温 水箱 控制系统 软件设计