MSP430教程:MSP430单片机ADC12模块

发布者:qpb1234最新更新时间:2021-04-28 来源: eefocus关键字:MSP430  单片机  ADC12模块 手机看文章 扫描二维码
随时随地手机看文章

MSP430单片机的ADC12模块是一个12位精度的A/D转换模块,他具有高速度,通用性等个性。大局部都内置了ADC模块.而有些不带ADC模块的片子,也可穿越利用内置的模仿比拟器来告终AD的转换。在系列产品中,我们能够穿越以下列表来容易地认识他们的ADC功能告终。


系列型号ADC功能告终转换精度


MSP430X1XX2比拟器告终10位


MSP430F13XADC模块12位


MSP430F14XADC模块12位


MSP430F43XADC模块12位


MSP430F44XADC模块12位


MSP430X32XADC模块14位


从以下ADC12构造图中能够看出,ADC12模块中是由以下局部构成:输入的16路模仿开关,ADC内部电压参看源,ADC12内核,ADC时钟源局部,采集与坚持/触起源局部,ADC数据输出局部,ADC扼制储藏器等构成。


输入的16路模仿开关


16路模仿开关离别是由IC表面的8路模仿信号输入和内部4路参看电源输入及1路内部温度传感器源及AVCC-AVSS/2电压源输入。表面8路从A0-A7输入,重要是表面测量时的模仿变量信号。内部4路离别是Veref+ ADC内部参看电源的输出正端,Vref-/Veref- ADC内部参看电源负端(内部/表面)。1路AVCC-AVSS/2电压源和1路内部温度传感器源。片内温度传感器能够用于测量芯片上的温度,能够在设计时做一些有用的扼制;在切实利用时用得较多。而其他电源参看源输入能够用作ADC12的校验之用,在设计时可作切身校准。


ADC内部电压参看源


ADC电压参看源是用于给ADC12内核作为一个基准信号之用的,这是ADC必不可少的一局部。在ADC12模块中基准电压源能够穿越软件来设置6种不同的组合。AVCC(Vr+),Vref+,Veref+,AVSS(Vr-),Vref-/Veref-。


ADC12内核


ADC12的模块内核是共用的,穿越前端的模仿开关来离别来告终采集输入。ADC12是一个精度为12位的ADC内核,1位非线性微分偏差,1位非线性积分偏差。内核在转换时会参用到两个参看基准电压,一个是参看相对的最大输入最大值,当模仿开关输出的模仿变量大于或等于最大值时ADC内核的输出数字量为满量程,也即便0xfff;另一个则是最小值,当模仿开关输出的模仿变量大小或等于最大值时ADC内核的输出数字量为起码量程,也即便0x00。而这两个参看电压是能够穿越软件来编程设置的。


ADC时钟源局部


ADC12的时钟源分有ADC12OSC,ACLK,MCLK,SMCLK。穿越编程能够抉择其中之一时钟源,同时还能够贴切的分频。


采集与坚持,触起源局部


ADC12模块中有着较好的采集与坚持电路,批准不的设置有着灵便的利用。关于这方面的详情请参看手册上的储藏器解释,此局部我们日后再作补上。


ADC数据输出局部


ADC内核在每次告终转换时都会将相应通道上的输出收获存贮到相利用通道缓冲区单元中,共同16个通道缓冲单元。同时16个通道的缓冲单元有着相对应的扼制储藏器,以告终更灵便的扼制。


ADC扼制储藏器


ADC12CTL0 转换扼制储藏器0


ADC12CTL1 转换扼制储藏器1


ADC12IE间断使能储藏器


ADC12IFG 间断符号储藏器


ADC12IV间断向量储藏器


ADC12MEM0-15 存储扼制储藏器0-15


ADC12MCTL0-15 存储扼制储藏器0-15


ADC12应有例程

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


#include 

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

//表区

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); /cc.ccxueyou.com/串行口发送数组

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

void main(void)

{

init();

//主循环

for (;;)

{

LPM0;

ADC12CTL0 |= ADC12SC; //sampling open,AD转换告终后(ADC12BUSY=0),ADC12SC积极复位;

while((ADC12IFG & BIT0) == 0); //等转换告终

ADC0 = ADC12MEM0; //读转换数据值,同时清ADC12IFG0符号

data_converter(display_buffer,ADC0); //数据改换

send_data(display_buffer); //发送数据

}

}


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

void init(void)

{

WDTCTL = WDTPW + WDTHOLD; // 静止WDT

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

BaudrateSetup(6);

ADC12setup();

_EINT(); // 大局间断使能

}


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

//串口接收间断,退出LPM0形式.

#pragma vector=USART0RX_VECTOR

__interrupt void usart0_rx (void)

{

LPM0_EXIT;

}


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

//ADC12初始化

void ADC12setup(void)

{

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

P6SEL |= 0x01; //利用A/D通道 A0

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

ADC12CTL1 = SHP ; //SAMPCON信号选为采样定时器输出

//ADC12内部参看电压设置

ADC12CTL0 |= REF2_5V; //拨取内部参看电压为2.5V

ADC12CTL0 |= REFON; //内部参看电压敞开

ADC12MCTL0 |= SREF_1; //R+=2.5V R-=VSS

//转换批准

ADC12CTL0 |= ENC ; //转换批准(递升沿)

ADC0=0x00;

}


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

//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) 70.xihuanplaza.com!= 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=value00;

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

n=m0;

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

j=n;

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];

}

}


关键字:MSP430  单片机  ADC12模块 引用地址:MSP430教程:MSP430单片机ADC12模块

上一篇:基于MSP430的流量检测仪设计
下一篇:基于单片机MSP430F147的自动寻边器下位机设计

推荐阅读最新更新时间:2024-11-09 10:21

单片机的发展有哪几个阶段
单片机发展历史 单片机(Microcontrollers)诞生于1971年,早期的SCM单片机都是8位或4位的。其中最成功的是INTEL的8051,此后在8051上发展出了MCS51系列MCU系统。基于这一系统的单片机系统直到现在还在广泛使用。随着工业控制领域要求的提高,开始出现了16位单片机,但因为性价比不理想并未得到很广泛的应用。90年代后随着消费电子产品大发展,单片机技术得到了巨大提高。随着INTEL i960系列特别是后来的ARM系列的广泛应用,32位单片机迅速取代16位单片机的高端地位,并且进入主流市场。 而传统的8位单片机的性能也得到了飞速提高,处理能力比起80年代提高了数百倍。高端的32位Soc单片机主频已经超过30
[单片机]
如何快速零基础到入门51单片机(三)
单片机介绍 单片机:在一片集成电路芯片上集成微处理器(CPU)、存储器(ROM和RAM)、I/O接口、定时器、中断系统等电路,从而构成了单芯片微型计算机,也就是单片机(single chip Microcomputer)也叫微控制器(MCU)。 https://pic1.zhimg.com/80/v2-7110e1c15a3e3d73697d21841407db97_1440w.jpg 单片机的性能与计算机相比计算机要高出非常多。正是因为早期的电脑为了性能丰富导致体积大、造价昂贵,人们只需要它的部分功能,就把主要的一些器件拿出来组成了新的物品就是单片机。 所以单片机的优点就是体积小、结构简单、而且成本很低。 单片机的工作流程
[单片机]
单片机STM32学习笔记之寄存器映射详解
  我们知道,存储器本身没有地址,给存储器分配地址的过程叫存储器映射,那什么叫寄存器映射?寄存器到底是什么?   在存储器Block2 这块区域,设计的是片上外设,它们以四个字节为一个单元,共32bit,每一个单元对应不同的功能,当我们控制这些单元时就可以驱动外设工作。我们可以找到每个单元的起始地址,然后通过C 语言指针的操作方式来访问这些单元,如果每次都是通过这种地址的方式来访问,不仅不好记忆还容易出错,这时我们可以根据每个单元功能的不同,以功能为名给这个内存单元取一个别名,这个别名就是我们经常说的寄存器,这个给已经分配好地址的有特定功能的内存单元取别名的过程就叫寄存器映射。   比如,我们找到GPIOB 端口的输出数据
[单片机]
<font color='red'>单片机</font>STM32学习笔记之寄存器映射详解
基于STM32L4微控制器低功耗BLE模块电路设计
物联网正在改变世界。它的巨大潜力有赖于超低功耗的网络边缘智能设备与云计算的组合使用,以对海量数据进行模式识别,从而生成有用的信息。促使物联网兴起有两大因素,一是高性能的处理器芯片出现,二是智能网络边缘设备的制造成本和功耗可以非常低。这两个因素使得物联网的普遍部署在技术和经济上均具备可行性。 网络和大数据是物联网区分于普通远程监测和控制的关键方面。通过改变单独检测并响应一个或两个变量的做法,转而分析多个数据通道以检测趋势并确定合适的响应,物联网才得以发挥其在保护环境、提高业绩和改变日常生活等方面的巨大潜力。 在汽车行业,随着领先的制造商开始使用从大量汽车实地采集到的传感器信息来改善客户服务和新产品开发,这样的例子已屡见不鲜。
[单片机]
C51单片机中断函数的修饰方法
interruptm修饰符 C51中断函数必须通过该修饰符进行修饰。在C51程序设计中,当函数定义时用了interruptm修饰符,系统编译时把对应函数转化为中断函数,自动加上程序头段和尾段,并按51系统中断的处理方式自动把它安排在程序存储器中的相应位置。 在该修饰符中,m的取值为0~31,对应的中断情况如下: 0——外部中断0 1——定时/计数器T0 2——外部中断1 3——定时/计数器T1 4——串行口中断 5——定时/计数器T2 其它值预留。 C51编译器从绝对地址8m+3处产生一个中断向量,其中m为中断号,也即interrupt后面的数字。该向量包含一个到中断函数入口地址的绝对跳转。 【例】编写一个用于统计外中
[单片机]
C51<font color='red'>单片机</font>中断函数的修饰方法
12.STC15W408AS单片机比较器
一、比较器内部结构 STC15W408AS单片机内置比较器功能。的比较器内部规划如下图所示: 比较器正极输入端CMP+电平可以与比较器负极输入端CMP-的电平进行比较,也可以与内部BandGap参考电压(1.27V附近)进行比较。 二、STC15W系列与比较器相关的特殊功能寄存器 2.1 比较器控制寄存器1:CMPCR1 CMPCR1 : 比较器控制寄存器1 CMPEN:比较器模块使能位 CMPEN=1,使能比较器模块; CMPEN=0,禁用比较器模块, 比较器的电源关闭。 在 CMPEN为1的情况下: 当比较器的比较结果由LOW变成HIGH时, 若是PIE被设置成1, 那么内建的某
[单片机]
12.STC15W408AS<font color='red'>单片机</font>比较器
stm32系列MCU芯片选型表
本文为stm32系列32位微控制器选型表,包括STM32F0系列、STM32L1系列、STM32F1系列、STM32F2系列、STM32F3系列、STM32F4系列选型,STM32系列36脚、48脚、64脚、100脚、144脚选型。 TM32系列36脚、48脚、64脚、100脚、144脚选型: STM32系列按内核架构分类产品选型: STM32F0 系列 STM32L1 系列 STM32F1 系列 STM32F2 系列 STM32F3 系列 STM32F4 系列
[单片机]
stm32系列<font color='red'>MCU</font>芯片选型表
九年十亿颗!兆易创新是如何做稳国产MCU冠军的?
日前,国产MCU龙头兆易创新宣布公司成功发售第10亿颗GD32 MCU,并详细复盘了兆易创新在MCU市场的成功原因以及针对未来加大工业与汽车市场的布局等规划。以下是文章详情: 2013年4月,兆易创新推出国内首款Arm Cortex MCU。9年后的我们,以累计10亿颗出货量领跑中国MCU市场。在科技与生活的连接中,无畏探索,无处不在。今天,我们高兴地与你携手宣布,10亿颗GD32:为你而来,见证未来! 数据显示,2021年兆易创新MCU产品出货量近4亿颗,相比2020年近2亿颗的出货量,连续2年持续翻倍,并保持着连续7年在中国32位MCU市场本土排名第一位的记录。 这些累计出货逾10亿的微控制器产品在9年间已经广泛应
[单片机]
九年十亿颗!兆易创新是如何做稳国产<font color='red'>MCU</font>冠军的?
小广播
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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