已阅读5页,还剩75页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1 本科毕业设计本科毕业设计(论文论文) 题目:电特性测量系统软件设计题目:电特性测量系统软件设计 院(系)院(系) 电子信息工程学院电子信息工程学院 专专 业业 自自 动动 化化 班班 级级 姓姓 名名 学学 号号 导导 师师 20122012 年年 6 6 月月 1 1 日日 i 三相电特性测试软件设计三相电特性测试软件设计 摘摘 要要 近年来随着社会对电力需求量的不断增长,电能紧缺问题日趋严重,极大 地制约着社会经济的发展。我国电力工业的迅速发展,电能质量对于电网的安 全经济运行,保证工业产品质量和科学实验的正常进行以及降低能耗等均有重 要意义。 为做到节约电能并合理高效地利用电能,这就需要对电力参数进行准确、 实时地监测;此外,对于电力参数进行高精度、多参数的测量,又是充分了解 电网的运行状况,寻找并解决电力系统中出现问题的重要途径。因此,对于电 力参数的测量,尤其是高精度、多参数、低价格、便携、稳定的实时测量就显 得尤为重要,也一直是人们研究的一个重要的方向。 为解决以上问题,本设计选用 arm7 核的 lpc2124 芯片为测量系统的核 心,主要针对我国电力系统供配电的实际情况,通过 arm7 单片机为核心,配 以相应的外围电路和功能软件,采用交流采样技术实现多种电力参数的在线实 时测量和数据分析,为电网的安全经济运行提供可靠保证。以提高三相电参数 的测量速度和精度。 关键字:关键字:三相电;交流采样;实时测量 ii three phase electric characteristic measurement software design abstract in recent years 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 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 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 measurement 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 arm7 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 guarantee.in order to improve the electric parameter measuring speed and accuracy. keywords: three-phase;ac sampling;measurement 1 目目 录录 摘摘 要要i i abstractiiii 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 4.4 数据处理 3 4.5a/d 采集功能介绍及软件编程 .7 2 5 5 键盘显示模块键盘显示模块1212 5.1 关于键盘使用的简单介绍 .12 5.2 键盘控制模块的功能介绍及程序 .13 5.2.1 键盘扫描头文件 keyboard.h14 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 8.1proteus简介 45 8.2 电路仿真 .45 3 8.3 分散加载文件 .46 8.4 系统的电路图以及proteus中的仿真结果 .48 8.4.1 系统的电路图48 8.4.2proteus 中的仿真结果48 结束语结束语5151 致谢致谢5252 参考文献参考文献5353 毕业设计(论文)知识产权声明毕业设计(论文)知识产权声明5454 毕业设计(论文)独创性声明毕业设计(论文)独创性声明5555 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 0x80 nofiqequ0x40 usr32mode equ 0x10 svc32mode equ 0x13 sys32mode equ 0x1f irq32mode equ 0x12 fiq32mode equ 0x11 ; 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 0xb9205f80 ldr pc, pc, #-0xff0 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, #0xd3 西安工业大学毕业设计(论文) 5 ldr sp, stacksvc ;build the irq stack ;设置中断模式堆栈 msr cpsr_c, #0xd2 ldr sp, stackirq ;build the fiq stack ;设置快速中断模式堆栈 msr cpsr_c, #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, 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 . = 0x1fc info 1,“nthe data at 0x000001fc must be 0x87654321.nplease delete some source before this line.“ endif crpdata while . 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_bufn; char count,i,j,temp; for ( count=0;countvalue_bufi+1 ) temp = value_buf; value_buf = value_bufi+1; value_bufi+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;countvalue_bufi+1 ) temp = value_buf; value_buf = value_bufi+1; value_bufi+1 = temp; for(count=1;count 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-advlaueolda)|(advlaueold-new_valuea) return advlauenew; return advlaueold; 西安工业大学毕业设计(论文) 9 void function_1_adc(void) extern uint8 *title211; uint32 adc_data; uint32 i; char str14; if(f_flag 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 / 提取 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 / 提取 ad 转换值 adc_data = adc_data * 3300/1024; / 数值转换 adc_data=filer(adc_data,value_ic); adc_data = adc_data - 200; sprintf(str, “ : %d a r“, adc_data); / 显示 gui_putstring(60,48,str); adc_data = addr; adcr = (adcr / 提取 ad 转换值 adc_data = adc_data * 3300/1024; / 数值转换 adc_data=filer(adc_data,value_va); adc_data = adc_data - 200; sprintf(str, “ : %d v r“, adc_data); / 显示 gui_putstring(60,82,str); adc_data = addr; adcr = (adcr / 提取 ad 转换值 adc_data = adc_data * 3300/1024; / 数值转换 adc_data=filer(adc_data,value_vb); adc_data = adc_data - 200; sprintf(str, “ : %d v r“, adc_data); / 显示 gui_putstring(60,98,str); adc_data = addr; adcr = (adcr / 提取 ad 转换值 adc_data = adc_data * 3300/1024; / 数值转换 adc_data=filer(adc_data,value_vc); adc_data = adc_data - 200; sprintf(str, “ : %d v r“, adc_data); / 显示 gui_putstring(60,114,str); 5 键盘显示模块 1 5 键盘显示模块键盘显示模块 5.1 关于键盘使用的简单介绍关于键盘使用的简单介绍 键盘显示的内容单片机应用系统常需连接键盘、显示器、打印机、a/d 和 d/a 转换器等外设,其中,键盘和显示器是使用最频繁的外设,它们是构成人 机对话的一种基本方式。 (1) 键输入原理键输入原理 在单片机应用系统中,除了复位按键有专门的复位电路及专一的复位功能 外,其它按键都是以开关状态来设置控制功能或输入数据。当所设置的功能键 或数字键按下时,计算机应用系统应完成该按键所设定的功能,键信息输入是 与软件结构密切相关的过程。 对于一组键或一个键盘,总有一个接口电路与 cpu 相连。cpu 可以采用 查询或中断方式了解有无将键输入并检查是哪一个键按下,将该键号送入累加 器 acc,然后通过跳转指令转入执行该键的功能程序,执行完后再返回主程序。 (2) 按键结构与特点按键结构与特点 微机键盘通常使用机械触点式按键开关,其主要功能是把机械上的通断转 换成为电气上的逻辑关系。也就是说,它能提供标准的 ttl 逻辑电平,以便与 通用数字系统的逻辑电平相容。 机械式按键再按下或释放时,由于机械弹性作用的影响,通常伴随有一定 时间的触点机械抖动,然后其触点才稳定下来。其抖动过程如图 3.9 所示,抖 动时间的长短与开关的机械特性有关,一般为 510ms。 闭合 稳定 键按下 前沿抖动 后沿抖动 图 3.9 按键触点的机械抖动 在触点抖动期间检测按键的通与断状态,可能导致判断出错。即按键一次 按下或释放被错误地认为是多次操作,这种情况是不允许出现的。为了克服按 键触点机械抖动所致的检测误判,必须采取去抖动措施,可从硬件、软件两方 5 键盘显示模块 2 面予以考虑。在键数较少时,可采用硬件去抖,而当键数较多时,采用软件去 抖。 西安工业大学毕业设计(论文) 1 软件上采取的措施是:在检测到有按键按下时,执行一个 5ms 左右(具体 时间应视所使用的按键进行调整)的延时程序后,再确认该键电平是否仍保持 闭合状态电平,若仍保持闭合状态电平,则确认该键处于闭合状态;同理,在 检测到该键释放后,也应采用相同的步骤进行确认,从而可消除抖动的影响。 (3) 按键编码按键编码 一组按键或键盘都要通过 i/o 口线查询按键的开关状态。根据键盘结构的 不同,采用不同的编码。无论有无编码,以及采用什么编码,最后都要转换成 为与累加器中数值相对应的键值,以实现按键功能程序的跳转。 (4) 编制键盘程序编制键盘程序 一个完善的键盘控制程序应具备以下功能: a. 检测有无按键按下,并采取硬件或软件措施,消除键盘按键机械触点 抖动的影响。 b. 有可靠的逻辑处理办法。每次只处理一个按键,其间对任何按键的操 作对系统不产生影响,且无论一次按键时间有多长,系统仅执行一次按键功能 程序。 c. 准确输出按键值(或键号) ,以满足跳转指令要求。 5.2 键盘控制模块的功能介绍及程序键盘控制模块的功能介绍及程序 本课题选用三个按键 keya.,keyb,keyc,当 keya 按下时,显示的是我的 基本信息:当 keyb 按下时显示的是采集的三路电流值和三路电压值;当 keyc 按下时,显示的是有功功率、无功功率、视在功率、功率因数等电特性参数。 具体的键盘扫描流程图如图 5.1 图。 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 y y n n 一 一 一 西安工业大学毕业设计(论文) 2 5.1 图 5.2.1 键盘扫描头文件键盘扫描头文件 keyboard.h #ifndef keydrv_h #define keydrv_h /* 定义键盘行列 */ #define keyboard_row4/* 定义 */ #define keyboard_column4/* 定义 */ extern void keyboard_initialize(void); extern uint8 keyboard_scan(void); /键值,无键按下,返回 0xff voidkeyboard_process(void); #endif 5.2.2 按键扫描去抖程序按键扫描去抖程序 void keyscane(void) uint8i,x,y; if (io1pin /去抖 if(io1pin /设置按键值 gui_clearscr(); uishow_a(); /显示 if (io1pin if(io1pin gui_clearscr(); uishow_b(); 西安工业大学毕业设计(论文) 3 if (io1pin if (io1pin gui_clearscr(); mainui_c(); /*按键值处理*/ void mainshow(void) switch(keyflag) case mnue_one: break; case mnue_two: function_1_adc(); break; case mnue_three: break; int main(void) char str40=“0“; targetinit(); getdate( gettime( sprintf(str, “%04d-%02d-%02d %02d:%02d:%02d“, lpcdata.da_year, 西安工业大学毕业设计(论文) 4 lpcdata.da_mon, lpcdata.da_day, now.ti_hour, now.ti_min, now.ti_sec); while(1) keyscane(); mainshow(); getdate( gettime( gui_putstring(123,114,str); /时间显示位置 sprintf(str, “%04d-%02d-%02d %02d:%02d:%02d“, lpcdata.da_year, lpcdata.da_mon, lpcdata.da_day, now.ti_hour, now.ti_min, now.ti_sec); 6 液晶显示模块 1 6 液晶显示模块液晶显示模块 6.1 液晶简介液晶简介 6.1.1lcd 介绍介绍 液晶,一种具有规则性分子排列的有机化合物,既不是固体也不是液体, 介于固态和液态之间的物质。液晶显示是一种被动的显示,它不能发光,只能 使用周围环境的光。 6.1.2lcd 显示的原理显示的原理 液晶显示的原理是利用液晶的物理特性,通过电压对其显示区域进行控制, 有电就有显示,这样即可以显示出图形。液晶显示器具有厚度薄、适用于大规 模集成
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024-2030年中国婴幼儿营养米粉行业营销模式及未来5发展趋势报告
- 2024-2030年中国地铁广告行业趋势研究与投资价值分析报告
- 2024年度健身房装修设计合同范本6篇
- 2024年物联网平台建设合同
- 眉山药科职业学院《冶金资源综合利用》2023-2024学年第一学期期末试卷
- 2024年版矿物材料交易合同
- 2024年标准版喷浆作业人员劳动协议一
- 阅读是一个专门的领域
- 四川省乐山市2019-2020学年高二下学期期末考试化学试题(解析版)
- 2024停薪留职员工技能提升与职业发展合同范本3篇
- 2024年全国职业院校技能大赛高职组(智能节水系统设计与安装赛项)考试题库-下(多选、判断题)
- 在奉献中成就精彩人生 课件-2024-2025学年统编版道德与法治七年级上册
- 邮轮运营管理 课件 第七章 邮轮安全管理的全面解析
- 公园保洁服务投标方案
- 2024年高考英语作文预测:倡议书(附答案解析)
- 安徽省2023-2024学年七年级上学期期末数学试题(原卷版)
- 2024年人教版八年级生物(上册)期末试卷及答案(各版本)
- 农作物病虫害防治的社会经济效益分析考核试卷
- 2023年全国职业院校技能大赛-商务数据分析赛项规程
- 第五单元 大单元教学设计-【大单元教学】2024-2025学年七年级语文上册同步备课系列(统编版2024)
- 《林火生态与管理》实验报告
评论
0/150
提交评论