还剩25页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
53.
53.
63.
1.1研究背景及意义智能三相异步电机是一种重要的机电产品在机械、钢铁、矿山、冶金、化工、石油、纺织、造纸、水泥、船舶、铁道等行业中,绝大部分生产机械都是采用电机作为原动机国内的中小型智能三相异步电机以每年2%的幅度增长,人工进行电机测试以不能适应现代化生产要求实现三相异步电机的自动化不仅是提高工作效率保证产品质量的需要,也是产品走向国际化市场的必要条件近年来,智能三相异步电机的测试研究成为人们关注的课题之一单片机的发展为三相异步电机的测试自动化提供了有力的手段,因此,研制一套高准确度、高自动化程度的三相异步电机的自动测试系统对于提高厂家的生产效率、减轻工作强度和提高产品质量有着很大的现实意义随着计算机技术和单片机技术的发展,数据采集技术和处理技术也发生了巨大的变化,对数据采集系统的精度、实时性提出了更高的要求,充分开发和利用计算机和单片机资源,将是数据采集系统的发展方向之一虽然高性能的测试装置在国内外已有成型产品,但他们的价格是一般单位所无法接受的因此,在计算机和单片机日益发展的今天,如何利用现有设备,使它与单片机技术相结合,从而实现实用、价廉,并且快速、准确的数据采集和处理系统,将具有极强的现实意义国内外研究现状在制造商控制和改进三相异步电机质量的过程中,参数测试的重要性是不言而喻的,因而自三相异步电机发明以来,专家学者们一直没有中断过对提高三相异步电机测试系统的自动化技术的研究和改进电机的自动化测试系统的生产与发展是与现代化科学技术的发展密切相关的,特别是与计算机科学和单片机技术的发展密不可分的上个世纪七十年代,随着大规模集成电路和单片机技术的发展,计算机开始进入微型化时代,出现了以微处理器为核心的微型计算机和单片计算机,同时数字化自动化仪器仪表已经普遍应用于测试领域,现代科学技术中的数字技术、自动控制和调节技术、编码技术、接口技术、A/D变换技术得到了新的发展也为电机的微机化自动测试系统的产生提供了条件国外最先采用微型计算机进行电机测试,实现自动测试和数据处理的如德国西门子公司为慕尼黑大学电机实验室制造的300型过程控制计算机,在电机实验中大大简化了各种参数的测量日本国际检测器公司MDP
101、MDP102型电机性能综合测试仪,可以自动测试电压、电流、转速、功率、效率、功率因数等十多个项目,并有微机进行快速数据处理法国CEM公司也研制了自动测试平台,主要用于
0.5KW-80KW三相异步电动机的测试,在国内也有一些单位研制电机的自动化测试系统,例如早期上海电器科学研究所研制,湖南仪表总厂生产DZW-1型电机微机自动化测试仪,可用于
0.5KW-130KW三相异步电机的空载特性、短路特性、杂散损耗、温升特性、工作特性等的测试,但由于微处理器一般采用280芯片,使用系统软件开发周期长,硬件设计和调试工作量大,并且价格昂贵,不利于推广应用上个世纪
八十、九十年代以来,由于计算机技术的飞速发展和普及,电机的自动化测试系统也得到了极大的发展,国内的许多科研单位开始研制以PC机为核心的电机自动测试装置,如上海电机技术研究所研制的AMT-1型电机性能综合测试仪,它采用双机系统结构,上位机采用PC/XT机,下位机采用STD工控机天津正大电机技术研究所开发的GC-1电机自动测试机构与之相似,但是下位机改造成为带有标准接口的智能仪表这些系统由于采用标准接口,方便了系统的组建和功能的扩充,并利用PC机丰富的软硬件资源,友好的人机对话界面和强大的数据处理能力,使系统在功能上、操作方便上都超过了国内以往的同类测试装备,但是它们也存在一些局限性和缺陷,诸如系统结构复杂、兼容性不好等问题,尤其是测试系统的数据管理功能不够完善测试系统技术的计算机化是现在的一个研究热点在发达国家,智能仪器和计算机辅助系统已得到普及,国内的一些大学和科研院所,如西安交通大学、浙江大学、上海电器科学研究所也开展了这方面的研究,研制了与国外相似的智能化测试仪器与测试系统相信随着计算机技术、单片机技术、传感器技术的发展及制造商技术水平的提高,开发周期短、人机交流能力强、具有自动测试和自动分析能力的电机综合测试系统讲成为电机测试技术的主流
1.2本课题的研究来源及内容本课题的名称为智能三相异步电机测试系统设计,电机参数的测试对于电机的设计、研究及运行有着重要的指导意义长期以来,各种电机的测试设备一般为单件的专用仪器,作用方式也都是采用人工操作、人工读数和处理测量数据这种情况下测试人员很辛苦,要做的工作量很大,试验一台电机往往需要较长的时间,测试效率低下,,电机的运行参数不能做到监控,电气运行人员对电机参数变化以及特性得不到更快速、直观的了解为了解决这一问题,决定在原有电机测试的装置基础上增加试验台与PC机的链接功能,构成一整套电机综合测试系统,方便工作人员对电机参数及特性的了解片机系统部分、稳压电源部分数据采集系统包括互感器部分、采样保持部分、通道切换部分、信号放大部分、模数转换部分、逻辑控制部分、锁相倍频部分、信号周期测量部分等等单片机系统主要包括控制部分、键盘显示部分及监控电路部分等等软件设计部分本系统软件系统由主程序、中断程序、数据采集、显示子程序、键盘输入子程序以及一系列运算子程序构成
1.3本课题的研究目的设计以单片机为核心的三相异步电机测试系统,将各个控制部分集成在一个芯片上面,适应微型计算机的发展趋势,对单片机控制有更深刻的认识通过该系统所测得的参数数据与传统的三相异步电机参数测量方法所得的数据相比较,以体现出基于单片机的智能三相异步电机测试系统具有测量精度高、实用性强的特点,同时该系统所使用的单片机价格较为低廉,因此节省了大量的人力劳作,同时也节省了时间和资源2测试系统原理与方案测试系统的原理设计一台可以实时测量三相异步电动机的电压有效值、电流有效值、有功功率、无功功率、视在功率、功率因数等电参量的仪器要求仪器体积能随着电动机的大小而配套设计;能建立各电参量测量的数学模型;设计的系统能按操作人员的要求显示任一个电参量的实时数据;设计的系统有较好的抗干扰能力为了测量线路中的电压、电流的有效值、有功功率、无功功率、视在功率、功率因数等电参量,必须对模拟信号U、,进行量化处理,再根据数学模型求出各个电参量的相应值在交流电网中,设在正弦条件下,各电参量的定义如下电压有效值;电流有效值;有功功率;无功功率;实在功率;功率因数在上述式中,Um、Im分别表示电网中的电压、电流的峰值T0代表一个信号周期(或其整数倍)测试系统的方案鉴于三相异步电动机各参量与电机的电压、电流均有相应的计算关系,并可通过其相互关系建立相应的数学模型,所以只需对电机的电压、电流进行测量,其它参数的测量可由软件实现测试系统通过将三相异步电动机的电压、电流的数据采集下来,以便软件计算线路中的电压、电流的有效值、有功功率、无功功率、视在功率、功率因数等电参量为了利用微机控制的数据采集系统实现这一要求,必须对模拟信号进行采样,并进行量化处理成有限位数的数字代码,再根据已知的数学模型求出各个电参量的相应量值硬件设计部分主要包括数据采集系统部分、单片机系统部分、稳压电源部分数据采集系统包括互感器部分、采样保持部分、通道切换部分、信号放大部分、模数转换部分、逻辑控制部分、锁相倍频部分、信号周期测量部分等单片机系统主要包括控制部分、键盘显示部分及监控电路部分等总体结构如下图所示数据采集系统·图1系统总体结构图Fig1System’soverallstructure3硬件设计
3.1数据采集系统部分的设计
3.
1.1工作原理系统由互感器DVDI-
001、A/D转换器AD
574、串口芯片8255A、数据显示等部分组成工作原理系统采用电压互感器和电流互感器,将三相异步电动机的电压、电流变换成测量系统所要求的电平信号由于交流异步电机有三相,所以采用三个电压互感器和三个电流互感器进行采样,采样截取三相异步电动机同一时刻的电压、电流瞬时值,将采样得到的高低电平信号送到AD574模数转换器,在CE置1,CS置0,A0置1的前提下启动模数转换器8位转换功能,将转换得到的8位数字信号接到单片机AT89C51的RAM区控制单片机将接受到的信号送到LED驱动装置驱动LED显示,该系统中LED选用1602型号,LED驱动包括计数器74LS162和译码器74LS138其中键盘输入部分通过单片机AT89C51控制串口芯片8255A连接到键盘输入部分,通过指定的按键显示电压、电流、有功功率、无功功率、视在功率、功率因数等三相异步电机的各电参量,所以LED显示部分就不需要额外的增加指示灯被测的电压信号经过电压互感器PT和分压电阻后,接到锁存器的输入端,锁存器的输出经过两分频接到单片机AT89C51的中断信号申请中断端,以便测量被测信号的周期,在中断一段时间内计得的数值即为被测信号的周期
3.
1.2电压、电流互感器的选择电压互感器与电流互感器是实现电量精确测量的关键部分,该系统选用的是北京新创四方电子有限公司生产的DVDI-001型卧式穿芯小型精密交流电压电流通用互感器,它可以看成是有2个相同副线圈的电流互感器互感器二侧接了一个运算放大器,以减轻互感器的负载,这样既能减小测量的相移,又能提高测量的精度电压互感器两侧的额定电流起限流作用,它实质上是在一次侧接了限流电阻的电流互感器,所以,它和电压互感器一样要求二次侧不能开路,在电流互感器中,互感器的二次绕组可以改成串联接线以提高一次电流的测量范围由于互感器的输出电压都是双极性的,而单片机AT89C51的A/D转换器要求只能输入正电压,为了实现对这种双极性模拟量的模数转换,在测控终端中互感器的二次侧不应直接接地,而是接在一个恒定的正电压上,将该偏移电流量同交流的输入量相加变成单极性模拟量后,电压互感器接到单片机的20VIN管脚,电流互感器接到10VIN管脚图2电压互感器接线图图3电流互感器接线图Fig
2.VoltagetransformerFig
3.Currenttransformer
3.
1.3A/D转换器的选用A/D转换器的类型很多,目前应用广泛的有三种类型逐次逼近型、双积分型和V/F型A/D转换器与单片机的接口方式有串口和并口两种逐次逼近型A/D转换器由D/A转换器、比较器、输出锁存器、移位寄存器和逻辑控制器组成其工作原理是首先,将输出锁存器的最高位置1,然后将D/A转换器的输出屯压信号U和输入电压信号K进行比较若UK,则输出锁存器的最高位保持1;反之,则锁存器的最高位设置为0,确定并保持最高位状态其次,把次高位置1,依上面的方法确定其状态从高位到低位逐次Vin位比较N为A/D位数,使Ui逼近输入信号Vin,直到输出锁存器的最后一位这时,D/A转换器的输入数据即为模/数转换后的数据,控制器控制输出寄存器将其输出双积分型A/D转换器由电子开关、积分器、比较器、逻辑控制器和计算器等部件构成所谓双积分,是指进行一次A/D转换需要进行两次积分双积分型A/D转换器的工作原理是模拟电压信号Vi加到积分器进行固定时间的积分,接着切换电子开关,将与Vi极性相反的标准电压信号Vr加到积分器上,积分电路从刚才积分的终值开始反向积分,由于Vr恒定,所以积分输出将以恒定的速度下降,直到积分器输出为零,此时发出“数据有效”状态,将数据输出反向积分时间Ti与Vi时间定值积分的终值成比例关系,A/D转换的结果数据通过测量反向积分的时间乃计算出输入电压值双积分转换过程通过对输入信号的不断积分能对噪声或变化的输入信号进行平滑,因此双积分型A/D转换器具有精度高,抗干扰性强,价格便宜等特点,只是转换速度较慢,是一种中速的A/D转换器典型的器件MC14433和ICL7135,V/F型A/D转换器把输入模拟信号电压转换为频率信号送入单片机,可以简单地将其理解为一个压控振荡器使用V/F型转换器进行A/D转换具有良好的精度、线性和积分输入特性,常能实现其他类型转换器无法实现的功能该系统采用模数转换AD574,模拟信号由传感器转换为电信号,送入A/D转换器转换为数字量,由数字电路进行处理,再由DA转换器还原为模拟量,去驱动执行部件为了保证数据处理结果的准确性,A/D转换器和DA转换器必须有足够的转换精度同时为了适应快速过程的控制和检测的需要,A/D转换器和DA转换器还必须有足够快的转换速度因此,转换精度和转换速度乃是衡量A/D转换器和DA转换器性能优劣的主要标志本系统采用的A/D转换器件是AD574,它具有极短的转换周期,10bits精度时为
1.8s,8bits精度时仅为
1.5s其EOC转换结束标志位为信号转换结束后引发中断提供了时钟脉冲AD574具体引脚如下所示R/CD0AD1CSD220VIND310VIND4BIND5BOUTAD574D6VEED7VCCD8V1D9GNDD10D1112/8CEBIPOFFSTS图4AD574引脚图Fig
4.PinfigureofAD
5743.2单片机以及外围电路设计单片机是一种面向大规模的集成电路芯片,是微型计算机中的一个重要的分支,该系统是由CPU、输入输出电路(I/O口)、定时/计数器、串行通信口、显示驱动电路(LED驱动电路)、多路开关以及A/D转换器等电路集成到一个单块芯片上的,构成了一个最小但是完善的计算机任务,单片机要使用特定的组译和编译软件编译程序,故系统采用AT89C51单片机控制AT89C51是一种带4K字节FLASH存储器(FPEROM—FlashProgrammableandErasableReadOnlyMemory)的低电压、高性能CMOS8位微处理器,俗称单片机AT89C2051是一种带2K字节闪存可编程可擦除只读存储器的单片机单片机的可擦除只读存储器可以反复擦除1000次该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本该单片机的主要性能特点有数据保留时间为10年,全静态工作频率为0-24MHZ,三级程序存储器锁存,32可编程I/O线,两个16位的定时计数器,可编程串行通道,片内振荡器和时钟电路AT89C51单片机在该系统中外接
8255、8155以及6244各一片,并配合74HC
373、
7406、7407等实现数据处理和键盘显示等功能,符合该设计的要求,其具体引脚图如下所示键盘是一种常见的输入设备,用户可以向计算机输入数据或命令根据按键的识别方法分类,有编码键盘和非编码键盘两种通过硬件识别的键盘称为编码键盘,通过软件识别的键盘称为非编码键盘非编码键盘有两种接口方法,一种是独立按键接口,另一种是矩阵式按键接口在单片机中,如果所需的按键较少,可采用独立式按键每只按键接单片机的一条I/O线,通过对线的查询,即可识别各按键的状态在单片机中,如若需要的按键较多时,采用矩阵式按键,这样可以很大程度的节约硬件资源,在该系统中采用矩阵式按键方式,其具体接口图如下图所示可由稳态翻转到暂稳态系统中采用的数据采集方式是八路信号同时采样、分时转换,AD574对每路信号的转换时间是
1.5s,AD574启动后经过200ns后出现下降沿转换开始因此应提供AD574周期2s的脉冲,其中高电平持续200ns,低电平持续
1.8s,使交流和直流噪声抗扰度被改善400mV锁存器74HC373为三态输出的八D透明锁存器当三态允许控制端OE为低电平时,O0到O7为正常逻辑状态,可用来驱动负载或总线当OE为高电平时,O0到O7呈高阻态,即不驱动总线,也不为总线的负载,但锁存器内部的逻辑操作不受影响当锁存允许端LE为高电平时O随数据D而变当LE为低电平时,O被锁存在已建立的数据电平其具体引脚图如下所示图5AT89C51引脚图Fig
5.PinfigureofAT89C51图6矩阵式按键接口图Fig
6.Matrixkeyboardinterfacediagram
3.3LED显示部分设计此处省略 NNNNNNNNNNNN字如需要完整说明书和设计图纸等.请联系 扣扣九七一九二零八零零另提供全套机械毕业设计下载!该论文已经通过答辩
4.3计算子程序根据建立的电压、电流的有效值、有功功率、无功功率、实在功率、功率因数的数学模型,采用软件实现了各电参量的测量各计算子程序如下图所示N图13计算S的子程序YFig.13CalculatetheSubroutineS图12计算UrmsIrms的子程序Fig.12CalculatethesubroutineUrmsIrmsNY图15计算cosΦ的子程序Fig.15CalculatesubroutinethecosΦ图14就算P的子程序Fig.14CalculationthesubroutinePYNNNY图16键盘输入子程序Fig.16Keyboardinputsubroutine
4.4显示子程序、键盘输入子程序显示子程序一共使用了六位共阴极七段LED显示器,由8155的A口作为扫描口,经过反向驱动器1206接显示器的各个段程序采用动态显示的方法,其功能是将显示缓冲器79H-7EH中的数据依次在显示器上面显示一遍如若循环调用该子程序,则显示缓冲器中的数据稳定的在显示器上面显示一遍键盘输入子程序采用循环查询的方式判断键盘上是否有键闭合,若判断到有键闭合,再用延迟的方法去除键的机械抖动,采用识别的方法识别闭合键N所在的行号X和列号Y,并根据以下公式计算出闭合键的键号N=X行首键号+列号Y5结束语三相异步电机电压、电流及其参数的测试对电机的设计、研究及运行有着重要的指导作用长期以来各种电机的测试设备一般都为单件的专用仪器,其工作方式也都是用手工操作、人工读数和处理测量数据,这种情况下测试人员很辛苦,需要做的工作量很大,试验一台电机往往需要较多的时间,测试效率低下因为测试时读数的时间不能够完全统一,还有读数记录,计算中不可避免的存在人为误差的存在,使测试的数据分散性较大,测试结果的精度较低本系统针对以上情况,设计出了具有自动测试功能的系统,提高了效率,弥补了传统电机测试方法的不足本文提出了一种由单片机控制的廉价设计方案此方法以AT89C51单片机为核心,成本低廉、精度极高、采样速度系统的核心控制部分为数据采集系统的设计,该系统中提出了一种新的数据采集系统的设计方法,本数据采集系统与传统的数据采集系统相比较,具有采集数据快,采集精度高,实时性好的特点,采用16位单片机,高速采样保持器LF398,以及转换器AD574,不仅实现了数据采集系统的最为关键的功能,而且在性能上有了明显的提高该数据采集系统是一个独立且通用的数据采集处理、分析系统,可广泛用于实时监控同时,由于本人的能力和学习时间方面的限制,本论文肯定存在一些不合实际的观点或漏洞,欢迎老师给予指导和批评,系统的部分设计还有待进一步的完善和调整,例如外部环境对于该测量系统影响并没有在文中反映出来;在编程方面,可以选择可移植性更好、功能更强大的VisualC++来完成6参考文献
[1]严洁.单片机原理及其接口技术.机械工业出版社.2010,65-105
[2]范红刚.51单片机自学笔记.北京航空航天大学出版社.2009
[3]高云.基于MSP430的温室多路数据采集系统.农机化研究.2009,No.8
[4]常铁原,王欣,陈文军.多路数据采集系统的设计.电子技术应用.2008,No.11
[5]叶红海,李丽敏.基于单片机的多路数据采集系统的设计与实现.2008,No.4
[6]彭伟.单片机C语言程序设计实训100例.电子工业出版社.2009,46-48,104-110
[7]杨居义,杨晓琴,王益斌等.单片机课程设计指导.清华大学出版社.2009,135-141
[8]刘刚,秦永左,朱杰斌.单片机原理及应用.北京大学出版社.2006,76-98,134-155
[9]林祝亮,武林,杨金华.基于双单片机的多路数据采集系统设计.仪器仪表学报.2006,No.6
[10]元增民,张文希.单片机原理与应用基础.国防科技大学出版社.2006,205-266
[11]王琳,商周,王学伟.数据采集的发展及应用.电测与仪表.2004,No.464
[12]林毓梁.51单片机,机械工业出版社.2003
[13]王熠东.传感器及应用,机械工业出版社.2004
[14]李发海,王岩.电机与拖动基础.北京;清华大学出版社.1997
[15]杨金岩,郑应强.8051单片机数据传输接口扩展技术与应用实例.北京;人民邮电出版社.2005
[16]方叔同.异步机测试技术与可靠性研究.河北工业大学工学博士文.2000
[17]李仁定.电机的微机控制.北京;机械工业出版社.1999
[18]周治良,李宏顺,岁哲.基于单片机和CPLD实时数据采集显示系统设计.电子设计工程.2009
[19]周凯,郭黎利.基于MAX485实现PC机与单片机通信的程序设计.信息技术.2005
[20]张毅刚.MCS-51单片机应用设计,哈尔滨工业出版社.1990
[21]王雪文,张志勇.传感器原理及应用.北京航空航天大学出版社.2004
[22]孙桂荣,班莹,刘鸣.电机转速测量设计实验.实验室科学.2005
[23]马全权,李庆辉,强盛.一种高精度实时电机转速测测量新方法.齐齐哈尔大学学报.2002
[24]陈伯时.电力拖动自动控制系统-运动控制系统.机械工业出版社.2003致谢本课题的设计和研究是在指导老师蔡培中副教授的精心指导下完成的,在此向指导老师表示由衷的感谢和深深的敬意指导老师严谨的治学态度、渊博的学识、无私的指导,使我能够顺利的完成毕业设计从指导老师蔡培中副教授的身上,我不仅学到了怎样把专业知识应用到实际课题中,同时也意识到学无止境的道理最后,忠心感谢在各个方面支持我的家人和朋友,是他们的鼓励给了我前进的动力对给予转载和引用权的资料、图书、文献、研究思想和设想的所有者致以忠心的感谢,由于本人水平有限,本文还有许多不足之处,敬请老师给予意见和指正附录附录1//=====================================////=====================================#includeabsacc.h#includereg
52.h#includestdio.h#includeLCD
1602.h#include24C
02.hbitflag=1;bitSP_bit;bitSTRT_STOP;bitCH_SPE_bit;bitPI_bit=1;bitK_B_bit=1;sbitOUT_PWM=P3^7;sbitB_bit=P2^6;sbitK_bit=P2^7;sbitP10=P1^0;sbitP11=P1^1;sbitP12=P1^2;sbitP13=P1^3;unsignedcharkpki;unsignedcharUK;signedintEK0EK1;unsignedcharEK_num
[4];unsignedcharSP_inSP_out;unsignedcharab;unsignedcharm=0n=0;unsignedchartime1;//--------------------------------------------------//================5毫秒延时=========================voiddelay5msvoid{unsignedcharij;fori=10;i0;i--forj=248;j0;j--;}//==================键盘处理==================================unsignedcharGeyKey{unsignedcharKey;P10=1;P11=1;P12=1;P13=1;Key=P10x0f;ifKey!=0x0f{delay5ms;Key=P10x0f;ifKey!=0x0fwhileP10x0f==0x0f;do{delay5ms;}whileP10x0f!=0x0f;switchKey{case0x0e:Key=S;break;case0x0d:Key=+;break;case0x0b:Key=-;break;case0x07:K_B_bit=~K_B_bit;ifK_B_bit==1{B_bit=0;K_bit=1;}else{K_bit=0;B_bit=1;}break;}returnKey;}return0;}//============键值处理============================voidKeycl{unsignedcharKey;Key=GeyKey;ifKey!=0{switchKey{caseS:{ifSTRT_STOP==0{TR0=1;TR1=0;EA=1;STRT_STOP=1;}else{TR0=0;TR1=0;EA=0;STRT_STOP=0;ifCH_SPE_bit==1{Write_one_Flash0x00SP_in;CH_SPE_bit=0;SP_out=0;}}break;}case+:{ifSP_in254{SP_in++;CH_SPE_bit=1;}elseSP_in=254;break;}case-:{ifSP_in==0SP_in=0;else{SP_in--;CH_SPE_bit=1;}break;}}}}//=================计数处理===================================voidtimer1interrupt3{time1++;}//+++++++++++++++++转换处理+++++++++++++++++++++++voidint1interrupt2{longkA=0;uchartemp;TR1=0;ifSP_bit==0{TR1=1;SP_bit=1;}else{kA=time1*65536+TH1*256+TL1;temp=2500000/kA;SP_out=temp;TH1=0x00;TL1=0x00;time1=0x00;TR1=0;SP_bit=0;}}//================PWM处理与数据采集处理函数===================voidPWM_generatorinterrupt1using0{ifflag==1{a--;ifa==0{flag=0;ifK_B_bit==1a=UK;elsea=SP_in;}else{OUT_PWM=0;}}ifflag==0{b--;ifb==0{flag=1;ifK_B_bit==1b=0xff-UK;elseb=0xff-SP_in;}else{OUT_PWM=1;}}m++;ifm==20{m=0;n++;ifn==40{n=0;EK0=SP_in-SP_out;PI_bit=1;}}}//=============PI处理函数=====================voidPI_work2{signedintv0;ifPI_bit==1{PI_bit=0;v0=kp*EK0-EK1+ki*EK0;EK1=EK0;EK0=0;CY=0;ifv0=0{UK=UK+v0;ifCY==1UK=0xfe;}else{ifUK-v0{UK=UK+v0;}else{UK=1;}}ifUK==0{UK=1;}}}//+++++++++++++++++++++++++++++++++++++++++++voidSP_in_Num{EK_num
[0]=SP_in/100+0x30;EK_num
[1]=SP_in/10%10+0x30;EK_num
[2]=SP_in%10+0x30;EK_num
[3]=\0;}//++++++++++++++++++++++++++++++++++++++++++++voidSP_out_Num{EK_num
[0]=SP_out/100+0x30;EK_num
[1]=SP_out/10%10+0x30;EK_num
[2]=SP_out%10+0x30;EK_num
[3]=\0;}//********************************************voiddisplay{GotoXY00;Show_CharspeerIN:;SP_in_Num;Show_CharEK_num;Show_Charr/min;GotoXY01;Show_CharspeerOUT:;SP_out_Num;Show_CharEK_num;Show_Charr/min;}//++++++++++++++++++++++++++++++++++++++++++++main{kp=5;ki=1;SP_bit=0;m=0;n=0;TH0=0x06;TL0=0x06;TH1=0x00;TL1=0x00;LCD_Initial1;ET0=1;ET1=1;EX1=1;IT1=1;TF0=0;TF1=0;TR1=0;TR0=0;SP_in=Read_one_Flash0x00;PI_bit=1;K_B_bit=1;EA=0;while1{display;Keycl;PI_work2;ifK_B_bit==1{B_bit=0;K_bit=1;}else{K_bit=0;B_bit=1;}}}//-------------------------------------------------------------------附录2//**************************************************************************//*LCD1602驱动程序*////**************************************************************************#ifndef__LCD1602_H__#define__LCD1602_H__//*****************************************************#includeREG
52.h#includeintrins.h#includedelay.h//*************************************************************************#defineuintunsignedint#defineucharunsignedchar//***********************口设置宏定义************************************//*************************************************************************sbitLCDRS=P2^0;//寄存器选择信号sbitLCDRW=P2^1;//读写信号sbitLCDE=P2^2;//片选信号,当输入下降沿信号时,执行指令或传送数据#defineLCDDBPP0//LCD数据接口/***********1602液晶显示部分子程序****************///内部等待函数*********************************************unsignedcharLCD_Waitvoid{chardatamykey;LCDE=0;_nop_;LCDRS=0;_nop_;LCDRW=1;_nop_;LCDE=1;_nop_;mykey=LCDDBP0x80;LCDE=0;returnmykey;}//**************************************************************************//把1个命令写入LCD函数//**************************************************************************voidWR_CMDunsignedcharCommand{LCDE=0;_nop_;LCDRS=0;_nop_;LCDRW=0;LCDE=1;_nop_;LCDDBP=Command;_nop_;LCDE=0;whileLCD_Wait==0x80;}//**************************************************************************//把1个数据写入LCD函数//**************************************************************************voidWR_DataunsignedcharData{LCDE=0;_nop_;LCDRS=1;_nop_;LCDRW=0;_nop_;LCDE=1;_nop_;LCDDBP=Data;LCDE=0;whileLCD_Wait==0x80;}//**************************************************************************//设置显示模式************************************************************#defineLCD_SHOW0x04#defineLCD_HIDE0x00#defineLCD_CURSOR0x02#defineLCD_NO_CURSOR0x00#defineLCD_CLEAR_SCREEN0x01#defineLCD_HOMING0x02#defineLCD_FLASH0x01#defineLCD_NO_FLASH0x00voidLCD_SetDisplayunsignedcharDisplayMode{WR_CMD0x08|DisplayMode;}//设置输入模式************************************************************#defineLCD_AC_UP0x02#defineLCD_AC_DOWN0x00#defineLCD_MOVE0x01#defineLCD_NO_MOVE0x00voidLCD_SetInputunsignedcharInputMode{WR_CMD0x04|InputMode;}//LCD初始化1************************************************************voidLCD_Initial1{LCDE=0;WR_CMD0x38;delay1ms;LCD_SetDisplayLCD_SHOW|LCD_NO_CURSOR;delay1ms;WR_CMDLCD_CLEAR_SCREEN;delay1ms;LCD_SetInputLCD_AC_UP|LCD_NO_MOVE;delay1ms;}//LCD初始化2************************************************************voidLCD_Initial2{LCDE=0;WR_CMD0x38;delay1ms;LCD_SetDisplayLCD_SHOW|LCD_CURSOR|LCD_FLASH;delay1ms;WR_CMDLCD_CLEAR_SCREEN;delay1ms;LCD_SetInputLCD_AC_UP|LCD_NO_MOVE;delay1ms;}//**************************************************************************//把1个字符写入LCD函数//**************************************************************************voidShow_1_CharunsignedcharucChar{WR_DataucChar;}//**************************************************************************//把一组字符写入LCD函数//**************************************************************************voidShow_CharunsignedcharucaChar[]{unsignedchari;fori=0;;i++{Show_1_CharucaChar[i];ifucaChar[i+1]==\0{break;}}}//*****************************************************//液晶字符输入的位置************************voidGotoXYunsignedcharxunsignedchary{ify==0{WR_CMD0x80|x;}ify==1{WR_CMD0x80|x-0x40;}}//--------------------------------------------------------#endif显示单片机系统模数转换通道切换采样保持电压互感器键盘电流互感器开始开始取U、I的值取电压电流采样值调乘法子程序调乘法子程序结果送至60H调加法子程序返回加完192点调除法子程序调开方子程序结果送至40H50H返回开始开始取电压、电流采样值取P、S的值调乘法子程序调除法子程序调求和子程序结果送至60H加完192点返回调除法子程序结果送至30H返回开始有键闭合否调用DIS延迟6MS二次调用DIS延迟12ms有键闭合否判断闭合键号堆栈闭合键释否输入键号A返回。