ImageVerifierCode 换一换
格式:DOCX , 页数:25 ,大小:314.08KB ,
资源ID:7109494      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/7109494.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(液位控制.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

液位控制.docx

1、液位控制液位控制 成绩 课程设计报告 题 目 液位自动控制系统 课 程 名 称 软件设计 院 部 名 称 机电工程学院 专 业 自动化 班 级 M11 自动化 学 生 姓 名 朱德纹 学 号 *课程设计地点 C304 课程设计学时 40学时 指 导 教 师 吴敏 金陵科技学院教务处制 液位自动控制系统 摘摘 要要 本文提出了一种用单片机水位控制对水位进行精密控制的方法,它以单片机AT89C51 作为控制器,模数转换器、液晶 LCD1602 显示等硬件系统和软件设计方法,实现具有液位检测报警和控制的双重功能,并对液位值进行显示。本设计主要由水位控制、按键控制、液晶 LCD 显示部分、声光报警等几

2、部分组成来实现液位控制。预先设定水位的高低两个临界点,用改变电阻的大小来代替实际中水位的高低,通过模数转换把这些信号送入单片机中。这些信号与设定值比较来确定进水阀和排水阀的开关。在本文中介绍了电路接口原理图,给出相应的软件设计流程图和 C 语言程序,并运用了 Protues 仿真软件来进行仿真。关键词:液位控制、单片机、仿真 1 绪绪 论论 水位控制系统是以水位为被控参数的控制系统,它在工业生产的各个领域都有广泛的应用。在工业生产过程中,有很多地方需要对容器内的介质进行液位控制,使之高精度地保持在给定的数值,水位控制系统的稳定对机器的使用寿命和产品的质量起着至关重要的作用。液位控制一般指对某一

3、液位进行控制调节,使其达到所要求的控制精度。水位的自动控制,是近年来新开发的一项新技术,它是微型计算机软件、硬件、自动控制等几项技术紧密结合的产物,工程作业采用的是微机控制和原有的仪表控制,微机控制有以下明显优势:1)直观而集中的显示各运行参数,能显示液位状态。2)在运行中可以随时方便的修改各种各样的运行参数的控制值,并修改系统的控制参数,可以方便的改变液位的上限、下限。3)具有水体控制过程的自动化处理以及监控软件良好的人机界面,操作人员在监控计算机上能根据控制效果及时修运行参数,这样能有效地减少工人的疲劳和失误,提高生产过程的实时性、安全性 综合以上的种种优点可以预见采用计算机控制系统是行业

4、的大势所趋。单片机是在一块芯片上集成了一片微型计算机所需的 CPU、存储器、输入、输出等部件。单片机自问世以来,性能不断提高和完善,体积小、速度快、功耗低的特点使它的应用领域日益广泛。一般,工业控制系统的工作环境差,干扰强,利用单片机控制就能克服这些缺点,而采用 AT89C51 单片机构成水位控制装置,其具有精度高,易维护,简单操作,实用性好,且与容器的几何尺寸无关的优点,从而使水箱在生产规定的运行中实现自动化控制,并且能最大可能的避免工伤事故发生的概率,同时也能节省资源并能有效的提高生产的效率。因此单片机在控制领域得到广泛的应用,使用单片机控制液体液位是很好的选择。2 液位自动控制系统总体方

5、案液位自动控制系统总体方案 2.1 单片机水位控制的优点单片机水位控制的优点 使用单片机实现水位控制具有较高的实用价值和稳定性好等特点。采用单片机内部程序控制的模拟水位传感器测量水位,可有效保证水位的自动控制,能更好地对水位进行自动化控制,避免工作人员在现场进行检测操作,方便了人员对水位系统的控制,控制方便且系统稳定性好;单片机不仅体积小,安装方便,功能齐全等优点,而且有很高的性价比,应用前景广,同时有助于发现可能存在的故障,通过微机实现给水系统的自动控制与调节,维持稳定系统,保证安全经济运行。本文就是采用AT89C51 单片机为核心芯片的一种水位控制系统,具有较高的实用价值和优越性。2.2

6、单片机水位控制的系统框图单片机水位控制的系统框图 系统的总体框图如图 2-1 所示 图 2-1 系统框图 本设计主要由水位控制、按键控制、液晶 LCD 显示部分、声光报警等几部分组成。2.3 单片机水位控制的原理介绍单片机水位控制的原理介绍 预先设定水位的高低两个临界点,本课程设计用可调电阻来代替液位传感器进行水位高低的模拟,通过模数转换把这些信号送入单片机中。这些信号与设定值比较来确定进水阀和排水阀的开关。在开始时,设置水箱的进水上限位和排水的下限位。当水箱的水位低于下限位时,此时排水电机关闭,进水电机运转,同时声光报警电路工作;当水箱的水位高于上限位时,此时进水电机关闭,排水水电机运转,同

7、时声光报警电路工作。当水箱水位处于所设定的上限位和下限位之间时,进水和排水的电机同时运转,声光报警电路不工作。3 硬件设计硬件设计 3.1 AT89C52 硬件设计硬件设计 在本次课程设计中,我们选用的是 AT89C52 型号的单片机 AT89C52 的引脚图如图 3-1所示 图 3-1 AT89C52 的引脚图 P0口(P0.0P0.7):P0口是一个 8位漏极开路的双向 I/O口。作为输出口,每位能驱动 8个 TTL逻辑电平。对 P0 端口写“1”时,引脚用作高阻抗输入。当访问外部程序和数据存储器时,P0口也被作为低 8位地址/数据复用。在这种模式下,P0具有内部上拉电阻。在 FLASH

8、编程时,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 端口,其输出缓冲器可驱动(吸收或输出电流方

9、式)4个 TTL输入。对端口写 1时,通过内部的上拉电阻把端口拉到高电位,这时可用作输入口。P2 作输入口使用时,因为有内部的上拉电阻,那些被外部信号拉低的引脚会输出一个电流。在访问外部程序存储器和 16 位地址的外部数据存储器(如执行“MOVX DPTR”指令)时,P2送出高 8 位地址。在访问 8 位地址的外部数据存储器(如执行“MOVX R1”指令)时,P2引脚上的内容(就是专业寄存器(SFR)区中 P2寄存器的内容)在整个访问期间不会改变。P3口(P3.0P3.7):P3口是一个具有内部上拉电阻的 8位双向 I/O 口,P3输出缓冲器能驱动 4个 TTL逻辑电平。对 P3端口写“1”时

10、,内部上拉电阻把端口拉高,此时可以作为输入口使用。作 RST复位输入。当振荡器工作时,RST 引脚出现两个机器周期以上高电平将使单片机复位。ALE/PROG当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低 8位字节。一般情况下,ALE仍以时钟振荡频率的 1/6 输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。要注意的是:每当访问外部数据存储器时将跳过一个 ALE脉冲。对 FLASH 存储器编程期间,该引脚还用于输入编程脉冲(PROG)。如有必要,可通过对特殊功能寄存器(SFR)区中的 8EH单元的 D0位置位,可禁止 ALE 操作。该位置位后,只有一条

11、 MOVX和 MOVC 指令才能将 ALE激活。此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置 ALE禁止位无效。PSEN程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当AT89S52 由外部程序存储器取指令(或数据)时,每个机器周期两次 PSEN 有效,即输出两个脉冲,在此期间,当访问外部数据存储器,将跳过两次 PSEN 信号。EA/VPP外部访问允许,欲使 CPU 仅访问外部程序存储器(地址为0000HFFFFH),EA 端必须保持低电平(接地)。需注意的是:如果加密位 LB1 被编程,复位时内部会锁存 EA端状态。如 EA 端为高电平(接 Vcc端),CPU 则执行内

12、部程序存储器的指令。FLASH 存储器编程时,该引脚加上12V的编程允许电源Vpp,当然这必须是该器件是使用 12V编程电压 Vpp。为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。XTAL1:振荡器反相放大器和内部时钟发生电路的输入端。XTAL2:振荡器反相放大器的输出端。要使单片机按照设计要求正常工作,完整单片机最基本的工作要求,考虑到系统无需精确地定时功能,且为了方便串口通信波特率的计算,采用 12MHz 的晶振提供系统时钟。并附加复位电路,组成单片机最小系统。在本次设计中,P0.0-P0.7 口与 LCD1602的 D0.0-D0.7相连,控制 LCD 显示屏,

13、显示水位的上限位和下限位的值以及当前的水位值。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 端与复位电路相连,实现对系统的复位控制作用,本课程设计采用的是按键复位。

14、XTAL1 端接器反相放大器和内部时钟发生电路的输入端,XTAL2:振荡器反相放大器的输出端,形成晶振电路。3.2 按键设计按键设计 键盘在单片机应用系统中是一个很关键的部件,它能实现向单片机系统输入数据、发送命令等功能,是人工干预单片机的主要手段。考虑到本设计实际需要的按键较少,故采用独立式键盘接口电路。它是将每个独立按键按一对一的方式直接接到单片机的 I/O口上,通过程序扫描查询方式实现与单片机系统交互的。在程序查询方式下,通过 I/O端口读入按键状态,当有按键按下时,相应的 I/O端口变为低电平,而未被按下的按键在上拉电阻作用下为高电平,这样通过读 I/O 口的状态判断是否有按键按下。P

15、3.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脚:RW 为读写信号线

16、,高电平(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.4 A/D 转换单元硬件设计转换单元硬件设计 ADC0832 引脚及网络标号如图 3-4 图 3-4 ADC0832

17、引脚及网络标号(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

18、.6 端口相接。A/D转换电路如图 3-5所示。图 3-5 A/D转换电路 3.5 报警电路报警电路 报警电路主要是由发光二极管、蜂鸣器和三极管组成。报警电路与单片机的 P2.0端口连接,当水位低于设定值或者高于设定值时,发光二极管会亮,同时蜂鸣器会响,提醒操作人员此时水位处于不正常状态。报警电路与单片机的 P2.0 端口连接报警电路如图 3-6 所示。图 3-6 报警电路 3.6 执行电路执行电路 电机工作电路主要反映了电机的工作情况,当水位低于设定值时,进水电机转动,出水电机不动,此时表示正在进水;当水位高于设定值是,进水电机停止转动,出水电机开始转动,此时表示正在出水;当水位介于两个设定

19、值之间时,说明此时水位处于正常,此时进水电机和出水电机同时转动,维持水位的平衡。图中 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 为 ADCD83

20、2提供时钟信号。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:振荡器反相放大器的输出端,形成晶振电路。在开始时,设置水箱的进水上限位

21、和排水的下限位。当水箱的水位低于下限位时,此时排水电机关闭,进水电机运转,同时声光报警电路工作;当水箱的水位高于上限位时,此时进水电机关闭,排水水电机运转,同时声光报警电路工作。当水箱水位处于所设定的上限位和下限位之间时,进水和排水的电机同时运转,声光报警电路不工作。4 软件设计软件设计 4.1 系统流程图系统流程图 系统流程图如图 4-1 所示 图 4-1 系统流程图 以上流程图介绍了本次设计的工作流程:在开始时,初始化设置水箱的进水上限位和排水的下限位。然后开始信号检测当水箱的水位低于下限位时,此时排水电机关闭,进水电机运转,同时声光报警电路工作;当水箱的水位高于上限位时,此时进水电机关闭

22、,排水水电机运转,同时声光报警电路工作。当水箱水位处于所设定的上限位和下限位之间时,进水和排水的电机同时运转,声光报警电路不工作。4.2 程序源代码程序源代码 4.2.1系统主程序 系统主函数程序如下:#include#include ADC0832.h#include LCD1602.h sbit 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 dow

23、n=P37;int High=90,Low=10;int level=0,flag=0;void display()/显示函数 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);Displayc

24、har(13,0,DataStringlevel/100);Displaychar(14,0,DataStringlevel%100/10);Displaychar(15,0,DataStringlevel%100%10);void 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

25、 water_int=1;move_int=0;water_out=1;move_out=0;void key_check()/按键 if(mode=0)/设置 delayms(70);while(mode=0);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,DataS

26、tringLow%100/10);Displaychar(15,1,DataStringLow%100%10);break;case 2: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;case 3:flag=0;break;if(u

27、p=0)/增加 delayms(70);while(up=0);switch(flag)case 1:Low+;if(Low 50)Low=10;display();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

28、.0592MHz:114/12MHz:124 extern void _nop_(void);void 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(0 x38);write160

29、2_com(0 x0C);write1602_com(0 x06);write1602_com(0 x01);/*函数名:Locate_xy()*功能:定位写位置*变量:x,y-*/void Locate_xy(unsigned char x,unsigned char y)unsigned char addr=0;if(y=0)addr=0 x80+x;if(y=1)addr=0 xc0+x;write1602_com(addr);/*函数名:Displaychar()*功能:1602液晶显示一个字符*变量:x,y,wdata-*/void Displaychar(unsigned char

30、 x,unsigned char y,unsigned char 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,

31、y);#endif 4.2.3 ADC0832 转换部分软件设计 AD转换部分主程序如下:#ifndef ADC0832_H#define ADC0832_H sbit 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

32、 read0832()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 DATA for(i=0;i 8;+i)pulse0832(

33、);ch=1;if(DO_0832=1)ch|=0 x01;/MSB FIRST 输出的最后一位与 LSB FIRST 输出的第一位是在 /同一个时钟下降沿之后,故此处先执行读取,后执行 pulse /LSB FIRST DATA for(i=0;i=1;if(DO_0832=1)ch1|=0 x80;pulse0832();CS_0832=1;/取消片选,一个转换周期结束 return(ch=ch1)?ch:0;/返回转换结果#endif 5 功能验证功能验证 5.1仿真效果图 主要实现的是:在开始时,通过初始化设置水箱的进水上限位和排水的下限位。当水箱的水位低于下限位时,此时排水电机关闭,进水电机运转,同时声光报警电路工作;当水箱的水位高于上限位时,此时进水电机关闭,排水水电机运转,同时声光报警电路工作。当水箱水位处于所设定的上限位和下限位之间时,进水和排水的电机同时运转,声光报警电路

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1