液位控制.docx
《液位控制.docx》由会员分享,可在线阅读,更多相关《液位控制.docx(25页珍藏版)》请在冰豆网上搜索。
![液位控制.docx](https://file1.bdocx.com/fileroot1/2023-1/12/87014b67-1b0f-47cd-adcf-e5c613ef9e81/87014b67-1b0f-47cd-adcf-e5c613ef9e811.gif)
液位控制液位控制成绩课程设计报告题目液位自动控制系统课程名称软件设计院部名称机电工程学院专业自动化班级M11自动化学生姓名朱德纹学号*课程设计地点C304课程设计学时40学时指导教师吴敏金陵科技学院教务处制液位自动控制系统摘摘要要本文提出了一种用单片机水位控制对水位进行精密控制的方法,它以单片机AT89C51作为控制器,模数转换器、液晶LCD1602显示等硬件系统和软件设计方法,实现具有液位检测报警和控制的双重功能,并对液位值进行显示。
本设计主要由水位控制、按键控制、液晶LCD显示部分、声光报警等几部分组成来实现液位控制。
预先设定水位的高低两个临界点,用改变电阻的大小来代替实际中水位的高低,通过模数转换把这些信号送入单片机中。
这些信号与设定值比较来确定进水阀和排水阀的开关。
在本文中介绍了电路接口原理图,给出相应的软件设计流程图和C语言程序,并运用了Protues仿真软件来进行仿真。
关键词:
液位控制、单片机、仿真1绪绪论论水位控制系统是以水位为被控参数的控制系统,它在工业生产的各个领域都有广泛的应用。
在工业生产过程中,有很多地方需要对容器内的介质进行液位控制,使之高精度地保持在给定的数值,水位控制系统的稳定对机器的使用寿命和产品的质量起着至关重要的作用。
液位控制一般指对某一液位进行控制调节,使其达到所要求的控制精度。
水位的自动控制,是近年来新开发的一项新技术,它是微型计算机软件、硬件、自动控制等几项技术紧密结合的产物,工程作业采用的是微机控制和原有的仪表控制,微机控制有以下明显优势:
1)直观而集中的显示各运行参数,能显示液位状态。
2)在运行中可以随时方便的修改各种各样的运行参数的控制值,并修改系统的控制参数,可以方便的改变液位的上限、下限。
3)具有水体控制过程的自动化处理以及监控软件良好的人机界面,操作人员在监控计算机上能根据控制效果及时修运行参数,这样能有效地减少工人的疲劳和失误,提高生产过程的实时性、安全性综合以上的种种优点可以预见采用计算机控制系统是行业的大势所趋。
单片机是在一块芯片上集成了一片微型计算机所需的CPU、存储器、输入、输出等部件。
单片机自问世以来,性能不断提高和完善,体积小、速度快、功耗低的特点使它的应用领域日益广泛。
一般,工业控制系统的工作环境差,干扰强,利用单片机控制就能克服这些缺点,而采用AT89C51单片机构成水位控制装置,其具有精度高,易维护,简单操作,实用性好,且与容器的几何尺寸无关的优点,从而使水箱在生产规定的运行中实现自动化控制,并且能最大可能的避免工伤事故发生的概率,同时也能节省资源并能有效的提高生产的效率。
因此单片机在控制领域得到广泛的应用,使用单片机控制液体液位是很好的选择。
2液位自动控制系统总体方案液位自动控制系统总体方案2.1单片机水位控制的优点单片机水位控制的优点使用单片机实现水位控制具有较高的实用价值和稳定性好等特点。
采用单片机内部程序控制的模拟水位传感器测量水位,可有效保证水位的自动控制,能更好地对水位进行自动化控制,避免工作人员在现场进行检测操作,方便了人员对水位系统的控制,控制方便且系统稳定性好;单片机不仅体积小,安装方便,功能齐全等优点,而且有很高的性价比,应用前景广,同时有助于发现可能存在的故障,通过微机实现给水系统的自动控制与调节,维持稳定系统,保证安全经济运行。
本文就是采用AT89C51单片机为核心芯片的一种水位控制系统,具有较高的实用价值和优越性。
2.2单片机水位控制的系统框图单片机水位控制的系统框图系统的总体框图如图2-1所示图2-1系统框图本设计主要由水位控制、按键控制、液晶LCD显示部分、声光报警等几部分组成。
2.3单片机水位控制的原理介绍单片机水位控制的原理介绍预先设定水位的高低两个临界点,本课程设计用可调电阻来代替液位传感器进行水位高低的模拟,通过模数转换把这些信号送入单片机中。
这些信号与设定值比较来确定进水阀和排水阀的开关。
在开始时,设置水箱的进水上限位和排水的下限位。
当水箱的水位低于下限位时,此时排水电机关闭,进水电机运转,同时声光报警电路工作;当水箱的水位高于上限位时,此时进水电机关闭,排水水电机运转,同时声光报警电路工作。
当水箱水位处于所设定的上限位和下限位之间时,进水和排水的电机同时运转,声光报警电路不工作。
3硬件设计硬件设计3.1AT89C52硬件设计硬件设计在本次课程设计中,我们选用的是AT89C52型号的单片机AT89C52的引脚图如图3-1所示图3-1AT89C52的引脚图P0口(P0.0P0.7):
P0口是一个8位漏极开路的双向I/O口。
作为输出口,每位能驱动8个TTL逻辑电平。
对P0端口写“1”时,引脚用作高阻抗输入。
当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。
在这种模式下,P0具有内部上拉电阻。
在FLASH编程时,P0口也用来接收指令字节;在程序校验时,输出指令字节。
程序校验时,需要外部上拉电阻。
P1口(P1.0P1.7):
P1口是一个具有内部上拉电阻的8位双向I/O口,P1输出缓冲器能驱动4个TTL逻辑电平。
对P1端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。
作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。
此外,P1.0和P1.2分别作定时器/计数器2的外部计数输入(P1.0/T2)和定时器/计数器2的触发输入。
P2口(P2.0P2.7):
P2是一个带有内部上拉电阻的8位双向I/O端口,其输出缓冲器可驱动(吸收或输出电流方式)4个TTL输入。
对端口写1时,通过内部的上拉电阻把端口拉到高电位,这时可用作输入口。
P2作输入口使用时,因为有内部的上拉电阻,那些被外部信号拉低的引脚会输出一个电流。
在访问外部程序存储器和16位地址的外部数据存储器(如执行“MOVXDPTR”指令)时,P2送出高8位地址。
在访问8位地址的外部数据存储器(如执行“MOVXR1”指令)时,P2引脚上的内容(就是专业寄存器(SFR)区中P2寄存器的内容)在整个访问期间不会改变。
P3口(P3.0P3.7):
P3口是一个具有内部上拉电阻的8位双向I/O口,P3输出缓冲器能驱动4个TTL逻辑电平。
对P3端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。
作RST复位输入。
当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。
ALE/PROG当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。
一般情况下,ALE仍以时钟振荡频率的1/6输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。
要注意的是:
每当访问外部数据存储器时将跳过一个ALE脉冲。
对FLASH存储器编程期间,该引脚还用于输入编程脉冲(PROG)。
如有必要,可通过对特殊功能寄存器(SFR)区中的8EH单元的D0位置位,可禁止ALE操作。
该位置位后,只有一条MOVX和MOVC指令才能将ALE激活。
此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE禁止位无效。
PSEN程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当AT89S52由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲,在此期间,当访问外部数据存储器,将跳过两次PSEN信号。
EA/VPP外部访问允许,欲使CPU仅访问外部程序存储器(地址为0000HFFFFH),EA端必须保持低电平(接地)。
需注意的是:
如果加密位LB1被编程,复位时内部会锁存EA端状态。
如EA端为高电平(接Vcc端),CPU则执行内部程序存储器的指令。
FLASH存储器编程时,该引脚加上12V的编程允许电源Vpp,当然这必须是该器件是使用12V编程电压Vpp。
为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。
XTAL1:
振荡器反相放大器和内部时钟发生电路的输入端。
XTAL2:
振荡器反相放大器的输出端。
要使单片机按照设计要求正常工作,完整单片机最基本的工作要求,考虑到系统无需精确地定时功能,且为了方便串口通信波特率的计算,采用12MHz的晶振提供系统时钟。
并附加复位电路,组成单片机最小系统。
在本次设计中,P0.0-P0.7口与LCD1602的D0.0-D0.7相连,控制LCD显示屏,显示水位的上限位和下限位的值以及当前的水位值。
P1.5与ADCD832水位片选使能端相连,控制起工作情况。
P1.6为ADCD832提供时钟信号。
P1.7接收由ADCD832将模拟信号转换成的数字信号。
P3.5,P3.6,P3.7与键盘控制模块相连,实现对水位上限位和下限为的设置。
P2.6,P2.7分别接进水排水电路,当进水或者排水时相应的灯亮。
P2.5控制进水电路指示灯,P2.6控制排水电路指示灯。
P2.0接报警电路。
P2.1,P2.2,P2.3分别接LCD显示屏的E,RW,RS断口。
RST端与复位电路相连,实现对系统的复位控制作用,本课程设计采用的是按键复位。
XTAL1端接器反相放大器和内部时钟发生电路的输入端,XTAL2:
振荡器反相放大器的输出端,形成晶振电路。
3.2按键设计按键设计键盘在单片机应用系统中是一个很关键的部件,它能实现向单片机系统输入数据、发送命令等功能,是人工干预单片机的主要手段。
考虑到本设计实际需要的按键较少,故采用独立式键盘接口电路。
它是将每个独立按键按一对一的方式直接接到单片机的I/O口上,通过程序扫描查询方式实现与单片机系统交互的。
在程序查询方式下,通过I/O端口读入按键状态,当有按键按下时,相应的I/O端口变为低电平,而未被按下的按键在上拉电阻作用下为高电平,这样通过读I/O口的状态判断是否有按键按下。
P3.5设置,P3.6增加上限位,P3.6减少下限位的值,。
按键设计的实际电路如图3-2所示图3-2按键电路3.3LCD显示电路设计显示电路设计LCD1602引脚以及网络标号如图3-3所示图3-3LCD1602引脚及网络标号第1脚:
VSS为电源地第2脚:
VCC接5V电源正极第3脚:
V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度)。
第4脚:
RS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。
第5脚:
RW为读写信号线,高电平
(1)时进行读操作,低电平(0)时进行写操作。
第6脚:
E(或EN)端为使能(enable)端,高电平
(1)时读取信息,负跳变时执行指令。
第714脚:
D0D7为8位双向数据端。
在本课程设计中LCD1602的D0.0-D0.7与单片机的P0.0-P0.7口相连,单片机将接收到的数字信号通过P0.0-P0.7传送LCD,在LCD上显示液位的上下限位以及当前的水位值,E端为使能(enable)端,高电平时读取信息,RS和RW为控制端口。
3.4A/D转换单元硬件设计转换单元硬件设计ADC0832引脚及网络标号如图3-4图3-4ADC0832引脚及网络标号
(1)/CS片选使能,低电平有效。
(2)CHO模拟通道0,差分输入时,作为IN+或IN-使用。
(3)CH1模拟输入通道1,差分输入时,作为IN+或IN-使用。
(4)GND电源地。
(5)DI数据信号输出,选择通道控制。
(6)DO数据信号输出,转换数据输出。
(7)Vcc/Vre电源输入及参考电压输入(复用)(8)CLK芯片时钟信号在本课程设计中,我们采用的是CH1作为模拟信号的输入通道,接受来自可调电阻的信号;/CS作为片选使能与单片机的P1.5端口相接,低电平有效,接收的模拟信号,经过转换后通过DI和DO输出数字信号;CLK接收时钟信号与单片机的P1.6端口相接。
A/D转换电路如图3-5所示。
图3-5A/D转换电路3.5报警电路报警电路报警电路主要是由发光二极管、蜂鸣器和三极管组成。
报警电路与单片机的P2.0端口连接,当水位低于设定值或者高于设定值时,发光二极管会亮,同时蜂鸣器会响,提醒操作人员此时水位处于不正常状态。
报警电路与单片机的P2.0端口连接报警电路如图3-6所示。
图3-6报警电路3.6执行电路执行电路电机工作电路主要反映了电机的工作情况,当水位低于设定值时,进水电机转动,出水电机不动,此时表示正在进水;当水位高于设定值是,进水电机停止转动,出水电机开始转动,此时表示正在出水;当水位介于两个设定值之间时,说明此时水位处于正常,此时进水电机和出水电机同时转动,维持水位的平衡。
图中p2.6与p2.7端口与单片机89C52相连电机工作电路如图3-7所示。
图3-7电机工作电路3.7总电路图总电路图图3-8仿真原理图本设计主要由水位控制系统、按键控制系统、液晶LCD显示部分、声光报警等几部分组成。
单片机51系列中的AT89C52,本设计中P0.0-P0.7口与LCD1602的D0.0-D0.7相连,控制LCD显示屏,显示水位的上限位和下限位的值以及当前的水位值。
P1.5与ADCD832水位片选使能端相连,控制起工作情况。
P1.6为ADCD832提供时钟信号。
P1.7接收由ADCD832将模拟信号转换成的数字信号。
P3.5,P3.6,P3.7与键盘控制模块相连,实现对水位上限位和下限为的设置。
P2.6,P2.7分别接进水排水电路,当进水或者排水时相应的灯亮。
P2.5控制进水电路指示灯,P2.6控制排水电路指示灯。
P2.0接报警电路。
P2.1,P2.2,P2.3分别接LCD显示屏的E,RW,RS断口。
RST端与复位电路相连,实现对系统的复位控制作用,本课程设计采用的是按键复位。
XTAL1端接器反相放大器和内部时钟发生电路的输入端,XTAL2:
振荡器反相放大器的输出端,形成晶振电路。
在开始时,设置水箱的进水上限位和排水的下限位。
当水箱的水位低于下限位时,此时排水电机关闭,进水电机运转,同时声光报警电路工作;当水箱的水位高于上限位时,此时进水电机关闭,排水水电机运转,同时声光报警电路工作。
当水箱水位处于所设定的上限位和下限位之间时,进水和排水的电机同时运转,声光报警电路不工作。
4软件设计软件设计4.1系统流程图系统流程图系统流程图如图4-1所示图4-1系统流程图以上流程图介绍了本次设计的工作流程:
在开始时,初始化设置水箱的进水上限位和排水的下限位。
然后开始信号检测当水箱的水位低于下限位时,此时排水电机关闭,进水电机运转,同时声光报警电路工作;当水箱的水位高于上限位时,此时进水电机关闭,排水水电机运转,同时声光报警电路工作。
当水箱水位处于所设定的上限位和下限位之间时,进水和排水的电机同时运转,声光报警电路不工作。
4.2程序源代码程序源代码4.2.1系统主程序系统主函数程序如下:
#include#includeADC0832.h#includeLCD1602.hsbitwarn=P20;/声光报警sbitwater_int=P24;/抽水指示灯sbitwater_out=P25;/排水指示灯sbitmove_int=P26;/电机抽水sbitmove_out=P27;/电机排水sbitmode=P35;sbitup=P36;sbitdown=P37;intHigh=90,Low=10;intlevel=0,flag=0;voiddisplay()/显示函数Displaychar(5,1,DataStringHigh/100);Displaychar(6,1,DataStringHigh%100/10);Displaychar(7,1,DataStringHigh%100%10);Displaychar(13,1,DataStringLow/100);Displaychar(14,1,DataStringLow%100/10);Displaychar(15,1,DataStringLow%100%10);Displaychar(13,0,DataStringlevel/100);Displaychar(14,0,DataStringlevel%100/10);Displaychar(15,0,DataStringlevel%100%10);voidwarning()/报警函数warn=0;delayms(50);warn=1;delayms(50);warn=0;delayms(50);warn=1;delayms(50);voidwork()/进水排水函数if(levelHigh)water_out=0;move_out=0;water_int=1;move_int=1;warning();elsewater_int=1;move_int=0;water_out=1;move_out=0;voidkey_check()/按键if(mode=0)/设置delayms(70);while(mode=0);flag+;if(flag2)flag=0;switch(flag)/功能case1:
display();Displaypstr(13,1,);Displaypstr(14,1,);Displaypstr(15,1,);delayms(400);display();Displaychar(13,1,DataStringLow/100);Displaychar(14,1,DataStringLow%100/10);Displaychar(15,1,DataStringLow%100%10);break;case2:
display();Displaypstr(5,1,);Displaypstr(6,1,);Displaypstr(7,1,);delayms(400);display();Displaychar(5,1,DataStringHigh/100);Displaychar(6,1,DataStringHigh%100/10);Displaychar(7,1,DataStringHigh%100%10);break;case3:
flag=0;break;if(up=0)/增加delayms(70);while(up=0);switch(flag)case1:
Low+;if(Low50)Low=10;display();break;case2:
High+;if(High90)High=50;display();break;case3:
flag=0;break;if(down=0)/减少delayms(70);while(down=0);switch(flag)case1:
Low-;if(Low10)Low=50;display();break;case2:
High-;if(High0;x-)for(y=114;y0;y-);/11.0592MHz:
114/12MHz:
124externvoid_nop_(void);voidwrite1602_com(unsignedcharcom)LCD_RS_0;LCD1602=com;DELAY_1602;LCD_EN_1;DELAY_1602;LCD_EN_0;voidwrite1602_dat(unsignedchardat)LCD_RS_1;LCD1602=dat;DELAY_1602;LCD_EN_1;DELAY_1602;LCD_EN_0;voidinit1602(void)LCD_RW_0;write1602_com(0x38);write1602_com(0x0C);write1602_com(0x06);write1602_com(0x01);/*函数名:
Locate_xy()*功能:
定位写位置*变量:
x,y-*/voidLocate_xy(unsignedcharx,unsignedchary)unsignedcharaddr=0;if(y=0)addr=0x80+x;if(y=1)addr=0xc0+x;write1602_com(addr);/*函数名:
Displaychar()*功能:
1602液晶显示一个字符*变量:
x,y,wdata-*/voidDisplaychar(unsignedcharx,unsignedchary,unsignedcharwdata)Locate_xy(x,y);write1602_dat(wdata);/*函数名:
Displaypstr()*功能:
1602液晶显示一个字符串*变量:
x,y,*str-*/voidDisplaypstr(unsignedcharx,unsignedchary,unsignedchar*str)unsignedinti=0;Locate_xy(x,y);while(stri!
=0)write1602_dat(stri+);x+;if(x15)x=0;y+;if(y=2)y=0;Locate_xy(x,y);#endif4.2.3ADC0832转换部分软件设计AD转换部分主程序如下:
#ifndefADC0832_H#defineADC0832_HsbitCS_0832=P15;sbitCLK_0832=P16;sbitDO_0832=P17;/DI、DO不同时有效,可共用一个接口sbitDI_0832=P17;externvoid_nop_(void);#definepulse0832()_nop_();_nop_();CLK_0832=1;_nop_();_nop_();CLK_0832=0/把模拟电压值转换成8位二进制数并返回unsignedcharread0832()unsignedchari,ch=0,ch1=0;CS_0832=0;/片选,DO为高阻态DI_0832=1;/此处暂停T-SetUp:
250ns(由pulse0832完成)pulse0832();/第一个脉冲,起始位,DI置高DI_0832=1;pulse0832();/第二个脉冲,DI=1表示双通道单极性输入DI_0832=1;pulse0832();/第三个脉冲,DI=1表示选择通道1(CH2)/51单片机为准双向IO口:
应先写入1再读取DI_0832=1;/MSBFIRSTDATAfor(i=0;i8;+i)pulse0832();ch=1;if(DO_0832=1)ch|=0x01;/MSBFIRST输出的最后一位与LSBFIRST输出的第一位是在/同一个时钟下降沿之后,故此处先执行读取,后执行pulse/LSBFIRSTDATAfor(i=0;i=1;if(DO_0832=1)ch1|=0x80;pulse0832();CS_0832=1;/取消片选,一个转换周期结束return(ch=ch1)?
ch:
0;/返回转换结果#endif5功能验证功能验证5.1仿真效果图主要实现的是:
在开始时,通过初始化设置水箱的进水上限位和排水的下限位。
当水箱的水位低于下限位时,此时排水电机关闭,进水电机运转,同时声光报警电路工作;当水箱的水位高于上限位时,此时进水电机关闭,排水水电机运转,同时声光报警电路工作。
当水箱水位处于所设定的上限位和下限位之间时,进水和排水的电机同时运转,声光报警电路