《液位自动控制系统.doc》由会员分享,可在线阅读,更多相关《液位自动控制系统.doc(32页珍藏版)》请在三一办公上搜索。
1、成绩 课程设计报告 题 目 液位自动控制系统 课 程 名 称 软件设计 院 部 名 称 机电工程学院 专 业 自动化 班 级 M11自动化 学 生 姓 名 朱德纹 学 号 1121112033 课程设计地点 C304 课程设计学时 40学时 指 导 教 师 吴敏 金陵科技学院教务处制目 录摘 要II1 绪 论12 液位自动控制系统总体方案22.1单片机水位控制的优点22.2单片机水位控制的系统框图22.3单片机水位控制的原理介绍23 硬件设计33.1 AT89C52硬件设计33.2按键设计53.3LCD显示电路设计63.4A/D转换单元硬件设计73.5报警电路83.6执行电路93.7总电路图1
2、04 软件设计124.1系统流程图124.2程序源代码135 功能验证246 总结28参考文献29液位自动控制系统摘 要本文提出了一种用单片机水位控制对水位进行精密控制的方法,它以单片机AT89C51作为控制器,模数转换器、液晶LCD1602显示等硬件系统和软件设计方法,实现具有液位检测报警和控制的双重功能,并对液位值进行显示。本设计主要由水位控制、按键控制、液晶LCD显示部分、声光报警等几部分组成来实现液位控制。预先设定水位的高低两个临界点,用改变电阻的大小来代替实际中水位的高低,通过模数转换把这些信号送入单片机中。这些信号与设定值比较来确定进水阀和排水阀的开关。在本文中介绍了电路接口原理图
3、,给出相应的软件设计流程图和C语言程序,并运用了Protues仿真软件来进行仿真。关键词:液位控制、单片机、仿真31 绪 论水位控制系统是以水位为被控参数的控制系统,它在工业生产的各个领域都有广泛的应用。在工业生产过程中,有很多地方需要对容器内的介质进行液位控制,使之高精度地保持在给定的数值,水位控制系统的稳定对机器的使用寿命和产品的质量起着至关重要的作用。液位控制一般指对某一液位进行控制调节,使其达到所要求的控制精度。水位的自动控制,是近年来新开发的一项新技术,它是微型计算机软件、硬件、自动控制等几项技术紧密结合的产物,工程作业采用的是微机控制和原有的仪表控制,微机控制有以下明显优势:1)直
4、观而集中的显示各运行参数,能显示液位状态。2)在运行中可以随时方便的修改各种各样的运行参数的控制值,并修改系统的控制参数,可以方便的改变液位的上限、下限。3)具有水体控制过程的自动化处理以及监控软件良好的人机界面,操作人员在监控计算机上能根据控制效果及时修运行参数,这样能有效地减少工人的疲劳和失误,提高生产过程的实时性、安全性综合以上的种种优点可以预见采用计算机控制系统是行业的大势所趋。单片机是在一块芯片上集成了一片微型计算机所需的CPU、存储器、输入、输出等部件。单片机自问世以来,性能不断提高和完善,体积小、速度快、功耗低的特点使它的应用领域日益广泛。一般,工业控制系统的工作环境差,干扰强,
5、利用单片机控制就能克服这些缺点,而采用AT89C51单片机构成水位控制装置,其具有精度高,易维护,简单操作,实用性好,且与容器的几何尺寸无关的优点,从而使水箱在生产规定的运行中实现自动化控制,并且能最大可能的避免工伤事故发生的概率,同时也能节省资源并能有效的提高生产的效率。因此单片机在控制领域得到广泛的应用,使用单片机控制液体液位是很好的选择。282 液位自动控制系统总体方案2.1单片机水位控制的优点使用单片机实现水位控制具有较高的实用价值和稳定性好等特点。采用单片机内部程序控制的模拟水位传感器测量水位,可有效保证水位的自动控制,能更好地对水位进行自动化控制,避免工作人员在现场进行检测操作,方
6、便了人员对水位系统的控制,控制方便且系统稳定性好;单片机不仅体积小,安装方便,功能齐全等优点,而且有很高的性价比,应用前景广,同时有助于发现可能存在的故障,通过微机实现给水系统的自动控制与调节,维持稳定系统,保证安全经济运行。本文就是采用AT89C51单片机为核心芯片的一种水位控制系统,具有较高的实用价值和优越性。2.2单片机水位控制的系统框图 系统的总体框图如图2-1所示单片机AT89C51进/排水电机液晶LCD1602显示声光报警复位和晶振调整电路水位控制器图2-1 系统框图本设计主要由水位控制、按键控制、液晶LCD显示部分、声光报警等几部分组成。2.3单片机水位控制的原理介绍预先设定水位
7、的高低两个临界点,本课程设计用可调电阻来代替液位传感器进行水位高低的模拟,通过模数转换把这些信号送入单片机中。这些信号与设定值比较来确定进水阀和排水阀的开关。在开始时,设置水箱的进水上限位和排水的下限位。当水箱的水位低于下限位时,此时排水电机关闭,进水电机运转,同时声光报警电路工作;当水箱的水位高于上限位时,此时进水电机关闭,排水水电机运转,同时声光报警电路工作。当水箱水位处于所设定的上限位和下限位之间时,进水和排水的电机同时运转,声光报警电路不工作。3 硬件设计3.1 AT89C52硬件设计在本次课程设计中,我们选用的是AT89C52型号的单片机 AT89C52的引脚图如图3-1所示图3-1
8、 AT89C52的引脚图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”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚
9、由于内部电阻的原因,将输出电流(IIL)。此外,P1.0和P1.2分别作定时器/计数器2的外部计数输入(P1.0/T2)和定时器/计数器2的触发输入。P2口(P2.0P2.7):P2是一个带有内部上拉电阻的8位双向I/O端口,其输出缓冲器可驱动(吸收或输出电流方式)4个TTL输入。对端口写1时,通过内部的上拉电阻把端口拉到高电位,这时可用作输入口。P2作输入口使用时,因为有内部的上拉电阻,那些被外部信号拉低的引脚会输出一个电流。在访问外部程序存储器和16位地址的外部数据存储器(如执行“MOVX DPTR”指令)时,P2送出高8位地址。在访问8位地址的外部数据存储器(如执行“MOVX R1”指令
10、)时,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输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。要注意的是:每当访问外部数据
11、存储器时将跳过一个ALE脉冲。对FLASH存储器编程期间,该引脚还用于输入编程脉冲(PROG)。如有必要,可通过对特殊功能寄存器(SFR)区中的8EH单元的D0位置位,可禁止ALE操作。该位置位后,只有一条MOVX和MOVC指令才能将ALE激活。此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE禁止位无效。PSEN程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当AT89S52由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲,在此期间,当访问外部数据存储器,将跳过两次PSEN信号。EA/VPP外部访问允许,欲使CPU仅访问外部程序存储器(地址
12、为0000HFFFFH),EA端必须保持低电平(接地)。需注意的是:如果加密位LB1被编程,复位时内部会锁存EA端状态。如EA端为高电平(接Vcc端),CPU则执行内部程序存储器的指令。FLASH存储器编程时,该引脚加上12V的编程允许电源Vpp,当然这必须是该器件是使用12V编程电压Vpp。为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。XTAL1:振荡器反相放大器和内部时钟发生电路的输入端。XTAL2:振荡器反相放大器的输出端。要使单片机按照设计要求正常工作,完整单片机最基本的工作要求,考虑到系统无需精确地定时功能,且为了方便串口通信波特率的计算,采用12MHz的晶
13、振提供系统时钟。并附加复位电路,组成单片机最小系统。在本次设计中,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分别
14、接LCD显示屏的E,RW,RS断口。RST端与复位电路相连,实现对系统的复位控制作用,本课程设计采用的是按键复位。XTAL1端接器反相放大器和内部时钟发生电路的输入端,XTAL2:振荡器反相放大器的输出端,形成晶振电路。3.2按键设计键盘在单片机应用系统中是一个很关键的部件,它能实现向单片机系统输入数据、发送命令等功能,是人工干预单片机的主要手段。考虑到本设计实际需要的按键较少,故采用独立式键盘接口电路。它是将每个独立按键按一对一的方式直接接到单片机的I/O口上,通过程序扫描查询方式实现与单片机系统交互的。在程序查询方式下,通过I/O端口读入按键状态,当有按键按下时,相应的I/O端口变为低电平
15、,而未被按下的按键在上拉电阻作用下为高电平,这样通过读I/O口的状态判断是否有按键按下。P3.5设置,P3.6增加上限位,P3.6减少下限位的值,。按键设计的实际电路如图3-2所示图3-2按键电路3.3LCD显示电路设计 LCD1602引脚以及网络标号如图3-3所示图3-3 LCD1602引脚及网络标号第1脚:VSS为电源地第2脚:VCC接5V电源正极第3脚:V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会 产生“鬼影”,使用时可以通过一个10K的电位器调整对比度)。第4脚:RS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。第5脚:R
16、W为读写信号线,高电平(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-4 ADC0832引脚及网络标号(1)/CS片选使能,低电平有效。(2)C
17、HO模拟通道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-5 A/D转换电路3.5报警电路报警电
18、路主要是由发光二极管、蜂鸣器和三极管组成。报警电路与单片机的P2.0端口连接,当水位低于设定值或者高于设定值时,发光二极管会亮,同时蜂鸣器会响,提醒操作人员此时水位处于不正常状态。报警电路与单片机的P2.0端口连接报警电路如图3-6所示。图3-6 报警电路3.6执行电路电机工作电路主要反映了电机的工作情况,当水位低于设定值时,进水电机转动,出水电机不动,此时表示正在进水;当水位高于设定值是,进水电机停止转动,出水电机开始转动,此时表示正在出水;当水位介于两个设定值之间时,说明此时水位处于正常,此时进水电机和出水电机同时转动,维持水位的平衡。图中p2.6与p2.7端口与单片机89C52相连电机工
19、作电路如图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分别接进水排水电路,当
20、进水或者排水时相应的灯亮。P2.5控制进水电路指示灯,P2.6控制排水电路指示灯。P2.0接报警电路。P2.1,P2.2,P2.3分别接LCD显示屏的E,RW,RS断口。RST端与复位电路相连,实现对系统的复位控制作用,本课程设计采用的是按键复位。XTAL1端接器反相放大器和内部时钟发生电路的输入端,XTAL2:振荡器反相放大器的输出端,形成晶振电路。在开始时,设置水箱的进水上限位和排水的下限位。当水箱的水位低于下限位时,此时排水电机关闭,进水电机运转,同时声光报警电路工作;当水箱的水位高于上限位时,此时进水电机关闭,排水水电机运转,同时声光报警电路工作。当水箱水位处于所设定的上限位和下限位之
21、间时,进水和排水的电机同时运转,声光报警电路不工作。4 软件设计4.1系统流程图系统流程图如图4-1所示图4-1系统流程图以上流程图介绍了本次设计的工作流程:在开始时,初始化设置水箱的进水上限位和排水的下限位。然后开始信号检测当水箱的水位低于下限位时,此时排水电机关闭,进水电机运转,同时声光报警电路工作;当水箱的水位高于上限位时,此时进水电机关闭,排水水电机运转,同时声光报警电路工作。当水箱水位处于所设定的上限位和下限位之间时,进水和排水的电机同时运转,声光报警电路不工作。4.2程序源代码4.2.1系统主程序系统主函数程序如下: #include #include ADC0832.h#incl
22、ude LCD1602.hsbit warn = P20; /声光报警 sbit water_int = P24; /抽水指示灯 sbit water_out = P25; /排水指示灯sbit move_int = P26; /电机抽水 sbit move_out = P27; /电机排水sbit mode = P35;sbit up = P36;sbit down = P37;int High=90,Low=10;int level=0,flag=0;void display() /显示函数 Displaychar(5,1,DataStringHigh/100);Displaychar(6
23、,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);v
24、oid warning() /报警函数 warn=0;delayms(50);warn=1;delayms(50);warn=0;delayms(50); warn=1;delayms(50);void work() /进水排水函数 if(levelHigh) water_out=0;move_out=0;water_int=1;move_int=1;warning(); else water_int=1;move_int=0;water_out=1;move_out=0;void key_check() /按键 if(mode=0) /设置delayms(70); while(mode=0)
25、;flag+;if(flag2) flag=0; switch(flag) /功能 case 1: 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; case 2: display();Displaypstr(5,
26、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; case 3: flag=0; break; if(up=0) /增加delayms(70); while(up=0);switch(flag) case 1: Low+; if(Low 50) Low=10; dis
27、play();break;case 2: High+; if(High 90) High=50; display();break;case 3: flag=0; break; if(down=0) /减少delayms(70); while(down=0);switch(flag) case 1: Low-; if(Low 10) Low=50; display();break;case 2: High-; if(High 0; x-)for(y = 114; y0; y-);/11.0592MHz: 114 /12MHz: 124extern void _nop_ ( void );void
28、 write1602_com(unsigned char com)LCD_RS_0;LCD1602 = com;DELAY_1602;LCD_EN_1;DELAY_1602;LCD_EN_0;void write1602_dat(unsigned char dat)LCD_RS_1;LCD1602 = dat;DELAY_1602;LCD_EN_1;DELAY_1602;LCD_EN_0;void init1602( void )LCD_RW_0;write1602_com(0x38);write1602_com(0x0C);write1602_com(0x06);write1602_com(
29、0x01);/* 函数名:Locate_xy()* 功能 :定位写位置* 变量 :x,y-*/void Locate_xy(unsigned char x,unsigned char y ) unsigned char addr=0;if(y = 0)addr=0x80+x;if(y = 1)addr=0xc0+x; write1602_com(addr);/* 函数名:Displaychar()* 功能 :1602液晶显示一个字符* 变量 :x,y,wdata-*/void Displaychar(unsigned char x,unsigned char y, unsigned char
30、wdata) Locate_xy(x,y); write1602_dat(wdata);/* 函数名:Displaypstr()* 功能 :1602液晶显示一个字符串* 变量 :x,y,*str-*/void Displaypstr(unsigned char x,unsigned char y,unsigned char *str) unsigned int i=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.3
31、ADC0832转换部分软件设计AD转换部分主程序如下:#ifndef ADC0832_H#define ADC0832_Hsbit CS_0832 = P15;sbit CLK_0832 = P16;sbit DO_0832 = P17;/ DI、DO不同时有效,可共用一个接口sbit DI_0832 = P17;extern void _nop_ ( void );#define pulse0832() _nop_();_nop_();CLK_0832=1;_nop_();_nop_();CLK_0832=0/把模拟电压值转换成8位二进制数并返回unsigned char read0832(
32、)unsigned char i, 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;/ MSB FIRST DATAfor(i = 0; i 8; +i) pulse0832();c
33、h = 1;if(DO_0832=1)ch |= 0x01;/ MSB FIRST输出的最后一位与LSB FIRST输出的第一位是在/ 同一个时钟下降沿之后,故此处先执行读取,后执行pulse/ LSB FIRST DATAfor(i = 0; i = 1;if(DO_0832=1)ch1 |= 0x80;pulse0832();CS_0832=1;/ 取消片选,一个转换周期结束return (ch=ch1) ? ch : 0;/ 返回转换结果#endif5 功能验证5.1仿真效果图主要实现的是:在开始时,通过初始化设置水箱的进水上限位和排水的下限位。当水箱的水位低于下限位时,此时排水电机关闭
34、,进水电机运转,同时声光报警电路工作;当水箱的水位高于上限位时,此时进水电机关闭,排水水电机运转,同时声光报警电路工作。当水箱水位处于所设定的上限位和下限位之间时,进水和排水的电机同时运转,声光报警电路不工作。仿真效果图如图5-2(1)(2)(3)所示。仿真效果图(1)是当水位低于最低限定值时的效果图:当水箱的水位低于下限位时,此时排水电机关闭,进水电机运转,同时声光报警电路工作。仿真效果图(2)是当水位位于两个限定值之间的效果图:当水箱水位处于所设定的上限位和下限位之间时,进水和排水的电机同时运转,声光报警电路不工作。仿真效果图(3)是当水位高于最高限定值时的效果图:当水箱的水位高于上限位时
35、,此时进水电机关闭,排水水电机运转,同时声光报警电路工作。图5-2 仿真效果图(1)5-2 仿真效果图(2)5-2仿真效果图(3)6 总结设计过程中我遇到了很多的困难,因为知识是不连贯的,所以需要准备很多方面的知识去融合,去联系。由于在学习的时候更注重的是书面上的东西,而本次课程设计更多的是锻炼了我的动手动脑能力,让我有机会把课上学习的知识转化为可以在实际生产生活中应用的技术。本次课程设计的系统主要介绍了水体的液位检测控制,介绍了AT89C51单片机和其它一些单片机在液位控制系统中的应用,介绍了它们的引脚和在系统中的电路图,利用LCD来进行显示,我设计的硬件系统的结构简化,系统精度高,具有良好
36、的人机交互功能,并设有液位报警,有问题立即就能发现。通过自动调节控制液位并实现水体的液位报警。液位控制在设定值上正常运行不需要人工干预,操作人员劳动强度小。通过本次课程设计,我了解到自己的知识应该充分利用在实践上,在实践中把书本上的知识固化成自己的能力。在设计系统的时候也有很多的想法,但是有一些想法被否定了,最终完成设计的时候优先考虑了在课程上学习到的知识,并且和单片机、电子电路的知识结合起来。这次设计之后,我感觉到自己在自动化专业上的学习应该还有很长的路走,自动化是一个很有前途的行业,它涉及了生产生活的多个方面,对人们的影响可想而知,所以,学好自动化专业的知识不仅仅是对自己能力提升和自我价值
37、的实现,更是一件很有意义,可以让自己有所感触,有所收获的事业。在最后,我很感谢所有传授我知识的老师,和关心帮助我的同学,也很荣幸自己可以和自动化结下不解之缘。参考文献1 侯玉宝、陈忠平、李成群.基于proteus的51系列单片机设计与仿真.2010年2 李朝青.单片机原理及接口技术.北京航空航天大学出版社.2011年3 李光飞、楼然苗.单片机课程设计实例指导.北京航空航天大学出版社.2004年4 刘华东.单片机原理与应用.北京:电子工业出版社.2003年5 付晓光.单片机原理与实用技术.北京:清华大学出版社.2004年6 张洪润、蓝清华.单片机应用技术教程.北京:清华大学出版社.1998年7 贺廉云.单片机液位控制系统.山东:德州学院机电工程系.2008年8 郭陈文.基于AT89C51单片机的液位检测系统.东北:东北装备指挥技术学院.2003年9 于海生.微型计算机控制技术.北京:清华大学出版社.1999年10 陈霞、白小军.基于单片机的液位监控系统.武汉理工大学学报.2007年11 陈新昌、王万章.单片机在水位控制中的应用.信息技术.2006年