毕业论文-基于8951单片机的恒压供水系统的设计与实现.doc_第1页
毕业论文-基于8951单片机的恒压供水系统的设计与实现.doc_第2页
毕业论文-基于8951单片机的恒压供水系统的设计与实现.doc_第3页
毕业论文-基于8951单片机的恒压供水系统的设计与实现.doc_第4页
毕业论文-基于8951单片机的恒压供水系统的设计与实现.doc_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

XXX大学毕业设计目 录前言11 绪论11.1 恒压供水系统的提出11.2 变频恒压供水系统主要特点11.3 恒压供水技术实现22 变频恒压调速供水系统的工作原理22.1 系统工作过程42.2 变频调速的基本调速原理52.3 水泵变频调速节能分析72.4 本章小结83 变频恒压调速供水系统硬件设计93.1 硬件总体说明93.2 555定时器复位电路93.3 LED数值显示 D/A数值采集 D/A数值反馈113.3.1 LED数值显示模块113.3.2 数据采集A/D转换电路124 变频恒压调速供水系统软件设计134.1 编程软件134.1.1 C051编译器介绍134.1.2 KEIL编译器144.2 单片机资料144.3 软件的程序设计图165 结论18附录19参考文献2731基于单片机恒压供水系统设计前言 随着人民生活水平的日趋提高,新技术和先进设备的应用,使供水设计得到了新的发展机遇,当前住宅建筑的规划趋向于更具有人性化的多层次住宅组合,人们不再仅仅追去立面和平面的美观和合理,而是追求空间上布局的流畅和设计中贯彻以人为本的理念,特别是在市场经济的浪潮中,力求土地使用效率的最大化。于是选择一种符合各方面规范、安全又经济合理的供水方式,对我们供水系统设计带来了新的挑战。恒压供水是指在供水管网中用水量发生变化时,出口压力保持不变的供水方式。供水压力值是根据用户需求确定的,传统的恒压供水方式是采用水塔、高位水箱、气压罐等设施来实现,随着变频调速技术的日益成熟和广泛应用,利用变频器、PID调节器、传感器、PLC等器件的有机组合,构成控制系统,调节水泵的输出流量,实现恒压供水。1 绪论1.1 恒压供水系统的提出水已经成为中国21世纪的热点问题,水有其自然属性,它既是一种特殊的、不可替换的资源,又是一种可重复使用、可再生的资源;水又有其经济和社会属性,不仅工业、农业的发展要靠水,水更是城市发展、人民生活的生命线。变频调速恒压供水技术其节能、安全、供水高品质等优点,在供水行业得到了广泛应用。恒压供水调速系统实现水泵电动机无级调速,依据用水量的变化(实际上为供水管网的压力变化)自动调节系统的运行参数,在用水量发生变化时保持水压恒定以满足用水要求是当今先进、合理的节能型供水系统。在实际应用中如何充分利用变频器内置的各种功能,对合理设计变频器调速恒压供水设备,降低成本、保证产品质量等有着重要意义。 1.2 变频恒压供水系统主要特点a. 节能,可以实现节电20%40%,能实现绿色省电。b. 占地面积小,投资少,效率高。c. 配置灵活,自动化程度高,功能齐全,灵活可靠。d. 运行合理,由于是软启和软停,不但可以消除水锤效应,而且电机轴上的平均扭矩和磨损减小,减小了维修量和维修费用,并且水泵的寿命大大提高。e. 由于变频恒压调速直接从水源供水,减少了原有供水方式的二次污染,防止了很多传染疾病。f. 通过通信控制,可以实现五人职守,节约了人力物力。1.3 恒压供水技术实现通过安装在管网上的压力传感器,把水转换成420mA的模拟信号,通过变频器内置的PID控制器,来改变电动水泵转速。当用户用水量增大,管网压力低于设定压力时,变频调速的输出频率将增大,水泵转速提高,供水量加大,当达到设定压力时,电动机水泵的转速不再变化,使管网压力恒定在设定压力上;反之亦然。目前交流电机变频调速技术是一项业已广泛应用的技能技术,由于电子技术的飞速发展,变频器的性能有了极大的提高,它可以实现控制设备软启停,不仅可以降低设备故障率,还可以大幅缩减电耗,确保系统安全、稳定、长周期运行。长期以来区域的供水系统都是由市政管网经过二次加压和水塔或天而水池来满足用户对供水压力的要求。在供水系统中加压泵通常是用最不利水电的水压要求来确定相应的扬程设计,然后泵组根据流量变化情况来选配,并确定水泵的运行方式。由于用水有着季节和时段的明显变化,日常供水运行控制就常采用水泵的运行方式调整加上出口阀开度调节供水的水量水压,大量能量因消耗在出口阀而浪费,而且存在着水池“二次污染”的问题。变频调速技术在给水泵站上的应用,成功解决了能耗和污染两大难题1。2 变频恒压调速供水系统的工作原理在变频调速供水系统中,是通过变频调速来改变水泵的转速从而改变水泵工作点来达到调节供水流量的目的。反应水泵运行工程的水泵工作点也称为水泵工况点,是指水泵在确定的管路系统中,实际运行时所具有的扬程、流量以及相应的效率、功率等参数。调节水泵转速的过程中,水泵工况点的调节是一个十分关键的问题。如果水泵工况点偏离设计工作点较远,不仅会引起水泵运行效率降低、功率升高或者发生严重的气穴现象,还可能导致管网压力不稳定而影响正常的供水。水泵在实际运行时的工作点取决于水泵性能、管路水力损失以及所需实际扬程,这三种因素任一项发生变化,水泵的运行工况都会发生变化因此水泵工况点的确定和工况调节与这三者密切相关。图2-1 变频恒压供水系统组成框图图2-1就是一个典型的由8051单片机控制的恒压调速供水系统。系统由微机控制器、交流变频调速器、水泵机组、供水管网和压力传感器等组成,控制系统结构原理如图2-2所示。8051单片计算机在这里主要起压力采集,PID调节器计算、功能判断处理、消防处理、逻辑切换、压力显示和声光报警等作用2。图2-2 单片机的变频恒压调速系统原理框图2.1 系统工作过程根据现场生产的实际状况,白天一般只需开动一台水泵,就能满足生产生活需要,小机工频运行作恒速泵使用,大机变频运行作变量泵;晚上用水低峰时,只需开动一台大机就满足供水需要,因此可采用一大一小搭配进行设计,即把1#水泵电机(160KW)和2#水泵电机(220KW)为一组,自动控制系统可以根据运行时间的长短来调整选择不同的机组运行。分析自动控制系统机组(1#、2#水泵机组)工作过程,可分为以下三个工作状态:a.1#电机变频启动;b.1#电机工频运行,2#电机变频运行;c.2#电机单独变频运行,一般情况下,水泵电机都处于这三种工作状态中,当管网压力突变时,三种工作状态就要发生相应变换,因此这三种工作状态对应着三个切换过程。切换过程1#电机变频启动,频率达到50Hz,1#电机工频运行,2#电机变频运行。系统开始工作时,管网水压低于设定压力下限P。按下相应的按钮,选择机组运行,在PLC可编程控制器控制下,KM2得电,1#电机先接至变频器输出端,接着接通变频器FWD端。变频器对拖动1#泵的电动机采用软启动,1#电机启动,运行一段时间后,随着运行频率的增加,当变频器输出频率增至工频f0可编程控制器发出指令,接通变频器BX端,变频器FWD端断开,KM2失电,1#电机自变频器输出端断开,KM1得电,1#电机切换至工频运行,1#电机自变频器输出端断开,KM1得电1#电机切换至工频运行。1#电机工频运行后,开启1#泵阀门,1#泵工作在工频状态。接着KM3得电,2#电机接至变频器输出端,接通变频器FWD端,变频器BX端断开,2#电机开始软启动,运行一段时间后,开启2#泵阀门,2#水泵电机工作在变频状态。从而实现1#水泵由变频切换至工频电网运行,2#水泵接入变频器并启动运行,在系统调节下变频器输出频率不断增加,直到管网水压达到设定值(PiPPm)为止。切换过程由1#电机工频运行,2#电机变频运行转变为2#电机单独变频运行状态。当晚上用水量大量减少时,水压增加,2#水泵电机在变频器作用下,变频器输出频率下降,电机转速下降,水泵输出流量减少,当变频器输出频率下降到指定值fmin,电机转速下降到指定值,水管水压高于设定水压上限Pk时(2#电机,f=fmin,PPk),在PLC可编程控制器控制下,1#水泵电机在工频断开,2#水泵继续在变频器拖动下变频运行。切换过程由2#电机变频运行转变为2#电机变频停止,1#电机变频运行状态。当早晨用水量再次增加时,2#电动机工作在调速运行状态,当变频器输出频率增至工频fi(即50Hz),水管水压低于设定水压上限Pi时(2#电机f=fi,PPi),接通变频器BX端,变频器FWD断开,KM3断开,2#电机自变频器输出端断开;KM2得电,1#电机接至变频器输出端;接通变频器FWD端,于此同时变频器BX端断开。1#电机开始软启动。控制系统又回到初始工作状态,开始新一轮循环。图2.1-1 1#和2#机组工作过程流程图2.2 变频调速的基本调速原理水泵机组应用变频调速技术。即通过改变电动机定子电源效率来改变电动机转速可以相应的改变水泵转速及工况,使其流量与扬程适应管网用水量的变化,保持管网最不利点压力恒定,达到节能效果。如图2.2-1所示,n为水泵特性曲线,A管路特性曲线,H0为管网末端的服务压力,H1为泵出口压力。当用水量达到最大Qmax时,水泵全速运转,出口阀门全开,达到了满负荷运行,水泵的特性n0和用水管特性曲线A0汇交于b点,此时,水泵输出口压力为H,末端服务压力刚好为H0.当用水量从Qmax减少到Q1的过程中,采用不同的控制方案,其水泵的能耗也不同3。图2.2-1 节能分析曲线图 水泵全速运转,靠关小泵出口阀门来控制;此时,管路阻力特性曲线变陡(A2),水泵的工况点由b点上滑到c点,而管路所需的扬程将由b点滑到d点,这样c点和d点扬程的差值即为全速水泵的能量浪费。 水泵变速运转,靠泵的出口压力恒定来控制;此时,当用水量由Qmax下降时,控制系统降低水泵转速来改变其特性。但由于采用泵出口压力恒量方式工作。所以其工况点是在H上平移。在水量到达Q1时,相应的水泵特性趋向为nx。而管路的特性曲线将向上平移到A1,两线交点e即为此时的工况点,这样,在水量减少到Q1时,将导致管网不利点水压升高到H0H1,则H1即为水泵的能量浪费。 水泵变速运转,靠管网取不利点压力恒定来控制;此时,当用水量由Qmax下降到Q1时,水泵降低转速,水泵的特性曲线n1,其工况点为d点,正好落在管网特性曲线A0上,这样可以使水泵的工作点式中沿着A0滑动,管网的服务压力H0恒定不变,其扬程与系统阻力相适应,没有能量的浪费。此方案与泵出口恒压松散水相比,其能耗下降了h1。根据水泵相似原理: Q1/Q2=n1/n2H1/H2=(n1/n2)*2P1/P2=(n1/n2)*3式中,Q、H、P、n分别为泵流量、压力、轴功率和转速。即通过控制转速可以减少轴功率。根据以上分析表明,选择供水管网最不利点允许的最低压力为控制参数,通过压力传感器以获得压力信号,组成闭环压力自控调速系统,以使水泵的转速保持与调速装置所设定的控制压力相匹配,使调速技术和自控技术相结合,达到最佳节能效果。采用变频恒压供水系统除可节能外,还可以使水泵组启动,降低了起动电流,避免了对供电系统产生冲击负荷,提高了供水供电的安全可靠性。另外,变频器本身具有过电流、过电压、失压等多种保护功能,提高了系统的安全可靠性。目前水泵电机绝大部分是三相交流异步电动机,根据交流电机的转速特性,电机的转速n为 n=120(1-s)/p式中s为电机的滑差(s=0.02),p为电机极对数,f为定子供电频率。当水泵电机选定后,p和s为定值,也就是说电机转速与电源的频率高低成正比,频率越高,转速越高,反之,转速越低,变频调速时是根据这一公式来实现无级调速的。由流体力学知:管网压力P、流量Q和功率N的关系为N=PQ由功率与水泵电机转速成三次方正比关系,基于转速控制比,基于流量控制可以大幅度降低轴频率4。2.3 水泵变频调速节能分析水泵运行工况点A是水泵性能曲线n1和管道性能曲线R1的交点。在常规供水系统中,采用阀门控制流量,需要减少流量时关小阀门,管路性能曲线有R1变为R2。运行工况点沿着水泵性能曲线从A点移到D点,扬程从H0上升到H1,流量从Q0减少到Q1。采用变频调速控制时,管路性能曲线R1保持不变,水泵的特性取决于转速,如果水泵转速从n0降到n1,水泵性能曲线从n0平移到n1,运行工况点沿着水泵性能曲线从A点移到C点,扬程从H0下降到H1,流量从Q0减少到Q1。在图2.3-1中水泵运行在B点时消耗的轴功率与H1BQ1O的面积成正比,运行在C点时消耗的轴功率与H2CQ1O的面积成正比,从图2-6上可以看出,在流量相同的情况下,采用变频调速控制比恒速泵控制节能效果明显。图2.3-1 变频调速恒压供水单台水泵工况调节图求出运行在B点的泵的轴功率 运行在C点泵的轴功率 两者之差 也就是说,采用阀门控制流量时有V的功率被白白浪费了,而且损耗阀门的关小而增加。相反,采用变频调速控制水泵电机时,当转速在允许范围内降低时,功率以转速的三次方下降,在可调节范围内与恒速泵供水方式中用阀门增加阻力的流量控制方式相比,节能效果显著。2.4 本章小结本章从水泵理论和管网特性曲线分析入手讨论水泵工作点的确定方法。接着介绍了水泵工况调节的几种常用方法。在变频调速恒压供水系统中,水泵工况的调节是通过改变水泵性能曲线得以实现的。本章重点对变频调速恒压供水系统中水泵能耗机理进行深入研究,得到以下几个结论:a. 水泵的工作点就是在同一坐标系中水泵的性能曲线和管路性能曲线的交点,水泵工作点是水泵运行的理想工作点,实际运行时水泵的工作点并非总是固定不变的。b. 水泵工况的调节就是采用改变管路性能曲线或改变水泵性能曲线的方法来移动工作点,使其符合要求。3 变频恒压调速供水系统硬件设计3.1 硬件总体说明单片机系统的硬件结构框架图如图3.1-1所示。本系统以8951单片机为核心,它有4KEPROM,所以不用外扩EPROM,这样可以利用P0、P2口作为输入、输出I/O口,简化了硬件结构。系统的显示采用4片74LS164驱动LED,使用8951的串行通讯口TXD,DXD。93C46为串行EEPROM,用于保存开机设定的原始参数5。图3.1-1 系统硬件结构框图3.2 555定时器复位电路用NE555组成的硬件定时复位系统,可以有效地防止程序死机现象。NE555封装图3.2-1 NE555封装图如图3.2-1和图3.2-2可知,NE555定时电路V0口输出连续的脉冲信号至RST,达到定时复位的效果。电路使用电阻电容产生RC定时电路,用于设定脉冲的周 期和脉冲的宽度。调节RW或者电容C,可以得到不同的时间常数。脉冲宽度计算公式:TW =0.7(R1+RW+R2)C振荡周期计算公式:T=0.7(R1+ RW+2*R2)C从而通过控制振荡周期和脉冲宽度就可以控制定时时间。内部结构图图3.2-2 NE555内部结构图 3.2-3 NE555定时电路及工作波形3.3 LED数值显示 D/A数值采集 D/A数值反馈3.3.1 LED数值显示模块数码管由7 个发光二极管组成,行成一个日字形,它门可以共阴极,也可以共阳极。通过解码电路得到的数码接通相应的发光二极而形成相应的字,这就是它的工作原理。基本的半导体数码管是由7 个条状的发光二极管(LED)按图1 所示排列而成的,可实现数字09及少量字符的显示。另外为了显示小数点,增加了1 个点状的发光二极管,因此数码管就由8 个LED 组成,我们分别把这些发光二极管命名为a,b,c,d,e,f,g,dp,排列顺序如下图3.3.1-1。图3.3.1-1 共阴数码管引脚图3.3.2 数据采集A/D转换电路 a. AD0809的逻辑结构ADC0809 是8位逐次逼近型A/D转换器。它由一个8路模拟开关、一个地址锁存译码器、一个A/D 转换器和一个三态输出锁存器组成,如图3.3.2-1。多路开关可选通8个模拟通道,允许8 路模拟量分时输入,共用A/D 转换器进行转换。三态输出锁器用于锁存A/D 转换完的数字量,当OE 端为高电平时,才可以从三态输出锁存器取走转换完的数据。图3.3.2-1 AD0809内部结构b. AD0809的工作原理IN0IN7:8 条模拟量输入通道ADC0809 对输入模拟量要求:信号单极性,电压范围是05V,若信号太小,必须进行放大;输入的模拟量在转换过程中应该保持不变,如若模拟量变化太快,则需在输入前增加采样保持电路6。c. AD0809转换电路电路见图3.3.2-2,主要由AD 转换器AD0809,频率发生器SUN7474,单片机AT89S51及显示用数码管组成。AD0809的启动方式为脉冲启动方式,启动信号START启动后开始转换,EOC 信号在START 的下降沿10us后才变为无效的低电平。这要求查询程序待EOC无效后再开始查询,转换完成后,EOC 输出高电平,再由OE 变为高电平来输出转换数据。我们在设计程序时可以利用EOC 信号来通知单片机(查询法或中断法)读入已转换的数据,也可以在启动AD0809 后经适当的延时再读入已转换的数据。AT89S51的输出频为晶振频的1/6(2MHZ),AT89S1 与SUN7474连接经与7474的ST脚提供AD0809 的工作时钟。AD0809 的工作频范围为10KHZ-1280KHZ,当频率范围为500KHZ 时,其转换速度为128us。AD0809 的数据输出公式为:Dout=Vin*255/5=Vin*51,其中Vin为输入模拟电压,Vout为输出数据。图3.3.2-2 A/D转换电路4 变频恒压调速供水系统软件设计4.1 编程软件4.1.1 C051编译器介绍现在比较流行的51系列编程软件a. American Automation:编译器通过#asm和endasm预处理选择支持汇编语言。b. IAR: 瑞典的IAR是支持分体切换的编译器。c. Bso/Tasking:是Intel,LSI,Motorola,Philips,Simens和Texas Instruments嵌入式系统的配套软件工具d. Dunfield Shareware:非专业的软件包,不支持floats,longs或结构等e. KEIL:KEIL在代码生成方面处于领先地位,可以产生最少的代码。它支持浮点或长整数、重入和递推。使用单片机模式,KEIL是最好的选择f. Intermetrics:使用起来比较困难,要由可执行的宏语句控制编译、汇编和链接,且选项很多。编译器的算法技术支持(float和long)很重要。生成代码的大小比编译速度重要,这里KEIL具有性能领先、紧凑的代码和使用方便等优点,所以本系统用KEIL编译器7。4.1.2 KEIL编译器KEIL开发工具套件可用于编译C源程序、汇编源程序、链接和定位目标文件及库,创建HEX文件以及调试目标程序。a. uVision2 for Windows:是一个集成开发环境。它将项目管理、源代码编辑和程序调试等组合在一个强大功能的环境中。b. CX51国际标准优化C交叉编译器:从C源代码产生可重定位的目标模块。c. AX51宏汇编器:从8051汇编源代码产生可重定位的目标模块。d. BL51链接器/定位器:组合有CX51和AX51产生的可重定位的目标模块,生成绝对目标模块。e. LIB51库管理器:从目标模块生成链接器可以使用的库文件。f. OH51目标文件至HEX格式的转换器:从绝对目标模块生成Intel HEX文件。g. RTX-51实时操作系统:简化了复杂的实时应用软件项目的设计8。4.2 单片机资料单片微型计算机简称为单片机,有称为微型控制器,是微型计算机的一个重要分支。单片机是70年代中期发展起来的一种大规模集成电路芯片,是CPU、RAM、ROM、I/O接口和中断系统于同一硅片的器件。80年代以来,单片机发展迅速,各类新产品不断涌现,出现了许多高性能新型机种,现已逐渐成为工厂自动化和各控制领域的支柱产业之一。 ALE/PROG 地址锁存控制信号:在系统扩展时,ALE用于控制把P0口的输出低8位地址送锁存器锁存起来,以实现低位地址和数据的隔离。ALE与74LS373锁存器的G相连接,当CPU对外部进行存取时,用以锁住地址的低位地址,即P0口输出。ALE有可能是高电平也有可能是低电平,当ALE是高电平时,允许地址锁存信号,当访问外部存储器时,ALE信号负跳变(即由正变负)将P0口上低8位地址信号送入锁存器。当ALE是低电平时,P0口上的内容和锁存器输出一致。在没有访问外部存储器期间,ALE以1/6振荡周期频率输出(即6分频),当访问外部存储器以1/12振荡周期输出(12分频)。当系统没有进行扩展时ALE会以1/6振荡周期的固定频率输出,因此可以做为外部时钟,或者外部定时脉冲使用。 PORG为编程脉冲的输入端:在8051单片机内部有一个4KB或8KB的程序存储器(ROM),ROM的作用就是用来存放用户需要执行的程序的,通过编程脉冲输入才能写进去的,这个脉冲的输入端口就是PROG。 EA/VPP 访问和序存储器控制信号 a. 接高电平时: CPU读取内部程序存储器(ROM)。 扩展外部ROM:当读取内部程序存储器超过0FFFH(8051)1FFFH(8052)时自动读取外部ROM。 b. 接低电平时:CPU读取外部程序存储器(ROM)。 在前面的学习中我们已知道,8031单片机内部是没有ROM的,那么在应用8031单片机时,这个脚是一直接低电平的。 c. 8051写内部EPROM时,利用此脚输入21V的烧写电压。 RST 复位信号:当输入的信号连续2个机器周期以上高电平时即为有效,用以完成单片机的复位初始化操作,当复位后程序计数器PC=0000H,即复位后将从程序存储器的0000H单元读取第一条指令码。 XTAL1和XTAL2 外接晶振引脚。当使用芯片内部时钟时,此二引脚用于外接石英晶体和微调电容;当使用外部时钟时,用于接外部时钟脉冲信号。 VCC:电源+5V输入 VSS:GND接地。 AVR和pic都是跟8051结构不同的8位单片机,因为结构不同,所以汇编指令也有所不同,而且区别于使用CISC指令集的8051,他们都是RISC指令集的,只有几十条指令,大部分指令都是单指令周期的指令,所以在同样晶振频率下,较8051速度要快。ARM实际上就是32位的单片机,它的内部资源(寄存器和外设功能)较8051和PIC、AVR都要多得多,跟计算机的CPU芯片很接近了9。4.3 软件的程序设计图a. 主程序框图图 4.3-1 主程序流程图b. 继电器控制子程序图4.3-2 继电器控制流程图c. A/D子程序图4.3-3 A/D子程序流程图d. PID控制子程序图4.3-4 PID计算子程序流程图5 结论本文在分析和比较用于供水行业的控制系统的发展和现状的基础上,结合我国供水的现状,设计了一套一拖多的控制系统,在这个毕业设计中有如下认识;a. 在变频调速恒压供水系统中,单台水泵工况的调节是通过变频器来改变电源的频率f,来改变电机的转速n,从而改变水泵性能曲线得以实现的,分析水泵工况点激流调节和变速调节能耗比较土,可以看出利用变频调速实现恒压供水,当转速降低时。流量与转速成正比,功率以转速的三次方下降,与恒速泵供水方式中用闸阀增加阻力节流相比,在一定程度上可以减少能量损耗,能够明显节能。水泵转速的工矿调节必须限制在一定范围以内,也就是不要使变频器频率下降得过低,避免水泵在低效率段运行。b. 通过对供水控制模式进行分析,发现传统的生产控制模式是一种被动的控制方式,没有对供水管网的水量平衡进行综合考虑。针对传统控制模式的缺陷,提出了综合考虑水压和水量平衡的自适应平衡调节方法,为该供水控制系统的设计提供了依据。附录1: A/D数据采集转化及显示子程序#include #define uchar unsigned char#define uint unsigned intsbit st=P32;sbit oe=P31;sbit eoc=P30;uchar codetab=0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09;/数码管显示段码uchar codetd=0x00,0x10,0x20,0x30,0x40,0x50,0x60,0x70;/通道先择数组uint ad_0809,ad_data1,ad_data2,ad_data3,ad_data0;uchar m,number;uchar x8;/八通道数据待存数组void delaynms(uint x);/nms延时程序void display();/显示程序void ad0809();/芯片启动程序void key();/键扫描程序main()number=1;P1=0x00;while(1)ad0809();/调AD0809 启动子程序key();/调按键子程序ad_0809=xnumber;/把相关通道数据给ad_0809display();/调显示/nms 延时程序void delaynms(uint x)uchar i;while(x-0)for(i=0;i125;i+);void display()uchar a;ad_data1=(ad_0809*49/25)/100;/读得的数据乘以2 再乘以98%除以100 得百位ad_data2=(ad_0809*49/25)%100)/10;/读得的数据乘以2 再乘以98%再分出十位ad_data3=(ad_0809*49/25)%100)%10);/读得的数据乘以2 再乘以98%再分出个位for(a=0;a10;a+)P0=tabad_data3;/送小数点后第二位显示P2=0x07;/选通第一个数码管delaynms(3);P0=tabad_data2;/送小数点后第一位显示P2=0x0b;/选通第二个数码管delaynms(3);P0=tabad_data1;/送整数显示P0_7=0;/点亮第三个数码管小数点P2=0x0d;/ 选通第三个数码管delaynms(3);P0=tabnumber;/送通道号显示P2=0x0e;delaynms(3);void ad0809()uchar i,m=1;for(i=0;i8)number=1;/八通道附录2: PID控制子程序#include #include#includestruct _pid int pv; /*integer that contains the process value*/ int sp; /*integer that contains the set point*/ float integral; float pgain; float igain; float dgain; int deadband; int last_error;struct _pid warm,*pid;int process_point, set_point,dead_band; float p_gain, i_gain, d_gain, integral_val,new_integ; /*- pid_init DESCRIPTION This function initializes the pointers in the _pid structure to the process variable and the setpoint. *pv and *sp are integer pointers. -*/ void pid_init(struct _pid *warm, int process_point, int set_point) struct _pid *pid; pid = warm; pid-pv = process_point; pid-sp = set_point; /*- pid_tune DESCRIPTION Sets the proportional gain (p_gain), integral gain (i_gain), derivitive gain (d_gain), and the dead band (dead_band) of a pid control structure _pid. -*/ void pid_tune(struct _pid *pid, float p_gain, float i_gain, float d_gain, int dead_band) pid-pgain = p_gain; pid-igain = i_gain; pid-dgain = d_gain; pid-deadband = dead_band; pid-integral= integral_val; pid-last_error=0; /*- pid_setinteg DESCRIPTION Set a new value for the integral term of the pid equation. This is useful for setting the initial output of the pid controller at start up. -*/ void pid_setinteg(struct _pid *pid,float new_integ) pid-integral = new_integ; pid-last_error = 0; /*- pid_bumpless DESCRIPTION Bumpless transfer algorithim. When suddenly changing setpoints, or when restarting the PID equation after an extended pause, the derivative of the equation can cause a bump in the controller output. This function will help smooth out that bump. The process value in *pv should be the updated just before this function is used. -*/ void pid_bumpless(struct _pid *pid) pid-last_error = (pid-sp)-(pid-pv); /*- pid_calc DESCRIPTION Performs PID calculations for the _pid structure *a. This function uses the positional form of the pid equation, and incorporates an integral windup prevention algorithim. Rectangular integration is used, so this function must be repeated on a consistent time basis for accurate control. RETURN VALUE The new output value for the pid loop. USAGE #include control.h*/ float pid_calc(struct _pid *pid) int err; float pterm, dterm, result, ferror; err = (pid-sp) - (pid-pv); if (abs(err) pid-deadband) ferror = (float) err; /*do integer to float conversion only once*/ pterm = pid-pgain * ferror; if (pterm 100 | pterm integral = 0.0; else pid-integral += pid-igain * ferror; if (pid-integral 100.0) pid-integral = 100.0; else if (pid-integral integral = 0.0; dterm = (float)(err - pid-last_error) * pid-dgain; result = pterm + pid-integral + dterm; else result = pid-integral; pid-last_error = err; return (result); void main(void) float display_value; int count=0; pid = &warm;/ printf(Enter the values of Process point, Set point, P gain, I gain, D gain n);/ scanf(%d%d%f%f%f, &process_point, &set_point, &p_gain, &i_gain, &d_gain); process_point = 30; set_point = 40; p_gain = (float)(5.2); i_gain = (float)(0.77);d_gain = (float)(0.18); dead_band = 2; integral_val =(float)(0.01); printf(The values of Process point, Set point, P gain, I gain, D gain n); printf( %6d %6d %4f %4f %4fn, process_point, set_point, p_gain, i_gain, d_gain); printf(Enter the values of Process pointn); while(count=20) Scanf(%d,&process_point); pid_init(&warm, process_point, set_point); pid_tune(&warm, p_gain,i_gain,d_gain,dead_band); pid_setinteg(&warm,0.0); /pid_setinteg(&warm,30.0); /Get input value for process point pid_bumpless(&warm); / how to display output display_value = pid_calc(&warm); printf(%fn, display_value); /printf(n%f%f%f%f,warm.pv,warm.sp,warm.igain,warm.dgain); count+; 参考文献:1 何立民:MCS-51系列单片机应用系统设计,北京航空航天大学出版社,1990,P122- P1302 秦进平、官英双:基于单片机的恒压供水系统,黑龙江工程学院学报,2005,P103-P1123 解宏基、任 光:一种多功能变频恒压供水单片机供水控制系统,大连海事大学轮机工程研究所,P258-P2624 周黎辉、冯正进:变频器在多泵并联调速系统中的应用,机电一体化,1999,P35-P405 王幸之、钟爱琴:AT89系列单片机原理及接口技术,北京航空航天大学出版社,2004,P76-P946 苏 夯:控制恒压供水系统的设计,大连交通大学,2009,P76-P807 童 占:新概念51单片机C语言教程,电子工业出版社,2003,P275-P2848 马忠梅、籍顺心、张 凯:单片机的C语言应用程序设计,北京航空航天大学出版社,2003,P241-P2499 南建辉、熊 鸣、王军茹:MCS-51单片机原理及应用实例,清华大学出版社,2003,P286-P294g an employment tribunal claimEmployment tribunals sort out disagreements between employers and employees.You may need to make a claim to an employment tribunal if: you dont agree with the disciplinary action your employer has taken against you your employer dismisses you and you think that you have been dismissed unfairly.For more information about dismissal and unfair dismissal, seeDismissal.You can make a claim to an employment tribunal, even if you haventappealedagainst the disciplinary action your employer has taken against you. However, if you win your case, the tribunal may reduce any compensation awarded to you as a result of your failure to appeal.Remember that in most cases you must make an application to an employmen

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论