电特性测量系统软件设计毕业论文.doc_第1页
电特性测量系统软件设计毕业论文.doc_第2页
电特性测量系统软件设计毕业论文.doc_第3页
电特性测量系统软件设计毕业论文.doc_第4页
电特性测量系统软件设计毕业论文.doc_第5页
已阅读5页,还剩77页未读 继续免费阅读

下载本文档

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

文档简介

1 电特性测量系统软件设计毕业论文电特性测量系统软件设计毕业论文 目目 录录 摘摘 要要 I I ABSTRACT IIII 1 1 绪论绪论 1 1 1 1 前言 1 1 2 本课题的研究背景 研究意义及国内外相关研究情况 1 2 2 三项电特性测量软件设计方案三项电特性测量软件设计方案 1 1 2 1 基本功能要求 1 2 2 总体方案设计 1 2 2 1 硬件平台 1 2 2 2 开发环境与仿真 1 2 2 3 开发语言 1 2 2 4 软件总体结构 1 3 3 系统的初始化系统的初始化 1 1 3 1 系统的初始化的含义 1 3 1 1 初始化的执行顺序 1 3 1 2 系统的启动代码 1 4 4 数据采集程序和数据处理数据采集程序和数据处理 1 1 4 1 数据采集技术简介 1 4 2A D 寄存器的描述 1 4 2 1A D 控制寄存器 ADCR 1 4 2 2A D 数据寄存器 ADDR 2 4 3A D 的基本操作 3 2 4 4 数据处理 3 4 5A D 采集功能介绍及软件编程 7 5 5 键盘显示模块键盘显示模块 1212 5 1 关于键盘使用的简单介绍 12 5 2 键盘控制模块的功能介绍及程序 13 5 2 1 键盘扫描头文件 Keyboard h 14 5 2 2 按键扫描去抖程序 14 6 6 液晶显示模块液晶显示模块 1717 6 1 液晶简介 17 6 1 1LCD 介绍 17 6 1 2LCD 显示的原理 17 6 1 3LCD 的分类 18 6 2 液晶显示模块 18 6 2 1 点阵式液晶显示器 LM12864 简介 18 6 2 2 液晶显示流程图以及 LCD 驱动 19 6 3 LCD 显示的应用程序 29 6 3 1LCD 的简单 GUI 实现 29 6 3 2LCD 实时时钟显示模块 30 6 3 3LCD 的实时时钟软件编程 31 6 3 4 外部扩展 I2C 35 6 3 5LCD 显示电特性参数 37 7 7 电特性参数的计算电特性参数的计算 4141 7 1 电特性参数 41 7 2 采用过零点检测测量周期的软件编程 GUOLINDIAN C 42 7 3 电特性参数软件程序 44 8 8 PROTEUSPROTEUS 仿真仿真 4545 3 8 1PROTEUS简介 45 8 2 电路仿真 45 8 3 分散加载文件 46 8 4 系统的电路图以及PROTEUS中的仿真结果 48 8 4 1 系统的电路图 48 8 4 2proteus 中的仿真结果 48 结束语结束语 5151 致谢致谢 5252 参考文献参考文献 5353 毕业设计 论文 知识产权声明毕业设计 论文 知识产权声明 5454 毕业设计 论文 独创性声明毕业设计 论文 独创性声明 5555 4 1 绪论 1 1 1 绪论绪论 1 11 1 前言前言 能源是人类社会赖于生存和发展的基础 电能作为能源的第二次形式 具 有简单 方便 可靠等特点 是现代社会运行的主要能源之一 充足 可靠的 能源是提高经济高速发展 社会正常运行的基本前提 上世纪六十年代以来 微电子 计算机 电力电子技术在各个领域 广泛应 用 位现代工业的自动化 提高劳动生产率开辟了广阔的前景 近年来随着大 功率电力电子技术的发展以及它们的广泛应用 使得非线性负载大量的增加 给供电设备造成了很大的影响 本文主要研究基于数字采样测量的三相电参数测量系统 主要包括电压 电流 频率 相位 功率因数 有功功率 无功功率 视在功率 电能等的测 量 1 21 2 本课题的研究背景 研究意义及国内外相关研究情况本课题的研究背景 研究意义及国内外相关研究情况 电力是国家经济发展的命脉 随着社会对电力需求量的不断增长 工业 农业 商业 居民用电的日益增长 供电量日益增加 电能作为一种具有多种 参数指标 直接反映电力企业经济效益的商品备受重视 随着工业技术的不断 进步 对电力的需要越来越大 电能紧缺问题日趋严重 极大地制约着社会经 济的发展 近年来 我国电力负荷急剧增大 各种非线性负载 特别是新型电力电子 器件在电力系统 工业各部门和家用电器产品中的日益广泛应用 给供电设备 的电能质量造成了极大的影响 因此 在大多数情况下 电力信号己不是标准 的正弦信号 而是一种复杂的周期信号 国内电力参数检测技术的研究和开发起步较晚 目前对电力参数测量的方 式基本上可分为芯片转化为有效值测量 直接离散时序测量和多谐波测量等 相对国内而言 国外对电能质量的研究起步就比较早 也已经取得了很多关于 这方面的研究和应用成果 世界对电能质量的认识程度也越来越高 每隔两年 就召开一次电能质量与电力谐波学术会议 在电能质量检测产品研究领域 尤 其是这些领域的高端产品在全球市场的份额 几乎是被美国的 FLUKE 公司 瑞士的 LEM 公司 瑞典的 UNIPOWER 公司等国际知名公司占据 这些公司的 1 绪论 2 技术水平为国际最先进 当然价格也非常昂 西安工业大学毕业设计 论文 1 电能质量对于电网的安全经济运行 保证工业产品的质量和科学实验的正常 进行以及降低能耗等均有重要意义 为了改善这一状况 对电力系统进行完整 分析和监测是成功的关键 此外 对于电力参数进行高精度 多参数的测量 又是充分了解电网的运行状况 寻找并解决电力系统中出现的问题的重要途径 因此 对于电力参数的测量 尤其是高精度 多参数 低价格 便携 稳定的 实时测量就显得尤为重要 也一直是人们研究的一个重要方向 在我国电力工 业领域 电网质量的问题已经成为关键 电力参数的分析和监测已经成为国际 上讨论和研究的重点 2 三相电特性测量软件设计方案 1 2 三项电特性测量软件设计方案三项电特性测量软件设计方案 2 1 基本功能要求基本功能要求 1 熟悉工厂供电技术 2 熟悉测量系统硬件电路原理 3 设计软件结构 4 掌握 ADS1 2 开发工具 5 熟练运用 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 个外部中断 因此特别适用 于工业控制 医疗系统访问控制 通信网关 协议转换器 嵌入式 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 片上的基本功能模块实现三相电特性的测 2 三相电特性测量软件设计方案 2 试 最终通过了 西安工业大学毕业设计 论文 1 PROTEUS 的仿真验证 PROTEUS 是英国 Labcenter 公司推出的适合嵌入式设计仿真与开发的仿真 软件 使用 PROTEUS 软件可以完全脱离硬件平台来学习嵌入式系统 可以说 是嵌入式学习的一次革命 2 2 3 开发语言开发语言 本课题软件用的语言主要有 C 语言 还有启动代码中所用到的汇编语言 本文选用 C 语言主要是由于 C 语言有以下优点 1 寄存器分配 数据类型等由编译器管理 2 编程及调试的时间减少 大大缩短开发周期 3 明显增加软件可读性 便于改进和扩展 2 2 4 软件总体结构软件总体结构 本系统主要针对我国电力系统供配电的实际情况 通过 ARM7 单片机为核 心 配以相应的外围电路和功能软件 采用交流采样技术实现多种电力参数的 在线实时测量和数据分析 为电网的安全经济运行提供可靠保证 本课题主要研究电特性测量系统的软件程序设计 本课题的软件部分主要 是通过实时采样电流电压的瞬时值 以及过零检测 进而计算出电流电压的有 效值 频率值 有用功率 无用功率 视在功率 功率因数等电力参数 本测 量系统的软件设计主要分为以下几个模块 1 主程序模块 2 电压 电流采集程序 3 频率采集程序 4 数据处理程序 5 时钟日历程序 6 键盘服务程序 7 显示服务程序 本设计拟采用 ADS1 2 集成开发工具编写 C 语言程序实现测量系统的相关 功能 数据的处理与计算是程序设计的主要部分 系统基本测量的参数主要包 括 电流有效值 电压有效值 有功功率 无功功率 视在功率 功率因数等 首要环节是对输入的电气信号进行离散化 即采样 根据被采集信号的不同 数据采集可分为直流采样和交流采样两大类 对比分析后 系统选用交流采样 数值的计算采用离散的电压电流有效值计算公式来实现 为了提高 ARM7 核的 LPC2124 芯片程序编写效率 系统软件采用了分模 块编写的方法 用 C 语言和汇编语言混合编写 对于 LPC2124 和各模块的初始 化 数据采集程序采用汇编编程 对于主程序 键盘显示等通用性较强程序 西安工业大学毕业设计 论文 2 采用 C 语言编写 本系统的主要功能模块有数据采集模块 数据处理模块 时 钟模块 按键显示模块等 所有软件模块的功能都在主控模块的调配下协调执 行 主控模块首先对系统进行初始化操作 包括 CPU 初始化 I O 初始化 A D 初始化 LCD 初始化 时钟初始化 异步通讯初始化等 随即对数据进行 采集 处理 显示 然后判断是否有键按下 根据判断结果 执行相应按键服 务程序 系统的主要电特性参量介绍 1 电压有效值 让恒定电压和交变电压分别加在阻值相等的电阻上 使它 们在相同时间内产生的热量相等 就可以把该恒定电压的数值规定为这个交变电 压的有效值 2 电流有效值 将一直流电与一交流电分别通过相同阻值的电阻 如果 相同时间内两电流通过电阻产生的热量相同 就说这一直流电的电流值是这一 交流电的有效值 3 有功功率 在交流电路中 电源在一个周期内发出瞬时功率的平均值 或负载电阻所消耗的功率 称为 有功功率 4 无功功率 在正弦电流电路中 复功率的虚部 且供给电感的无 功功率为正值 5 视在功率 在电工技术中 将单口网络端钮电压和电流有效值的乘积 称为视在功率 apparent power 记为 S UI 6 功率因数 在交流电路中 电压与电流之间的相位差 的余弦叫做功 率因数 用符号 cos 表示 在数值上 功率因数是有功功率和视在功率的比值 即 cos P S 系统主程序流程图如 2 1 图所示 西安工业大学毕业设计 论文 3 一 一 一 一 一 一 一 一 一 一 一 一 A D一 一 一 一 A D一 一 一 一 一 一 一 一 一 一 一 A D一 一 一 一 一 一 一 一 一 一 一 一 A D一 一 一 一 N N 一 一 A D一 一 Y Y keyA一 一 一 Y Y keyC一 一 一keyB一 一 一N NN N Y YY Y 一 kyeA一 一 一一 kyeC一 一 一一 kyeB一 一 一 一 一 0一 一 一 一 一 一 一 一 一 一 1 一 一 EI NT0一 一 一 一 一 一 一 1一 一 一 一 一 一 一 一 一 一 1 一 一 EI NT1一 一 一 一 一 一 一 2一 一 一 一 一 一 一 一 一 一 1 一 一 EI NT2一 一 一 一 一 3 系统初始化 1 3 系统的初始化系统的初始化 3 1 系统的初始化的含义系统的初始化的含义 首先来讲讲系统初始化 什么是系统初始化呢 初始化就是把变量 variable 赋为默认值 把控件设为默认状态 把没准备 的准备好 但是如果是整个系统初始化那就不一样了 每个软件 或是工具 系统等都有一个初始化 如系统的初始化就是将你的系统还原到一开始做的备 份的状态 把设置等都还原至那个位置 如果是一个软件的初始化 基本都是将一些 功能的设置都还原为开始设置 意思就和恢复默认设置差不多 3 1 1 初始化的执行顺序初始化的执行顺序 每一个初始化部分里面的代码在程序运行后 或库的 begin end 块运行之前 delphi 使用对单元相关树的深度优先遍历来运行初始化部分 换句话说 就只 在一个单元的初始化代码运行前 delphi 就运行了特他使用的每一个单元的初 始化部分 每一个单元仅初始化一次 程序代码当中可以有 Initialization 声明部分 这部分里面的代码的执行 是在 windows 加载包含该单元 指 Initialization 所属单元 的模块 应用程序 DLL 或者包 时运行的 一般来说是 先 Initialization 单元 然后 interface 单 元 然后 implementation 单元 程序中 Intialize 过程 可以在这里初始化字符串 动态数组 接口和 Variants 系统为什么要初始化呢 第一 信息系统是以数据库为主的软件系统 是数据库应用系统 必须设 定数据库应用的安全体系否则无法保证数据安全 第二 信息系统是组织的管理方法 必须具备组织使用的共享数据才能供 组织使用 第三 初始化的核心是数据准备 没有历史数据不能实现系统切换 无法 使用 第四 数据必须定期存档和更新才能使信息系统有较高的运转效率 西安工业大学毕业设计 论文 1 3 1 2 系统的启动代码系统的启动代码 系统初始化主要是由软件来完成的 一般在 32 位 ARM 应用系统中 大多 数软件采用 C 语言来进行编程 并且以嵌入式操作系统作为平台 这样能大大 提升开发效率及软件性能 但是 由于 C 语言生成的代码不能上电后立马运行 的 因为此时还不具备运行条件 比如全局变量还没有初始化 系统堆栈还没 有设置等 因此从系统上电 到正式运行用户的 main 函数之前 要运行一段代 码 这段代码就称为启动代码 启动代码大部分由汇编指令构成 它可以实现向量表定义 堆栈初始化 系统变量初始化 中断初始化 外围初始化 地址重映射等操作 见图 2 2 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 l pc2124一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 m ai n一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 St ar up s Tar get c 图 2 2 首先是应该完成头文件的编写 下面就是系统初试化的头文件 target h 和系统的初始化软件 target c Startup s 1 系统初试化的头文件 系统初试化的头文件 target h ifndef TARGET H define TARGET H ifdef cplusplus extern C 西安工业大学毕业设计 论文 2 endif ifndef IN TARGET extern void Reset void extern void TargetInit void endif ifdef cplusplus endif endi 2 系统的初始化软件 系统的初始化软件 Startup s define the stack size 定义堆栈的大小 SVC STACK LEGTH EQU 0 FIQ STACK LEGTH EQU 0 IRQ STACK LEGTH EQU 256 ABT STACK LEGTH EQU 0 UND STACK LEGTH EQU 0 NoInt EQU 0 x80 NoFIQEQU0 x40 USR32Mode EQU 0 x10 SVC32Mode EQU 0 x13 SYS32Mode EQU 0 x1f IRQ32Mode EQU 0 x12 FIQ32Mode EQU 0 x11 IMPORT use no semihosting 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 西安工业大学毕业设计 论文 3 ENTRY interrupt vectors 中断向量表 Reset LDR PC ResetAddr LDR PC UndefinedAddr LDR PC SWI Addr LDR PC PrefetchAddr LDR PC DataAbortAddr DCD 0 xb9205f80 LDR PC PC 0 xff0 LDR PC FIQ Addr ResetAddr DCD ResetInit UndefinedAddr DCD Undefined SWI Addr DCD SoftwareInterrupt PrefetchAddr DCD PrefetchAbort DataAbortAddr DCD DataAbort Nouse DCD 0 IRQ Addr DCD 0 FIQ Addr DCD FIQ Handler 未定义指令 Undefined B Undefined 软中断 SoftwareInterrupt B SoftwareInterrupt CMP R0 4 LDRLO PC PC R0 LSL 2 MOVS PC LR SwiFunction DCD IRQDisable 0 DCD IRQEnable 1 DCDFIQDisable 2 DCDFIQEnable 3 IRQDisable 关 IRQ 中断 MRS R0 SPSR ORR R0 R0 NoInt 西安工业大学毕业设计 论文 4 MSR SPSR c R0 MOVS PC LR IRQEnable 开 IRQ 中断 MRS R0 SPSR BIC R0 R0 NoInt MSR SPSR c R0 MOVS PC LR FIQDisable 关 FIQ 中断 MRS R0 SPSR ORR R0 R0 NoFIQ MSR SPSR c R0 MOVS PC LR FIQEnable 开 FIQ 中断 MRS R0 SPSR BIC R0 R0 NoFIQ MSR SPSR c R0 MOVS PC LR 取指令中止 PrefetchAbort B PrefetchAbort 取数据中止 DataAbort B DataAbort 快速中断 FIQ Handler STMFD SP R0 R3 LR BL FIQ Exception LDMFD SP R0 R3 LR SUBS PC LR 4 InitStack MOV R0 LR Build the SVC stack 设置管理模式堆栈 MSR CPSR c 0 xd3 西安工业大学毕业设计 论文 5 LDR SP StackSvc Build the IRQ stack 设置中断模式堆栈 MSR CPSR c 0 xd2 LDR SP StackIrq Build the FIQ stack 设置快速中断模式堆栈 MSR CPSR c 0 xd1 LDR SP StackFiq Build the DATAABORT stack 设置中止模式堆栈 MSR CPSR c 0 xd7 LDR SP StackAbt Build the UDF stack 设置未定义模式堆栈 MSR CPSR c 0 xdb LDR SP StackUnd Build the SYS stack 设置系统模式堆栈 MSR CPSR c 0 xdf LDR SP StackUsr MOV PC R0 ResetInit BL InitStack 初始化堆栈 BL TargetResetInit 目标板基本初始化 跳转到 c 语言入口 B main user initial stackheap LDR r0 bottom of heap LDR r1 StackUsr MOV pc lr StackSvc DCD SvcStackSpace SVC STACK LEGTH 1 4 StackIrq DCD IrqStackSpace IRQ STACK LEGTH 1 4 StackFiq DCD FiqStackSpace FIQ STACK LEGTH 1 4 StackAbt DCD AbtStackSpace ABT STACK LEGTH 1 4 StackUnd DCD UndtStackSpace UND STACK LEGTH 1 4 西安工业大学毕业设计 论文 6 IF DEF EN CRP IF 0 x1fc INFO 1 nThe data at 0 x000001fc must be 0 x87654321 nPlease delete some source before this line ENDIF CrpData WHILE 0 x1fc NOP WEND CrpData1 DCD 0 x87654321 When the Data is 为 0 x87654321 user code be protected 当此数为 0 x87654321 时 用户程序被保护 ENDIF 分配堆栈空间 AREA MyStacks DATA NOINIT ALIGN 2 SvcStackSpace 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 LEGTH 4 未定义模式堆 栈 AREA Heap DATA NOINIT bottom of heap SPACE 1 AREA Stacks DATA NOINIT StackUsr END 3 系统的初始化软件 系统的初始化软件 target c define IN TARGET include config h include guolindian h void TargetResetInit void void IRQ Exception void while 1 西安工业大学毕业设计 论文 7 void FIQ Exception void while 1 void Timer0 Exception void T0IR 0 x01 VICVectAddr 0 通知中断控制器中断结束 void VICInit void 过零点检测功能初试化函数 void GuoLinDianInit void PINSEL1 0 x00000001 EXTMODE 0 x01 边沿触发 VICIntSelect 0 x00000000 VICDefVectAddr int IRQ Eint1 EXTINT 0 x01 VICIntEnable 0 x00004000 define TARGET DEBUG BY LCM void TargetInit void ifdef TARGET DEBUG BY LCM TargetResetInit GuoLinDianInit GUI Initialize 初始化 LCM GUI SetColor 1 0 设置前景色和背景色 endif void InitialiseUART0 uint32 bps void TargetResetInit void ifdef DEBUG RAM 西安工业大学毕业设计 论文 8 MEMMAP 0 x2 remap endif ifdef DEBUG FLASH MEMMAP 0 x1 remap endif ifdef IN CHIP MEMMAP 0 x1 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 Fcclk 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 0 xaa PLLFEED 0 x55 while PLLSTAT PLLCON 3 PLLFEED 0 xaa PLLFEED 0 x55 西安工业大学毕业设计 论文 9 设置存储器加速模块 Set memory accelerater module MAMCR 0 if Fcclk 20000000 MAMTIM 1 else if Fcclk 40000000 MAMTIM 2 else MAMTIM 3 endif endif MAMCR 2 设置串行口 initialize UART CCR 1 PREINT Fpclk 32768 1 PREFRAC Fpclk Fpclk 32768 32768 YEAR 2012 MONTH 4 DOM 26 HOUR 21 MIN 10 SEC 0 include rt sys h include stdio h 4 数据采集程序和数据处理 1 4 数据采集程序和数据处理数据采集程序和数据处理 4 1 数据采集技术简介数据采集技术简介 从广义上来讲 数据采集 DAQ 是指从传感器和其它待测设备等模拟和 数字被测单元中自动采非电量或者电量信号 送到上位机中进行分析 处理 数据 采集系统是结合基于计算机或者其他专用测试平台的测量软硬件产品来实现灵 活的 用户自定义的测量系统 采集又称取样 抽样 对模拟信号在时间上的离散化 幅值离散化 这样 用在电参量测量中可以克服模拟运算准确度较低且模拟器件易受各种干扰影响 的缺点 从同一批数据中可获得许多电参量信息 本文所述的数字采样技术主要应用于电参量测量领域 就是对周期或非周 期交流待测信号 在 CPU 的控制下 由采样保持器进行采样和保持 再送给 A D 转换器进行模数转换 量化处理 将模拟量变为数字量 送存储器存储 最后由 CPU 进行一系列运算 处理 得到结果送到 LCD 显示 本文用的是 LPC2124 LPC2124 具有一个 A D 转换器 A D 转换器的基本 时钟由 VPB 时钟提供 可编程分频器可将时钟调整至 4 5MHZ 逐步逼近最大 时钟 10 位精度要求的转换需要 11 个 A D 转换时钟 LPC2124 具有一个 A D 转换器 A D 转换具有如下特性 1 10 位逐次逼近模式转换器 2 测量范围 0 3 3V 3 10 位转换时间 2 4us 4 转换触发信号可选择 输入引脚的跳变或定时器匹配 5 具有掉电模式 4 2A D 寄存器的描述寄存器的描述 A D 寄存器包含控制寄存器 ADCR 和数据寄存器 ADDR A D 寄存器的使用情 况详见下表 4 1 西安工业大学毕业设计 论文 1 表 4 1 A D 寄存器 名称描述访 问 复位值地址 ADCRA D 控制寄存器 A D 转换开始前 必须写入 ADCR 寄 存器来选择工作模式 R W0 x00000001 0 xE0034000 ADDRA D 数据寄存器 该寄存器包含 ADC 的 DONE 标志位 和 10 位的转换结果 当前 DONE 位为 1 时 转换结果 才是有效的 R WNA0 xE0034000 4 2 1A D 控制寄存器控制寄存器 ADCR ADCR 寄存器描述如表 4 2 所列 表 4 2 A D 控制寄存器 ADCR名称功能复位值 7 0SEL从 AIN3 AIN0 中选择采样引脚 SEL 段中的 bit0 bit3 分 别对应 AIN3 AIN0 引脚 为 1 表示选中 在 64 脚封装的 LPC2124 有 bit0 bit3 可置位 软件控制模式下 只有一位 可被置位 硬件扫描模式下 SEL 可为 1 0 x0F 中的任何一 个值 SEL 为 0 时 等效于 0 x01 0 x01 15 8CLKDIV将 VPB 时钟 PCLK 进行 CLKDIV 的值加 1 分频得到 A D 转换 时钟 该时钟必须小于或等于 45MHz 0 16BURST如果该位为 0 转换由软件控制 需要 11 个时钟方能完成 如果该位为 1 A D 转换器以 CLKS 字段选择的速率重复执行 转换 并从 SEL 字段为 1 的位对应的引脚开始扫描 A D 转 换器启动后 第一次转换的时 SEL 字段中为 1 的位中的最低 有效位程度模拟输入 然后时为 1 的更高有效为对应的模拟 输入 如果可用 重复转换通过清零该位终止 但该位被 清零时并不会中止正在进行的转换 0 19 7CLKS该字段用来选择 Burst 模式下每次转换使用的时钟数和所得 ADDR 转换结果放入 LS 位中可确保精度的位的数目 CLKS 可 在 11 个时钟 10 位 4 个时钟 3 位 之间选择 000 11 个时钟 10 位 111 4 个时钟 3 位 000 21PDN1 A D 转换器处于正常模式 0 西安工业大学毕业设计 论文 2 0 A D 转换器处于掉电模式 23 22TEST 1 0 这些位用于器件测试 00 为正常测试 01 为数字测试模式 10 为 DAC 测试模式 11 为一次转换测试模式 0 26 24START当 BURST 为 0 时 这些位控制着 A D 转换是否启动和何时启 动 000 不启动 001 立即启动转换 010 当 ADCR 寄存器 bit27 选择的边沿出现 P0 1 ENT0 MAT0 2 CAP0 2 脚时启动转换 注意 START 选择 100 111 时 MAT 信号不必输出到引脚 上 100 当 ADCR 寄存器 bit27 选择的边沿在 MAT0 1 出现时启 动转换 101 当 ADCR 寄存器 bit27 选择的边沿在 MAT0 3 出现时启 动转换 110 当 ADCR 寄存器 bit27 选择的边沿在 MAT1 0 出现时启 动转换 111 当 ADCR 寄存器 bit27 选择的边沿在 MAT1 1 出现时启 动转换 000 27EDGE该位只有在 START 字段为 010 111 时有效 0 在所选 CAP MAT 信号的下降沿启动转换 1 在所选 CAP MAT 信号的上升沿启动转换 0 4 2 2A D 数据寄存器数据寄存器 ADDR ADDR 寄存器描述见表 4 3 其中 ADDR 15 6 为 10 位的 A D 转换结果 bit5 为最高位 表 4 3 数据寄存器 ADDR ADDR名称功能复位值 31DONEA D 转换完成标志位 当 A D 转换结束时该位 置位 该位在 ADDR 被读出和 ADCR 被写入时 清零 如果 ADCR 在转换过程中被写入 并启 动一次新的转换 0 西安工业大学毕业设计 论文 3 30OVERUNBrust 模式下 如果产生 LS 位结果前 一个或 多个转换结果被丢失和覆盖 该位置位 读位 通过读 ADDR 寄存器清零 0 29 2 7 这些位读出为 0 他们用于未来 CHN 字段的扩展 使之兼容包含更多通道的转换器 0 26 2 4 CHN这些位包含的是 LS 位的转换通道X 23 1 6 这些位读出时为 0 他们允许连续 A D 值的累加 而不需要使用与门屏蔽处理 使得至少有 256 个值不溢出到 CHN 字段 0 15 6V Vdda当 DONE 为时 该字段包含一个二进制数 用 来代表 SEL 字段选中的 Ain 脚的电压接近于 等于或大于 Vdda X 5 0这些位读出时为 0 专门用于未来的扩展和功能 更强大的 A D 转换器 0 4 3A D 的基本操作的基本操作 ADC 模数转换器 转换时钟分频计算公式如下 CLKDIV Fpclk Fadclk 1 其中 Fpclk 为所要设置的 ADC 时钟 其值不能大于 4 5MH 值 ADC 转换的基本操作方法 1 将测量通道引脚设置为 AINx 功能 2 通过 ADCR 寄存器设置 ADC 的工作模式 ADC 转换通道 转换时钟 CLKDIV 时钟分频值 3 启动 ADC 转换 4 通过查询或中断方式等待 ADC 转换完毕 转换数据存在 ADDR 寄存 器中 4 4 数据处理数据处理 由于本课题用的是交流采样 所以就要进行数据处理 数据处理主要是进 行滤波 然而滤波的方法是多种多样的 本文对常用的几种方法进行比较 1 限幅滤波法 又称程序判断滤波法 限幅滤波法 又称程序判断滤波法 a 方法 根据经验判断 确定两次采样允许的最大偏差值 设为 A 每次检测到新 西安工业大学毕业设计 论文 4 值时判断 如果本次值与上次值之差A 则本次值无效 放弃本次值 用上次值代替本次值 b 优点 能有效克服因偶然因素引起的脉冲干扰 c 缺点 无法抑制那种周期性的干扰 平滑度差 滤波方法 A 值可根据实际情况调整 value 为有效值 new value 为当前采样值 滤波程序返回有效的实际值 define A 10 char value char filter char new value new value get ad if new value value A value new value A return value return new value 2 中位值滤波法中位值滤波法 a 方法 连续采样 N 次 N 取奇数 把 N 次采样值按大小排列 取中间值为本次 有效值 b 优点 能有效克服因偶然因素引起的波动干扰 对温度 液位的变化 缓慢的被测参数有良好的滤波效果 c 缺点 对流量 速度等快速变化的参数不宜 滤波方法 N 值可根据实际情况调整 排序采用冒泡法 define N 11 char filter char value buf N char count i j temp for count 0 count N count value buf count get ad 西安工业大学毕业设计 论文 5 delay for j 0 j N 1 j for i 0 ivalue buf i 1 temp value buf value buf value buf i 1 value buf i 1 temp return value buf N 1 2 3 算术平均滤波法算术平均滤波法 a 方法 连续取 N 个采样值进行算术平均运算 N 值较大时 信号平滑度较高 但 灵敏度较低 N 值较小时 信号平滑度较低 但灵敏度较高 N 值的选取 一 般流量 N 12 压力 N 4 b 优点 适用于对一般具有随机干扰的信号进行滤波 这样信号的特点 是有一个平均值 信号在某一数值范围附近上下波动 c 缺点 对于测量速度较慢或要求数据计算速度较快的实时控制不适用 比较浪费 RAM 滤波方法 define N 12 char filter int sum 0 for count 0 count N count sum get ad delay return char sum N 4 递推平均滤波法 又称滑动平均滤波法 递推平均滤波法 又称滑动平均滤波法 西安工业大学毕业设计 论文 6 a 方法 把连续取 N 个采样值看成一个队列 队列的长度固定为 N 每次采样到一 个新数据放入队尾 并扔掉原来队首的一次数据 先进先出原则 把队列中的 N 个数据进行算术平均运算 就可获得新的滤波结果 N 值的选取 流量 N 12 压力 N 4 液面 N 4 12 温度 N 1 4 b 优点 对周期性干扰有良好的抑制作用 平滑度高 适用于高频振荡 的系统 c 缺点 灵敏度低 对偶然出现的脉冲性干扰的抑制作用较差 不易消 除由于脉冲干扰所引起的采样值偏差 不适用于脉冲干扰比较严重的场合 比 较浪费 RAM 滤波方法 define N 12 char value buf N char i 0 char filter char count int sum 0 value buf i get ad if i N i 0 for count 0 count N count sum value buf count return char sum N 5 中位值平均滤波法 又称防脉冲干扰平均滤波法 中位值平均滤波法 又称防脉冲干扰平均滤波法 a 方法 此方法相当于 中位值滤波法 算术平均滤波法 连续采样 N 个数据 去掉一个最大值和一个最小值 然后计算 N 2 个数据的算术平均值 N 值的选 取 3 14 b 优点 融合了两种滤波法的优点 对于偶然出现的脉冲性干扰 可消 除由于脉冲干扰所引起的采样值偏差 c 缺点 测量速度较慢 和算术平均滤波法一样 比较浪费 RAM 滤波方法 define N 12 char filter char count i j char value buf N 西安工业大学毕业设计 论文 7 int sum 0 for count 0 count N count value buf count get ad delay for j 0 j N 1 j for i 0 ivalue buf i 1 temp value buf value buf value buf i 1 value buf i 1 temp for count 1 count N 1 count sum value count return char sum N 2 经过比较 所以选择了一种比较简单容易实现的滤波方法 限幅滤波 4 5A D 采集功能介绍及软件编程采集功能介绍及软件编程 首先对 A D 进行初始化 初始化的详细设置见表 4 2 2 初始化后 A D 就 开始选择通道 选择通道 1 并进行第一次转换 等待转换结束 再启动 再 转换 读取 ADC 结果 提取 AD 转换值 最后进行数值转换 以此选择 2 3 4 等通道 并重复上述操作 采集电流和电压值各 3 路 进行滤波 最 后显示 具体的实现见流程图 4 1 西安工业大学毕业设计 论文 8 A D一 一 一 A D一 一 一 一 A D一 一 A D一 一 一 一 一 A D一 一 A D一 一 图 4 1 A D 采集以及滤波处理的软件编程 include config h include stdlib h include uint8 F flag define A 10 uint32 value IA uint32 value IB uint32 value IC uint32 value VA uint32 value VB uint32 value VC uint32 filer uint32 adVlaueNew uint32 adVlaueOld uint32 new value new value adVlaueNew if new value adVlaueOld A adVlaueOld new value A return adVlaueNew return adVlaueOld 西安工业大学毕业设计 论文 9 Void Function 1 ADC void extern uint8 title2 11 uint32 ADC Data uint32 i char str 14 if F flag ADCR 1 0 SEL 1 选择通道 0 Fpclk 1000000 1 8 CLKDIV Fpclk 1000000 1 即转换时钟为 1MHz 0 16 BURST 0 软件控制转换操作 0 17 CLKS 0 使用 11clock 转换 1 21 PDN 1 正常工作模式 非掉电转换模式 0 22 TEST1 0 00 正常工作模式 非测试模式 0 24 START 1 直接启动 ADC 转换 Q 0 27 EDGE 0 CAP MAT 引脚下降沿触发 ADC 转换 F flag 0 x01 ADC Data ADDR ADCR ADCR 设置通道 1 并进行第 一次转换 while ADDR 等待转换结束 ADCR ADCR 1 6 提取 AD 转换值 ADC Data filer ADC Data value IA ADC Data ADC Data 3300 1024 数值转换 F flag 0 ADC Data ADC Data 200 sprintf str d A r ADC Data 显示 GUI PutString 60 16 str ADC Data ADDR ADCR ADCR 设置通道 2 并进行第 一次转换 while ADDR 等待转换结束 西安工业大学毕业设计 论文 10 ADCR ADCR 1 6 提取 AD 转换值 ADC Data ADC Data 3300 1024 数值转换 ADC Data filer ADC Data value IB ADC Data ADC Data 200 sprintf str d A r ADC Data 显示 GUI PutString 60 32 str ADC Data ADDR ADCR ADCR 设置通道 3 并进行第 一次转换 while ADDR 等待转换结束 ADCR ADCR 1 6 提取 AD 转换值 ADC Data ADC Data 3300 1024 数值转换 ADC Data filer ADC Data value

温馨提示

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

评论

0/150

提交评论