




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、目录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 -整流采样模块- 5 -运放模块- 6 -触摸屏控制及TFT显示模块- 8 -6.2.5 报警模块- 9 -6.2.6 继电器模块- 10 -7.系统软件设计- 11 -8.仿真调试分析- 12 -9.嵌入式学习及设计心得- 14 -10.总
2、结- 16 -11.参考文献- 18 - 嵌入式系统在电流保护装置中的应用研究摘 要在多数以电为驱动的装置中,有时因为外界环境变动,或者操作者的失误,容易出现过流的现象,从而造成设备损坏或者更坏的结果。所以,设备中是否具有过流保护尤为重要。本设计着重阐述了系统的总体结构、工作原理和基于STM32F103RBT6微处理器芯片的嵌入式技术,给出了系统硬件设计和软件控制的设计方法成功实现了对设备中电流的实时监测及保护。关键字:嵌入式技术,STM32F103RBT6,过流保护,康铜电阻1.嵌入式系统在电流保护装置中的应用研究2 设计要求 本设计主要以STM32F103RBT6芯片为处理器,通过对康铜电
3、阻(采样电阻)两端的电压经运放放大后进行ADC转换,然后送至处理器,通过处理器对输入的电流值与用户预设电流值进行比较,如过电流则报警和驱动接触器断开,已达到对设备的监视和保护。3设计作用与目的本设计中的以嵌入式技术为系统的过流保护装置中,主要作用是实时监测设备电流,根据需要,通过触摸屏输入电流报警值和电流保护值,实现对设备的全自动保护。本设计中的运放对采样信号进行100倍放大,可对电流到达4AA内电流进行保护,报警电流和动作电流可按需要设置。系统可检测直流和交流电流。4.所用设备及软件本设计中主要设备为计算机,PCB电路板制作设备,软件主要包括protel99,multisim,keil5系统
4、设计方案5.1系统总体设计 本设计通过对康铜电阻的电压经运放进行AD采样后,送至STM32F103RBT6处理器,通过算法与触摸输入电流值进行比较,随之进行相应动作。如图1为系统的总体设计框图STM32F103RBT6康铜电阻采样电压运算放大触摸屏报警液晶屏继电器接触器图1. 系统总体设计框图5.2 系统工作原理 如图1. 运放模块将康铜电阻的上的电压放大,经AD采样送至MCU,与经触摸屏输入的电流值进行比较,当电流达到报警值时,MUC启动报警系统,当电流值达到保护值时,MUC启动继电器,切断电源,实现过流保护的功能。6. 系统硬件设计6.1 系统整体设计本设计中,主要利用到了STM32F10
5、3RBT6对采样数据的处理,而采样数据来自系统中所设的康铜电阻。保护动作是靠继电器驱动接触器切断电源。 6.2 各单元电路设计 STM32F103RBT6简要介绍 本单元主要是利用嵌入式技术来控制整个系统,如图3,为其最小系统图, 图3. STM32F103RBT6最小系统图STM32F103RBT6是ST公司基于ARM最新Cortex-M3架构内核的32位处理器产品,内置128KB的Flash,20k的RAM.最小系统中,采用STM32F103RBT6为控制器,工作频率可达72MHZ, 16个外部模拟信号输入通道,可达1us转换时间,转换范围为0到3.6V;支持7个DMA通道,可操作多种通用
6、外设,如定时器,ADC,USART等;内置3个同步16位定时器,每个可有四个通道用于PWM波输出,内置2个12位ADC。每个ADC有7个输入通道,可以实现单次或多次扫描转换,自带0电压校准,模拟看门狗特性允许应用程序检测输入电压是否超出用户定义的高/低闸值,ADC最短采样时间为1us,足以胜任本系统。 整流采样模块本单元模块主要功能是用来整流输入电流,其核心器件为康铜电阻,下面对康铜电阻做简单介绍。康铜是物理学中的一个概念,指的是一种具有高电阻率的合金金属。是含40%镍,1.5%锰的铜合金。具有低的电阻率温度系数和中等电阻率(电阻率为0.48·m)。可在较宽的温度范围内使用。有良好的
7、加工性能和焊接性能。适宜在交流电路中使用,作精密电阻、滑动电阻、电阻应变计等,也可用于热电偶和热电偶补偿导线材料。约合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)电阻系
8、数0.48欧毫米2/米;6)温度系数0.000016.适宜在交直流电路中使用,作精密电阻、滑动电阻、电阻应变计等,也可用于热电偶和热电偶补偿导线材料。本设计中采用0.01的康铜电阻,后级的运放模块就是对其上面的电压进行放大。 如图4.为本单元的原理图图4.整流采样电路图运放模块 运放模块主要采用LM358双运放芯片,通过输入前级康铜电阻上的电压,经运放模块进行100倍放大的,为其后级AD采样提供原始数据。下面对LM358做简单介绍LM358内部包括有两个独立的、高增益、内部频率补偿的双运算放大器,适合于电源电压范围很宽的单电源使用,也适用于双电源工作模式,在推荐的工 作条件下,电源电流与
9、60;电源电压无关。它的使用范围包括传感放大器、直流增益模组,音频放大器、工业控制、DC增益部件和其他所有可用单电源供电的使用运算放大器的场合。 LM358特性(Features): 内部频率补偿。 直流电压增益高(约100dB) 。 单位增益频带宽(约1MHz) 。 电源电压范围宽:单电源(330V);双电源(±1.5一±15V) 。 低功耗电流,适合于电池供电。 低输入偏流。 低输入失调电压和失调电流。 共模输入电压范围宽,包括接地。 差模输入电压范围宽,等于电源电压范围
10、。 输出电压摆幅大(0至Vcc-1.5V) 。 LM358主要参数输入偏置电流45 nA输入失调电流50 nA输入失调电压2.9mV输入共模电压最大值VCC1.5 V共模抑制比80dB电源抑制比100dB 图5为其引脚图 图5.LM358引脚图图6为运算放大模块电路图。图6. 运算放大模块电路图触摸屏控制及TFT显示模块该模块主要功能是完成报警电流值和保护电流值的输入,同时显示实时电流值。本设计采用XPT2046芯片作为电阻屏的输入检测,该芯片是一款4导线制触摸屏控制器,内含12位分辨率125KHz转换速率逐步逼近型A/D转换器。XPT2046支持从1.5V到5.
11、25V的低电压I/O接口。XPT2046能通过执行两次A/D转换查出被按的屏幕位置, 除此之外,还可以测量加在触摸屏上的压力。内部自带2.5V参考电压可以作为辅助输入、温度测量和电池监测模式之用,0V到6V。XPT2046片内集成有一个温度传感器。 在2.7V的典型工作状态下,关闭参考电压,功耗可小于0.75mW。工作温度范围为-40+85。如图7图7.XPT2046芯片原理图模块中TFT(Thin Film Transistor)是薄膜晶体管的缩写。TFT式显示屏是各类笔记本电脑和台式机上的主流显示设备,该类显示屏上的每个液晶像素点都是由集成在像素点后面的薄膜晶体管来驱动
12、,因此TFT式显示屏也是一类有源矩阵液晶显示设备。是最好的LCD彩色显示器之一,TFT式显示器具有高响应度、高亮度、高对比度等优点,其显示效果接近CRT式显示器。 报警模块本设计中报警模块主要是靠蜂鸣器的报警声及TFT显示的变色来实现。蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电的电子产品中作发声器件,本设计采用有源蜂鸣器。如图8.为蜂鸣器电路图8,蜂鸣器电路 继电器模块 本设计中,该模块主要完成当设备中电流达到所设保护电流时切断电源的功能。因MUC不能直接驱动接触器,所以在中间增加了继电器驱动。如图9,为.继电器原理图 图9.继电器原理图7.系统软件设计本设计主要通过对STM32F1
13、03RBT6芯片的程序控制,完成采样,比较,显示,报警,保护等功能,如图10.为软件设计的流程 图10. 系统程序流程图8.仿真调试分析 本设计主要先用multisim进行仿真,进行理论研究,根据设计目的,各项仿真数据都满足要求如图11,如仿真原理图 图11.运放模块仿真原理图如图12 ,当前设置输入信号与输出信号幅值比为1:50时,通过仿真图像,输出端幅度刚好为输出端幅度的一半,满足放大100倍的要求。图12. 数据仿真图9.嵌入式学习及设计心得 首先,要明确为什么要学习以MCU为核心的嵌入式应用技术。针对读者不同的学习目的,学习嵌入式系统的方法和侧重点略有不同。MCU具有广泛的应用范围外,
14、对于计算机、电子类、机电类等专业的工科学生来说,即使暂时没有从事MCU的应用的开发,学习MCU也有很重要的意义。因为,MCU作为微型计算机的一个种类,麻雀虽小,五脏俱全,学习MCU可以更加理解微机原理,更加清楚计算机的脉络。同时,目前嵌入式应用系统的软件开发方法与一般的软件开发方法已经融合,开发平台也极为相似。对于在校学生,学习嵌入式应用技术,主要以书本知识为主,理解嵌入式系统的原理和基本编程方式,为将来的学习和发展打好基础。对于将要投身嵌入式行业的技术人员而言,学习嵌入式系统的方法和侧重点不同于在校的学生。不但学习过程中所需要的背景知识(包括数字电路、汇编语言基础、软件工程,甚至机械自动化)
15、不可或缺,而且更要养成良好的做事规范和方法。学习的侧重点主要放在较复杂的嵌入式应用系统上,对于嵌入式实时操作系统(包括µC/OS-、SmallRTOS、µCLinux等)在应用的基础上,有一定深度的理解。但是,对于只分析实时操作系统或进行短期培训性的驱动程序开发,不扎实进行嵌入式系统基础知识的学习与软件及硬件实践,是不可能学好嵌入式系统的。其次,学习以MCU为核心的嵌入式应用技术,要选择入门的机型。MCU种类繁多,应用于各行各业,在应用中需要设计者对各种MCU都有所了解,以便确定最佳的性能价格比。但是不可能也没有必要同时学习各种型号MCU的软硬件知识,通常的方法是学习一种典
16、型的MCU系列,达到实用程度,在应用中首先选择使用该系列。如果确实要用其它系列MCU时,只需将两种系列的不同点进行分析、对比,即可在较短时间内达到可以应用的程度。对于初学者,选择入门的MCU系列,一定要选择在国际上比较流行,系列比较齐全,在若干年内不会被淘汰,且抗干扰性强、性能价格比较高的产品。选择意法半导体公司的 Cortex-M3系列内核的MCU具有这些特点。第三,MCU指令系统不大,特别是关键字不多,学习时,在了解基本性能的前提下,可先把关键字及其含义记住,这样,在以后的学习中可起到事半功倍的效果。这一点需强调一下,花上几个单元时间记住主要关键字,对于入门学习很重要,没有必要的
17、记忆,任何知识也无法学习。本书采用汇编语言与C语言并行学习的方法,可以通过实例对比学习。所提供的例子均通过测试,可以作为对比学习用例。也可以应用到实际开发系统中。第四,学习以MCU为核心的嵌入式应用技术,一定要勤于实践。必须通过实践,理解MCU原理,掌握基本的编程规范与方法,才能学会设计应用系统。因此,一定要创造条件进行实践,这是学好MCU极为关键的一环。特别是注意软件与硬件相结合的实践。MCU程序要固化,进入硬件才能执行,而且通过MCU的输入输出以及执行机构反映出来,这就涉及到硬件系统的构成,因此学习MCU与单纯开发计算机软件不同,必须了解MCU系统的构成。同时,通过软件“打通”硬件,观察硬
18、件响应现象,体会软件功能。一般8位机的硬件评估系统只有几百元,特别是好的硬件评估系统都提供自我实践硬件接口,购买硬件评估系统进行学习与实践是一种好方法。第五,学习以MCU为核心的嵌入式应用技术,必须与输入输出接口的学习连在一起。MCU系统离不开各种输入输出接口,学习MCU,就必须学习各种接口的原理,通过接口的输入输出体现MCU程序的功能。第六,MCU的发展已经逐步走向成熟期,各种新技术的使用,进一步提高了MCU的性能价格比。技术进步不可避免的带动了学习方法的更新。学习以MCU为核心的嵌入式应用技术,也要与时俱进,不断改造自己的学习方式,保持与嵌入式应用技术发展的同步。例如:以前的嵌入式系统代码
19、量小,对于硬件的依赖性大,可移植性也就相对较差,规范的重要性基本无从体现。但随着电子技术的发展,MCU的集成度越来越高。前几年还处于实验阶段的Flash存储器技术,目前已广泛使用。MCU性能的提高使得开发人员不得不更重视规范的价值和作用。如今的嵌入式系统开发,不按照规范进行,简直寸步难行。第七,由于嵌入式系统市场巨大,潜力无限,全球的生产商都非常看好这一领域,纷纷投入了大量的人力物力;而围绕嵌入式系统的研究、设计和开发正成为计算机技术发展最活跃的方向之一。近年来,国内外关于嵌入式系统的书籍如雨后春笋般涌现。选择好的书籍已成为大多数初学者的当务之急。首先,读者不要盲目跟风,要选择适合自己真正需要
20、的书籍。其次,读者可以通过阅读一些书中内容判断该书是否值得购买。因为好的书籍对于问题的阐述一定是清楚明了的;对问题的解决一定是细致透彻的。对于当前非常火热的各种嵌入式培训形式,读者不要盲目跟风,要充分和慎重的考虑自己学习嵌入式的目标和计划。只有从底层抓起,一点一滴打好基础,才能学好嵌入式技术。10.总 结在嵌入式学习及这次设计的过程中,的确收获了很多,在设计之初,就在课本和互联网上查阅和学习了相关知识,同时这次设计也是一次将理论知识转化为实际应用的经历,再一次加深了对嵌入式技术的理解,并且提高了对该技术的兴趣。同时在设计过程中,发现有些理论知识用到实际设计中会有些问题,如在设计100倍运放的过
21、程中,在仿真软件上增大电源电压,放大倍数不受影响,但实际上在板子做出来后,增大电源电压,放大倍数会受到影响,这就是在设计过程中遇到的问题之一。从最初构想设计思路,到画原理图,制板子,焊接器件,调试,这是一个痛苦但快乐的过程,因为每解决一个问题,都会有一种成就感。最后,感谢XXX老师的认真指导以及XX老师,XX老师和实验室同学的帮助,我相信随着知识的积累和经验的丰富,在不久的将来一定能拿出更好的设计。11.参考文献 1JEAN J.LABROSSE著.邵贝贝译. uC/OS-源码公开的实时嵌入式操作系统M.北京:中国电力出版社.20012夏靖波.嵌入式系统原理与开发M.西安西安电子科技大学出版社
22、20063田泽.嵌入式系统开发与应用M北京北京航空航天大学出版社20054嵌入式系统设计与实例开发试验指导M北京博创科技有限公司2005.5 模拟电子技术 康华光 高等教育出版社6STM32库开发实战指南 刘良火 杨森 机械工业出版社附录:I:实物图片II:关键程序代码关键代码1:#include "stm32f10x.h"#include <stdio.h> /数学公式#include "delay.h" /延时函数#include "LCD_HX8352A.h" /TFT驱动#include "sys.h&q
23、uot;#include "LED.h"/LED驱动#include "KEY.h"/按键驱动#include "touch.h" /触屏驱动#include "SPI.h"#include "ADC.h"#include "boot.h"/extern _IO uint16_t ADC_ConvertedValue; /以表示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义/*函数: void RCC_Configuration(void)
24、功能: 复位和时钟控制 配置参数: 无返回: 无*/void RCC_Configuration(void) ErrorStatus HSEStartUpStatus; /定义外部高速晶体启动状态枚举变量 RCC_DeInit(); /复位RCC外部设备寄存器到默认值 RCC_HSEConfig(RCC_HSE_ON); /打开外部高速晶振 HSEStartUpStatus = RCC_WaitForHSEStartUp(); /等待外部高速时钟准备好 if(HSEStartUpStatus = SUCCESS) /外部高速时钟已经准别好 FLASH_PrefetchBufferCmd(FLA
25、SH_PrefetchBuffer_Enable); /开启FLASH预读缓冲功能,加速FLASH的读取。所有程序中必须的用法.位置: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时钟
26、 RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9); /配置PLL时钟 = 外部高速晶体时钟 * 9 = 72MHz RCC_PLLCmd(ENABLE); /使能PLL时钟 while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) = RESET); /等待PLL时钟就绪 RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK); /配置系统时钟 = PLL时钟 while(RCC_GetSYSCLKSource() != 0x08); /检查PLL时钟是否作为系统时钟 /*中断配置函数*
27、/ void EXTI_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_
28、Trigger = 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作为中断引脚/*中断
29、优先级配置*/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_InitStructure.NVIC_IRQChannelCmd
30、 = ENABLE; /使能外部中断通道NVIC_Init(&NVIC_InitStructure);/*中断入口函数*/void EXTI9_5_IRQHandler(void) if(EXTI_GetITStatus(EXTI_Line7) != RESET) /检查指定的 EXTI线路触发请求发生与否 /添加中断处理程序 LCD_Clear(0xfff0 );/刷屏LCD_ShowString(0,0,0xfff0,0xf800,"Group Member:",Font1624);/显示字符串函数 LCD_ShowString(0,LCD_Y-Fone_Y,0
31、xfff0,0xf800,"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_Configuration(); /系统初始化EXTI_
32、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(填充色)LCD_ShowString(0,0,YELLOW,RED ,"Group Member:",Font1624);/显示字
33、符串函数 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,Font16
34、24);LCD_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,
35、YELLOW,RED,"IJCDEF"); / 动作电流值:Boot_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&
36、quot;); / 当前模式Boot_ShowString(40,Fone_Y+1+33*6,YELLOW,RED,"PO"); / DCBoot_ShowString(LCD_X-40-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_Show
37、Num(170,Fone_Y+9+33*2,YELLOW,BLACK,3,350,Font1624);LCD_ShowNum(170,Fone_Y+9+33*3,YELLOW,BLACK,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,
38、Fone_Y*2+4+33*3,170+Fone_X-2,Fone_Y*2+5+33*3,BLACK );/*以下为源代码语句*/ while(1) /修改主函数,应加入之前是否按下判断*待完成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,0xfff0,0x
39、f800,3,x,Font1624);ADC_SoftwareStartConvCmd(ADC2, ENABLE);/使能指定的ADC1的软件转换启动功能while(!ADC_GetFlagStatus(ADC2, ADC_FLAG_EOC );/等待转换结束y= ADC_GetConversionValue(ADC2);/返回最近一次ADC1规则组的转换结果y=y/18;/LCD_ShowNum(0,(Fone_Y+1)*2,0xfff0,0xf800,3,y,Font1624); LCD_area_Clear(x1,y1+30,x1+5,y1+35,YELLOW);LCD_area_Cle
40、ar(x,y+30,x+5,y+35,RED );x1=x;y1=y;delay_ms(20);关键代码2:#include "adc.h"#include "delay.h"#include "stm32f10x.h":/#define ADC1_DR_Address (u32)0x40012400+0x4c)/ADC 地址/_IO uint16_t ADC_ConvertedValue;/ 告诉编译器不要去优化这个变量,要用时回到相应的内存中去找 /初始化ADC void Adc_Init(void) ADC_InitTypeDe
41、f ADC_InitStructure; GPIO_InitTypeDef GPIO_InitStructure;/PC0 PC2 作为模拟通道输入引脚 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_P
42、CLK2_Div6); /设置ADC分频因子6 72M/6=12,ADC最大时间不能超过14M/ADC1配置RCC_APB2PeriphClockCmd(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_In
43、itStructure.ADC_ContinuousConvMode =DISABLE ;/模数转换工作在单次转换模式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_I
44、nitStruct中指定的参数初始化外设ADCx的寄存器 /设置指定 ADC 的规则组通道,设置它们的转化顺序和采样时间ADC_RegularChannelConfig(ADC1, ADC_Channel_12 , 1, ADC_SampleTime_239Cycles5 );/ADC1,ADC通道,采样时间为239.5周期PC2ADC_Cmd(ADC1, ENABLE);/使能指定的ADCADC_ResetCalibration(ADC1);/ 重置指定的 ADC 的校准寄存器 while(ADC_GetResetCalibrationStatus(ADC1);/等待复位校准结束ADC_StartCalibration(ADC1); /开启AD校准while(ADC_GetCalibrationStatus(ADC1); /等待校准结束 ADC_SoftwareStartConvCmd(ADC1, ENABLE);/使能
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 法学概论教师角色与学生互动试题及答案
- 美国和中国经济模式的差异试题及答案
- 2025年VB考试知识地图试题及答案
- 法学研究中的方法论与试题及答案
- 经济复苏中的政策应对试题及答案
- 班级科学知识普及活动计划
- 建立项目管理的标准流程计划
- 数据驱动决策的实施步骤计划
- 2025关于项目管理咨询服务委托合同示例
- 2025年公司竞争策略与风险控制实务试题及答案
- 【合同范文】传媒公司合作合同6篇
- 乳腺癌防治知识手册运动与健康生活方式建议
- 2024年上海第二工业大学单招职业技能测试题库附答案
- 《融资融券对企业创新的影响实证研究》11000字【论文】
- 预防肺癌健康教育
- 工业蒸汽生产安全操作规范
- 儿童发展问题的咨询与辅导-案例1-5-国开-参考资料
- 广东省华附、省实、广雅、深中2025届高三四校联考语文试题与答案
- 皮下气肿治疗
- DBJT45-007-2012 广西壮族自治区先张法预应力混凝土管桩基础技术规程
- 2025年河北省职业院校技能大赛工业互联网集成应用参考试题库(含答案)
评论
0/150
提交评论