嵌入式系统在过电流保护装置中的应用研究

上传人:无*** 文档编号:60713939 上传时间:2022-03-09 格式:DOC 页数:31 大小:16.04MB
收藏 版权申诉 举报 下载
嵌入式系统在过电流保护装置中的应用研究_第1页
第1页 / 共31页
嵌入式系统在过电流保护装置中的应用研究_第2页
第2页 / 共31页
嵌入式系统在过电流保护装置中的应用研究_第3页
第3页 / 共31页
资源描述:

《嵌入式系统在过电流保护装置中的应用研究》由会员分享,可在线阅读,更多相关《嵌入式系统在过电流保护装置中的应用研究(31页珍藏版)》请在装配图网上搜索。

1、嵌入式系统在电流保护装置中的应用研究- 0 -目录目录1.嵌入式系统在电流保护装置中的应用研究.- 2 -2 设计要求.- 2 -3 设计作用与目的.- 2 -4.所用设备及软件.- 2 -5 系统设计方案.- 2 -5.1 系统总体设计.- 2 -5.2 系统工作原理.- 3 -6. 系统硬件设计.- 3 -6.1 系统整体设计.- 3 -6.2 各单元电路设计.- 4 -6.2.1 STM32F103RBT6 简要介绍.- 4 -6.2.2 整流采样模块.- 5 -6.2.3 运放模块.- 6 -6.2.4 触摸屏控制及 TFT 显示模块.- 8 -6.2.5 报警模块.- 9 -6.2.

2、6 继电器模块.- 10 -7.系统软件设计.- 11 -8.仿真调试分析.- 12 -9.嵌入式学习及设计心得.- 14 -10.总 结.- 16 -11.参考文献.- 18 - 嵌入式系统在电流保护装置中的应用研究- 1 - 嵌入式系统在电流保护装置中的应用研究摘摘 要要在多数以电为驱动的装置中,有时因为外界环境变动,或者操作者的失误,容易出现过流的现象,从而造成设备损坏或者更坏的结果。所以,设备中是否具有过流保护尤为重要。本设计着重阐述了系统的总体结构、工作原理和基于 STM32F103RBT6 微处理器芯片的嵌入式技术,给出了系统硬件设计和软件控制的设计方法成功实现了对设备中电流的实时

3、监测及保护。关键字:嵌入式技术,STM32F103RBT6,过流保护,康铜电阻嵌入式系统在电流保护装置中的应用研究- 2 -1.嵌入式系统在电流保护装置中的应用研究2 设计要求 本设计主要以 STM32F103RBT6 芯片为处理器,通过对康铜电阻(采样电阻)两端的电压经运放放大后进行 ADC 转换,然后送至处理器,通过处理器对输入的电流值与用户预设电流值进行比较,如过电流则报警和驱动接触器断开,已达到对设备的监视和保护。3 设计作用与目的本设计中的以嵌入式技术为系统的过流保护装置中,主要作用是实时监测设备电流,根据需要,通过触摸屏输入电流报警值和电流保护值,实现对设备的全自动保护。本设计中的

4、运放对采样信号进行 100 倍放大,可对电流到达 4AA 内电流进行保护,报警电流和动作电流可按需要设置。系统可检测直流和交流电流。4.所用设备及软件本设计中主要设备为计算机,PCB 电路板制作设备,软件主要包括protel99,multisim,keil5 系统设计方案5.1 系统总体设计 本设计通过对康铜电阻的电压经运放进行 AD 采样后,送至 STM32F103RBT6 处理器,通过算法与触摸输入电流值进行比较,随之进行相应动作。如图 1 为系统的总体设计框图嵌入式系统在电流保护装置中的应用研究- 3 -STM32F103RBT6康铜电阻采样电压运算放大触摸屏报警液晶屏继电器接触器图 1

5、. 系统总体设计框图5.2 系统工作原理 如图 1. 运放模块将康铜电阻的上的电压放大,经 AD 采样送至 MCU,与经触摸屏输入的电流值进行比较,当电流达到报警值时,MUC 启动报警系统,当电流值达到保护值时,MUC 启动继电器,切断电源,实现过流保护的功能。6. 系统硬件设计6.1 系统整体设计本设计中,主要利用到了 STM32F103RBT6 对采样数据的处理,而采样数据来自系统中所设的康铜电阻。保护动作是靠继电器驱动接触器切断电源。 嵌入式系统在电流保护装置中的应用研究- 4 -6.2 各单元电路设计6.2.1 STM32F103RBT6 简要介绍 本单元主要是利用嵌入式技术来控制整个

6、系统,如图 3,为其最小系统图, 图 3. STM32F103RBT6 最小系统图STM32F103RBT6 是 ST 公司基于 ARM 最新 Cortex-M3 架构内核的 32 位处理器产品,内置128KB 的 Flash,20k 的 RAM.最小系统中,采用 STM32F103RBT6 为控制器,工作频率可达72MHZ, 16 个外部模拟信号输入通道,可达 1us 转换时间,转换范围为 0 到 3.6V;支持7 个 DMA 通道,可操作多种通用外设,如定时器,ADC,USART 等;内置 3 个同步 16 位定时器,每个可有四个通道用于 PWM 波输出,内置 2 个 12 位 ADC。每

7、个 ADC 有 7 个输入通道,可以实现单次或多次扫描转换,自带 0 电压校准,模拟看门狗特性允许应用程序检嵌入式系统在电流保护装置中的应用研究- 5 -测输入电压是否超出用户定义的高/低闸值,ADC 最短采样时间为 1us,足以胜任本系统。 6.2.2 整流采样模块本单元模块主要功能是用来整流输入电流,其核心器件为康铜电阻,下面对康铜电阻做简单介绍。康铜是物理学中的一个概念,指的是一种具有高电阻率的合金金属。是含 40%镍,1.5%锰的铜合金。具有低的电阻率温度系数和中等电阻率(电阻率为 0.48m)。可在较宽的温度范围内使用。有良好的加工性能和焊接性能。适宜在交流电路中使用,作精密电阻、滑

8、动电阻、电阻应变计等,也可用于热电偶和热电偶补偿导线材料。约合 40%Ni 的铜镍合金的特征就是此种合金有很小的温度系数。这类合金中有一种叫康铜。根椐POCT49241,这种合金的成分如下:3941%Ni+Co;1.0 一 2.0%Mn,其余是铜和杂质。杂质的含量不应超过 1.0%,其中包括:0.5%Fe;0.1%Si;0.1%C;0.1%Zn;0.02%S;0.05%Mg 和 0.05%A1。康铜的物理性质如下:1)比重 8.9;2)熔点 12001260;3)退火温度 800-820;4)界限工作温度 350;5)电阻系数 0.48 欧毫米 2/米;6)温度系数 0.000016.适宜在交

9、直流电路中使用,作精密电阻、滑动电阻、电阻应变计等,也可用于热电偶和热电偶补偿导线材料。本设计中采用 0.01 的康铜电阻,后级的运放模块就是对其上面的电压进行放大。 如图 4.为本单元的原理图嵌入式系统在电流保护装置中的应用研究- 6 -1234ABCD4321DCBATitleNumberRevisionSizeA4Date:30-May-2014Sheet of File:C:UsersAdministratorDesktop业业业业业业业业业业业业业业业业业业业业.ddbDrawn By:D1D2D3D4D5业业业业业12XP1业业业业C410uFR7KT业业Sample图 4.整流采

10、样电路图6.2.3 运放模块 运放模块主要采用 LM358 双运放芯片,通过输入前级康铜电阻上的电压,经运放模块进行 100 倍放大的,为其后级 AD 采样提供原始数据。下面对 LM358 做简单介绍LM358 内部包括有两个独立的、高增益、内部频率补偿的双运算放大器,适合于电源电压范围很宽的单电源使用,也适用于双电源工作模式,在推荐的工 作条件下,电源电流与 电源电压无关。它的使用范围包括传感放大器、直流增益模组,音频放大器、工业控制、DC 增益部件和其他所有可用单电源供电的使用运算放大器的场合。 LM358LM358 特性特性(Features)(Features): 内部频率补偿。 直流

11、电压增益高(约 100dB) 。 单位增益频带宽(约 1MHz) 。 嵌入式系统在电流保护装置中的应用研究- 7 -电源电压范围宽:单电源(330V);双电源(1.5 一15V) 。 低功耗电流,适合于电池供电。 低输入偏流。 低输入失调电压和失调电流。 共模输入电压范围宽,包括接地。 差模输入电压范围宽,等于电源电压范围。 输出电压摆幅大(0 至 Vcc-1.5V) 。 LM358 主要参数输入偏置电流 45 nA输入失调电流 50 nA输入失调电压 2.9mV输入共模电压最大值 VCC1.5 V共模抑制比 80dB电源抑制比 100dB 图 5 为其引脚图 图 5.LM358 引脚图图 6

12、 为运算放大模块电路图。嵌入式系统在电流保护装置中的应用研究- 8 -1234ABCD4321DCBATitleNumberRevisionSizeA4Date:30-May-2014Sheet of File:C:UsersAdministratorDesktop业业业业业业业业业业业业业业业业业业业业.ddbDrawn By:GNDVCCU1LM358+5R110KR210KR31KR415KR510K R610KC110uFC210uFC3103+5VDGVDGVDGD6业业业业业SampleR8FUADADXP2OUT+5图 6. 运算放大模块电路图6.2.4 触摸屏控制及 TFT 显

13、示模块该模块主要功能是完成报警电流值和保护电流值的输入,同时显示实时电流值。本设计采用 XPT2046 芯片作为电阻屏的输入检测,该芯片是一款 4 导线制触摸屏控制器,内含 12 位分辨率 125KHz 转换速率逐步逼近型 A/D 转换器。XPT2046 支持从 1.5V 到5.25V 的低电压 I/O 接口。XPT2046 能通过执行两次 A/D 转换查出被按的屏幕位置, 除此之外,还可以测量加在触摸屏上的压力。内部自带 2.5V 参考电压可以作为辅助输入、温度测量和电池监测模式之用,0V 到 6V。XPT2046 片内集成有一个温度传感器。 在2.7V 的典型工作状态下,关闭参考电压,功耗

14、可小于 0.75mW。工作温度范围为-40+85。如图 7嵌入式系统在电流保护装置中的应用研究- 9 -图 7.XPT2046 芯片原理图模块中 TFT(Thin Film Transistor)是薄膜晶体管的缩写。TFT 式显示屏是各类笔记本电脑和台式机上的主流显示设备,该类显示屏上的每个液晶像素点都是由集成在像素点后面的薄膜晶体管来驱动,因此 TFT 式显示屏也是一类有源矩阵液晶显示设备。是最好的 LCD 彩色显示器之一,TFT 式显示器具有高响应度、高亮度、高对比度等优点,其显示效果接近 CRT 式显示器。6.2.5 报警模块本设计中报警模块主要是靠蜂鸣器的报警声及 TFT 显示的变色来

15、实现。蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电的电子产品中作发声器件,本设计采用有源嵌入式系统在电流保护装置中的应用研究- 10 -蜂鸣器。如图 8.为蜂鸣器电路图 8,蜂鸣器电路6.2.6 继电器模块 本设计中,该模块主要完成当设备中电流达到所设保护电流时切断电源的功能。因 MUC 不能直接驱动接触器,所以在中间增加了继电器驱动。如图 9,为.继电器原理图嵌入式系统在电流保护装置中的应用研究- 11 -123456ABCD654321DCBATitleNumberRevisionSizeBDate:30-May-2014Sheet of File:E:业业业业业业业业业业(FM)

16、业业业业业7.20业业业业业2.ddbDrawn By:LKJDQD11N4007Q5PNP+5V12XP2XP2R7220 图 9.继电器原理图7.系统软件设计本设计主要通过对STM32F103RBT6 芯片的程序控制,完成采样,比较,显示,报警,保护等功能,如图 10.为软件设计的流程嵌入式系统在电流保护装置中的应用研究- 12 - 图 10. 系统程序流程图8.仿真调试分析 本设计主要先用 multisim 进行仿真,进行理论研究,根据设计目的,各项仿真数据都满足要求如图 11,如仿真原理图嵌入式系统在电流保护装置中的应用研究- 13 - 图 11.运放模块仿真原理图如图 12 ,当前设

17、置输入信号与输出信号幅值比为 1:50 时,通过仿真图像,输出端幅度刚好为输出端幅度的一半,满足放大 100 倍的要求。嵌入式系统在电流保护装置中的应用研究- 14 -图 12. 数据仿真图9.嵌入式学习及设计心得 首先,要明确为什么要学习以 MCU 为核心的嵌入式应用技术。针对读者不同的学习目的,学习嵌入式系统的方法和侧重点略有不同。MCU 具有广泛的应用范围外,对于计算机、电子类、机电类等专业的工科学生来说,即使暂时没有从事 MCU 的应用的开发,学习 MCU 也有很重要的意义。因为,MCU 作为微型计算机的一个种类,麻雀虽小,五脏俱全,学习 MCU 可以更加理解微机原理,更加清楚计算机的

18、脉络。同时,目前嵌入式应用系统的软件开发方法与一般的软件开发方法已经融合,嵌入式系统在电流保护装置中的应用研究- 15 -开发平台也极为相似。对于在校学生,学习嵌入式应用技术,主要以书本知识为主,理解嵌入式系统的原理和基本编程方式,为将来的学习和发展打好基础。对于将要投身嵌入式行业的技术人员而言,学习嵌入式系统的方法和侧重点不同于在校的学生。不但学习过程中所需要的背景知识(包括数字电路、汇编语言基础、软件工程,甚至机械自动化)不可或缺,而且更要养成良好的做事规范和方法。学习的侧重点主要放在较复杂的嵌入式应用系统上,对于嵌入式实时操作系统(包括 C/OS-、SmallRTOS、CLinux 等)

19、在应用的基础上,有一定深度的理解。但是,对于只分析实时操作系统或进行短期培训性的驱动程序开发,不扎实进行嵌入式系统基础知识的学习与软件及硬件实践,是不可能学好嵌入式系统的。其次,学习以 MCU 为核心的嵌入式应用技术,要选择入门的机型。MCU 种类繁多,应用于各行各业,在应用中需要设计者对各种 MCU 都有所了解,以便确定最佳的性能价格比。但是不可能也没有必要同时学习各种型号 MCU 的软硬件知识,通常的方法是学习一种典型的 MCU 系列,达到实用程度,在应用中首先选择使用该系列。如果确实要用其它系列MCU 时,只需将两种系列的不同点进行分析、对比,即可在较短时间内达到可以应用的程度。对于初学

20、者,选择入门的 MCU 系列,一定要选择在国际上比较流行,系列比较齐全,在若干年内不会被淘汰,且抗干扰性强、性能价格比较高的产品。选择意法半导体公司的 Cortex-M3系列内核的 MCU 具有这些特点。第三,MCU 指令系统不大,特别是关键字不多,学习时,在了解基本性能的前提下,可先把关键字及其含义记住,这样,在以后的学习中可起到事半功倍的效果。这一点需强调一下,花上几个单元时间记住主要关键字,对于入门学习很重要,没有必要的记忆,任何知识也无法学习。本书采用汇编语言与 C 语言并行学习的方法,可以通过实例对比学习。所提供的例子均通过测试,可以作为对比学习用例。也可以应用到实际开发系统中。第四

21、,学习以 MCU 为核心的嵌入式应用技术,一定要勤于实践。必须通过实践,理解 MCU原理,掌握基本的编程规范与方法,才能学会设计应用系统。因此,一定要创造条件进行实践,这是学好 MCU 极为关键的一环。特别是注意软件与硬件相结合的实践。MCU 程序要固化,进入硬件才能执行,而且通过 MCU 的输入输出以及执行机构反映出来,这就涉及到硬件系统的构成,因此学习 MCU 与单纯开发计算机软件不同,必须了解 MCU 系统的构成。同时,通过软件“打通”硬件,观察硬件响应现象,体会软件功能。一般 8 位机的硬件评估系统只有几百元,特别是好的硬件评估系统都提供自我实践硬件接口,购买嵌入式系统在电流保护装置中

22、的应用研究- 16 -硬件评估系统进行学习与实践是一种好方法。第五,学习以 MCU 为核心的嵌入式应用技术,必须与输入输出接口的学习连在一起。MCU系统离不开各种输入输出接口,学习 MCU,就必须学习各种接口的原理,通过接口的输入输出体现 MCU 程序的功能。第六,MCU 的发展已经逐步走向成熟期,各种新技术的使用,进一步提高了 MCU 的性能价格比。技术进步不可避免的带动了学习方法的更新。学习以 MCU 为核心的嵌入式应用技术,也要与时俱进,不断改造自己的学习方式,保持与嵌入式应用技术发展的同步。例如:以前的嵌入式系统代码量小,对于硬件的依赖性大,可移植性也就相对较差,规范的重要性基本无从体

23、现。但随着电子技术的发展,MCU 的集成度越来越高。前几年还处于实验阶段的 Flash 存储器技术,目前已广泛使用。MCU 性能的提高使得开发人员不得不更重视规范的价值和作用。如今的嵌入式系统开发,不按照规范进行,简直寸步难行。第七,由于嵌入式系统市场巨大,潜力无限,全球的生产商都非常看好这一领域,纷纷投入了大量的人力物力;而围绕嵌入式系统的研究、设计和开发正成为计算机技术发展最活跃的方向之一。近年来,国内外关于嵌入式系统的书籍如雨后春笋般涌现。选择好的书籍已成为大多数初学者的当务之急。首先,读者不要盲目跟风,要选择适合自己真正需要的书籍。其次,读者可以通过阅读一些书中内容判断该书是否值得购买

24、。因为好的书籍对于问题的阐述一定是清楚明了的;对问题的解决一定是细致透彻的。对于当前非常火热的各种嵌入式培训形式,读者不要盲目跟风,要充分和慎重的考虑自己学习嵌入式的目标和计划。只有从底层抓起,一点一滴打好基础,才能学好嵌入式技术。10.总 结在嵌入式学习及这次设计的过程中,的确收获了很多,在设计之初,就在课本和互联网上查阅和学习了相关知识,同时这次设计也是一次将理论知识转化为实际应用的经历,再一次加深了对嵌入式技术的理解,并且提高了对该技术的兴趣。同时在设计过程中,发现有些理论知识用到实际设计中会有些问题,如在设计 100 倍运放的过程中,在仿真软件上增大电源电压,放大倍数不受影响,但实际上

25、在板子做出来后,增大电源电压,放大倍数会受到影响,这就是在设计过程中遇到的问题之一。从最初构想设计思路,到画原理图,制板子,焊接器件,调试,这是一个痛苦但快乐的过程,因为每解决一个问题,都会有一种成就感。嵌入式系统在电流保护装置中的应用研究- 17 -最后,感谢 XXX 老师的认真指导以及 XX 老师,XX 老师和实验室同学的帮助,我相信随着知识的积累和经验的丰富,在不久的将来一定能拿出更好的设计。嵌入式系统在电流保护装置中的应用研究- 18 -11.参考文献 1JEAN J.LABROSSE 著.邵贝贝译. uC/OS-源码公开的实时嵌入式操作系统M.北京:中国电力出版社.20012夏靖波.

26、嵌入式系统原理与开发M.西安西安电子科技大学出版社 20063田泽.嵌入式系统开发与应用M北京北京航空航天大学出版社 20054嵌入式系统设计与实例开发试验指导M北京博创科技有限公司 2005.5 模拟电子技术 康华光 高等教育出版社6STM32 库开发实战指南 刘良火 杨森 机械工业出版社嵌入式系统在电流保护装置中的应用研究- 19 -附录:I:实物图片II:关键程序代码关键代码 1:#include stm32f10 x.h#include /数学公式#include delay.h /延时函数#include LCD_HX8352A.h /TFT 驱动#include sys.h#inc

27、lude LED.h/LED 驱动#include KEY.h/按键驱动#include touch.h /触屏驱动#include SPI.h#include ADC.h嵌入式系统在电流保护装置中的应用研究- 20 -#include boot.h/extern _IO uint16_t ADC_ConvertedValue; /以表示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义/*函数: void RCC_Configuration(void)功能: 复位和时钟控制 配置参数: 无返回: 无*/void RCC_Configuration(void)

28、ErrorStatus HSEStartUpStatus; /定义外部高速晶体启动状态枚举变量 RCC_DeInit(); /复位 RCC 外部设备寄存器到默认值 RCC_HSEConfig(RCC_HSE_ON); /打开外部高速晶振 HSEStartUpStatus = RCC_WaitForHSEStartUp(); /等待外部高速时钟准备好 if(HSEStartUpStatus = SUCCESS) /外部高速时钟已经准别好 FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable); /开启 FLASH 预读缓冲功能,加速 FLASH

29、的读取。所有程序中必须的用法.位置:RCC 初始化子函数里面,时钟起振之后 FLASH_SetLatency(FLASH_Latency_2); /flash 操作的延时 RCC_HCLKConfig(RCC_SYSCLK_Div1); /配置 AHB(HCLK)时钟等于=SYSCLK RCC_PCLK2Config(RCC_HCLK_Div1); /配置 APB2(PCLK2)钟=AHB 时钟 RCC_PCLK1Config(RCC_HCLK_Div2); /配置 APB1(PCLK1)钟=AHB1/2 时钟 RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC

30、_PLLMul_9); /配置 PLL 时钟 = 嵌入式系统在电流保护装置中的应用研究- 21 -外部高速晶体时钟 * 9 = 72MHz RCC_PLLCmd(ENABLE); /使能 PLL 时钟 while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) = RESET); /等待 PLL 时钟就绪 RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK); /配置系统时钟 = PLL 时钟 while(RCC_GetSYSCLKSource() != 0 x08); /检查 PLL 时钟是否作为系统时钟 /*中断配置函数*/ void E

31、XTI_Configuration(void) EXTI_InitTypeDef EXTI_InitStructure; /定义枚举变量 RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE); /使能功能复用 IO时钟 EXTI_ClearITPendingBit(EXTI_Line7 /*| EXTI_Line0*/); /清除 EXTI 线路挂起位 EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; /设置 EXTI 线路为中断请求 EXTI_InitStructure.EXTI_Trig

32、ger = EXTI_Trigger_Falling; /设置输入线路下降沿为中断请求 EXTI_InitStructure.EXTI_Line = EXTI_Line7/* | EXTI_Line0*/; /外部中断线 7 EXTI_InitStructure.EXTI_LineCmd = ENABLE; /使能中断 EXTI_Init(&EXTI_InitStructure); GPIO_EXTILineConfig(GPIO_PortSourceGPIOB, GPIO_PinSource7 /*| EXTI_Line0*/); /选择 GPIO B7 B0 作为中断引脚嵌入式系统在电流保

33、护装置中的应用研究- 22 -/*中断优先级配置*/void NVIC_Configuration(void)NVIC_InitTypeDef NVIC_InitStructure; /定义枚举变量NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0); /抢占式优先级别设置为无抢占优先级NVIC_InitStructure.NVIC_IRQChannel = EXTI9_5_IRQn; /指定中断源NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1; /指定响应优先级别 1NVIC_InitStructur

34、e.NVIC_IRQChannelCmd = ENABLE; /使能外部中断通道NVIC_Init(&NVIC_InitStructure);/*中断入口函数*/void EXTI9_5_IRQHandler(void) if(EXTI_GetITStatus(EXTI_Line7) != RESET) /检查指定的 EXTI 线路触发请求发生与否 /添加中断处理程序 LCD_Clear(0 xfff0 ); /刷屏LCD_ShowString(0,0,0 xfff0,0 xf800,Group Member:,Font1624);嵌入式系统在电流保护装置中的应用研究- 23 -/显示字符串函

35、数 LCD_ShowString(0,LCD_Y-Fone_Y,0 xfff0,0 xf800,Liu jia,Font1624);TP_Read_XY(&tp_dev.x,&tp_dev.y);/读一次值,初始化/while (TP_PEN);/等待有触摸操作EXTI_ClearFlag(EXTI_Line7);/清除中断标志(必须)EXTI_ClearITPendingBit(EXTI_Line7);/清除中断等待/*函数: int main(void)功能: main 主函数参数: 无返回: 无*/int main(void)/u16 x,y,x1,y1;RCC_Configuratio

36、n(); /系统初始化EXTI_Configuration();/ 中断配置函数NVIC_Configuration();/中断优先级配置delay_init(72); /延时函数初始化SPII_Init(); /SPI 初始化LED_Init(); /LED 初始化KEY_Init(); /按键初始化LCD_Init(); /LCD 初始化Adc_Init();/ADC 初始化TP_Init(); /触屏初始化LCD_Clear(YELLOW); / 刷屏函数 LCD_Clear(填充色)嵌入式系统在电流保护装置中的应用研究- 24 -LCD_ShowString(0,0,YELLOW,RE

37、D ,Group Member:,Font1624);/显示字符串函数 LCD_ShowString(0,LCD_Y-Fone_Y*3-1,YELLOW,BLACK ,Name:,Font1624);LCD_ShowString(Fone_X*5,LCD_Y-Fone_Y*3-1,YELLOW,RED ,Liu jia,Font1624);LCD_ShowString(0,LCD_Y-Fone_Y*2,YELLOW,BLACK ,NO:,Font1624);LCD_ShowNum(Fone_X*3,LCD_Y-Fone_Y*2,YELLOW,RED,8,11150129,Font1624);L

38、CD_area_Clear(0,LCD_Y-Fone_Y*3-3,LCD_X,LCD_Y-Fone_Y*3-2,GRAY);LCD_area_Clear(0,LCD_Y-Fone_Y+3,LCD_X,LCD_Y-Fone_Y+4,GRAY);Boot_ShowString(0,Fone_Y+1+33*1,YELLOW,RED,ABCDEF);/ 当前电流值:Boot_ShowString(0,Fone_Y+1+33*2,YELLOW,RED,GHCDEF);/ 报警电流值:Boot_ShowString(0,Fone_Y+1+33*3,YELLOW,RED,IJCDEF); / 动作电流值:B

39、oot_ShowString(LCD_X-35,Fone_Y+1+33*1,YELLOW,RED,N);/ ABoot_ShowString(LCD_X-35,Fone_Y+1+33*2,YELLOW,RED,N);/ ABoot_ShowString(LCD_X-35,Fone_Y+1+33*3,YELLOW,RED,N); / ABoot_ShowString(16,Fone_Y+1+33*5,YELLOW,RED,ABKL); / 当前模式Boot_ShowString(40,Fone_Y+1+33*6,YELLOW,RED,PO); / DCBoot_ShowString(LCD_X-

40、40-嵌入式系统在电流保护装置中的应用研究- 25 -64,Fone_Y+1+33*6,RED,YELLOW,NO); / ACLCD_area_Clear(LCD_X-40-64,Fone_Y+1+33*6,LCD_X-40-64+15,Fone_Y+1+33*6+33,YELLOW );LCD_ShowNum(170,Fone_Y+9+33*1,YELLOW,BLACK,3,1,Font1624);LCD_ShowNum(170,Fone_Y+9+33*2,YELLOW,BLACK,3,350,Font1624);LCD_ShowNum(170,Fone_Y+9+33*3,YELLOW,B

41、LACK,3,400,Font1624);LCD_area_Clear(170+Fone_X-3,Fone_Y*2+4+33*1,170+Fone_X-2,Fone_Y*2+5+33*1,BLACK );LCD_area_Clear(170+Fone_X-3,Fone_Y*2+4+33*2,170+Fone_X-2,Fone_Y*2+5+33*2,BLACK );LCD_area_Clear(170+Fone_X-3,Fone_Y*2+4+33*3,170+Fone_X-2,Fone_Y*2+5+33*3,BLACK );/*以下为源代码语句*/ while(1) /修改主函数,应加入之前是否

42、按下判断*待完成ADC_SoftwareStartConvCmd(ADC1, ENABLE);/使能指定的ADC1 的软件转换启动功能 while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC );/等待转换结束x= ADC_GetConversionValue(ADC1);/返回最近一次 ADC1 规则组的转换结果x=x/18;/LCD_ShowNum(0,Fone_Y+1,0 xfff0,0 xf800,3,x,Font1624);ADC_SoftwareStartConvCmd(ADC2, ENABLE);/使能指定的嵌入式系统在电流保护装置中的应用研究-

43、26 -ADC1 的软件转换启动功能while(!ADC_GetFlagStatus(ADC2, ADC_FLAG_EOC );/等待转换结束y= ADC_GetConversionValue(ADC2);/返回最近一次 ADC1 规则组的转换结果y=y/18;/LCD_ShowNum(0,(Fone_Y+1)*2,0 xfff0,0 xf800,3,y,Font1624); LCD_area_Clear(x1,y1+30,x1+5,y1+35,YELLOW);LCD_area_Clear(x,y+30,x+5,y+35,RED );x1=x;y1=y;delay_ms(20);关键代码 2:

44、#include adc.h#include delay.h#include stm32f10 x.h:/#define ADC1_DR_Address (u32)0 x40012400+0 x4c)/ADC 地址/_IO uint16_t ADC_ConvertedValue;/ 告诉编译器不要去优化这个变量,要用时回到相应的内存中去找 /初始化 ADC void Adc_Init(void) ADC_InitTypeDef ADC_InitStructure; GPIO_InitTypeDef GPIO_InitStructure;/PC0 PC2 作为模拟通道输入引脚 嵌入式系统在电流保

45、护装置中的应用研究- 27 -RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE ); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0,GPIO_Pin_2;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;/模拟输入引脚GPIO_Init(GPIOC, &GPIO_InitStructure);RCC_ADCCLKConfig(RCC_PCLK2_Div6); /设置 ADC 分频因子6 72M/6=12,ADC 最大时间不能超过 14M/ADC1 配置RCC_APB

46、2PeriphClockCmd(RCC_APB2Periph_ADC1 , ENABLE ); /使能 ADC1 通道时钟ADC_DeInit(ADC1); /复位 ADC1,将外设 ADC1 的全部寄存器重设为缺省值ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;/ADC 工作模式:ADC 工作在独立模式ADC_InitStructure.ADC_ScanConvMode = DISABLE;/模数转换工作在单通道模式ADC_InitStructure.ADC_ContinuousConvMode =DISABLE ;/模数转换工作在单次转

47、换模式ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;/转换由软件而不是外部触发启动ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;/ADC 数据右对齐ADC_InitStructure.ADC_NbrOfChannel = 1;/要转换的通道数目 1ADC_Init(ADC1, &ADC_InitStructure);/根据 ADC_InitStruct 中指定的参数初始化外设 ADCx 的寄存器 /设置指定 ADC 的规则组通道,设置它们的转化顺

48、序和采样时间ADC_RegularChannelConfig(ADC1, ADC_Channel_12 , 1, 嵌入式系统在电流保护装置中的应用研究- 28 -ADC_SampleTime_239Cycles5 ); /ADC1,ADC 通道,采样时间为 239.5 周期PC2ADC_Cmd(ADC1, ENABLE); /使能指定的 ADCADC_ResetCalibration(ADC1); / 重置指定的 ADC 的校准寄存器 while(ADC_GetResetCalibrationStatus(ADC1); /等待复位校准结束ADC_StartCalibration(ADC1);

49、/开启 AD 校准while(ADC_GetCalibrationStatus(ADC1); /等待校准结束 ADC_SoftwareStartConvCmd(ADC1, ENABLE);/使能指定的ADC1 的软件转换启动功能/ADC2 配置RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC2 , ENABLE ); /使能 ADC2 通道时钟ADC_DeInit(ADC2); /复位 ADC2,将外设 ADC2 的全部寄存器重设为缺省值ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;/ADC 工作模式:AD

50、C 工作在独立模式ADC_InitStructure.ADC_ScanConvMode = DISABLE;/模数转换工作在单通道模式ADC_InitStructure.ADC_ContinuousConvMode =DISABLE ;/模数转换工作在单次转换模式 ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;/转换由软件而不是外部触发启动ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;/ADC 数据右对齐ADC_InitStructure.ADC

51、_NbrOfChannel = 1;/要转换的通道数目 1ADC_Init(ADC2, &ADC_InitStructure);/根据 ADC_InitStruct 中指定的参数初始化外设 ADCx 的寄存器 嵌入式系统在电流保护装置中的应用研究- 29 - /设置指定 ADC 的规则组通道,设置它们的转化顺序和采样时间 ADC_RegularChannelConfig(ADC2, ADC_Channel_10 , 1, ADC_SampleTime_239Cycles5 ); /ADC1,ADC 通道,采样时间为 239.5 周期 PC0ADC_Cmd(ADC2, ENABLE); /使能指

52、定的 ADCADC_ResetCalibration(ADC2); / 重置指定的 ADC 的校准寄存器 while(ADC_GetResetCalibrationStatus(ADC2); /等待复位校准结束ADC_StartCalibration(ADC2); /开启 AD 校准while(ADC_GetCalibrationStatus(ADC2); /等待校准结束 ADC_SoftwareStartConvCmd(ADC2, ENABLE);/使能指定的ADC1 的软件转换启动功能 /单次获得 ADC 值 ch 设置的通道值u16 Get_Adc(u8 ch) /设置指定 ADC 的规

53、则组通道,一个序列,采样时间ADC_RegularChannelConfig(ADC1, ch, 1, ADC_SampleTime_239Cycles5 ); /ADC1,ADC 通道,采样时间为 239.5 周期 ADC_SoftwareStartConvCmd(ADC1, ENABLE);/使能指定的ADC1 的软件转换启动功能 while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC );/等待转换结束return ADC_GetConversionValue(ADC1);/返回最近一次 ADC1 规则组的转换结果/ 获取 times 次值,并取其平均值u16 Get_Adc_Average(u8 ch,u8 times)u32 temp_val=0;u8 t;嵌入式系统在电流保护装置中的应用研究- 30 -for(t=0;ttimes;t+)temp_val+=Get_Adc(ch);delay_ms(5);return temp_val/times;

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!