MSP430 ADC12模块应用范例(2)

发布者:温暖拥抱最新更新时间:2019-10-10 来源: eefocus关键字:MSP430  ADC12模块  应用范例 手机看文章 扫描二维码
随时随地手机看文章

1-简介

简介MSP430单片机ADC12模块 序列单次采集的 应用范例。


2-例程


//******************************************************************************

//MSP430F149 ADC12模块+串行通讯的实验程序

//使用ADC12采集实验,将采集到数据送向PC.(序列单次采集)

//P3.4为发送,P3.5为接收 晶体使32768HZ/8MHZ. 串行波特率B/S

//使用SMCLK作为波特率发器时,不能使用LPM2,LPM3!

//以下程序已验证通过,初学者可直接使用.由时间仓促和水平有限,请读者批评指正.

//编写:www.Microcontrol.cn/DC

//******************************************************************************


#include


#define ADCOK 0x01 //B0为ADC12完成转换标志.


//********************************************

//表区

unsigned char number_table[]={'0','1','2','3','4','5','6','7','8','9'};

unsigned char display_buffer[]={0x00,0x00,0x00,0x00,0xff};


//*******************波特率***********300 600 1200 2400 4800 9600 19200 38400 76800 115200const 

//************************************[0]**[1]**[2]*[3]**[4]**[5]***[6]***[7]****[8]***[9]*

unsigned char BaudrateUBR0[] ={0x6D,0x36,0x1B,0x0D,0x06,0x03, 0xA0, 0xD0, 0x68, 0x45};

unsigned const char BaudrateUBR1[] ={0x00,0x00,0x00,0x00,0x00,0x00, 0x01, 0x00, 0x00, 0x00};

unsigned const char BaudrateUMCTL[]={0x22,0xD5,0x03,0x6B,0x6F,0x4A, 0xC0, 0x40, 0x40, 0x4A};


unsigned char timp;

//变量区

unsigned int ADC0 ;

//子程序声明

void init (void);                     //初始化

void ADC12setup(void);                //ADC12初始化

void BaudrateSetup(unsigned char U0); //UART0初始化

void data_converter(unsigned char *p,unsigned int vaule); //数据变换

void send_data(unsigned char *p);                         //串行口发送数组

void send_adc12_data(unsigned int *p,unsigned int adcn);  //发送ADC12数据 

//********************************************


void main(void)

{

 init();

//主循环

for (;;) 

  {

   LPM0;

   ADC12CTL0 |= ADC12SC;                     //sampling open,AD转换完成后(ADC12BUSY=0),ADC12SC自动复位;

   while((ADC12IFG & BIT0) == 0);            //等转换结束

   gbit &= ~ADCOK; //清转换完成标志

   send_adc12_data(ADC,2);                   //发送数据

  }

}


//********************************************************************************

void init(void)

{

 P1DIR=0x01;P1OUT=0x0f;      //LED设置

 BaudrateSetup(6);

 ADC12setup();

 gbit=0x00;

 _EINT();                    // 全局中断使能

}


//**********************************************************************************

//串口接收中断,退出LPM0模式.

#pragma vector=USART0RX_VECTOR

__interrupt void usart0_rx (void)

{

 LPM0_EXIT;

}


//**********************************************************************************

//ADC12初始化

void ADC12setup(void)

{

 //ADC12设置**************************

 P6SEL |= 0x03;                   //使用A/D通道 A0,A1

 ADC12CTL0 = ADC12ON+MSC+SHT0_2 ; //开ADC12内核,设SHT0=2 (N=4) 

 ADC12CTL1 = SHP+CONSEQ_1 ;       //SAMPCON信号选为采样定时器输出,序列单次


 //ADC12内部参考电压设置

 ADC12CTL0 |= REF2_5V;            //选用内部参考电压为2.5V

 ADC12CTL0 |= REFON;              //内部参考电压打开

 ADC12MCTL0 |= SREF_1+INCH_0;     //R+=2.5V R-=VSS,A0输入


 ADC12CTL1 |= REF2_5V;            //选用内部参考电压为2.5V

 ADC12CTL1 |= REFON;              //内部参考电压打开

 ADC12MCTL1 |= SREF_1+INCH_1+EOS; //R+=2.5V R-=VSS,A1输入,结束位


 //转换允许

 ADC12IE =0x02;                   //使能中断ADC12IFG A1

 ADC12CTL0 |= ENC ;               //转换允许(上升沿)

}


//**********************************************************************************

//UART0初始化

void BaudrateSetup(unsigned char U0) 

 unsigned int i;

 if(U0>5)                    //当U0>5时,启用XT2

 {

  BCSCTL1 &= ~XT2OFF;        //启动XT2,

  do

   { IFG1 &= ~OFIFG;         //清OSCFault标志

    for(i=0xFF;i>0;i--);     //延时等待

   }

 while((IFG1 & OFIFG) != 0); //查OSCFault,为0时转换完成

 BCSCTL2 |= SELS;            //SMCLK为XT2

 }

//UART0 

 P1OUT=0x00;

 if(U0>5){UTCTL0=SSEL1;}      // 时钟源:SMCLK

 else{UTCTL0=SSEL0;}          // 时钟源:ACLK

 UCTL0 &= ~SWRST;             // SWRST复位, USART允许

 UCTL0=CHAR;                  // 8bit

 ME1|=UTXE0 + URXE0;          // Enable Tx0,Rx0

 IE1|=URXIE0;                 // RX使能

 UBR00=BaudrateUBR0[U0];      // 低位分频器因子

 UBR10=BaudrateUBR1[U0];      // 高位分频器因子 

 UMCTL0=BaudrateUMCTL[U0];    // 波特率调整因子

 P3SEL |= 0x30;               // 将P3.4,5使用外围模块 = USART0 TXD/RXD

 P3DIR |= 0x10;               // 将P3.4设为输出(发),P3.5默认为输入(收)

}


//**********************************************************************************

//数据变换

void data_converter(unsigned char *p,unsigned int value) 

{

 unsigned int m,n,j=0;

 p[0]=number_table[value/1000];

 m=value%1000;

 p[1]=number_table[m/100];

 n=m%100;

 p[2]=number_table[n/10];

 j=n%10;

 p[3]=number_table[j/1];

}


//**********************************************************************************

//串行口发送数组

void send_data(unsigned char *p)

{unsigned int n; 

 timp=RXBUF0;

 for(n=0;p[n]!=0xff;n++)

 {

  while ((IFG1 & UTXIFG0) == 0); // USART0发送UTXIFG0=1,表示UTXBUF准备好发送一下字符

  TXBUF0 = p[n]; 

 } 

}


//**********************************************************************************

//发送ADC12数据

//*p为数据区,adcn为数量

void send_adc12_data(unsigned int *p,unsigned int adcn)

{

 unsigned int j;

 for(j=0;j {

   data_converter(display_buffer,p[j]); //数据变换

   send_data(display_buffer);           //发送数据

 }

}

//**********************************************************************************

//ADC12模块例程(2)结速


关键字:MSP430  ADC12模块  应用范例 引用地址:MSP430 ADC12模块应用范例(2)

上一篇:MSP430学习笔记(2)定时器A
下一篇:使用Energia开发MSP430 LAUNCHPAD学习笔记1--LED闪烁

推荐阅读最新更新时间:2024-11-12 21:13

TI MSP430F525x MCU为新一代移动设备实现高级环境计算
德州仪器 (TI) 宣布推出可降低常开智能手机、平板电脑及配件功耗的最新 MSP430™ 微控制器 (MCU),为新一代手持消费类设备实现高级环境计算。开发人员可采用 MSP430F525x MCU 实现传感器集线器、键盘控制与电池/电源管理功能传输,创建的便携式消费类设备能够使高功耗应用处理器及触摸屏控制器处于待机状态,而不是消耗系统电池。 MSP430F525x MCU 采用 1.8V 分轨 I/O 架构,无需外部电平转换电路便可实现与应用处理器的无缝连接。客户现在可创建能够将 I/O 保持为 1.8V,将 MCU 保持在最大工作性能下的智能手机、平板电脑与配件。这些微控制器支持 3.5µs 的快速唤醒时间以及低至 1.6
[单片机]
MSP430单片机在测试系统中的应用
  1 引言   单片机(或微控制器)技术已渗透到生活的方方面面,广泛应用于家用电器、通信、测试等领域。因此该技术正积极影响着人们的生活。这里给出一种基于 MSP430单片机的测试系统设计。MSP430系列单片机是TI公司生产的超低功耗混合信号控制器,其灵活的时钟源选择可最大限度的延长电池寿命,内部集成有丰富的外围模块,该系列单片机不同型号针对不同应用领域。   2 系统方案设计   2.1 存储测试原理简介   存储测试技术是一种70年代开始的新的测试方法。存储测试是在对被测对象无影响或影响在允许范围的条件下,在被测体内放置微型数据采集与存储测试仪,现场实时完成信息的快速采集与记忆,事后回收记录仪,由计算机处理和再现测试信息
[单片机]
<font color='red'>MSP430</font>单片机在测试系统中的<font color='red'>应用</font>
MSP430F5418的详细解析
1)UCS 时钟如同处理器的心脏,每一个周期就是心脏的一次脉动。以前使用其他处理器时,只需要选择合适频率的晶体,接在XT1和XT2两端,再加两个电容就可以了。而MSP430F5418的时钟系统略显复杂,容易让刚开始接触它的人一头雾水。5418的时钟设置由UCS(Unified Clock System)来管理,使用起来比较灵活,其结构图如下所示。 UCS模块有XT1CLK和XT2CLK两个外部时钟源,以及VLOCLK、REFOCLK和DCOCLK(DCOCLKDIV是DCOCLK的分频输出)三个内部时钟源。其中XT1CLK、REFOCLK和XT2CLK可以作为FLLREFCLK输入到FLL单元来改变DCO的输出。所有这些时钟源
[单片机]
<font color='red'>MSP430</font>F5418的详细解析
MSP430笔记4——定时器
定时器Timer_A(TA) 基本寄存器 TA控制寄存器 TACTL TASSELx:时钟源选择(TACLK00 ACLK01 SMCLK10 ~TACLK11) IDx:第一次分频控制(ID0一分频 ID1二分频 ID2四分频 ID3八分频) MC:工作模式控制(停止00 增01 连续10 增减11) TACLR:定时器清零,复位TA寄存器、时钟分频和计数方向;会自动复位并置0 TAIE:定时器中断使能(0中断禁止 1中断允许) TAIFG:中断标志位(0没有中断 1有中断挂起) 计数值存放寄存器TAR 扩展寄存器TAEX0 控制时钟源的二次分频,000-111表示1-8分频 捕获/比较寄存器 TACCR0-TACC
[单片机]
<font color='red'>MSP430</font>笔记4——定时器
MSP430F149的IO口
1 概述 MSP430F149共有6组IO口,每组8bit, IO口的设置包括设置IO功能、方向、输入输出寄存器初值。对IO口不做设置,默认情况下为第一功能,输入模式。 2 常用寄存器 PxDIR 0 输入,1 输出; PxSEL 0 I/O口,1 第二功能; PxOUT,PxIN; PxIES 设置中断触发方式 0上升沿,1下降沿; PxIE 设置中断触发允许0禁止,1允许; PxIFG 中断标志寄存器,需要软件清零。 3 用法 IO口中断: P1,P2口总共有16个IO口均能引发中断,相关寄存器为PXIE(中断允许):0不允许,1允许。PXIES(中断触发岩选择)0上升沿、1下降沿。PXIFG(中断标志寄存器),I0口
[单片机]
采用TU-30 GPS模块MSP430系列单片机实现便携式导航系统的设计
1 GPS 系统简介 GPS是Global Posi ti oning Sys te m 的缩写,即全球定位系统。其目的是在全球范围内对地面和空中目标进行准确定位和监测。随着全球性空间定位信息应用的日益广泛,GPS提供的全时域、全天候、高精度定位服务将给空间技术、地球物理、大地测绘、遥感技术、交通调度、军事作战以及人们的日常生活带来巨大的变化和深远的影响。 目前的民用GPS设备包括 测量 型和导航型。其中测量型产品的精度可达到米级甚至毫米级,但至少需要两台(套)才能达到设计精度要求,而且其内部结构复杂,单机成本一般在几万到几十万,适合专业高精度测量环境使用;导航型产品,由于其使用者对精度要求不高,一般为几十米,因此机器
[汽车电子]
采用TU-30 GPS<font color='red'>模块</font>和<font color='red'>MSP430</font>系列单片机实现便携式导航系统的设计
MSP430矩阵及独立键盘
  在学习MSP430的时候,总是有很多东西记不住,同时又是英文的资料,好多东西也是没怎么看透,英文虽过六级但是看英文资料还是有一种想睡的冲动啊,在学习键盘的时候,我的这块板子有些不同,矩阵键盘和独立键盘公用的,组合式的按键。。这是为了节约硬件的成本啊 。。。      #define keyin (P1IN & 0x0f) //低四位保持不变,高4位清零,这个宏定义就是这个意思。 再写主函数的时候有这个语句: P1DIR = BIT7; //设置P1.0~P.3为输入状态,P.7为输出                P1OUT = 0; //前面两句确定P1.0~P1.3是独立按键 这是用软件的方式
[单片机]
基于MSP430单片机的婴儿睡眠监护系统
  在当今生活和工作节奏日益紧张的社会,女性往往要兼顾工作和家庭,尤其初为人母,既要照顾婴儿,还要料理家务,新妈妈们往往手忙脚乱。婴儿一天中大部分时间都在睡眠,如何对其进行睡眠监护,在婴儿醒来时及时安抚、如何解决尿湿问题一直困扰着忙碌的新妈妈们。绝大多数的家庭选择使用方便的纸尿裤,但纸尿裤除了高开支以外,它的吸水层容易滋生细菌,不及时更换就会捂出红疹,对婴儿的健康也有隐患。纯棉尿布健康舒适,但需要及时更换,市面上现有的尿湿检测装置大多是单点测量,存在漏报的可能。   本文设计的远程婴儿尿湿监护系统能有效地为新妈妈们解决这个困扰。在异常报警部分,主要检测两种情况:1)婴儿尿湿;2)婴儿由于不舒服或需要照顾而产生的哭闹。系统采用多点
[单片机]
基于<font color='red'>MSP430</font>单片机的婴儿睡眠监护系统
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved