对2812进行交流电流和电压采样程序
- 格式:doc
- 大小:48.50 KB
- 文档页数:6
2.1.1 AD采样F2812的ADC模块是一个12位的模/数转换器。
对于16路的AD输入单元,本实验平台为其中的8路AD输入通道确定了功能,配置了相关的单元电路,包括:两路温度信号采集、交流信号采集、温度给定、鼓风机调速给定、力应变片电桥输出信号采集、压电传感器输出信号采集以及流量计输出信号采集。
如图2.1所示:温度给定和鼓风机调速给定是对电位器上直流电压的采样(图a),比较简单不作过多介绍;力应变片电桥输出信号采集、压电传感器输出信号采集(图c)以及流量计输出信号采集(图b)是接口部分,分别与传感器动态试验部分(第四章)和流量仪表部分(第三章)连接。
这里着重介绍温度信号采集和交流信号采集。
图2. 1 AD2~AD6的接口电路2.1.1.1 温度信号采集两路温度信号分别通过F2812的AD0 、AD1通道来采集。
由于两个通道完全一样,这里只介绍一路温度信号(AD0)的采集。
(1)硬件原理温度传感器采用的是NS 公司生产的LM35[5],它具有很高的工作精度和较宽的线性工作范围,它的输出电压与摄氏温度线性成比例,且无需外部校准或微调,可以提供±1/4℃的常用的室温精度。
LM35的输出电压与摄氏温度的线形关系可用下面公式(2.1)表示,0℃时输出为0 V ,每升高1℃,输出电压增加10 mV 。
(2.()T T V OUT ⨯=101)式中,输出电压单位为mV ,温度单位为℃。
OUT V T 其电源供应模式有单电源与正负双电源两种。
正负双电源的供电模式可提供负温度的测量,单电源模式在25℃下电流约为50 mA ,非常省电。
本系统采用的是单电源模式,可测温度范围0~150℃。
温度传感器电路将测量到的温度信号转换成电压信号输出到信号放大电路,与温度值对应的电压信号经放大后输出至A /D 转换电路。
电压信号转换成数字量后DSP 根据显示需要对数字量进行处理,再送数码管进行显示。
关于数码管显示部分的设计在后面“2.2 输出单元”中介绍。
TMS320F2812的SPWM原程序//实现了SPWM的输出#include "DSP281x_Device.h"#include "stdio.h"#include "math.h"#include "float.h"#define NX 404#define PI 3.1415925float M=0.8;int k0=0,h1=0;double a[NX];void zkb();interrupt void eva_T1UFINT_ISR(void);unsigned int n=0;float q,l,j;void main(void){InitSysCtrl(); //系统初始化DINT; //禁止全局中断IER=0x0000;IFR=0x0000;EALLOW;GpioMuxRegs.GPAMUX.all = 0x00FF; // EVA PWM 1-6 pins EDIS;InitPieCtrl();InitPieVectTable();EALLOW; //使能定时器1下益中断PieVectTable.T1UFINT=&eva_T1UFINT_ISR;EDIS;IER|=M_INT2; //开中断2PieCtrlRegs.PIEIER2.bit.INTx6=1; //开下益中断////////////////////while (n<=NX){q=(n+0.75); //为消除偶次偕波,减少谐波角度出发,选择从A 相3/4周期进行采样q=q*2*PI;q/=405;j=sin(q);l=1875*(1+M*j);//M为调制比 //计算占空比表达式//if(l>=187&l<=1687)(此处网友设置为错误的)if(l>=375&l<=3375)a[n]=l;else{if(l>3375)a[n]=3375;elsea[n]=375;}n=n+1;/////////////////////////////////init_eva///////////////////////////////EvaRegs.ACTRA.all=0x0666;EvaRegs.DBTCONA.all = 0x0000; // Disable deadbandCONA.all = 0xa600; //使能比较操作EvaRegs.EVAIMRA.all=0x0200; //EVAIMRA(EVA的中断屏蔽寄存器A).T1UIINT(通用定时器1的下溢中断使能)EvaRegs.EVAIMRB.all=0x0000;EvaRegs.EVAIMRC.all=0x0000;EvaRegs.EVAIFRA.all=0xffff;//EVAIFRA(EVA的中断标志寄存器.T1UIINT(通用定时器1的下溢中断标志)EvaRegs.EVAIFRB.all=0xffff;//写1清除定时器1的下溢中断标志EvaRegs.EVAIFRC.all=0xffff;EvaRegs.CMPR1=0; //初始化寄存器的值EvaRegs.CMPR2=0;EvaRegs.CMPR3=0;EvaRegs.GPTCONA.all=0x0041;//周期必须大于最大的正弦表格值EvaRegs.T1PR = 3750; // Timer1 period PWM载波周期为 65536个定标的定时器时钟周期//EvaRegs.T1PR = 0xffff;//EvaRegs.T1CNT = 937; // Timer1 counterEvaRegs.T1CNT = 937;//EvaRegs.T1CON.all = 0x0b4e; // 选择模式产生PWM波10EvaRegs.T1CON.all = 0x0b4e;EINT;return;///////////////////////////EvaRegs.T1CON.all=EvaRegs.T1CON.all|0x0040; //启动定时器1for(;;);}interrupt void eva_T1UFINT_ISR(void) // EV-A{int h2;int flag;flag=(EvaRegs.EVAIFRA.all)&0x0200; //T1UFINT中下益中断标志位置1if(flag!=0x0200){EINT;return;}else{if(k0<=NX){h1=k0+135; //B相表达式if(h1>=404)h1=h1-404;h2=k0+270; //C相表达式if(h2>=404)h2=h2-404;EvaRegs.CMPR1=a[k0];EvaRegs.CMPR2=a[h1]; //更新比较寄存器2的值EvaRegs.CMPR3=a[h2]; //更新比较寄存器3的值k0=k0+1;}else{k0=0;}}EvaRegs.EVAIMRA.bit.T1UFINT=1; //清除中断屏蔽标志EvaRegs.EVAIFRA.bit.T1UFINT=1; //清楚中断使能标志PieCtrlRegs.PIEACK.all=0x0002; //响应同组中断EINT; //开全局中断}。
采用软件校正的TMS320F2812内置ADC采样值方案韩富春;武天文;张宁;杨翠茹【期刊名称】《太原理工大学学报》【年(卷),期】2006(37)2【摘要】研究了TEXAS公司的TMS320F2812的ADC(Analog-to Digital Converter)的工作原理;根据电力系统微机继电保护中对多路电压及电流信号的采样精度和速度的高要求,结合TEXAS公司关于TMS320F2812的校正方案,介绍了利用软件程序对芯片TMS320F2812中内置ADC采样校正的软件实现方案,通过试验进一步验证了该方案的有效性.所提出的方案对电力系统自动控制装置的软、硬件设计具有一定的参考价值.【总页数】4页(P173-175,183)【作者】韩富春;武天文;张宁;杨翠茹【作者单位】太原理工大学,电气与动力工程学院,山西,太原,030024;太原理工大学,电气与动力工程学院,山西,太原,030024;太原理工大学,电气与动力工程学院,山西,太原,030024;太原理工大学,电气与动力工程学院,山西,太原,030024【正文语种】中文【中图分类】TN761【相关文献】1.ADC赢得2008奥运会场馆改建项目——2008北京奥运垒球馆将采用ADC TrueNet综合布线解决方案 [J], 爱德龙通讯系统(上海)有限公司2.采用开源软件优化多元校正中的基线校正 [J], Kristian Hovde LILAND;Trygve ALMOY;Bjem-Helge MEVIK3.基于TMS320F2812的ADC数据采集的软件实现 [J], 曹梦婷;潘宏侠4.采用color-pilot颜色校正软件校正比色片数码照片并分析其在CIEL*a*b*色度空间中的位置变化 [J], 贺专;段嫄嫄;沈丽娟;董潇;曾智惠;郭秋云;董瑜;贾骏5.基于TMS320F2812的ADC校正算法设计与实现 [J], 班允强;梁英;刘朝强因版权原因,仅展示原文概要,查看原文内容请购买。
基于TMS320F2812变频电源的交流采样系统设计王荣海,乔之勇(绵阳职业技术学院 四川绵阳 621000)摘 要:详细介绍利用HCNR200及TMS320F2812内置ADC 采集交流电压和负载电流信号的系统设计。
HCNR200是一款专门用于模拟信号隔离采样的高精度线性光耦。
它的使用能有效地将主电路与控制电路进行隔离,并具有较高的线性度,检测误差小。
DSP 内置ADC 为12位转换器,具有转换精度高,转换时间短(12.5MSPS ),设计简单等优点。
关键词:HCNR200;TMS320F2812;模拟隔离;交流采样中图分类号:TP368.1 文献标识码:B 文章编号:10042373X (2009)242189203Design of AC S ampling System B ased on TMS320F2812V ariable 2Frequency Pow er SupplyWAN G Ronghai ,Q IAO Zhiyong(Miangyang Vocational and Tecnology College ,Mianyang ,621000,China )Abstract :In this paper ,the design of AC sampling system by linear optocoupler HCNR200and TMS320F2812ADC module is introduced in detail.HCNR200is a high accuracy linear optocoupler witch is specially used in the analog signal isola 2tion sampling.Its use can effectively isolate between the main circuit and the control circuit ,and it has high linearity so that the measurement error is small.The inner ADC module is a 122bit pipelined analog 2to 2digital converter ,and its fast conversion time runs at 25M HzK eywords :HCNR200;TMS320F2812;analog isolation ;AC sampling收稿日期:20092062300 引 言在三相变频电源设计中,需要采样交流电压及负载电流,用以实现双闭环控制和保护,因此交流电压、电流采集系统的设计直接关系到变频电源的性能。
陆水试验枢纽管理局科技进步奖申报表一、项目基本情况项目名称基于DSP(TMS320F2812)的交流采样研究与实现主要完成人宋宴明高雄清主要完成单位申报单位申报日期项目起止日期任务来源1、部、委2、基金资助3、对外合作4、局内下达5、自选6、其它申报单位意见单位领导签章:局评审意见局领导签章:二、项目简介1、项目名称:基于DSP(TMS320F2812)的交流采样研究与实现2、内容简介(不超过100字)、立项背景、特点、发明及创新点、应用情况及经济效益交流采样技术是励磁控制系统中的重要环节,本文提出一种基于TMS320F2812的交流采样技术,利用TMS320F2812强大的数据处理能力和丰富的片内外设的硬件资源,开发了同步发电机励磁交流采样系统的软硬件,采用了12点傅氏算法,取得了良好的测量精度。
详细科学技术内容(含图纸)1.引言 电力系统自动装置的实现和发展是以微型计算机和数字信号处理器为基础的,随着计算机技术和数字信号处理技术的发展,电力系统自动装置也朝着快速而准确的方向发展。
数据采集环节是实现自动控制的重要环节,传统的数据采集是通过模拟电量变送器对信号进行直流采样,这种方法设计简单、容易实现但是由于在变送器中加入了滤波电路,所以不能及时地反应出被测量的改变,时间常数较大,而且电量变送器的采用,还增加了硬件环节,维护复杂,投资较大。
交流采样技术具有快速、准确、投资少、维护方便的优点,提高了数据采集的准确性与快速性。
本文在数字信号处理器发展的基础上,提出了一种以TMS320F2812DSP 芯片为核心的交流采样技术,并将其应用在同步发电机励磁控制器中,取得了良好的效果。
1.傅氏算法: 基波的电压或电流的正交分解量为: ∑−===102sin2}Re{)1(N K k R N kU N U U π ∑−===12cos2}Im{)1(N K k I NkU NU U π 然后对这些正交分解量进行矢量合并,并求其基波电压电流的有效值: 交流电压电流的有效值:22)1()1()1(I R U U U +=12点傅氏算法: 电压实部: )](21)(23[611175110842931u u u u u u u u u u u a −−++−−++−=电压虚部:)](21)(23[618410275111601u u u u u u u u u u u a −−++−−++−=式中j u (j=0,1,…,11)为一个周期内的始于0O,相距30O的12个等距采样值(电压瞬时值),于是有: 2121b a m u u u +=利用上面的方法同样可以处理得到电流的实部和虚部: 有功功率为: P= URAB*IRA+UMAB*IMA+URCB*IRC+UMCB*IMC 无功功率为: Q= UMAB*IRA-URAB*ifma+UMCB*IRC-URCB*IMC 2.交流采样硬件电路的实现 2.1 交流信号的调理励磁控制器的电压、电流信号分别取自发电机机端电压互感器(PT)和电流互感器(CT)。
基于TMS320F2812 永磁同步电机交流调速系统实验1.引言数字信号处理器(DSP)可以用于语言处理、图象处理、高速控制、数字通讯、振动和噪声信号处理、声纳和雷达信号处理、仪器仪表、机器人等多个领域。
由于它能把数字信号处理的一些理论和算法实时实现,并迅速地推广到应用方面,因此得到了学术界和工程界的高度重视,被认为是实现数字化革命的催化剂。
交流永磁同步电动机(PMSM)具有结构简单、运行可靠、体积小、质量轻、损耗少、转矩/质量比高、功率因数高、效率高、易于散热、易于保养等显著特点,因而应用范围极为广泛,尤其是在要求高精度控制和高可靠性的场合,如航空航天、数控机床、机器人控制等方面。
够在石油、煤矿、大型工程机械等比较恶劣的工作环境下运行,这不仅加速了它取代异步电机的速度,同时也为永磁同步电机专用变频器的发展提供了广阔的空间。
随着永磁材料性能的大幅度提高和价格的降低,以及电力电子器件的进一步发展,永磁同步电动机己逐步成为交流伺服系统的主流。
同时随着微电子技术和功率电子技术的飞速发展,数字信号处理器(DSP),智能功率模块(IPM)出现等,促使交流伺服控制系统向全数字化、智能化、小型化、高速、高精度方向发展。
本文对全数字交流永磁同步伺服驱动器进行了研究与开发。
首先在熟练掌握永磁同步电动机工作原理的基础上,分析永磁同步电动机的数学模型,其次在电压空间矢量(SVPWM)技术以及永磁同步电机矢量控制原理基础上,利用系统的核心器件TMS320F2812,功率变换装置智能功率模块IPM,构建了全数字伺服系统的硬件平台。
然后设计了基于TMS320F2812的软件平台,给出了主程序流程图和中断服务子程序流程图,结合CCS集成开发环境,对整个控制系统进行了软件调试并且做了相关实验,得到了SVPWM的输出波形以及相电流波形,经实验证明该数字控制系统具有良好的控制性能。
2.永磁同步电机原理2.1永磁同步电机数学模型永磁同步电动机和绕线式同步电动机,它们在定子结构上都是由铁心和电枢绕组构成。
DSPAD实验代码(2812)** 功能描述: ADC程序,对ADCINA3和ADCINA2采样,中断方式**********************************************/#include "DSP28_Device.h"interrupt void adc_isr(void);//定义全局变量:Uint16 LoopCount;Uint16 ConversionCount;Uint16 Voltage1[10];Uint16 Voltage2[10];main(){InitSysCtrl();EALLOW;SysCtrlRegs.HISPCP.all = 0x3; // HSPCLK = SYSCLKOUT/6EDIS;DINT;IER = 0x0000;IFR = 0x0000; // 禁止和清除所有CPU中断InitPieCtrl();InitPieVectTable();InitAdc(); //初始化ADC模块,该函数在DSP28_Adc.c文件中EALLOW; //使能写保护寄存器的写操作PieVectTable.ADCINT = &adc_isr; //把用户中断服务的入口地址赋给中断向量表头文件中的对应向量EDIS; // 禁止写保护寄存器的写操作PieCtrlRegs.PIEIER1.bit.INTx6 = 1; //使能PIE中的ADCINT中断IER |= M_INT1; // // 使能CPU 中断1,使能全部INT1EINT; // 使能全局中断INTMERTM; // 使能全局实时中断DBGMLoopCount = 0; //循环计数器清零ConversionCount = 0; //当前转化结果数清零// 配置ADCAdcRegs.ADCMAXCONV.all = 0x0001; // 设置SEQ1的2个转化通道AdcRegs.ADCCHSELSEQ1.bit.CONV00 = 0x3; // 设置SEQ1的ADCINA3 作为第//一转换通道AdcRegs.ADCCHSELSEQ1.bit.CONV01 = 0x2; // 设置SEQ1的ADCINA2 作为第//二转换通道AdcRegs.ADCTRL2.bit.EV A_SOC_SEQ1 = 1; // 使能EV ASOC 去启动SEQ1AdcRegs.ADCTRL2.bit.INT_ENA_SEQ1 = 1; // 使能SEQ1 中断(每次EOS)// 配置EV A// 假设EV A已经在InitSysCtrl()中使能;EvaRegs.T1CMPR =0x0080; // 设置T1 比较值EvaRegs.T1PR = 0xFFFF; // 设置周期寄存器EvaRegs.GPTCONA.bit.T1TOADC = 1; // 使能EV A中的EV ASOC(下溢中断启动ADC)EvaRegs.T1CON.all = 0x1042; // 使能定时器1比较操作(增计数模式)//等ADC转换while (1){LoopCount++;}}interrupt void adc_isr(void){Voltage1[ConversionCount] = AdcRegs.ADCRESULT0;Voltage2[ConversionCount] = AdcRegs.ADCRESULT1;// 如果已记录了40次转化,则重新开始转换if(ConversionCount == 9){ConversionCount = 0;}else ConversionCount++;// 重新初始化下一次ADC转换AdcRegs.ADCTRL2.bit.RST_SEQ1 = 1; // 复位SEQ1AdcRegs.ADCST.bit.INT_SEQ1_CLR = 1; // 清INT SEQ1位PieCtrlRegs.PIEACK.all = PIEACK_GROUP1; // 清中断应答信号,准备接收下一次中断return;}。
//#################################################################### //*文件名:Dsp2812_adc_test.c//*功能:对2812进行交流电流和电压采样//#################################################################### // 说明:ADC时钟频率:12.5MHz,// 采样频率:6000Hz(0.1667ms)// 级联顺序采样模式,采样2路,ADCINA0-电流,ADCINA1=电压;// 采样窗口为16个ADCCLK// 启动方式:EV A//###################################################################include "Dsp281x_device.h"#include "Dsp281x_Examples.h"#include "math.h"void ADC_init(void);void EV A_init(void);void convert(void);void display_init(void);void display(Uint16 j);void processv(void);void processi(void);void sequence(float v[],int p);float v[120]={0}; //用于存放ADC转换的电压结果float i[120]; //用于存放ADC转换的电流结果int adclo;float ve; //存放电压有效值float ie; //存放电流有效值int m=0;int n=0;void main(){InitSysCtrl(); //高速时钟HSPCLK=75MHzDINT;InitPieCtrl(); //允许PIE中的ADC采样中断IER=0x0000;IFR=0x0000;InitPieV ectTable();EALLOW;GpioMuxRegs.GPAMUX.bit.PWM1_GPIOA0=0; //跳闸GpioMuxRegs.GPADIR.bit.GPIOA0=1; //输出EDIS;ADC_init();EV A_init();display_init();adclo=0;PieCtrlRegs.PIEIER1.bit.INTx6=1; //使能PIE模块中的ADC采样中断IER|=M_INT1; //开CPU中断EINT;ERTM;AdcRegs.ADCRESULT0=0x0000;GpioDataRegs.GPACLEAR.bit.GPIOA0=1;EvaRegs.T1CON.bit.TENABLE=1; //启动T1计数for(;;){}}void ADC_init(void){AdcRegs.ADCTRL1.bit.RESET=1; //复位AdcRegs.ADCTRL3.bit.ADCBGRFDN = 0x3; //带间隙参考电路上电DELAY_US(8000l); //等待稳定AdcRegs.ADCTRL3.bit.ADCPWDN = 1; //其他电路上电DELAY_US(20l); //等待稳定AdcRegs.ADCTRL1.bit.ACQ_PS=0xf; //采样窗口(15+1)AdcRegs.ADCTRL1.bit.CONT_RUN=0; //停止开始模式AdcRegs.ADCTRL1.bit.CPS=1; // /2AdcRegs.ADCTRL1.bit.SEQ_CASC=1; //级联模式AdcRegs.ADCTRL1.bit.SUSMOD=0x1; //仿真挂起模式:转换完成后排序器和其他逻辑停止工作,最终结果锁存,状态机更新AdcRegs.ADCTRL2.bit.EV A_SOC_SEQ1=1; //允许EV A触发启动SEQAdcRegs.ADCTRL2.bit.EVB_SOC_SEQ=0; //禁止EVB触发启动SEQAdcRegs.ADCTRL2.bit.INT_ENA_SEQ1=1; //允许SEQ1中断AdcRegs.ADCTRL2.bit.INT_MOD_SEQ1=0; //每个SEQ序列序列结束时,SEQ1置位AdcRegs.ADCTRL2.bit.EVB_SOC_SEQ2=0; //EVB信号不能启动SEQ2AdcRegs.ADCTRL2.bit.INT_ENA_SEQ2=0; //禁止SEQ2中断AdcRegs.ADCTRL3.bit.ADCCLKPS=0x4;//ADCCLK=HSPCLK/(4+2)=75/6=12.5MHzAdcRegs.ADCTRL3.bit.SMODE_SEL=0; //顺序采样AdcRegs.ADCMAXCONV.bit.MAX_CONV1=0x1; //每次采样一个通道,共采样两个通道AdcRegs.ADCCHSELSEQ1.bit.CONV00=0x0; //采样ADCINA0AdcRegs.ADCCHSELSEQ1.bit.CONV01=0x4; //采样ADCINA4}void EV A_init(void){EvaRegs.T1CON.bit.TMODE=0x2; //计数模式为连续增模式EvaRegs.T1CON.bit.TPS=1; //T1CLK=HSPCLK/2=37.5MHz EvaRegs.T1CON.bit.TENABLE=0; //暂时禁止T1计数EvaRegs.T1CON.bit.TCLKS10=0x00; //使用内部时钟EvaRegs.T1CON.bit.TECMPR=0; //禁止定时器比较操作EvaRegs.GPTCONA.bit.T1TOADC=0x2; //周期中断启动ADCEvaRegs.EV AIMRA.bit.T1PINT=1; //使能定时器T1周期中断EvaRegs.EV AIFRA.bit.T1PINT=1; //清除定时器T1周期中断标志位EvaRegs.T1PR=0x186a; //定时时间为0.1667mSEvaRegs.T1CNT=0; //初始化计数器寄存器}void display_init(void){EALLOW;GpioMuxRegs.GPAMUX.bit.CAP3QI1_GPIOA10=0; //数据GpioMuxRegs.GPBMUX.bit.CAP5Q2_GPIOB9=0; //CLKGpioMuxRegs.GPADIR.bit.GPIOA10=1; //方向为输出GpioMuxRegs.GPBDIR.bit.GPIOB9=1; //方向为输出EDIS;}void convert(void){float b;int a1,b1,c1,d1;b=ve;if(b>100.00){a1 = b/100;b1 = (b-a1*100)/10;c1 = (b-a1*100-b1*10);d1 = (b-a1*100-b1*10-c1)*10;display(d1);display(c1+10);display(b1);display(a1);}else{b1= b/10;c1=b-10*b1;d1=(b-10*b1-c1)*10;display(d1);display(c1+10);display(b1);display(20);}GpioDataRegs.GPBTOGGLE.bit.GPIOB9=1; //低电平DELAY_US(10);GpioDataRegs.GPBTOGGLE.bit.GPIOB9=1;}void display(Uint16 j){int a[21]={0xf3,0x60,0xd5,0xf4,0x66,0xb6,0xb7,0xe0,0xf7,0xf6,0xfb,0x68,0xdd,0xfc,0x6e,0xbe,0xbf,0xe8,0xff,0xfe,0x00};int ii;for(ii=0;ii<8;ii++){GpioDataRegs.GPBCLEAR.bit.GPIOB9=1; //clk低电平DELAY_US(10);GpioDataRegs.GPBTOGGLE.bit.GPIOB9=1; //高电平GpioDataRegs.GPADA T.bit.GPIOA10=((a[j]>>ii)&0x01);DELAY_US(10);}}interrupt void ADCINT_ISR(void){v[m]=(AdcRegs.ADCRESULT0>>4); //存放ADCINA0的结果i[n]=(AdcRegs.ADCRESULT1>>4); //存放ADCINA1的结果if(v[0]==4095){v[0]=0;}if(v[m]>=3000) //150V跳闸{GpioDataRegs.GPASET.bit.GPIOA0=1; //跳闸EvaRegs.T1CON.bit.TENABLE=0; //暂停T1定时}else if(i[n]>=5000){GpioDataRegs.GPACLEAR.bit.GPIOA0=1; //跳闸EvaRegs.T1CON.bit.TENABLE=0; ////暂停T1定时}m++;n++;if(m>119){m=0;n=0;processv();}//数据转换PieCtrlRegs.PIEACK.bit.ACK1=1; //相应PIE同组中断AdcRegs.ADCST.bit.INT_SEQ1_CLR=1; //清除AD中断标志位AdcRegs.ADCTRL2.bit.RST_SEQ1=1; //复位序列发生器SEQEINT;}void processv(void){int j;float temp=0;for(j=0;j<119;j++){v[j]=(v[j]/4095*3-1.52)*270;temp=temp+v[j]*v[j];}temp=temp/120;ve=sqrt(temp); //sequence(v,120);// for(i=0;i<5;i++);// {// convert();// }}void sequence(float v[],int n){int i=0;int j=0;int temp=0;for(i=0;i<n;i++){for(j=i+1;j<=n;j++){if(v[i]>v[j]){temp=v[i];v[i]=v[j];v[j]=temp;}}}}。