1、基于单片机的加热炉水位控制系统的设计合肥学院20 届单片机原理与应用课程大作业论文(设计)题目基于单片机的加热炉水位控制系统的设计院系名称合肥学院专业(班级)计算机科学与技术(2)班姓名(学号)秦加奇(1204012012)指导教师龙夏 系负责人 完成时间2014年6月19日 基于单片机的XXX的设计第一章 绪论第二章 系统分析第三章 系统设计与实现第四章 系统调试第五章 结论第六章 附录第一章 绪论本课题研究目的及意义在现代社会中,随着工业的发展,居民生活区的集中热力供应量的需求也越来越大,蒸汽加热炉的容量不断提高,对操作过程要求更加严格,加热炉的液位控制直接影响人们自身和设备的安全。液位过
2、低可能使加热炉出现干烧现象,液位过高又会使加热炉蒸汽压力过高,发生危险,传统的液位控制不能进行远距离的集中控制,自动化程度低,调节精度差等缺点,且单靠人工操作已不能适应,控制系统改造的必要性随着科学技术的不断进步,被控对象越来越复杂,人们对控制精度的要求不断提高。由于被控对象和过程的非线性、时变性,多参数间的强耦合、随机干扰等因素,使得建立被控对象的精确数学模型变得很困难。在这些复杂的系统面前,传统的控制方法无法满足控制精度,而且系统稳定性差。更好地对加热炉进行自动化控制,同时随着单片机技术,自动控制技术的迅速发展,利用单片机及其外围芯片实现加热炉液位控制已经成为可能,而且也成为一种发展的趋势
3、,单片机不仅有体积小,安装方便,功能较齐全等优点,而且有很高的性价比,因此应用前景广,同时有助于发现可能存在的故障,通过微机实现燃烧与给水系统的自动控制与调节,将保证加热炉正常供气供水,维持稳定系统,保证安全经济运行。本文即是用单片现的一种锅其有较高的实用价值和优越性。 系统简介本课题的研究对象为加热炉的液位,对其液位进行控制。基本思想是以STC89C51作为控制器,通过STC89C51单片机,压力传感器、温度传感器(DS18B20)和模数转换器(ADC0809)等硬件系统和软件设计方法实现具有液位报警和控制的双重功能,同时也具有压力和温度显示控制的功能,并对温度和压力值交替进行显示。 系统硬
4、件设计包括以下几部分:STC89C51芯片为核心控制器,温度采集和温度设定部分、键盘显示部分、A/D变换部分、报警部分、液位控制等部分组成。可实现的具体功能如下:(1)当液位低至给定的下限液位时,启动水泵对加热炉进行加水,同时水泵工作状态指示灯亮2个,表明水泵以中速在加水。(2)当液位高至给定上限的液位时,停止水泵对加热炉进行加水,水泵工作状态指示灯全灭,表明水泵停止工作。(3)当由于某种特殊原因,液位低于下下限水位时,仍没有启动水泵进行加水,则达至极低水位时,再次启动水泵进行加水,并进行报警。(4)当液位高于上上限水位时,停止水泵加水,并进行报警。(5)有消除报警按钮,当有报警时操作人员在知
5、道的情况下可以按下其其消除报警并去做相应的处理工作。(6)有紧急停止按钮,在遇到紧急情况时可以停止系统的运行。(7)有温度和压力传感器,同时可以交替显示其温度和压力值。(8)采用双向可控硅来控制水泵的开与关,比电机控制简单。(实际设计中用三个发光二极管来表示水泵的开度,即流量。)第2章 系统分析单片机STC89C51介绍STC89C51单片机是宏晶科技推出的新一代超强抗干扰/高速/低功耗的单片机,指令代码完全兼容传统的8051单片机,12时钟/机器周期和6时钟/机器周期可任意选择,最新的D版本内部集成MAX810专用复位电路。STC89C51单片机的外部引脚说明STC89C51单片机有40个引
6、脚,采用双列直插(DIP)方式封装,其引脚图如图2-1所示。 图2-1 STC89C51的管脚图STC89C51单片机的40个管脚中有2个专用于电源的引脚。2个外接晶体的引脚,4个控制或与其它电源复用的引脚,以及32条输入输出I/O引脚。按引脚功能分为4个部分叙述个引脚的功能。2.1.1.1主电源引脚Vcc和VssVCC(40脚): +5V主电源正端 Vss(20脚):+5V主电源地端2.1.1.2 外接晶体引脚XTAL1和XTAL2XTAL1(19脚):接外部晶体的一端。在片内它是振荡电路反相放大器的输入端。在采用外部时钟时,对于HMOS单片机,该端引脚必须接地;对于CHMOS单片机,此引脚
7、作为驱动端。XTAL2(18脚): 接外部晶体的另一端。在片内它是一个振荡电路反相放大器的输出端,振荡电路的频率是晶体振荡频率。若需采用外部时钟电路,对于HMOS单片机,该引脚输入外部时钟脉冲;对于CHMOS单片机,此引脚应悬浮。2.1.1.3 控制信号或与其它电源复用引脚RST(9脚): 单片机刚接上电源时,其内部各寄存器处于随机状态,在该脚输入24个时钟周期宽度以上的高电平将使单片机复位(RESET)PSEN(29脚): 在访问片外程序存储器时,此端输出负脉冲作为存储器读选通信号。CPU在向片外存储器取指令期间,PSEN信号在12个时钟周期中两次生效。不过,在访问片外数据存储器时,这两次有
8、效PSEN信号不出现。PSEN端同样可驱动8个LSTTL负载。我们根据PSEN、ALE和XTAL2输出端是否有信号输出,可以判别89C52是否在工作。ALE/PROG(30脚):在访问片外程序存储器时,此端输出负脉冲作为存储器读选通信号。CPU在向片外存储器取指令期间,PSEN信号在12个时钟周期中两次生效。不过,在访问片外数据存储器时,这两次有效PSEN信号不出现。PSEN端同样可驱动8个LSTTL负载。我们根据PSEN、ALE和XTAL2输出端是否有信号输出,可以判别80C51是否在工作。EA/VPP(31脚): 当EA端输入高电平时,CPU从片内程序存储器地址0000H单元开始执行程序。
9、当地址超出4KB时,将自动执行片外程序存储器的程序。当EA输入低电平时,CPU仅访问片外程序存储器。在对87C51EPROM编程时,此引脚用于施加编程电压VPP。选择使用STC89C51RC的原因(1)超低功耗:掉电模式: 典型功耗 0.1 A正常工作模式: 典型功耗 4mA - 7mA掉电模式可由外部中断唤醒,适用于电池供电系统,如水表、气表、便携设备等。(2)超强抗干扰:高抗静电(E S D 保护)轻松过2 K V / 4 K V 快速脉冲干扰( E F T 测试)宽电压, 不怕电源抖动;宽温度范围, - 4 0 8 5 (3)三大降低单片机时钟对外部电磁辐射的措施:禁止A L E 输出;
10、如选6 时钟/ 机器周期,外部时钟频率可降一半;单片机时钟振荡器增益可设为1 / 2 g a i n 。(4)加密性强(5)在系统可编程, 无需编程器, 无需仿真器(6)可供应内部集成M A X 8 1 0 专用复位电路的单片机,只有D 版本才有内部集成专用复位电路,原复位电路可以保留,也可以不用,不用时R E S E T 脚接1 K 电阻到地。LED数码管显示LED数码管显示器的结构LED显示器是一种由发光二极管显示字段的显示器件,也可称为数码管。单片机系统中通常使用8段LED数码显示器,其外形及引脚如图2-12(a)所示,由图可见8段LED显示器由8个发光二极管组成。其中7个长条形的发光二
11、极管排列成“日”字形,另一个圆点形的发光二极管在显示器的右下角作为显示小数点用,通过不同的组合可用来显示各种数字,包括AF在内的部分英文字母和小数点“ ”等字样。 图 2-12 LED数码管显示的结构LED显示器有两种不同的形式:一种是8个发光二极管的阳极都连在一起构成公共阳极,使用时公共阳极接+5V,每个发光二极管的阳极通过电阻与输入端相连。当阴极端输入低电平时,段发光二极管就导通点亮,而输入高电平时不点亮。称为共阳极LED显示器;另一种是8个发光二极管的阴极都连在一起构成公共阴极,使用时公共阴极接地,每个发光二极管的阴极通过电阻与输入端相连。当阳极端输入高电平时,段发光二极管就导通点亮,而
12、输入低电平时不点亮。称为共阴极LED显示器。如图2-12(b)所示。 第三章 系统设计与实现系统硬件设计的总体方案及框图系统硬件设计总体方案系统的硬件结构主要包括:STC89C51RC、4个液位传感器、1个温度传感器DS18B20、逐次逼近式A/D换器ADC0809、双向可控硅驱动电路MOC3041和双向晶闸管Z0409MF等。此外,还有键盘显示电路、报警输出电路等。(由于资金原因及市场上很难买到,4个液位传感器用一个10K的电位器模拟,水泵的状态用3个发光二极管模拟。)它的工作流程如下:开始,由电位器每隔5s对水位进行采样,并输出0-5V模拟信号,再经AD转换变成相应的数字信号,送入STC8
13、9C51单片机进行数据处理。单片机经运算后,与设定的液位值(下限液位H1、上限液位H2、下下限液位H3、上上限液位H4)依次进行比较:若H1HXH2:则表示正常液位,水位指示灯亮,呈红色,水泵工作开度最小,其指示灯有一个亮,呈红色;若H3=HX=H1:则表示处于下下限与下限液位之间,水泵处于正常开度状态,有俩个工作指示灯亮,呈红色;若H2=HX=H4:则表示处于上限与上上限液位之间,停止水泵供水,水泵工作指示灯全灭;液位正常指示灯灭;若HX=H4:则表示达至上上限液位,水泵处于全关状态,三个工作指示灯全灭,并启动报警器报警;同时数字温度传感器DS18B20把采集到的温度值送到单片机中经处理后,
14、通过74LS164驱动的静态数码管显示其采集到的温度值。压力传感器把采集到的数据经A/D0809转换之后送到单片机经过处理后,也通过数码管显示其压力值。在设计中有一个温度与压力值交替显示的按键,它可以按人们的意愿去选择显示温度值还是压力值。如果报警器启动后,设有报警消除按钮,消除报警;有温度和压力转换按钮,可以轮流显示温度和压力值。系统设计的总体框图 在实际的硬件电路中,用3个发光二极管来模拟水泵的全开,半开,全关三种状态。4个液位传感器用一个电位器来模拟,通过调节电位器的电压值大小,来模拟液位的几种状态。执行机构为MOC3041双向可控硅来驱动水泵的工作,报警器件选择压电蜂鸣器。 键盘控制电
15、路设计为了便于实现各种的控制要求,智能调节器必须具备快速设置被控参数且操作方便,还必须增加键盘装置。键盘控制有矩阵式和独立式两中。 矩阵式键盘又有编码式和非编码式。单片机系统中普遍使用非编码式键盘,这类键盘应主要解决以下几个问题:(1) 键的识别。(2) 如何消除键的抖动。(3) 键的保护。在以上几个问题中,最主要的是键的识别。对于键的识别,既可以采用程序扫描的方法,也可以采用专用的可编程键盘显示接口8279.独立式按键就是各按键相互独立,每个按键单独占用一根I/O口线,每根I/O口线的按键工作状态不会影响其他I/O口线上的工作状态。因此,通过检测输入线的电平状态可以很容易判断哪个按键被按下了
16、。它的优点是:电路配置灵活,硬件结构简单。缺点是:每个按键需占用一根I/O口线,在按键数量较多时,I/O口浪费大,电路结构显得复杂。因此,此键盘是用于按键较少或操作速度较高的场合。由于该设计中按键数量少,所以采用了独立式按键。按键电路如图3-2所示。 图 3-2 键盘控制电路图本电路中独立式按键电路,各按键开关均采用了上拉电阻,是为了保证在按键断开时,各I/O有确定的高电平;当按键按下时,去执行相应的功能。如输入口线内部已有上拉电阻,则外电路的上拉电阻可省去。按键的处理可以采用中断方式,也可以采用查询方式。键盘工作方式的选取原则是既要保证能及时响应按键操作,又要不过多占用单片机的工作时间。所以
17、选择中断方式处理按键。 该设计中显示电路的选择可以提供单独锁存的I/O接口电路很多,且静态显示的软件设计比较容易。所以在设计中选择常用的串并转换电路74LS164静态显示电路。STC89C51单片机串行口方式0为移位寄存器方式,外接3片74LS164作为3位LED显示器的静态显示接口,把STC89C51的RXD作为数据输出线,TXD作为移位时钟脉冲。74LS164为TTL单向8位移位寄存器,可实现串行输入,并行输出。其中A、B(第1、2脚)为串行数据输入端,2个引脚按逻辑与运算规律输入信号,共一个输入信号时可并接。T(第8脚)为时钟输入端,可连接到串行口的TXD端。每一个时钟信号的上升沿加到T
18、端时,移位寄存器移一位,8个时钟脉冲过后,8位二进制数全部移入74LS164中。R(第9脚)为复位端,当R=0时,移位寄存器各位复0,只有当R=1时,时钟脉冲才起作用。Q1Q8(第3-6和10-13引脚)并行输出端分别接LED显示器的hga各段对应的引脚上。在给出了8个脉冲后,最先进入74LS164的第一个数据到达了最高位,再来一个脉冲,第一个脉冲就会从最高位移出。该电路中3片7LS164首尾相串,而时钟端则接在一起,这样,当输入8个脉冲时,从单片机RXD端输出的数据就进入到了第一片74LS164中了,而当第二个8个脉冲到来后,这个数据就进入了第二片74LS164,而新的数据则进入了第一片74
19、LS164,这样,当第3个8个脉冲完成后,首次送出的数据被送到了最低位的164中,其他数据依次出现在第一、二片74LS164中。显示电路图如图3-6所示: 图 3-6 显示电路图 液位控制电路的设计液位控制电路的工作原理及液位控制状态图 在设计中,液位的几种状态是通过电位器的不同电压来模拟的,采用的电位器电压范围为05V。加水装置水泵的各种状态由三个发光二极管模拟,由于设计只是模拟系统,压力传感器不易买到,所以压力的显示直接采用软件赋值的方式。 设定电位器的电压值为1V表示下下限,2V表示下限,3V表示上限,4V表示上上限。当电位器电压值0X1时,说明液位处于下下限以下,此时水泵加水开度最大,
20、水泵工作指示灯P2.4亮,且三个发光二极管全亮(P1.3P1.5),同时启动报警装置进行报警,当操作人员听到报警声时,可以按下消除报警按钮(P1.0)停止报警,并对系统做相应的处理;当电位器的电压值1X2时,说明液位处于下限与下下限之间,此时水泵依然加水(P2.4依然亮),开度处于正常流量,有俩个二极管亮(P1.3和P1.4);当电位器的电压值2X3时,说明液位处于下限与上限之间,此时液位处于正常状态,液位正常指示灯P2.3亮,此时水泵依然加水(P2.4依然亮),开度最小,有一个二极管亮(P1.3) ,用于维持正常的液位;当电位器的电压值3X4时,说明液位处于上限限与上上限之间,此时停止水泵加
21、水(水泵工作指示灯P2.4灭),正常液位指示灯P2.3同时熄灭;当电位器的电压值4X时,说明液位超过上上限,启动报警装置报警,此时水泵依然不工作(水泵工作指示灯P2.4灭)。其液位状态表示电路图如图3-7所示(其中图(a)所示是水泵开度大小的指示模拟电路,图(b)为液位正常与不正常时的指示灯电路,图(c)是液位报警电路)。 (a) 水泵开度大小的模拟电路 (b) 液位正常与不正常时的指示灯电路 (c) 液位报警电路 图 3-7 液位控制状态电路图3.5.2 液位控制的控制电路在设计中采用了双向可控硅MOC3041驱动电路控制水泵的启停的。MOC304l芯片是一种集成的带有光耦的双向可控硅驱动电
22、路。它内部集成了发光二极管、双向可控硅和过零触发电路等器件,它的内部结构和外部引脚如图3-8所示。 图 3-8 MOC3041 的内部结构从图中可以看出,它由输入和输出两部分组成。输入部分是一个砷化镓发光二极管,在5-15mA正向电流的作用下,发出足够强度的红外光,去触发输出部分。输出部分包括一个硅光敏双向可控硅和过零触发器。在红外线的作用下,双向可控硅可双向导通,与过零触发器一起输出同步触发脉冲,去控制执行机构一外部的双向可控硅。由MOC304l组成的过零触发双向可控硅电路简单可靠,液位控制电路图如图3-9所示。 图 3-9 液位控制电路图该部分的工作过程是:当单片机的P2.5输出为低电平时
23、,图3-9所示的MOC3041构成的输出通道图MOC3041内部导通,G端出现同步触发脉冲,控制可控硅导通,打开水泵;当P2.5为高电平时,MOC3041内部截止,可控硅断开,关闭水泵。(设计中用一个二极管来模拟水泵的开与关。)第四章 系统调试硬件调试比较简单,首先用万用表检查硬件电路的焊接是否正确,是否有短路、断路、虚焊等。在检查无误后,可通电检测LED显示器的点亮状况。若亮度不理想,可以调整P0口的电阻大小。软件调试软件调试可以先编写显示程序并进行硬件的正确性检验,然后分别进行主程序、液位控制子程序、温度读取子程序、按键控制子程序的编译和调试,由于DS18B20与单片机采用的是串行数据传送
24、,因此,对DS18B20进行读写编程时必须严格地保证读写时序,否则将无法读取测量结果。在软件调试过程中,我们用到了KeiluVision和SLISP_V1605两个软件。其中KeiluVision用于软件的编译,以生成目标代码。SLISP_V1605是一个编程器可以用于烧录软件,用于将目标代码通过传输线烧录到单片机中,完成软硬件的结合。 编写好的软件先通过KeiluVision软件进行编译,具体步骤如下:(1)打开KeiluVision软件,进入KeiluVision界面后,首先要新建一个工程,并选择单片机型号AT89C52。 (2)新建一个文件,保存为.c格式。 (3)添加该文件到新建的工程
25、中,进行程序的编写。 (4)程序编写完成后,先保存,再进行编译,系统会自行检查程序中的语法错误,并将错误类型罗列在界面下方的Out Windows中,以便于用户修改。 (5)当Out Windows中显示0 Error(s),0 Warning(s)时,表示程序已经编译通过。 (6)软件编译结束,生成.HEX格式的文件。 (7)将.HEX格式的文件烧录到单片机中。软硬件实时调试 在硬件调试和软件编译通过后,进行软硬件联合调试。将形成的.HEX文件烧录到单片机中,接入电源,检查系统能否实现预定功能,然后根据出现的问题,及时调整硬件电路和程序,使系统达到预期功能。硬件电路是系统功能实现的物质基础,
26、因此,在软硬件联合调试之前必须仔细检查硬件,只有硬件电路检查无误,整个系统的调试才有可能成功,而且,排除了所有的硬件错误后,进入联合调试,一旦出现问题,就可以迅速排除硬件上的错误,集中精力检查软件。这样就省去了许多不必要的麻烦,从而为调试赢得时间。软硬件联合调试时,可以将程序分成了几个模块,一个个进行调试,在各个模块都调试成功以后,再将它们组合起来,这样成功的概率就大了许多。根据设计要求,该系统应实现以下几个功能:(1)加热炉液位自动控制:低于下下限或者高于上上限时,系统自动报警,液位正常时,液位指示灯亮,液位只要低于下限系统便自动加水;(2)三个个按键,分别执行不同功能,当某个按键按下时,其
27、对应功能得以实现。P1.0按下时,消除报警,P1.1按下时实现从温度显示自动切换到压力显示,P1.2按下时,系统复位,用于紧急停止;(3)三位数码显示器,第一位、第二位、第三位分别显示温度值的百位、十位和个位。 软、硬件调试结果,系统实现预期各个功能:(1)加热炉液位能够自动控制,并且设置了加水量指示灯;(2)三个按键控制功能完全实现。(3)温度传感器DS18B20实现了测温,并且能随现场温度的变化而变化,三位数码显示器能准确显示温度,测量精度可达到1。在这次实验中,电路的调试是最耗时间的一项工作。整个调试就是出现问题和解决问题不断重复的过程。第5章 总结关于此次单片机大作业的完成,收货颇多,
28、单片机我觉得是众课程中比较难的一门课程,这个单片机大作业的难易程度就不用多说了。刚拿到我的作业,我的第一步就是分析这个题目的要求,抓住重点和老师的要求,绝对不能凭自己的主观去做。关于完成这个作业的最重要的一环是也是最难的一环是画原理图,说真的,这个真心难!毕竟是第一次用这个软件,但机会难得,通过问同学,上网找方法,我收货颇多!在这次设计中,我获得的不仅仅只是这个系统的实现,在更多的方面我有了进一步的学习。虽然我做的不是最好的,但我很自豪,这是我做的!因此,这个课题的研究目的是为了使我们对学过的计算机控制技术、过程控制系统、单片机应用等相关专业知识进行更深层的理解和掌握。而整个设计的过程,不仅仅
29、是对所学知识的一次回顾和串连,更多的是锻炼了我解决一个实际课题、实践的能力。更重要的是一个人的知识和力量是有限的,不可能什么都懂,也不可能什么都会。不会就要查,查不到就问,通过一切方法把这个问题弄明白,才是此次设计的重点! 附录一 设计程序清单#include#define uint unsigned int #define uchar unsigned char uint temp; uchar tplsb,tpmsb; / 温度值低位、高位字节 unsigned char code table1=0xFC,0x60,0xDA,0xF2,0x66,0xB6,0xBE,0xE0,0xFE,0x
30、F6,0x00;unsigned char dispbuf3=1,2,3;unsigned char flag;float x1,x2,x3,dianya;unsigned char d;sbit DQ = P20; / 数据通信线DQ sbit anjian1=P11;sbit anjian0=P10;sbit ST=P36;sbit OE=P37;sbit EOC=P24;sbit led=P16;sbit CLK=P33;sbit BJ=P22;sbit YW=P23;sbit JS1=P13;sbit JS2=P14;sbit JS3=P15;sbit LB=P21;sbit SB=P
31、25;void TimeInitial() EA=0; ET1=0; TMOD=0x20; TH1=216; TL1=216; EA=1; ET1=1; TR1=1; void Delay_2()unsigned char m,n,s; for(m=2000;m0;m-) for(n=200;n0;n-) for(s=248;s0;s-); void Delay_1(unsigned int i) for(;i0;i-); void yewei() if(anjian0=0) LB=1; BJ=1; Delay_2(); if(dianya2)&(dianya3) LB=1; YW=0; JS1=0; JS2=1; JS3=1; BJ=1; SB= 0; if(
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1