TI官网资料提供例程:

#include <msp430.h>int main(void)
{WDTCTL = WDTPW + WDTHOLD;                 // Stop WDTADC12CTL0 = ADC12SHT02 + ADC12ON;         // Sampling time, ADC12 onADC12CTL1 = ADC12SHP;                     // Use sampling timerADC12IE = 0x01;                           // Enable interruptADC12CTL0 |= ADC12ENC;P6SEL |= 0x01;                            // P6.0 ADC option selectP1DIR |= 0x01;                            // P1.0 outputwhile (1){ADC12CTL0 |= ADC12SC;                   // Start sampling/conversion__bis_SR_register(LPM0_bits + GIE);     // LPM0, ADC12_ISR will force exit__no_operation();                       // For debugger}
}#if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__)
#pragma vector = ADC12_VECTOR
__interrupt void ADC12_ISR(void)
#elif defined(__GNUC__)
void __attribute__  interrupt(ADC12_VECTOR)   ADC12_ISR (void)
#else
#error Compiler not supported!
#endif
{switch(__even_in_range(ADC12IV,34)){case  0: break;                           // Vector  0:  No interruptcase  2: break;                           // Vector  2:  ADC overflowcase  4: break;                           // Vector  4:  ADC timing overflowcase  6:                                  // Vector  6:  ADC12IFG0if (ADC12MEM0 >= 0x7ff)               // ADC12MEM = A0 > 0.5AVcc?P1OUT |= BIT0;                    // P1.0 = 1elseP1OUT &= ~BIT0;                   // P1.0 = 0__bic_SR_register_on_exit(LPM0_bits);   // Exit active CPUbreak;case  8: break;                           // Vector  8:  ADC12IFG1case 10: break;                           // Vector 10:  ADC12IFG2case 12: break;                           // Vector 12:  ADC12IFG3case 14: break;                           // Vector 14:  ADC12IFG4case 16: break;                           // Vector 16:  ADC12IFG5case 18: break;                           // Vector 18:  ADC12IFG6case 20: break;                           // Vector 20:  ADC12IFG7case 22: break;                           // Vector 22:  ADC12IFG8case 24: break;                           // Vector 24:  ADC12IFG9case 26: break;                           // Vector 26:  ADC12IFG10case 28: break;                           // Vector 28:  ADC12IFG11case 30: break;                           // Vector 30:  ADC12IFG12case 32: break;                           // Vector 32:  ADC12IFG13case 34: break;                           // Vector 34:  ADC12IFG14default: break;}
}

功能实现

//端口P6.6采样输入电压V_Int,未设置采样V_Out
//使用OLED显示采样电压#include <msp430.h>
#include <stdio.h>
#include <stdlib.h>
#include "oled.h"
#include "bmp.h"
#include <type.h>u32 results[10];
u32 sum = 0, acom = 0, com = 0;
u32 cap = 0, flag = 0;float V_Int,V_Out;void CLK_Init(void);
void ADC_Init(void);
float ADC_date();
void OLED_Flag(void);/*** main.c*/
int main(void)
{WDTCTL = WDTPW | WDTHOLD; // stop watchdog timerCLK_Init();ADC_Init();OLED_Init();OLED_ShowString(7,4,"V_Int :  ",8);OLED_ShowString(7,6,"V_Out :  ",8);while(1){V_Int = ADC_date();OLED_Flag();}
}//设置时钟源
void CLK_Init(void)
{P2DIR |= BIT2;P2SEL |= BIT2;P7DIR |= BIT7;P7SEL |= BIT7;P5SEL |= BIT2 + BIT3;UCSCTL6 &= ~XT2OFF;UCSCTL3 |= SELREF_2;UCSCTL4 |= SELA_2 + SELS_5 + SELM_5;do{UCSCTL7 &= ~(XT2OFFG + XT1LFOFFG + DCOFFG);SFRIFG1 &= ~OFIFG;}while(SFRIFG1 & OFIFG);UCSCTL6 &= ~XT2DRIVE0;
}//ADC初始化
void ADC_Init(void)
{P6SEL |= BIT6;ADC12CTL0 = ADC12ON + ADC12SHT0_8 + ADC12MSC;ADC12CTL1 = ADC12SHP + ADC12CONSEQ_2;ADC12MCTL0 = ADC12SREF_0 + ADC12INCH_6;ADC12CTL0 |= ADC12ENC;ADC12CTL0 |= ADC12SC;_EINT();
}//采样数据转换
float ADC_date()
{float date;date = ADC12MEM0*3.3/4065;return date;
}//显示电压
void OLED_Flag(void)
{OLED_ShowVI(65,4,V_Int,8);OLED_ShowVI(65,6,V_Out,8);
}//采样中断服务函数
#pragma vector = ADC12_VECTOR
__interrupt void ADC12ISR(void)
{static unsigned int m,count = 0;float factor = 0.80566;results[count] = ADC12MEM0;count++;for(m =  0; m < 10; m ++){sum += results[m];}sum /= 10;sum = sum * factor;com = sum;if(count == 10){count = 0;flag = 1;ADC12IE = 0x00;}
}

OLED模块请见下一篇

04:AD采样【MSP430F5529】相关推荐

  1. 算术平均值滤波matlab程序,基于S7-1200 AD采样的高效数字滤波算法的设计与实践...

    在工业控制中,常常会伴随大量的模拟量数据采样.模拟量采样时,由于待采量本身.传感器和传输过程中的外界干扰,特别是非稳态干扰信号等因素的影响,采样值中通常含有各种周期性和非周期性的噪声和干扰.为得到稳定 ...

  2. c语言ad采样程序思路,单片机AD采样程序及其寄存器讲解

    描述 ad采样的步骤:首先将外部的信号,通过电路或者已有的AD芯片转换成 主CPU能接受的电压 信号.但是此电压信号必须转换成8.10 .12位或更高位数的数字才能进一步做计算.另外转换成位数多少表明 ...

  3. AD采样不准解决措施

    1:参考电压需要足够精确,推荐使用外部高精准参考电压.  2:如果PGA可调,增益系数一般是越小噪声越低.  3:一般最好用到满量程,此时AD精度不浪费.  4:如果有偏置,需要进行自校.  5:请注 ...

  4. ad采样做按键开关_电池应用中的电流采样电阻设计

    在电池充放电管理.电池管理保护以及电池电量计应用场合中,一般都会使用到电流采样电阻,进行电池充放电电流的检测.其原理是在电池充放电回路中放置一个采样电阻R, 电流流经采样电阻产生压差,采样电阻两端电压 ...

  5. AD采样的平均值滤波

    基本问题:单片机ad采样,连续采样十次,对这十次数据取平均值. 注意:最开始的一次就是用当次的数据,以后每更新一个数据就取当前数据加上前九个数据,取平均. 先看代码: static int _filt ...

  6. BLDC 120度方波控制方案 调制方式包含单极性和双极性,反电动势过零点AD采样

    BLDC 120度方波控制方案 调制方式包含单极性和双极性,反电动势过零点AD采样 :68300655567598504MCTianci

  7. ACQPS计算 AD采样保持电路 DSP2833x

    ACQPS计算 AD采样保持电路 DSP2833x AD采样窗口长ACQPS的最佳值需要进行计算.计算分为两种情况: high bandwidth,例如矢量闭环控制中的三相电流采样,实时性要求高,最小 ...

  8. 10种AD采样的软件滤波方法及算法

    AD采样点的电压多少有点起伏波动,经运放放大后电压的波动如果超过ADC的分辩率,则显示的值会出现波动.波动如果十分大的话, 建议在硬件上滤波,相反,如果波动较小,你可以用软件滤波方法解决这个问题. 1 ...

  9. 蓝桥杯嵌入式AD采样解析

    文章目录 前言 一.什么是AD采样 二.原理图查看及cubeMX配置 三.代码解析 总结 前言 本文将带大家学习AD采样. 一.什么是AD采样 原理部分这里就不多介绍了,给大家推荐一篇文章大家自己去了 ...

  10. 51单片机auxr寄存器_STC12C5A60S2单片机AD采样程序及其寄存器讲解

    /*************************************************************************************************** ...

最新文章

  1. [更新中]Lucene.net,中文分词技术 ICTCLAS研究
  2. C# json解析字符串总是多出双引号_在JavaScript应用中将CSV转换为JSON
  3. Box-Cox(python实现)
  4. Ubuntu16.04安装NVIDA显卡驱动
  5. 吐血大奉献,打造cnblogs最新最火辣的css3模板(IE9以下请勿入内) -- 第一版
  6. 007--C++动态内存(数组)
  7. 基于java SSM springboot+redis网上水果超市商城设计和实现以及文档
  8. 对keep-alive组件的理解
  9. 【超全教程】SpringBoot 2.3.x 分层构建 Docker 镜像实践
  10. 推荐《Office SharePoint Server 2007案例实战开发》
  11. Server Application Error(IIS)
  12. linux下安装oracle instant client,linux下安装Oracle instant client
  13. ZOJ 题目分类以及部分题目简单思路
  14. elasticsearch的父子_ElasticSearch 学习记录之父子结构的查询
  15. 变量、参数和内存分配
  16. excel表格打印每页都有表头_【Excel】打印超长表格,怎么才能每页都显示表头?...
  17. 【WCN685X】WCN685X WiFi 6E 6G信道与频宽对应关系
  18. 计算机管理中打开移动硬盘磁盘必须格式化,最佳解决方案:无法打开移动硬盘分区,并且未格式化解决方案。...
  19. MST53XXB 35V,200mA,1.9uA,低压线性稳压器
  20. 推荐一位北航技术大佬,手握 GitHub 14000 颗小星星

热门文章

  1. 背离意味着趋势正在减弱
  2. Java工程师需要学习云原生吗?
  3. SSD硬盘的数据恢复
  4. matlab中figure的基本用法
  5. Tobii Eye Tracker 4C 入门教程(一)
  6. Hyperledge Fabric-身份与角色认证
  7. Gspace简介 | 华为手机如何简单使用谷歌服务
  8. php是世界上最好的语言 ctf+代码审计+加密函数绕过
  9. google地图距离算法_java – 使用谷歌地图计算实际行进距离
  10. 世界顶级职场中,为什么印度人可以做到CEO,中国人却最多只是架构师?