欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOC文档下载  

    毕业设计(论文)基于51LPC单片机的智能供水控制器的设计与实现.doc

    • 资源ID:3030774       资源大小:604KB        全文页数:34页
    • 资源格式: DOC        下载积分:8金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要8金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    毕业设计(论文)基于51LPC单片机的智能供水控制器的设计与实现.doc

    目 录引言-11 系统设计-21.1 方案比较-21.1.1 传感器选择方案-21.1.2 A/D转换方案-21.1.3 单片机复位方案-21.1.4 单片机起振方案-31.1.5 驱动显示方案-31.1.6 电机驱动方案-31.1.7 电机选择方案-31.2 方案论证-31.2.1 总体思路-31.2.2 设计方案-42 硬件部分-42.1 51LPC单片机简介-42.2 单元模块设计-42.2.1 A/D转换设计-42.2.2 起振电路设计-52.2.3 数码显示设计-52.2.4 电机驱动设计-62.2.5 电机控制-62.2.6 报警电路-82.3 系统整体分析-83 软件设计-83.1 详细流程图-83.1.1 主程序-93.1.2 中断子程序-93.1.3 GAODU子程序-103.1.4 查表子程序-113.1.5 状态子程序-123.1.6 状态控制子程序-154 结论-18参考文献-19附录-20摘 要本设计从分析水位报警器的原理和设计方法入手,主要基于51LPC单片机的硬件电路和语言程序设计,实现一种能够实现水位自动控制、具有自动保护、自动声光报警功能的控制系统。本控制系统由A/D 转换部分、单片机控制部分、数码显示部分、电机驱动部分、电机控制部分等构成。同时对各个部分进行了详细的论述,并给出了主要的流程图和软件设计程序。这是个简单而灵敏的监测报警电路,操作简单,接通电源即可工作。因为大部分电路采用数字电路,所以本水位监测报警器还具有耗能低、准确性高的特点。该系统设计新颖、简易,灵敏度高,工作稳定,能够显示当前水位、高低水位报警等功能。【关键词】51LPC单片机 ;水位自动控制 ; 继电器 ;自动保护引言在社会经济飞速发展的今天,水在人们正常生活和生产中起着越来越重要的作用。一旦断了水,轻则给人民生活带来极大的不便,重则可能造成严重的生产事故及损失。因此给水工程往往成为高层建筑或工矿企业中最重要的基础设施之一。任何时候都能提供足够的水量、平稳的水压、合格的水质是对给水系统提出的基本要求。就目前而言,多数工业、生活供水系统都采用水塔、层顶水箱等作为基本储水设备,由一级或二级水泵从地下市政水管补给。因此,如何建立一个可靠安全、又易于维护的给水系统是值得我们研究的课题。人类已经进入数字化时代。从计算机到 3G 数字通信,从娱乐使用的声像设备MP3、MP4、数字电视到军用雷达,数字技术的应用比比皆是。由于数字技术在处理和传输信息方面的各种优点,使数字技术的使用已渗透到人类生活的各个领域。因此,如何进行数字系统设计也便成为数字系统设计领域研究的热点课题。人们已采取了一定的节水措施,如红外线控制,并收到了一些成效。而某些场合如沟槽式小便池安装红外控制并不适用,而且由于频繁动作还会导致电磁阀寿命缩短,故障率增高,从而影响使用效果。在设计本电路过程中,我们以单片机技术为核心,采取随机与定时供水相结合的方式设计出智能控制器。该电路结构简易,避免引入多种集成复杂电路模块,使人一看就不会觉得复杂难懂而感到头痛。而且当以下工作完成以后,最后就是对整个系统的做了一个简单调试。1 系统设计1.1 方案比较1.1.1 传感器选择方案传统的水位检测通过设检测点来完成对水位的检测。通常,由于受检测点物理体积的影响,水位检测点的数目有限,从而影响了后续电路控制的精度。本设计,采用新型水位传感器,可以达到对水位高度的精确检测,以利于提高后续电路控制的精度。1.1.2 A/D转换方案通过对传感器的选择,可知由传感器输出的水位高度信号是 010V 的直流电压。在设计中,可以通过采样、保持电路对这一信号进行处理,将模拟信号转换为多个采样点信号。但这种处理方法由于受电路规模和采样精度的影响,不可能对水位信号作出精确的处理,近而也无法对电机、水位高度显示和报警作出精确的控制。因此,本设计中采用集成芯片ADC0809 对010V 的直流电压进行处理。可以达到:(1)电路简洁、明了。(2)高转换精度。(3)高控制精确。1.1.3 单片机复位方案RST/VPD:复位/备用电源线,可以使单片机处于复位(即初始化)工作状态。通常,单片机的复位有自动上电复位和人工按钮复位两种,图1.1 给出了它们的电路。考虑到,水塔与居民生活密切相关,当因特殊原因导致单片机掉电,需单片机立即自动复位(如:夜间短时间停电,导致本系统停止工作),故本设计采用上电复位方式。(a)上电复位电路 (b)开关复位电路图1.1-复位电路1.1.4 单片机起振方案XTAL1 和XTAL2 分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器,石晶振荡和陶瓷振荡均可采用。也可以采用外部时钟源驱动器件。考虑到设计、使用的方便,本设计中采用片内时钟驱动。即XTAL1 和XTAL2 只需外接晶振(配上相应的电容),便可以给单片机提供相应的时钟频率。1.1.5 驱动显示方案本设计中需将水塔水位高度在数码管中进行显示,有两种方案选择:(1)利用 MAX7219 进行驱动:MAX7219 是一种高集成化的串行输入/输出的共阴极 LED 显示驱动器。每片可驱动8 位7 段加小数点的共阴极数码管,可以数片级联,而与微处理器的连接只需3 根线。MAX7219 内部设有扫描电路,除了更新显示数据时从单片机接收数据外,平时独立工作,极大地节省了MCU 有限的运行时间和程序资源。(2)利用74LS48 驱动数码管:与单片机连接较为复杂,需占用单片机8 个端口。且在与数码管连接时需附加上拉电阻,用以完成数码管的驱动。考虑到本设计中,需显示的位数较少(两位),若利用MAX7219 驱动数码管,将造成资源浪费,且MAX7219 芯片价格较高,采用后大大提高成本支出。同时,随着MAX7219 的使用(对 MAX7219 的编程)将提高源程序的复杂度,对编译、调试和单片机运行效率都将造成影响。故设计中采用74LS7448 驱动数码管显示。1.1.6 电机驱动方案利用单片机驱动交流接触器,进而驱动电动机的运转。其中,在单片机的输出端到交流接触器间需接驱动模块。该驱动模块,可以由分离元件组成放大电路来实现对交流接触器的驱动,也可以单使用一块芯片实现。本设计中,采用一块芯片实现对交流接触器的控制。以达到使电路简洁,调试方便,易于维修的目的。1.1.7 电机选择方案电动机有直流、交流之分。异步电动机属于交流电机的一种;另一种交流电机是同步电机。异步电机由于结构简单,维护方便,价格便宜,所以应用最为广泛。本设计中,采用交流电机,为了克服沿程阻力损失和高度差所产生的静压力,供水水泵的扬程应根据实际情况有所变化。1.2 方案论证1.2.1 总体思路(1)水位高度的检测:利用水位传感器完成。(2)传感器输出信号处理:传感器输出信号,有直流电压和直流电流之分。设计中需将这一信号进行处理,以便单片机能够接收和处理。(3)单片机控制:单片机将由前级输入的检测信号进行分析和处理,从而产生相应的控制信号。(4)数码显示、电机驱动和报警电路根据单片机产生的控制信号,作出相应的动作。(5)电机控制电路根据电机驱动电路的状态作出相应的动作。1.2.2 设计方案水位自动控制电路是通过水位传感器将水位高度转换为 010V 的直流电压,再经过A/D 转换后,将转换所得的8 路并行数字量送入单片机进行处理来达到对水位进行自动控制的目的。通过对电压和水位的转换关系,最终利用单片机进行精确的控制,实现对水位高度的显示、主/备电机和报警装置的控制。水位自动控制器由6 个部分组成,即水位传感器、A/D 转换、单片机、数码显示、电机控制、报警控制部分,其总框图如图1.2 所示。图1.2-设计总框图2 硬件部分2.1 51LPC单片机简介51LPC是飞利浦公司新推出的单片机,是一种改造型80C51单片机。采用80C51加速处理器结构,指令执行速度是标准80C51 CPU的两倍。它是20引脚的单片机,适合于许多高要求集成度低成本的场合。可提供高速和低速的晶振和RC振荡方式。可编程选择,具有较宽的操作电压。可编程I/O线输出模式选择,可选择施密特出发输入,LED驱动输出,有内部看门狗定时器,上电、欠压复位。具有两个模拟电压比较器、IO接口、UART串行接口,允许在线编程,2位安全码可防止程序被读出。它分为20脚DIP封装和SO封装。2.2 单元模块设计2.2.1 A/D转换设计AT89C51 与ADC 接口时必须弄清并处理好三个问题: (1)要给START 线送一个100ns 宽的启动脉冲。(2)获取EOC 线上的状态信息,因为它是A/D 转换结束的标志。 (3)要给“三态输出锁存器”分配一个端口地址,也就是给 OE 线上送一个 地址译码器输出信号。 AT89C51 和ADC 接口通常采用查询和中断两种方式。采用查询法传送数据时AT89C51 应对 EOC 线查询它的状态:若查询到 EOC 变为高电平,则给 OE 线送一个高电平,以便从 D0D7 线上提取 A/D 转换后的数字量。采用中断方式传送数据时,EOC 线作为 CPU 的中断请求线。CPU 响应中断后,应在中断服务程序中使OE 线变为高电平,以提取A/D 转换后的数字量。2.2.2 起振电路设计石英晶振起振后,应能在 XTAL2 线上输出一个 3V 左右的正弦波,以使 AT89C51 片内的OSC 电路按石英晶振相同频率自激振荡。通常,OSC 的输出时钟频率FOSC 为0.5 16MHz,典型值为12MHz 或11.0592MHz。电容C1 和C2 可以帮助起振,典型值为30pf,调节它们可以达到微调FOSC 的目的。本设计中,晶振采用12MHz,C1 和C2 取30pf。其连接电路如图2.1 起振电路所示。图2.1-起振电路2.2.3 数码显示设计用7448 可以直接驱动共阴极的半导体数码管,由图3.3.37448 输出端可以看到,当输出管截止、输出为高电平时,流过发光二极管的电流是由 Vcc 经 2k 欧上拉电阻提供的。当Vcc=5V 时,这个电流只有2mA 左右。如果数码管需要的电流大于这个数值时,则应在2k 欧的上拉电阻上在并联适当的电阻。用7448 驱动半导体数码管的连接方式如图2.2数码显示所示。图2.2-数码显示2.2.4 电机驱动设计电感线圈是一种感性负载,当流过线圈的电流发生变化时线圈会发生很大的反电动势,这个反电动势有可能损坏驱动器中的输出晶体管。因此,为了防止驱动器损坏,线圈两端必须加箝位二极管。当AT89C51 在P2.0 上输出低电平时,SN75467 相应的输出晶体管导通,继电器线圈中有电流流过,继电器吸合;当 AT89C51 在 P2.0 上输出高电平时,驱动器相应输出晶体管截止,继电器线圈中无电流流过,继电器不吸合,触电常开。2.2.5 电机控制(1)三相电动机单向启动控制:图2.3 为三相电动机单向启动控制图。图中左侧是主电路图,右侧是辅助电路图。主电路构成:三相交流电源开关QS->熔断器FU1->交流接触器主触头KM->热继电器发热元件FR->电动机M。控制电路的构成:停止按SB1->启动按钮SB2->接触器线圈KM->热继电器动断触头FR 构成回路。从该电路图可以知道。1)启动、停止按钮控制电动机启动或停止。2)热熔器作为短路保护。3)热继电器作为过载保护。 图2.3-三相电动机单向启动控制图(2)三相电动机单向控制(工作原理):异步电动机接入电网的瞬间,启动电流大约是额定电流的 47 倍。过大的启动电流会造成电网电压的变化过大;对于启动时间较长的电机,过大的启动电流对电机会造成损害。所以除了小型异步电动机外,大多数异步电动机采用压降启动方式,以减小启动电流。常见的降压启动方式有Y/降压启动、沿边三角形降压启动、自耦变压器降压启动等。本设计采用自耦变压器降压启动,其工作原理如图2.4 所示。图2.4-三相电动机单向(工作原理)2.2.6 报警电路报警电路,如图 2.5 所示。当 AT89C51 的 P2.0 管脚有高电平输出时,SPEAKER 发出报警声。图2.5-报警电路2.3 系统整机分析整机电路图见附录二 。本设计是通过水位传感器(见附录一)对水位高度(010m)进行采样、量化后,输出 010V 的直流电压。再经过信号处理电路将这一直流模拟量转换为8 位的并行数字量,并送入单片机进行处理。在单片机中将输入的8 位数字量进行量化数为 100 的量化处理,并根据这一量化将水位高度控制转化为对状态 0099 的控制,其中状态00 对应0.0m、状态01 对应0.1m、状态99 对应9.9m 。根据这一对应关系,设置四个水位控制点,分别为:10、20、60、80 。(1)当状态在0010 时:主、备电机工作,报警电路工作(一高一低)。(2)当状态在1020 时:主、备电机工作,报警电路停止工作。(3)当状态在2060 时:主电机工作、备电机停止工作,报警电路停止工作。(4)当状态在6080 时:主电机工作、备电机停止工作,报警电路停止工作。(5)当状态在8099 时:主、备电机停止工作,报警电路工作(常高)。(6)根据状态0099 的不同,分别将0099 输出到数码显示部分。根据上述状态,即可分别对数码显示、SPEAKER 和电动机(主、备)实现单片机的自动化控制。3 软件设计软件设计的原则是充分利用51LPC的功能与特点。如看门狗、IO接口等功能,以实现控制器所要实现的功能,基于状态分析的设计方法设计主程序,使软件的结构清晰状态明确。中断程序只完成有关状态的设置,要完成的任务有主程序来完成。3.1 详细流程图3.1.1 主程序 图3.1-主程序如图3.1程序所示:首先对单片机写入外围端口地址(INT0 和F8H),并开中断 1,且定义中断为边缘触发方式。再将INT0 的端口地址写入F8H(ADC0809 的端口地址), 即可启动ADC0809。随后,单片机进入等待中断状态。3.1.2 中断子程序中断子程序如图 3.2中断所示:在中断到来后,程序转到中断子程序。在中断子程序中,实现单片机对ADC0809 转换所得的8 路并行数据的接收。并通过GAODU 子程序实现对接收所得的并行数据的量化,其量化数为100。通过量化,将输入数据变为0 99 种状态,为下一步处理作好准备。 图3.2-中断子程序3.1.3 GAODU子程序如图3.3GAODU 子程序所示。通过乘法指令实现数据的转换:将输入的 010 转换为099,为查表指令的实现作好准备工作。 图3.3GAODU子程序3.1.4 查表子程序如图3.4查表子程序所示,本设计通过查表指令对099 种状态进行处理。在处理过程中,关键是rel 的初始值必须为0(因AJMP 为双字节指令,当rel 为0、2、- 198 时,可进行查询),以便能够顺利的对表中数据进行查询,并通过查询结果作出相应的处理。在GAODU 子程序中,将输入数据处理为以0 开始的100 种状态,正是出于这一考虑。 图3.4查表子程序 3.1.5 状态子程序根据查表所得的结果,可以转到不同的子程序中,如图3.5表0099 所示。通过这些控制子程序(ROUT00ROUT 99),可以对输入数据作出不同处理。图3.5- 表00-993.1.6 状态控制子程序本设计中共用到五中控制状态,其控制方式如图3.6状态控制子程序所示。在这五种状态中包括了电机控制、报警控制。其中有两种状态需要报警,分别是水位低于1m 和水位高于8m 时。当水位低于1m 时:SPEAKER 发出间断的蜂鸣声(报警控制0)。当水位高于8m 时,SPEAKER 发出不间断的蜂鸣声(报警控制1)。有电机的状态三种:1)主、备电机同时工作。2)主电机工作、备用电机工作。3)主、备电机停止工作。图3.6状态控制子程序4 结论本次介绍的智能控制已在很多地方得到应用。实际应用表明该控制器控制准确、可靠性高、功耗低、停电不停时钟,有一定的推广应用价值。能产生明显的经济效益和社会效益。它的自动控制功能也保证了设备安全、稳定、经济的运行,减轻了人工的劳动强度。参考文献1 胡汗才.单片机原理及其接口技术M.北京:清华大学出版社,20042 钱晓捷.汇编语言程序设计M.北京:高等学校教材,20053 吴号烈.电机及电力拖动基础M.重庆:重庆大学出版社,19964 顾乐观.电机学M.重庆:重庆大学出版社,20025 张洪润,张压凡.传感器与应用教程M.北京:清华大学出版社,20056 张洪建,蒙建波.自动检测技术与装置M.北京:化学工业出版社,2004 7 芯片速查手册中国自动化技术公司出版M,19958 牛峰霞.水电站集水井水位自动控制J.河北水利水电技术, 20029 王新房,夏建明.模糊控制在灌区水位自动控制中的应用J.微电子学与计算机10 赵利明,张广辉.水塔水位自动控制系统J.重庆电力高等专课学校学报,2000.11 吴今哲,金永镐,崔叙进.水位自动控制器的研究J.延边大学学报(自然科学版), 2004,12 吕宁.水箱水位PLC 自动控制系统的设计J.电子技术,2005 13 周剑宏.酸水池水位自动控制J.铜业工程,200114 王卫军,扬代华,黄泽正.用单片机制作多功能水位自动控制器.自动化技术与应用J,2006,附 录1:PCB图及其电路图附 录2:程序设计#include <reg52.h>#include <absacc.h>#include"LCD.h"#define uchar unsigned char#define uint unsigned int#define ADC0809 XBYTE0x7fff#define disp_dat P1#define LED_n P2sbit INTR=P32;const uchar tab= 0xc0,0xf9,0xa4,0xb0,/03 0x99,0x92,0x82,0xf8,/47 0x80,0x90,0xff,0x86/8、9、mie;const uchar tab_dot= 0x40,0x79,0x24,0x30,/0.3. 0x19,0x12,0x02,0x78,/4.7. 0x00,0x10, 0xff,0x86/8.、9.、mie、E ;uchar T4=1,0,4,5;uchar tem11=10,10,20,13,11,11,15,21,18,29,11;uchar T_num=20,sam_n=0;/*函数声明*/void delay(int n);/延时函数void init_T0(void);/定时器T0初始化void disp_seg(uchar n,uchar d_dat);/显示函数uchar AD_dat(void);/AD转换函数uchar median(uchar *dat,uchar num_d);/中值滤波函数float account_res(void);/电阻值计算函数float shuipingmian(void);/计算温度函数void adj_t(void);/调整显示数据函数void disp(void);/温度显示程序void renovate(void);/更新显示数据/*主程序*/main()init_T0();/初始化T0while(1) disp();/调用显示函数 renovate();/更新显示数据; /*温度显示函数*/void disp(void)uchar i;for(i=0;i<4;i+) disp_seg(i,Ti);/*更新显示数据函数*/void renovate(void)if(sam_n=11)/去完11个采样值sam_n=0;/清零采样计数器adj_t();/调用数据调整程序/*延时函数*/void delay(int n) int i,j; for (i=0;i<n;i+) for (j=0;j<1000;j+);/*定时器T0初始化*/void init_T0(void) TMOD=0x01;/工作方式1 TH0=0x4c;/定时50ms TL0=0x00; ET0=1;/允许定时器T0中断 EA=1;/开总中断 TR0=1;/启动定时器T0/*显示函数*/void disp_seg(uchar n,uchar d_dat) LED_n=0xff;/清位控制状态 disp_dat=0xff;/清显示数据 LED_n=(0x01<<n);/送数据显示位if(n=2)disp_dat=tab_dotd_dat;/送带小数点显示数据else disp_dat=tabd_dat;/送无小数点显示数据 delay(1);/*AD转换函数*/uchar AD_dat(void) uchar temp; ADC0809=0;/启动AD转换 while (INTR);/等待转换结束 temp=ADC0809;/读取转换值 return(temp);/*中值滤波函数*/uchar median(uchar *dat,uchar num_d)/需要排序的数组 uchar i,j,temp; for (i=0;i<num_d;i+)/采用冒泡法对采样温度进行排序 for (j=0;j<num_d-i;j+) if (dati>dati+1) temp=dati; dati=dati+1; dati+1=temp; return(dat(num_d-1)/2); /取中值并返回/*电阻值计算函数*/float account_res(void)uchar temp;float temp_r;temp=median(tem,11);/利用中值法求取中间值temp_r=(float)temp)*150/255+100;return(temp_r);/*水平面计算函数*/float shuipingmian(void)float temp1,T_out;uchar temp2;temp1=account_res();temp2=(uchar)temp1;if(temp2<100)T_out=777;else if(temp2<139)T_out=2.558*temp1-256.02;else if(temp2<177)T_out=2.637*temp1-267.01;else if(temp2<214)T_out=2.721*temp1-281.9;else if(temp2<250)T_out=2.81*temp1-300.94;else if(temp2>250)T_out=777;return(T_out);/*调整显示数据函数*/void adj_t(void) float temp_v;uint value; temp_v=10*shuipingmian();/利用采集数据value=(uint)temp_v;if(value=7770) /超出测量范围 T0=11;/显示'E'T1=11;/显示'E'T2=11;/显示'E'T3=11;/显示'E' else T0=value/1000;/待显示百位T1=(value%1000)/100;/待显示十位T2=(value%1000)%100;/待显示个位T3=(value%1000)%100%10;/待显示小数if(T0=0x00)T0=10;if(T1=0)T1=10; /*定时T0中断程序*/void senddat_T0(void) interrupt 1TH0=0x4c;/重载定时器初值TL0=0x00;if(-T_num=0)temsam_n=AD_dat();/读取温度值存入缓冲区sam_n+; /温度采样个数加1T_num=20;/恢复计数值头文件LCD.h/*-12864.hUsing for control LCD 12864-*/#ifndef _12864_h_#define _12864_h_extern void delay_ms_12864(unsigned char t);extern void delay_12864(unsigned char t);extern unsigned char convert(uns

    注意事项

    本文(毕业设计(论文)基于51LPC单片机的智能供水控制器的设计与实现.doc)为本站会员(文库蛋蛋多)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开