电特性测量系统软件设计毕业论文.doc

上传人:仙人指路1688 文档编号:3989683 上传时间:2023-03-30 格式:DOC 页数:76 大小:515.50KB
返回 下载 相关 举报
电特性测量系统软件设计毕业论文.doc_第1页
第1页 / 共76页
电特性测量系统软件设计毕业论文.doc_第2页
第2页 / 共76页
电特性测量系统软件设计毕业论文.doc_第3页
第3页 / 共76页
电特性测量系统软件设计毕业论文.doc_第4页
第4页 / 共76页
电特性测量系统软件设计毕业论文.doc_第5页
第5页 / 共76页
点击查看更多>>
资源描述

《电特性测量系统软件设计毕业论文.doc》由会员分享,可在线阅读,更多相关《电特性测量系统软件设计毕业论文.doc(76页珍藏版)》请在三一办公上搜索。

1、本科毕业设计(论文)题目:电特性测量系统软件设计院(系) 电子信息工程学院 专 业 自 动 化 班 级 姓 名 学 号 导 师 2012年 6月 1日三相电特性测试软件设计摘 要近年来随着社会对电力需求量的不断增长,电能紧缺问题日趋严重,极大地制约着社会经济的发展。我国电力工业的迅速发展,电能质量对于电网的安全经济运行,保证工业产品质量和科学实验的正常进行以及降低能耗等均有重要意义。为做到节约电能并合理高效地利用电能,这就需要对电力参数进行准确、实时地监测;此外,对于电力参数进行高精度、多参数的测量,又是充分了解电网的运行状况,寻找并解决电力系统中出现问题的重要途径。因此,对于电力参数的测量,

2、尤其是高精度、多参数、低价格、便携、稳定的实时测量就显得尤为重要,也一直是人们研究的一个重要的方向。为解决以上问题,本设计选用ARM7核的LPC2124芯片为测量系统的核心,主要针对我国电力系统供配电的实际情况,通过ARM7单片机为核心,配以相应的外围电路和功能软件,采用交流采样技术实现多种电力参数的在线实时测量和数据分析,为电网的安全经济运行提供可靠保证。以提高三相电参数的测量速度和精度。关键字:三相电;交流采样;实时测量Three phase electric characteristic measurement software designAbstractIn recent years

3、 along with the social demand of electric power increasing, energy shortage is becoming more and more serious, which restricts the development of social economy.The rapid development of power industry, power quality for power system safe and economic operation, ensure quality of industrial products

4、and scientific experiment with normal and reduced energy consumption has important significance.In order to achieve energy saving and high efficient use of energy, which is needed for power parameters for accurate, real-time monitoring; in addition, the electric parameters with high accuracy, multi

5、parameter measurement, and fully understand the operation of power system, find and solve emerging in power system the important way of the problem.Therefore, for the measurement of electric power parameters, especially high accuracy, multi parameter, low price, portable, stable and real-time measur

6、ement is particularly important, people has always been an important direction in the study.In order to solve the problem above, this design uses ARM7 nuclear LPC2124 chip measurement system for the core, mainly for the power system of our country distribution of the actual situation, through the AR

7、M7 single-chip microcomputer as the core, with a corresponding peripheral circuit and software, adopting AC sampling technology to achieve a variety of electrical parameter on-line real-time measurement and data analysis, as the power system safe and economic operation to provide a reliable guarante

8、e.In order to improve the electric parameter measuring speed and accuracy.Keywords: three-phase;AC sampling;measurement目 录摘 要IABSTRACTII1 绪论11.1前言11.2本课题的研究背景、研究意义及国内外相关研究情况12 三项电特性测量软件设计方案12.1基本功能要求12.2总体方案设计12.2.1 硬件平台12.2.2开发环境与仿真12.2.3开发语言12.2.4软件总体结构13 系统的初始化13.1系统的初始化的含义13.1.1初始化的执行顺序13.1.2系统的

9、启动代码14 数据采集程序和数据处理14.1数据采集技术简介14.2A/D寄存器的描述14.2.1A/D控制寄存器ADCR14.2.2A/D数据寄存器ADDR24.3A/D的基本操作34.4数据处理34.5A/D采集功能介绍及软件编程75 键盘显示模块125.1关于键盘使用的简单介绍125.2键盘控制模块的功能介绍及程序135.2.1键盘扫描头文件Keyboard.h145.2.2按键扫描去抖程序146 液晶显示模块176.1液晶简介176.1.1LCD介绍176.1.2LCD显示的原理176.1.3LCD的分类186.2液晶显示模块186.2.1点阵式液晶显示器LM12864简介186.2.

10、2液晶显示流程图以及LCD驱动196.3 LCD显示的应用程序296.3.1LCD的简单GUI实现296.3.2LCD实时时钟显示模块306.3.3LCD的实时时钟软件编程316.3.4外部扩展I2C356.3.5LCD显示电特性参数377 电特性参数的计算417.1电特性参数417.2采用过零点检测测量周期的软件编程Guolindian.C427.3电特性参数软件程序448 PROTEUS仿真458.1proteus简介458.2电路仿真458.3分散加载文件468.4系统的电路图以及proteus中的仿真结果488.4.1系统的电路图488.4.2proteus中的仿真结果48结束语51致

11、谢52参考文献53毕业设计(论文)知识产权声明54毕业设计(论文)独创性声明551 绪论1.1前言能源是人类社会赖于生存和发展的基础,电能作为能源的第二次形式,具有简单、方便、可靠等特点,是现代社会运行的主要能源之一。充足、可靠的能源是提高经济高速发展、社会正常运行的基本前提。上世纪六十年代以来,微电子、计算机、电力电子技术在各个领域 广泛应用,位现代工业的自动化、提高劳动生产率开辟了广阔的前景。近年来随着大功率电力电子技术的发展以及它们的广泛应用,使得非线性负载大量的增加,给供电设备造成了很大的影响。本文主要研究基于数字采样测量的三相电参数测量系统,主要包括电压、电流、频率、相位、功率因数、

12、有功功率、无功功率,视在功率,电能等的测量。1.2本课题的研究背景、研究意义及国内外相关研究情况电力是国家经济发展的命脉,随着社会对电力需求量的不断增长,工业、农业、商业、居民用电的日益增长,供电量日益增加,电能作为一种具有多种参数指标、直接反映电力企业经济效益的商品备受重视。随着工业技术的不断进步,对电力的需要越来越大,电能紧缺问题日趋严重,极大地制约着社会经济的发展。近年来,我国电力负荷急剧增大,各种非线性负载,特别是新型电力电子器件在电力系统、工业各部门和家用电器产品中的日益广泛应用,给供电设备的电能质量造成了极大的影响。因此,在大多数情况下,电力信号己不是标准的正弦信号,而是一种复杂的

13、周期信号。国内电力参数检测技术的研究和开发起步较晚,目前对电力参数测量的方式基本上可分为芯片转化为有效值测量,直接离散时序测量和多谐波测量等。相对国内而言,国外对电能质量的研究起步就比较早,也已经取得了很多关于这方面的研究和应用成果,世界对电能质量的认识程度也越来越高,每隔两年就召开一次电能质量与电力谐波学术会议。在电能质量检测产品研究领域,尤其是这些领域的高端产品在全球市场的份额,几乎是被美国的FLUKE公司、瑞士的LEM公司、瑞典的UNIPOWER公司等国际知名公司占据,这些公司的技术水平为国际最先进,当然价格也非常昂电能质量对于电网的安全经济运行,保证工业产品的质量和科学实验的正常进行以

14、及降低能耗等均有重要意义。为了改善这一状况,对电力系统进行完整分析和监测是成功的关键。此外,对于电力参数进行高精度、多参数的测量,又是充分了解电网的运行状况,寻找并解决电力系统中出现的问题的重要途径。因此,对于电力参数的测量,尤其是高精度、多参数、低价格、便携、稳定的实时测量就显得尤为重要,也一直是人们研究的一个重要方向。在我国电力工业领域,电网质量的问题已经成为关键,电力参数的分析和监测已经成为国际上讨论和研究的重点。2 三项电特性测量软件设计方案2.1基本功能要求(1) 熟悉工厂供电技术;(2) 熟悉测量系统硬件电路原理; (3) 设计软件结构;(4) 掌握ADS1.2开发工具;(5) 熟

15、练运用PROTEUS仿真;(6) 编写程序代码及调试;(7) 软、硬件系统联调。2.2总体方案设计2.2.1 硬件平台课题主要研究电特性测量系统的软件程序设计。选用的是ARM为核的LPC2000系列的芯片,LPC2000系列是NXP公司生产的以ARM7TDMI-S核为基础的嵌入式处理器,在芯片内部配置了大量的接口及功能模块。本设计选用的是LPC2124芯片,LPC2124具有较小的64引脚封装,低功耗的特点,以及多个片内外设(如32位定时器、A/D转换器、外部中断等),多个32位定时器,4路10位ADC,内置多种串行通信接口以及多达9个外部中断,因此特别适用于工业控制、医疗系统访问控制、通信网

16、关、协议转换器、嵌入式MODEM等各种类型的应用。2.2.2开发环境与仿真本课题选用的是ADS1.2开发工具,ADS1.2是ARM公司推出的ARM集成开发工具,具有用户多、编译效率高、支持的ARM内核多的特点。ARM ADS全称为ARM developer Suite,是ARM公司推出的ARM集成开发工具,成熟版本为ADS1.2,他的前身是SDT,SDT是ARM公司几年前的开发环境软件。ADS1.2支持ARM10之前的所有ARM系列微控制器,支持软件调试,支持汇编、C语言、C+源程序,具有编译效率高、系统库功能强等特点。本课题用ADS1.2开发工具围绕LPC2124片上的基本功能模块实现三相电

17、特性的测试,最终通过了PROTEUS的仿真验证。PROTEUS是英国Labcenter公司推出的适合嵌入式设计仿真与开发的仿真软件,使用PROTEUS软件可以完全脱离硬件平台来学习嵌入式系统,可以说是嵌入式学习的一次革命。2.2.3开发语言本课题软件用的语言主要有C语言,还有启动代码中所用到的汇编语言。本文选用C语言主要是由于C语言有以下优点:(1) 寄存器分配,数据类型等由编译器管理;(2) 编程及调试的时间减少,大大缩短开发周期;(3) 明显增加软件可读性,便于改进和扩展。2.2.4软件总体结构本系统主要针对我国电力系统供配电的实际情况,通过ARM7单片机为核心,配以相应的外围电路和功能软

18、件,采用交流采样技术实现多种电力参数的在线实时测量和数据分析,为电网的安全经济运行提供可靠保证。本课题主要研究电特性测量系统的软件程序设计。本课题的软件部分主要是通过实时采样电流电压的瞬时值,以及过零检测,进而计算出电流电压的有效值、频率值、有用功率、无用功率、视在功率、功率因数等电力参数。本测量系统的软件设计主要分为以下几个模块:(1) 主程序模块(2) 电压、电流采集程序(3) 频率采集程序(4) 数据处理程序(5) 时钟日历程序(6) 键盘服务程序(7) 显示服务程序本设计拟采用ADS1.2集成开发工具编写C语言程序实现测量系统的相关功能。数据的处理与计算是程序设计的主要部分。系统基本测

19、量的参数主要包括:电流有效值、电压有效值、有功功率、无功功率、视在功率、功率因数等。首要环节是对输入的电气信号进行离散化,即采样。根据被采集信号的不同,数据采集可分为直流采样和交流采样两大类。对比分析后,系统选用交流采样,数值的计算采用离散的电压电流有效值计算公式来实现。为了提高ARM7核的LPC2124芯片程序编写效率,系统软件采用了分模块编写的方法,用C语言和汇编语言混合编写。对于LPC2124和各模块的初始化、数据采集程序采用汇编编程,对于主程序、键盘显示等通用性较强程序,采用C语言编写。本系统的主要功能模块有数据采集模块、数据处理模块、时钟模块,按键显示模块等。所有软件模块的功能都在主

20、控模块的调配下协调执行,主控模块首先对系统进行初始化操作,包括CPU初始化、I/O初始化、A/D初始化、LCD初始化、时钟初始化、异步通讯初始化等。随即对数据进行采集、处理、显示。然后判断是否有键按下,根据判断结果,执行相应按键服务程序。系统的主要电特性参量介绍:(1) 电压有效值:让恒定电压和交变电压分别加在阻值相等的电阻上,使它们在相同时间内产生的热量相等,就可以把该恒定电压的数值规定为这个交变电压的有效值.(2) 电流有效值:将一直流电与一交流电分别通过相同阻值的电阻,如果相同时间内两电流通过电阻产生的热量相同,就说这一直流电的电流值是这一交流电的有效值。(3) 有功功率:在交流电路中,

21、电源在一个周期内发出瞬时功率的平均值(或负载电阻所消耗的功率),称为有功功率。(4) 无功功率:在正弦电流电路中,复功率的虚部: ,且供给电感的无功功率为正值。(5) 视在功率:在电工技术中,将单口网络端钮电压和电流有效值的乘积,称为视在功率(apparent power),记为S=UI。(6) 功率因数:在交流电路中,电压与电流之间的相位差()的余弦叫做功率因数,用符号cos表示,在数值上,功率因数是有功功率和视在功率的比值,即cos=P/S 。系统主程序流程图如2.1图所示。3 系统的初始化3.1系统的初始化的含义首先来讲讲系统初始化,什么是系统初始化呢?初始化就是把变量(variable

22、)赋为默认值,把控件设为默认状态,把没准备的准备好。但是如果是整个系统初始化那就不一样了。每个软件,或是工具,系统等都有一个初始化。如系统的初始化就是将你的系统还原到一开始做的备份的状态。把设置等都还原至那个位置。如果是一个软件的初始化,基本都是将一些功能的设置都还原为开始设置,意思就和恢复默认设置差不多。3.1.1初始化的执行顺序每一个初始化部分里面的代码在程序运行后,或库的begin-end块运行之前。delphi使用对单元相关树的深度优先遍历来运行初始化部分。换句话说,就只在一个单元的初始化代码运行前,delphi就运行了特他使用的每一个单元的初始化部分。每一个单元仅初始化一次 。 程序

23、代码当中可以有Initialization声明部分。这部分里面的代码的执行,是在windows加载包含该单元(指Initialization所属单元)的模块(应用程序,DLL或者包)时运行的。一般来说是:先Initialization单元,然后interface单元,然后implementation单元。 程序中Intialize过程。可以在这里初始化字符串、动态数组、接口和Variants系统为什么要初始化呢?第一,信息系统是以数据库为主的软件系统,是数据库应用系统,必须设定数据库应用的安全体系否则无法保证数据安全;第二,信息系统是组织的管理方法,必须具备组织使用的共享数据才能供组织使用;第

24、三,初始化的核心是数据准备,没有历史数据不能实现系统切换,无法使用;第四,数据必须定期存档和更新才能使信息系统有较高的运转效率;3.1.2系统的启动代码系统初始化主要是由软件来完成的,一般在32位ARM应用系统中,大多数软件采用C语言来进行编程,并且以嵌入式操作系统作为平台,这样能大大提升开发效率及软件性能。但是,由于C语言生成的代码不能上电后立马运行的,因为此时还不具备运行条件,比如全局变量还没有初始化,系统堆栈还没有设置等。因此从系统上电,到正式运行用户的main函数之前,要运行一段代码,这段代码就称为启动代码。启动代码大部分由汇编指令构成,它可以实现向量表定义、堆栈初始化、系统变量初始化

25、、中断初始化、外围初始化、地址重映射等操作。见图2-2。图2.2首先是应该完成头文件的编写,下面就是系统初试化的头文件(target.h)和系统的初始化软件(target.c)、(Startup.s)。(1) 系统初试化的头文件(target.h)#ifndef _TARGET_H #define _TARGET_H #ifdef _cplusplus extern C #endif#ifndef IN_TARGET extern void Reset(void);extern void TargetInit(void); #endif #ifdef _cplusplus #endif#end

26、i(2) 系统的初始化软件(Startup.s);define the stack size;定义堆栈的大小SVC_STACK_LEGTH EQU 0FIQ_STACK_LEGTH EQU 0IRQ_STACK_LEGTH EQU 256ABT_STACK_LEGTH EQU 0UND_STACK_LEGTH EQU 0NoInt EQU 0x80NoFIQEQU0x40USR32Mode EQU 0x10SVC32Mode EQU 0x13SYS32Mode EQU 0x1fIRQ32Mode EQU 0x12FIQ32Mode EQU 0x11; IMPORT _use_no_semiho

27、sting_swi;The imported labels;引入的外部标号在这声明 IMPORT FIQ_Exception ;快速中断异常处理程序 IMPORT _main ;C语言主程序入口 IMPORT TargetResetInit ; 目标板基本初始化;The emported labels;给外部使用的标号在这声明 EXPORT bottom_of_heap EXPORT StackUsr EXPORT Reset EXPORT _user_initial_stackheap CODE32 AREA vectors,CODE,READONLY ENTRY;interrupt vec

28、tors;中断向量表Reset LDR PC, ResetAddr LDR PC, UndefinedAddr LDR PC, SWI_Addr LDR PC, PrefetchAddr LDR PC, DataAbortAddr DCD 0xb9205f80 LDR PC, PC, #-0xff0 LDR PC, FIQ_AddrResetAddr DCD ResetInitUndefinedAddr DCD UndefinedSWI_Addr DCD SoftwareInterruptPrefetchAddr DCD PrefetchAbortDataAbortAddr DCD DataA

29、bortNouse DCD 0IRQ_Addr DCD 0FIQ_Addr DCD FIQ_Handler;未定义指令Undefined B Undefined;软中断SoftwareInterrupt; B SoftwareInterrupt CMP R0, #4 LDRLO PC, PC, R0, LSL #2 MOVS PC, LRSwiFunction DCD IRQDisable ;0 DCD IRQEnable ;1 DCDFIQDisable ;2 DCDFIQEnable ;3IRQDisable ;关IRQ中断 MRS R0, SPSR ORR R0, R0, #NoInt

30、MSR SPSR_c, R0 MOVS PC, LRIRQEnable ;开IRQ中断 MRS R0, SPSR BIC R0, R0, #NoInt MSR SPSR_c, R0 MOVS PC, LRFIQDisable ;关FIQ中断 MRS R0, SPSR ORR R0, R0, #NoFIQ MSR SPSR_c, R0 MOVS PC, LRFIQEnable ;开FIQ中断 MRS R0, SPSR BIC R0, R0, #NoFIQ MSR SPSR_c, R0 MOVS PC, LR;取指令中止PrefetchAbort B PrefetchAbort;取数据中止Data

31、Abort B DataAbort;快速中断FIQ_Handler STMFD SP!, R0-R3, LR BL FIQ_Exception LDMFD SP!, R0-R3, LR SUBS PC, LR, #4InitStack MOV R0, LR;Build the SVC stack;设置管理模式堆栈 MSR CPSR_c, #0xd3 LDR SP, StackSvc;Build the IRQ stack;设置中断模式堆栈 MSR CPSR_c, #0xd2 LDR SP, StackIrq;Build the FIQ stack;设置快速中断模式堆栈 MSR CPSR_c,

32、#0xd1 LDR SP, StackFiq;Build the DATAABORT stack;设置中止模式堆栈 MSR CPSR_c, #0xd7 LDR SP, StackAbt;Build the UDF stack;设置未定义模式堆栈 MSR CPSR_c, #0xdb LDR SP, StackUnd;Build the SYS stack;设置系统模式堆栈 MSR CPSR_c, #0xdf LDR SP, =StackUsr MOV PC, R0ResetInit BL InitStack ;初始化堆栈 BL TargetResetInit ;目标板基本初始化 ;跳转到c语言入

33、口 B _main_user_initial_stackheap LDR r0,=bottom_of_heap; LDR r1,=StackUsr MOV pc,lrStackSvc DCD SvcStackSpace + (SVC_STACK_LEGTH - 1)* 4StackIrq DCD IrqStackSpace + (IRQ_STACK_LEGTH - 1)* 4StackFiq DCD FiqStackSpace + (FIQ_STACK_LEGTH - 1)* 4StackAbt DCD AbtStackSpace + (ABT_STACK_LEGTH - 1)* 4Stack

34、Und DCD UndtStackSpace + (UND_STACK_LEGTH - 1)* 4IF :DEF: EN_CRP IF . = 0x1fc INFO 1,nThe data at 0x000001fc must be 0x87654321.nPlease delete some source before this line. ENDIFCrpData WHILE . 0x1fc NOP WENDCrpData1 DCD 0x87654321 ;/*When the Data is 为0x87654321,user code be protected. 当此数为0x876543

35、21时,用户程序被保护 */ ENDIF ;/* 分配堆栈空间 */ AREA MyStacks, DATA, NOINIT, ALIGN=2SvcStackSpace SPACE SVC_STACK_LEGTH * 4 ;管理模式堆栈空间IrqStackSpace SPACE IRQ_STACK_LEGTH * 4 ;中断模式堆栈空间FiqStackSpace SPACE FIQ_STACK_LEGTH * 4 ;快速中断模式堆栈空间AbtStackSpace SPACE ABT_STACK_LEGTH * 4 ;中止模式堆栈空间UndtStackSpace SPACE UND_STACK_

36、LEGTH * 4 ; 未定义模式堆栈 AREA Heap, DATA, NOINITbottom_of_heap SPACE 1 AREA Stacks, DATA, NOINITStackUsr END(3) 系统的初始化软件(target.c)#define IN_TARGET#include config.h#include guolindian.h void TargetResetInit(void); void IRQ_Exception(void)while(1); void FIQ_Exception(void)while(1); void Timer0_Exception(v

37、oid) T0IR = 0x01; VICVectAddr = 0; /通知中断控制器中断结束 void VICInit(void) /*过零点检测功能初试化函数*/void GuoLinDianInit(void)PINSEL1 = 0x00000001;EXTMODE = 0x01;/边沿触发VICIntSelect = 0x00000000;VICDefVectAddr = (int) IRQ_Eint1;EXTINT = 0x01;VICIntEnable = 0x00004000;#define TARGET_DEBUG_BY_LCM void TargetInit(void)#if

38、def TARGET_DEBUG_BY_LCMTargetResetInit();GuoLinDianInit(); GUI_Initialize(); / 初始化LCMGUI_SetColor(1,0);/ 设置前景色和背景色#endif void InitialiseUART0(uint32 bps) void TargetResetInit(void)#ifdef _DEBUG_RAM MEMMAP = 0x2; /remap#endif#ifdef _DEBUG_FLASH MEMMAP = 0x1; /remap#endif#ifdef _IN_CHIP MEMMAP = 0x1;

39、/remap#endif/* 设置系统各部分时钟 */* Set system timers for each component */ PLLCON = 1;#if (Fpclk / (Fcclk / 4) = 1 VPBDIV = 0;#endif#if (Fpclk / (Fcclk / 4) = 2 VPBDIV = 2;#endif#if (Fpclk / (Fcclk / 4) = 4 VPBDIV = 1;#endif#if (Fcco / Fcclk) = 2 PLLCFG = (Fcclk / Fosc) - 1) | (0 5);#endif#if (Fcco / Fccl

40、k) = 4 PLLCFG = (Fcclk / Fosc) - 1) | (1 5);#endif#if (Fcco / Fcclk) = 8 PLLCFG = (Fcclk / Fosc) - 1) | (2 5);#endif#if (Fcco / Fcclk) = 16 PLLCFG = (Fcclk / Fosc) - 1) | (3 5);#endif PLLFEED = 0xaa; PLLFEED = 0x55; while(PLLSTAT & (1 10) = 0); PLLCON = 3; PLLFEED = 0xaa; PLLFEED = 0x55;/* 设置存储器加速模块 */* Set memory accelerater module*/ MAMCR = 0;#if Fcclk 20000000 MAMTIM = 1;#else#if Fcclk 40000000 MAMTIM = 2;#else MAMTIM = 3;#endif#endif MAMCR = 2;/* 设置串行口 */* initiali

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号