找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 16142|回复: 4
收起左侧

基于单片机的太阳能热水器智能控制系统毕业设计

[复制链接]
ID:315495 发表于 2018-4-24 16:51 | 显示全部楼层 |阅读模式
题目:基于单片机的水位控制系统设计
系部名称:专业班级:
学生姓名:学    号:
指导教师:教师职称:
中原工学院信息商务学院毕业论文(设计)
摘要
传统的水位控制在生产中一直占有主导地位,但随着生产线的更新,不仅要求有更直观、准确、稳定的水位控制系统,同时还要求在降低生产设备的成本方面要求更新自动化程度和性价比高的水位控制系统。单片机控制系统以其控制精度高、性能稳定可靠、设置操作方便、造价低等特点被应用到水位系统的控制中。

本系统采用单片机AT89C51为控制核心来实现水位的基本控制功能。系统由键盘、数码显示、A/D转换、传感器、电源和控制部分组成。本文以单片机端口的输出电平控制继电器的动作,实现电机的启动或者停止,从而达到自动控制水位的目的。另外,系统可根据需要设定水位控制的高度,同时具备超限报警和故障报警功能,并辅以发光二极管显示相应水位的状态。

目录
1  引言            
2  系统设计方案比较说明            
3  水位控制系统的原理和设计方案            
3.1  水位控制系统组成            
3.2  单片机系统组成及工作原理            
  3.2.1  系统组成            
  3.2.2  工作原理            
3.3  控制方案的设计            
  3.3.1  设计思路            
  3.3.2  方案设计            
4  硬件设计            
4.1 单片机            
4.2  时钟电路            
4.3  电源电路            
4.4  传感器            
4.5  串行通信            
4.6  键盘电路            
4.7  水位显示电路            
4.8  A/D转换电路            
  4.8.1  ADC0809的内部逻辑结构            
  4.8.2  ADC0809的引脚图            
  4.8.3  A/D转换电路原理图            
4.9  电机控制            
4.10  看门狗电路            
4.11  稳压电路            
4.12  报警电路            
5  软件设计            
5.1  程序设计流程图            
5.2  程序设计            
  5.2.1  键盘程序            
  5.2.2   A/D转换子程序            
  5.2.3  初始化程序            
  5.2.4  运行状态下的程序            
结  论            
致  谢            
参考文献            
附录1            
附录2            

1  引言
随着我国的国民经济与生活水平的发展,各个行业对自动化的需求也日益增加,为减少污染、节约资源,单片机的控制技术得到了广泛的应用。无论是在工业生产中,还是在其他行业,水都是人们生活中不可或缺的资源,大部分都会使用到水箱,水箱里的水位控制就是最重要的问题了,以前都会有专门的人看管,既浪费人力,又不能准确的判断水位高低。所以以单片机控制水箱的水位就得到了广泛应用。
水位控制系统是以水位为被控参数的控制系统,它在工业生产的各个领域都有广泛的应用。在目前的过程控制领域中水位控制的研究引起了广泛的关注,随着集成电路规模的日趋大型化、复杂化,各种复杂的液位控制系统已成为一个研究焦点。单片机是靠程序运行的,并且是可以修改的,通过不同的程序实现不同的功能。尤其是特殊的独特的一些功能,这是别的器件需要费很大的力气才能做到的,有些则是花大力气也很难做到的。为什么一点要用单片机呢,原因很简单,只因为单片机通过自己编写的程序便可以实现高智能、高效率以及高可靠性!现代电子系统的基本核心是嵌入式计算机系统(简称嵌入式系统),而单片机是最典型、最广泛、最普及的嵌入式系统[1]。
目前我国在单片机测控装置研究、生产、应用中,取得了很大的成绩,总结了很多经验,但是各行业仍处于发展期,经调查,更多科研研究在这方面开展的工作更看重的是理论和算法,数年来这方面的研究的论文较多,但着重生产实际的很少。
一些发达国家在单片机新型系统研究、制造和应用上,已积累了很多经验,奠定了基础,进入了国际市场。我国在新型测控装置与系统研究、制造、应用和经验上,与其他发达国家相比还存在差距,但是我国的研究人员已经克服很多困难,并在不断地摸索中前进,有望在相关领域赶上甚至超过发达国家的技术水平,这是发展趋势。
    在工农业生产以及日常生活应用中,常常会需要对容器中的水位进行自动控制。比如自动控制冰箱、水池、水槽、锅炉等容器中的蓄水量,生活中抽水马桶的自动补水控制、自动电热水器、电开水机的自动进水控制等。虽然各种水位控制的技术要求不同、精度不同,但是基本的控制原理可以归纳为一般的反馈控制方式,他们的主要区别在于检测水位的方式、反馈方式、以及控制器上的区别。
    随着单片机和微机技术的不断发展,由PC机和多台单片机构成的多机向网络发展。单片机自问世以来,性能不断地提高和完善,体积小、速度快、功率低的特点使它的应用领域日益广泛。一般,工业控制系统的工作环境差,干扰性强,利用单片机控制就能克服这些缺点,因此单片机在控制领域得到广泛的应用,使用单片机控制液体的水位是个很好的选择。基于51单片机的液位控制系统既满足系统精度的要求,同时具有可靠性[2]。
不论社会经济如何飞速,水在人们的正常生活和生产中起着重要的作用。一旦断了水,轻则个人民带来极大地不便,重则可能造成严重的生产事故及损伤,从而对供水系统提出了更高的要求,满足及时、准确、安全充足的供水。如果仍然使用人工的方式,劳动强度大,工作效率低,安全性难以保障,因此必须进行自动化控制系统的改造。从而实现提供足够的水量、平稳的水压的自动控制有设计低成本、高实用价值的控制器。
一般工厂使用的水箱,体积都比较大,所以对水位的控制需求就相应的大了,而且随着工业上使用比较多,对水位的控制精度要求也高。由于自动化技术在矿企业的广泛应用,水位自动控制技术越来越频繁地进入到自动控制系统设计者的视线。

2  系统设计方案比较说明
对于水位进行控制的方式有很多,而应用较多的主要有两种,一种是简单的机械式控制装置控制,一种是复杂的控制器控制方式。两种方式的实现如下:
  • 简单的接线式控制方式。其常用形式有浮标式、电极式等,这种控制形式的优点是结构简单,成本低廉。存在问题是精度不高,不能进行数值显示,另外很容易引起误动作,且只能单独控制,与计算机进行通信较难实现
  • 复杂控制器控制方式。这种控制方式是通过安装在水泵出口管道上的压力传感器,把出口压力变成标准工业电信号的模拟信号,经过前置放大、多路切换、A/D变换成数字信号传送到单片机,经单片机运算和给定参量的比较,进行PID运算,得出调节参量控制其输出电压变化,进而调节电机转速,以达到控制水箱水位的目的[3]
针对上述两种控制方式,以及设计需达到的性能要求,这里选择第二种控制方式。最终形成的方案是,利用单片机为控制核心,设计一个对供水箱水位进行监控的系统。根据监控对象的特征,要求实时检测水箱的水位高度,并与开始预设值进行比较,由单片机控制固态继电器的开断进行水位的调整,最终达到液位的与设定值。检测值若高于上限设定值时,要求报警,断开继电器,控制水泵停止上水,检测值若低于下限设定值,要求报警,开启继电器,控制水泵开始上水。现场实时显示测量值,从而实现对水箱水位的监控。

3  水位控制系统的原理和设计方案

3.1  水位控制系统组成
系统采用单片机作为数字控制器的处理器,其中,由压力变送器传送来的电压信号经过A/D转换传送给单片机,然后由单片机控制电动执行机构,具体结构如图3.1所示。        
                       状态设定
3.1水位控制原理框图
3.2  单片机系统组成及工作原理
本系统主要是由ATMEL公司生产的单片机AT89C51芯片为核心,加上一些外部原件,构成了硬件电路。AT89C51是一种带4K字节FLASH可编程可擦除只读存储器的低电压、高性能CMOS 8位微处理器,与标准的MCS-51指令集和输出管教相兼容。由于将多功能8位CPU和FLASH存储器组合在单个芯片中,所以AT89C51是一种高效的微控制器[4]。
3.2.1  系统组成
本系统主要由AT89C51单片机、LED显示电路、报警电路、看门狗电路以及电机控制电路等部分组成。系统框图如图3.2所示。


3.2 系统组成框图
3.2.2  工作原理
水位控制系统的基本原理是:基于单片机AT989C51实现的水位控制器,由键盘、数码显示、A/D转换、传感器,电源和控制部分等组成。工作过程如下:当水位发生变化时,引起连接在水箱底部的软管管内的水压发生变化,水压传感器在接收到软管内的水气压信号后,即把变化量转化成电压信号;该信号经过放大运算放大电路放大后变成幅度为0-5V的标准信号,送入A/D转换器,A/D转换器把模拟信号变成数字信号量,由单片机进行实时数据采集,并进行处理,根据设定要求控制输出,同时数码管显示液位高度。通过键盘设置液位高、低和限定值以及强制报警器,该系统的控制特点是直观地显示水位高度,可任意控制水位高度[5]。
3.3  控制方案的设计3.3.1  设计思路
用单片机做水箱水位控制这个设计核心也是传感器,将信号送到单片机,单片机再将信号输出给电机,来完成设计的要求工作。判断是否要启动或者停止电机的运转以达到水位的控制,同时驱动显示电路显示当前水位的所处的状态。首先,电路获取信号,然后由单片机AT89C51对测得水位信号进行判断,根据判断的结果,单片机输出相应的控制信号控制继电器的动作,进而控制电机的启动或者停止。当水箱的水位下降,达到下限时,需启动电机给水箱供水;当水箱的水位达到上限后,应该关闭电机,并采用不同色彩的发光二极管显示相应的水位。当系统出现故障时,报警电路工作[6]。
3.3.2  方案设计
当水箱水位低时,启动M1、M2、给给水,水位上升到90%,停止M1。当水箱水位低(小于50%)时,同时起动M1、M2,当水位上升到50%以上70%一下时,M2停止运行,M1继续运行到水位上升到90%以上才停止工作。
如下图3.3中,M1、M2为给水泵机组,LG、LD、LDD分别为水位高、水位低、水位低低浮球开关,当水位高(大于90%)时,LG闭合,当水位低(小于75%)时,LD闭合,当水位低低(小于50%)时,LDD闭合[7]。

3.3 控制方案框图
3.3.3  报警控制过程      
当水位高于90开度的时候,由传感器经变送器发送信号,LG闭合,系统水位高报警。当水位低于75开度的时候,由传感器经变送器发送信号,LD闭合,系统水位低报警。当水位低与50开度的时候,由传感器经由变送器发送信号,LDD闭合,系统水位低低报警。手动/自动模式转换控制如下:全自动模式下,系统自动判断水位的状况,选择不同工作状态。在手动的模式下,两台给水泵的运行控制可有人工自己操作[7]。
此方案设计采用的是AT89C51芯片。AY89C51是高性能COMS8位单片机,片内含4K bytes的可反复擦写的只读存储器(PEROM)和128 bytes的随机存取存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器(CPU)和Flash存储单元。

4  硬件设计
水位控制器的硬件主要包括由单片机、传感器(带变送器)、键盘电路、数码显示电力、A/D转换器和输出控制电路等。
4.1 单片机
单片机采用由ATMEL公司生产的双列40脚AT89C51芯片,芯片引脚如下图4.1所示。其中,P0口用于A/D转换和显示;P1口连接一个4*4的键盘;P2口用于控制电磁阀和水泵动作;P3口用于上、下限指示灯,报警指示灯以及用于读写控制和中断等[8]。

图4.1 AT89C51引脚图
1、单片机的工作过程
单片机自动完成赋予它的任务的过程,也就是单片机执行程序的过程,即一条条执行的指令的过程,所谓指令就是把要求单片机执行的各种操作作用的命令的形式写下来,这是在设计人员赋予它的指令系统所决定的,一条指令对应着一种基本操作;单片机所能执行的的全部任务,必须把要解决的问题编成一系列的指令(这些指令必须是选定单片机能识别和执行的指令),这一系列指令的集合就成为程序,程序需要预先存放在具有存储功能的部件——存储器中。存储器由许多存储单元(最小的存储单元)组成,就像大楼房有许多房间组成一样,指令就存放在这些单元里,单元里的指令取出并执行就像大楼房的每个房间的被分分配到了唯一一个房间号一样,每一个存储单元也必须被分配到唯一的地址号,该地址号成为存储单元的地址,这样只要知道了存储单元的地址,就可以找到这个存储单元,其中存储的指令就可以被取出,然后再被执行。
程序通常是顺序执行的,所以程序中的指令也是一条条顺序存放的,单片机在执行程序时要把这些指令一条条取出并加以执行,必须有一个部件能追踪指令所在的地址,这一部件就是程序计数器PC(包含在CPU中),在开始执行程序时,给PC赋以程序中第一条指令所在的地址,然后取得每一条要执行的命令,PC在中的内容就会自动增加,增加量由本条指令长度决定,可能是1、2或3,以指向下一条指令的起始地址,保证指令顺序执行。
4.2  时钟电路
MCS-51单片机内部的振荡电路是一个高增益反相放大器,引线XTAL1和XTAL2分别是放大器的输入端和输出端。单片机内部虽然有振荡电路,但要形成时钟,外部还需附加电路。MCS-51单片机的时钟产生方式有两种:
  • 内部时钟反式
利用其内部的振荡电路在XTAL1和XTAL2引线上外接定时元件,内部震荡电路便产生自激震荡,用示波器可以观察到XTAL2输出的时钟信号。最常用的是在XTAL1和XTAL2之间连接晶体振荡器与电容构成稳定的自激振荡器,如图4.2所示。
晶体可在1.2-12MHz之间选择。MCS-51单片机在通常应用情况下,使用振荡频率为6MHz的石英晶体,而12MHz频率的晶体主要是在高速串行通信情况下才使用,对电容值没有严格的要求,但它的取值对振荡频率输出的稳定性、大小及振荡电路起振速度有少许影响。C1和C2可在20-100pF之间取值,一般去30pF左右。
  • 外部时钟方式
本设计的单片机系统中,为了各单片机之间时钟信号的同步,应当引入唯一的合用外部振荡脉冲作为各自单片机的时钟。外部时钟方式中是把外部振荡信号直接接入XTAL1或XTAL2。由于HMOS和CHMOS单片机外部时钟进入的引线不同,其外部振荡信号源接入的方式也不同。HMOS型单片机由XTAL2进入,外部振荡信号接至XTAL2,而内部反相放大器的输入端XTAL1应接地,如图4.3所示。由于XTAL2端得逻辑电平不是TTL的,故还要接一上拉电阻。CHMOS型单片机由XTAL1进入,外部振荡信号接至XTAL2可不接地,如图4.4所示。


4.2 使用片内振荡电路的时钟电路

4.3 HMOS型单片机的外部时钟电路
4.4 CHMOS型单片机的外部时钟电路
4.3  电源电路
在水位控制系统中,本单元为系统提供+5V的工作电源。从220V的交流电通过变压器转换为15V电压,然后经过整流桥、滤波后得到+5V的系统工作电源,如图4.5所示。

4.5 单片机的电源电路
4.4  传感器
传感器来自“感觉”一词。人们用视觉、听觉、嗅觉和触觉等器官感受外界的有关信息,如物体的大小、形状和颜色,感觉到的声音、气味等。在视觉情况下,绝不是靠眼睛本身进行感觉,而是从眼睛进入的外界刺激信号通过神经传送到大脑,由大脑感知物体的大小和颜色,然后由大脑提供命令信号支配行动。听觉和嗅觉也完全一样。然而要是大脑受到这些刺激,首先必须有接受外界刺激的“五官”人的“五官”可以称之为传感器。它们的基本功能是首先接收外界的刺激信号然后产生作用于各种神经传送信号的能量,最后再传送大脑。
传感器是一种能感受被测物体物理量并将其转化为便于传输或处理的电信号的装置,在现代科技领域中,传感器得到了广泛应用,各种信息的采集离不了各种传感器,传感器的基本功能在于能感受外界的各种“刺激”并作出迅速反映。本设计当中我们采用的水位探测传感器。
传感器使用SY-9411L-D型变送器,它内部含有1个压力传感器和相应的放大电路。压力传感器是美国SM公司生产的555-2型OEM压阻式压力传感器,其有全温度补偿及标定(0-70度),传感器经过特殊加工处理,用坚固的耐高温塑料外壳封装。其引脚分布如图6.1所示。1脚为信号输出(-);2脚为信号输出(-);3脚为激励电压;4脚为地;5脚为信号输出(+);6脚为信号输出(+)[9]。
在水箱底部安装1根直径为5mm的软管,一端安装在水箱底部;另一端与传感器连接。水箱水位高度发生变化时,引起软管内水压变化,然后传感器把水压转换成电压信号,输送到A/D转化器。
4.5  串行通信
单片机要跟PC连接要用到串行通信,如4.7和4.8所示框图框图和系统原理图[10]。


4.7 单片机和PC连接框图

4.8 串行通信原理图
4.6  键盘电路
P1口作为键盘电路,连接一个4*4键盘。结构如图4.9所示。
4.9 键盘电路
4.7  水位显示电路
显示电路如图4.10所示。

4.10显示电路

液位显示采用数码管动态显示,范围从0-999(单位可自定),选择的数码管是7段共阴极连接,型号是LDS18B20。在这里使用到了74HC244,它是一个8位的D触发器,在单片机系统中经常使用,可以作为地址数据总线扩展的锁存器,也可以作为普通的LED的驱动器件,由于单独使用HEF4511B七段译码驱动显示器来完成数码管的驱动显示,图4.10是显示电路的原理图[11]。
4.8  A/D转换电路4.8.1  ADC0809的内部逻辑结构
A/D转化电路在控制器中起主导作用,用它将传感器输出的模拟电压信号转换为单片机能处理的数字量。该控制器采用CMOS工艺制造的逐步逼近式8位A/D转换器芯片ADC0809。在使用时可选择中断、查询和延时等待3种方法编制A/D转换程序。在接线时先经过运算放大器和分压电路把传感器输出的电流信号转换为电压信号,然后输入到A/D转换器。
ADC0809是由一个8路模拟开关、一个地址锁存与译码器、一个A/D转换器和一个三态输出锁存器组成。多路开关可选通8个模拟通道,允许8路模拟量分时输入,共用A/D转换器进行转换。三态输出锁存器用于锁存A/D转换完的数字量,当OE端为高电平时,才可以从三态输出锁存器取走转化完的数据。
4.8.2  ADC0809的引脚图
ADC0809的引脚图如图4.12所示。
ADC0809芯片为28引脚为双列直插式封装,
对ADC0809主要信号引脚的功能说明如下:
IN7-IN0——模拟量输入通道
ALE——地址锁存允许信号。对应ALE上跳沿,A、B、C地址状态送入地址锁存器。
START——转换启动信号。START上升沿时,复位ADC0809;START下降沿时启动芯片,开始进行A/D转换;在A/D转换期间,START应保持低电平。本信号有时简写为ST[12]。

4.12 ADC0809引脚图
  • BC——地址线。通道端口选择线,A为低地址,C为高地址,引脚图中为ADDAADDBADDC。其地址状态与通道对应关系表见4-1
CLK——时钟信号。ADC0809的内部没有时钟电路,所需时钟信号由外界提供,因此有时钟信号 引脚。通常使用频率为500KHZ的时钟信号。
EOC——转换结束信号。EOC=0,正在进行转换;EOC=1,转换结束。使用中该状态信号即可作为查询的状态标志,又可作为中断请求信号使用。
D7-D0——数据输出线。为三态缓冲输出形式,可以和单片机的数据线直接相连。D0为最低位,D7为最高
OE——输出允许信号。用于控制三态输出锁存器向单片机输出转换得到的数据。OE=0,输出数据线呈高阻;OE=1,输出转换得到的数据。
Vcc—+5V电源。
Vref——参考电源参考电压用来与输入的模拟信号进行比较,作为逐次逼近的基准。其典型值为+5V(Vref+=+5V, Verf-=-5V)
A/D转换器的主要技术指标分别是:分辨率和转换速率。
分辨率表示输出数字量变化一个相邻数码所需输入模拟电压的变化量。
ADC的转换速率就是能够重复进行数据转换的速度,即是每秒转换的次数。而完成一次A/D转换所需要的时间(包括稳定时间),就是转换速率的倒数。
   ADC0809的内部逻辑结构图如4.13所示。
表4-1为通道选择表。
表4-1通道选择表                                       

4.13 ADC0809的内部逻辑结构图

4.8.3  A/D转换电路原理图
另外在设计过程中预留了串行口,供进一步开发使用。A/D转换后得到的数据应及时传送给单片机进行处理。数据传送的关键问题是如何确认A/D转换的完成,因为只有确认完成后,才能进行传送。
A/D转换电路原理如图4.14所示。

4.14 A/D转换电路原理图
确定A/D转换是否完成,通常采用以下三种方式。
  • 定时传送方式
对于一种A/D转换器来说,转换时间作为一项技术指标是已知的和固定的。例如ADC0809转换时间为128uS,相当于6MHz的MCS-51单片机共64个机器周期。可据此设计一个延时子程序,A/D转换启动后即调用此子程序,延迟时间一到,转换肯定已经完成了,接着就可进行数据传送。
  • 查询方式
A/D转换芯片由表明转换完成的状态信号,例如ADC0809的EOC端。因此可以用查询方式,测试EOC的状态,即可确定转换是否完成,并接着进行数据传送。
  • 中断方式
把表明转换完成的状态信号(EOC)作为中断请求信号,以中断方式进行数据传送。
不管采用上述哪种方式,只要一旦确定了转换完成,即可通过指令进行数据传送。首先送出口地址并以RD信号时有效,OE信号既有效,把转换数据送上数据总线,供单片机接受[13]。
4.9  电机控制

设计采用交流过零型固态继电器,它有过零时开启,负载电流过零时关断的特性。它的最大接通、关断时间是半个电源周期,在负载上可得到一个完整的正弦波形。它相应地减少了对负载的冲击,而在相应的控制回路中产生的射频干扰也大大减少。当控制端输入低电平时,SSR导通,控制电动机开始工作上水;当控制端输入高电平时,SSR截止,电动机停止工作并停止上水。这样便可以实现对水箱水位的控制[14],其控制电路图如图4.15所示。
图4.15 电机控制电路图
4.10  看门狗电路
Watchdog(监控定时器)技术是一个与CPU构成闭合回路的定时器,是抗干扰和可靠性措施之一。
在由单片机构成的微型计算机系统中,由于单片机的工作常常会受到来自外界电磁场的干扰,造成程序的跑飞,而陷入死循环,程序的正常运行被打断,由单片机控制的系统无法继续工作,会造成整个系统的陷入停滞状态,发生不可预料的后果,所以出于对单片机运行状态进行实时监测的考虑,便产生了一种专门用于监测单片机程序运行状态的芯片,俗称“看门狗”
(watchdog)。
看门狗电路的应用,使单片机可以在无人状态下实现连续工作,其工作原理是:看门狗芯片和单片机的一个I/O引脚相连,该I/O引脚通过程序控制它定时地往看门狗的这个引脚上送入高电平(或低电平),这一程序语句是分散地放在单片机其他控制语句中间的,一旦单片机由于干扰造成程序跑飞后而陷入某一程序段进入死循环状态时,写看门狗引脚的程序便不能被执行,这个时候,看门狗电路就会由于得不到单片机送来的信号,便在它和单片机复位引脚相连的引脚上送出一个复位信号,使单片机发生复位,即程序从程序存储器的起始位置开始执行,这样便实现了单片机的自动复位。
看门狗,又叫 watchdog timer,是一个定时器电路,一般有一个输入,叫喂狗(kicking the dog or service the dog),一个输出到MCU的RST端,MCU正常工作的时候,每隔一端时间输出一个信号到喂狗端,给WDT清零,如果超过规定的时间不喂狗,(一般在程序跑飞时)WDT定时超过,就回给出一个复位信号到MC,是MCU复位。防止MCU死机。看门狗的作用就是防止程序发生死循环,或者说程序跑飞[15]。
工作原理:在系统运行以后也就启动了看门狗的计数器,看门狗就开始自动计数,如果到了一定的时间还不去清看门狗,那么看门狗计数器就会溢出从而引起看门狗中断,造成系统复位。所以在使用有看门狗的芯片时要注意清看门狗。
系统软件"看门狗"的设计思路:
(1)看门狗定时器T0的设置。在初始化程序块中设置T0的工作方式,并开启中断和计数功能。系统Fosc=12 MHz,T0为16位计数器,最大计数值为(2的16次方)-1=65 535,T0输入计数频率是。Fosc/12,溢出周期为(65 535+1)/1=65 536(μs)。
(2)计算主控程序循环一次的耗时。考虑系统各功能模块及其循环次数,本系统主控制程序的运行时间约为16.6 ms。系统设置“看门狗”定时器T0定时30 ms(T0的初值为65536-30000=35536)。主控程序的每次循环都将刷新T0的初值。如程序进入“死循环”而T0的初值在30 ms内未被刷新,这时“看门狗”定时器T0将溢出并申请中断。
(3)设计T0溢出所对应的中断服务程序。此子程序只须一条指令,即在T0对应的中断向量地址(000BH)写入“无条件转移”命令,把计算机拖回整个程序的第一行,对单片机重新进行初始化并获得正确的执行顺序。
正常情况下,CPU在Watchdog“定时”到以前对它访问1次,定时器重新开始计时后Watchdog不起作用;如果发生“定时信号”就会出现,从而引起系统复位。具体的实现电路如图4.15所示。

4.15看门狗电路电路图
4.11  稳压电路
本电路的主要作用是使从传感器输出的电平能够稳定地输入单片机中,主要由三极管的两极放大稳定电路组成,其工作过程是水位探测传感器把探测到的电信号送给R12,如果送入的是高电平则R11、Q5、D3、Q4导通把低于1.4V的低电平稳定地送给单片机。如果是低电平送给R12则R11、Q5、D3、Q4均不能导通二是R13导通将把高于1.4V的高电平稳定的送给单片机[16]。稳压电路的设计如下图4.16所示。

4.16 稳压电路
4.12  报警电路
当水位高于90开度的时候,由传感器经变送器发送信号。LG闭合,系统水位高报警,D6亮。
当水位低于75开度的时候,由传感器经变送器发送信号,LD闭合,系统水位低报警,D7亮。
当水位低于50开度的时候,由传感器经变送器发送信号,LDD闭合,系统水位低低报警,D8亮[17]。
报警电路如图4.17所示。


4.17 报警电路图



5  软件设计

5.1  程序设计流程图


5.1 程序设计框图

5.2  程序设计
5.2.1  键盘程序
由于键盘采用的是4*4的结构,因此可使用的键有16个,根据需要分别定义各键,0-9号为数字键,10-15号分别是确定键、修改键、移位键、加/减键、取消键和复位键。程序如下:
KEY: MOV P2,#07H             ;用反转法查键
KEY1: MOV B,A                  ;有键按下,存键码
      MOV A,P2
      MOV DPTR,# T ABLE
      ANL A,# 07H
      MOV R3,# 0FFH            ;存顺序码单元初始化
      MOV B,A
KEY2:INC R3
      MOV P2,# 0F8H
      MOV A,R3
      MOV A,P2
      MOV C A,@DPTR
      ANL A,#0F8H
      CJNE A,KEY3              ;判键码,求顺序码
      ORL A,B
      MOV A,R3                 ;若找到键码,存顺序码
      CJNE A,# 0FFH,KEY 1
      RET
      RET                      ;无键按下
KEY3: CJNE A,# 0FFH,KEY2       ;判断是否查完
RET                            ;已查完,键码未找到,以无按键处理
TABLE:DB 0F6H,0EEH,0DEH,0BEH,7EH ;按键特征码表
5.2.2  A/D转换子程序
A/D转换子程序如下:
ADCC:PUSH ACC                    ;模数转换程序
    PUSH B
    MOV DPTR,# 0BFFFH
    MOVX A,@DPTR                 ;读模数转换值
    MOV B,# 0AH                  ;十六/十进制转换
    DIV AB
    MOV DSP1,B
    MOV B,# 0AH
    DIV AB
    MOV DSP2,B
    MOV DSP3,A
    POP B
    POP ACC
    SETB EA
    RETI
5.2.3  初始化程序
     ORL P2,#0FH              ;初始化
SETB P1.7                   ;关闭水泵
SETB P1.2                   ;关闭报警器
ANL P1,#03H               ;为检查水位状态做准备
MOV A,P1                   ;读P1口
JNB ACC.0,LOOP1          ;当P1.0=0则转
JB ACC.1,LOOP2            ;当1.1=1则转
5.2.4  运行状态下的程序
1. 电机不运转,报警器不响,“水满”LED亮
   SETB P1.7                    ;使P1.7=1,停止电机工作
   SETB P1.2                    ;关闭报警器
   CLR  P2.3                    ;“水满”LED亮
2. 适中状态下的程序
电机运转,报警器不响,“欠水”LED亮
SETB P1.2                 ;关闭报警器
CLR  P2.2                 ;“适中”LED亮
3. 欠水状态下的程序
电机运转,报警器不响,“欠水”LED亮
CLR  P1.7                 ;使P1.7=0,启动电机工作
SETB P1.2                 ;关闭报警器
CLR  P2.1                 ;欠水“LED”亮
4. 故障状态下的程序
电机不运转,报警器响3S后关闭,“欠水”和“故障”LED一直亮
SETB  P1.7               ;使P1.7=1,停止电机工作
CLR   P1.2                ;报警器响
CLR   P2.1                ;“欠水”LED亮
CLR   P2.0                ;“故障”LED亮
ACALL DELAY             ;调用3S延时子程序
SETB  P1.2                ;关闭报警器
LOOP4:AJMP LOOP4       ;出现故障后程序进入等待状态

结  论
本系统就介绍了一种以单片机为核心对水箱水位进行控制的方案,分为硬件和软件两个部分,硬件部分介绍了系统要实现的功能,以及要实现这些功能所必备的硬件设备,并通过多种方案的比较得到最佳的方案。并根据硬件设备的功能编写程序,控制器的职能通过编制相应的应用软件就得以实现了。
软件和硬件设计部分的成功与否直接影响这系统性能的优劣。初始化主要是完成中断任务,接着系统就开始接受检测信号,如果信号没有越过设定的界限,那么系统会继续往后检测,如果信号越过了设定的界限,系统就会暂停当前的工作,进入到中断处理程序,在中断处理过程中,将判断是否有水位处于极限低状态,若有则报警,没有则继续检测水位是否高于上限或者低于下限,如果有水位信号输入或高水位信号输入,系统则进行调节,中断返回后继续往下检测,这就完成了中断程序的极限信号判断,然后转到相应的处理程序。
用单片机进行控制,能够直观的反应水位的运行状态,将水箱的传感器信号通过仪表显示为上下限信号的输入,使得水位易于控制,而且造价低,程序易于调试。采用单片机的水位控制系统,运行稳定,控制效果明显改善,同时大大提高了控制系统的抗干扰能力,保证了水位的运动运行。水箱控制器充分利用了单片机的特点,软件维护简单方便,具有良好的应用前景,因此可以预见采用计算机控制水位系统是非常必要的。
受时间和经验限制,本系统有不足和需改进的地方:
(1)由于时间和经验有限,所以只能画出硬件图、原理图和程序流程图,并没有画出模拟图。
(2) PROTEL软件之前并没有学过,所以使用起来会比较生疏。

致  谢
大学即将毕业,回顾这四年的学习,不由得感慨万分,通过几年辛苦的学习,毕业论文顺利的完成。回头看看我所取得的每一份成绩,都离不开我周围的同学们和老师的帮助与鼓励。在此表达我深深的谢意。作态度和创造性的科研方式使我受益匪浅,在此,谨向导师表示的衷心的感谢和崇高的敬意。


附录1
系统原理如图1

1 系统原理图

附录2
总程序设计:
  1. 1. 初始化程序
  2. ORL P2,#0FH              ;初始化
  3. SETB P1.7                   ;关闭水泵
  4. SETB P1.2                   ;关闭报警器
  5. ANL P1,#03H               ;为检查水位状态做准备
  6. MOV A,P1                   ;读P1口
  7. JNB ACC.0,LOOP1          ;当P1.0=0则转
  8. JB ACC.1,LOOP2            ;当1.1=1则转
  9. 2. 键盘电路
  10. KEY: MOV P2,#07H             ;用反转法查键
  11. KEY1: MOV B,A                  ;有键按下,存键码
  12.       MOV A,P2
  13.       MOV DPTR,# T ABLE
  14.       ANL A,# 07H
  15.       MOV R3,# 0FFH            ;存顺序码单元初始化
  16.       MOV B,A
  17. KEY2:INC R3
  18.       MOV P2,# 0F8H
  19.       MOV A,R3
  20.       MOV A,P2
  21.       MOV C A,@DPTR
  22.       ANL A,#0F8H
  23.       CJNE A,KEY3              ;判键码,求顺序码
  24.       ORL A,B
  25.       MOV A,R3                 ;若找到键码,存顺序码
  26.       CJNE A,# 0FFH,KEY 1
  27.       RET
  28.       RET                      ;无键按下
  29. KEY3: CJNE A,# 0FFH,KEY2       ;判断是否查完
  30. RET                            ;已查完,键码未找到,以无按键处理
  31. TABLE:DB 0F6H,0EEH,0DEH,0BEH,7EH ;按键特征码表
  32. 3. A/D转换子程序
  33. ADCC:PUSH ACC                    ;模数转换程序
  34.     PUSH B
  35.     MOV DPTR,# 0BFFFH
  36.     MOVX A,@DPTR                 ;读模数转换值
  37.     MOV B,# 0AH                  ;十六/十进制转换
  38.     DIV AB
  39.     MOV DSP1,B
  40.     MOV B,# 0AH
  41.     DIV AB
  42.     MOV DSP2,B
  43.     MOV DSP3,A
  44.     POP B
  45.     POP ACC
  46.     SETB EA
  47.     RETI
  48. 4. 水满状态下的程序
  49. 电机不运转,报警器不响,“水满”LED亮
  50.    SETB P1.7                    ;使P1.7=1,停止电机工作
  51.    SETB P1.2                    ;关闭报警器
  52.    CLR  P2.3                    ;“水满”LED亮
  53. 5. 适中状态下的程序
  54. 电机运转,报警器不响,“欠水”LED亮
  55. SETB P1.2                 ;关闭报警器
  56. CLR  P2.2                 ;“适中”LED亮
  57. 6. 欠水状态下的程序
  58. 电机运转,报警器不响,“欠水”LED亮
  59. CLR  P1.7                 ;使P1.7=0,启动电机工作
  60. SETB P1.2                 ;关闭报警器
  61. CLR  P2.1                 ;欠水“LED”亮
  62. 7. 故障状态下的程序
  63. 电机不运转,报警器响3S后关闭,“欠水”和“故障”LED一直亮
  64. SETB  P1.7               ;使P1.7=1,停止电机工作
  65. CLR   P1.2                ;报警器响
  66. CLR   P2.1                ;“欠水”LED亮
  67. CLR   P2.0                ;“故障”LED亮
  68. ACALL DELAY             ;调用3S延时子程序
  69. SETB  P1.2                ;关闭报警器
  70. LOOP4:AJMP LOOP4       ;出现故障后程序进入等待状态
复制代码

完整的Word格式文档51黑下载地址:
基于单片机的水位控制系统设计毕业论文.doc (1.02 MB, 下载次数: 128)
回复

使用道具 举报

ID:276416 发表于 2018-11-30 12:21 | 显示全部楼层
感谢分享,为什么没有体现加热过程的东西
回复

使用道具 举报

ID:510728 发表于 2019-5-5 19:09 | 显示全部楼层
步骤很详细 内容很好 值得一看
回复

使用道具 举报

ID:272824 发表于 2019-5-6 21:08 | 显示全部楼层
为什么程序不详细
回复

使用道具 举报

ID:552052 发表于 2019-5-31 18:49 来自手机 | 显示全部楼层
这是完整版嘛?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表