LaunchPad(MSP430G2553) 官方例程
MSP430G2553捕获程序案例与经验分享

MSP430G2553捕获程序案例与经验分享MSP430G2553单片机定时器A有3个捕获比较寄存器CCR0,CCR1,CCR2.。
MSP430G2553捕获程序应用很广泛,电子工程师可以多加了解。
所谓捕获,就是我们来检测外围的信号跳变时刻(此时信号理解为数字信号,即脉冲),此信号乃为我们捕获的对象,可以测量信号的脉冲宽度,即频率等。
捕获首先需要考虑的初始化工作1.设置BCS模块,确定系统时钟MCLK子系统时钟SMCLK把MCLK设置为8MHZ,SMCLK设置为1MHZ。
2.捕获输入引脚的选择选择IO引脚时应查阅器件的手册,能够快速的查阅PDF资料找到正确的答案是一个程序员的基本素质。
3.程序设计思路根据测频的原理,需要2次捕获才能测量一次输入信号的频率。
因此要定义2个变量保存2次捕获结果。
变量是无符号的整数型变量(与捕获寄存器的字长匹配)。
输入信号与CPU的工作是异步的,所以设计程序的时候是不知道什么时候才有捕获输入。
程序处理何时发生了捕获的方法有2种一是查询的方法,定时器硬件在发生捕获事件后会置捕获中断表示CCIF为1,程序在主循环里不断的查询这个标志即可判断是否有捕获事件发生。
二是定时器中断法,当发生捕获事件时必产生定时器中断,在中断中读取捕获寄存器即可。
查询的方法不是好的程序设计方法,因为查询时要占用CPU,使得CPU不能再做其他任务。
中断的方法对初学者有一定的困难。
即中断程序如何与主程序通信(交换信息)。
理解中断及设计中断服务程序要困难一些。
捕获模式捕获外部输入的信号的上升沿或下降沿或上升沿下降沿都捕捉,当捕捉发生时,把TAR 的值装载到TACCRx中,同时也可以进入中断,执行相应的操作。
这样利用捕捉上升沿或。
程控运算放大模块实验指导书

一、 实验目的1. 熟悉Launchpad 开发板的使用方法2. 学习MSP430G2553单片机内部ADC10和定时器的使用方法。
3. 学习使用PGA112芯片4. 学习使用12864液晶显示5. 提升动手能力和独立思考问题的能力 二、 实验设备和工具Launchpad 开发板、程控运算放大器实验模块、万用表、MSP430实验底板、12864液晶、CCS 开发工具等 三、 实验原理该实验的总体设计框图如下图1 程控运算放大模块整体设计框图可简单概括为:将3.3V 电源电压通过稳压芯片LM385稳压到2.5V ,再通过电阻分压获得一个十几mV 的电压接到程控运算放大芯片PGA112的输入端口,该芯片通过与单片机进行SPI 通信,对输入信号进行不同的放大(由拨码开关或按键控制放大倍数),将放大后的信号输入给单片机,通过单片机的ADC 对放大信号进行采样,最后将采样值转化为实际值并在液晶上实时显示。
1. MSP430G2553 图2是单片机MSP430G2553引出管脚原理图,它的部分引脚与PGA112进行SPI 通信,部分与液晶连接,将PGA112的输出作为单片机的输入对其AD 采样,将采样值转化为测量值并通过液晶实现对测量值的实时显示。
图2 msp430g2553引出管脚原理图1.ADC10和定时器ADC10 是MSP430单片机的片上模数转换器,根据其命名大家知道转换位数为10比特。
ADC10的最大转换速率大于200kHz ,转换精度为10位,其转换时钟源可选择,利用软件或者TimerA 设置转换初始化,编程选择片上电压参考源(2.5V 或者1.5V )。
在MSP430 的ADC10上有12个通道,其中8 个外部输入通道,具备对内部温度传感器(通道10)、供电电压VCC 和外部参考源的转换通道。
ADC10有多种采样模式,分别为单通道采样、重复单通道采样、顺序采样和重复顺序采样。
本实验ADC10设置成多次连续采样模式,基准电压2.5V,ADC10开中断,ADC10SC触发采集,采集通道0。
msp430g2553 LauchPad & JLX12864G-086-PC

else i++; } } void display_string_5x7(u8 y,u8 x,u8 *text) { u8 i=0; u8 addrHigh,addrMid,addrLow; while(text[i]>0x00) { if((text[i]>=0x20)&&(text[i]<=0x7e)) { u8 fontbuf[8]; fontaddr=(text[i]-0x20); fontaddr=(u32)(fontaddr*8); fontaddr=(u32)(fontaddr+0x3bfc0); addrHigh=(fontaddr&0xff0000)>>16; addrMid =(fontaddr&0xff00)>>8; /*地址的中 8 位,共 24 位*/ addrLow =fontaddr&0xff; /*地址的低 8 位,共 24 位*/ get_n_bytes_data_from_ROM(addrHigh,addrMid,addrLow,fontbuf,8); display_graphic_5x7(y,x,fontbuf); i+=1; x+=8; } else i++; } } //******写指令******* void write_com(u8 com) { char i; CS_H; //delay(1); CS_L; RS_L; SCK_L; for(i=0;i<8;i++) { if(com&BIT7) SDA_H; else SDA_L; SCK_L;
// 本 程 序 所 用 芯 片 msp430g2553 LauchPad , 也 适 用 其 他 msp430 , 液 晶 屏 为 //JLX12864G-086-PC(大家可以淘宝一下获取液晶资料), 带字库,通过串行传输,刚刚调 //试验成功,和大家分享一下! #include<msp430g2553.h> typedef unsigned char u8; typedef unsigned int u16; typedef unsigned long int u32; const u8 graphic[]; const u8 jiong1[]={/*-- 文字: 囧 --*/ /*-- 宋体 12; 此字体下对应的点阵为:宽 x 高=16x16 --*/ 0x00,0xFE,0x82,0x42,0xA2,0x9E,0x8A,0x82,0x86,0x8A,0xB2,0x62,0x02,0xFE,0x00,0x00, 0x00,0x7F,0x40,0x40,0x7F,0x40,0x40,0x40,0x40,0x40,0x7F,0x40,0x40,0x7F,0x00,0x00}; const u8 lei1[]={/*-- 文字: 畾 --*/ /*-- 宋体 12; 此字体下对应的点阵为:宽 x 高=16x16 --*/ 0x80,0x80,0x80,0xBF,0xA5,0xA5,0xA5,0x3F,0xA5,0xA5,0xA5,0xBF,0x80,0x80,0x80,0x00, 0x7F,0x24,0x24,0x3F,0x24,0x24,0x7F,0x00,0x7F,0x24,0x24,0x3F,0x24,0x24,0x7F,0x00}; //接口 u32 fontaddr=0; #define CS_H P1OUT|=BIT0 #define CS_L P1OUT&=~BIT0 //片选有效 #define RST_H P1OUT|=BIT1 #define RST_L P1OUT&=~BIT1 //复位有效 #define RS_H P1OUT|=BIT2 //传数据 #define RS_L P1OUT&=~BIT2 //传命令 #define SDA_H P1OUT|=BIT3 //数据信号 #define SDA_L P1OUT&=~BIT3 #define SCK_H P1OUT|=BIT4 //时钟信号 #define SCK_L P1OUT&=~BIT4 //**********字库 IC********** #define ROM_CS_H P1OUT|=BIT5 //CS# #define ROM_CS_L P1OUT&=~BIT5 #define ROM_SCK_H P2OUT|=BIT0//SCK #define ROM_SCK_L P2OUT&=~BIT0 #define ROM_OUT_H P2OUT|=BIT1//SO #define ROM_OUT_L P2OUT&=~BIT1 #define ROM_IN_H P2OUT|=BIT2 //SI #define ROM_IN_L P2OUT&=~BIT2 void delay(u16 n_ms); void write_com(u8 com); void write_dat(u8 dat); void init_lcd(); void clear_screen();
使用IAR烧录MSP430G2553程序并硬件仿真

使用IAR Embedded Workbench烧录MSP430G2553
程序并硬件仿真
之前用IAR编写MSP430程序时候,一直以为烧录程序要设置生成.TXT文件然后使用第三方烧录软件,例如Lite FET才能烧录程序的,
今天才知道原来不用第三方烧录软件,直接用IAR也是能烧录程序的,下面阐述下如何用IAR烧录程序并硬件仿真,希望刚刚学习MSP430烧录的朋友看了能有所帮助。
废话少说,下面开始。
如何建立项目这个我就不多说了,我使用的单片机型号是G2553,项目建立完成之后,进行下列一些设置。
1.选择设置项
2.我使用的单片机型号是G2553所以这里选择G2553。
3.用第三方LiteFet烧录程序的话是要生成.txt文件的,这里我们不用生成,
保持下列设置即可,不然会造成烧录失败。
4.这里选择FET Debugger 硬件仿真。
5.Connection我这里选择的是USB-IF,实测能下载成功。
但是网上有的网
友选择的是LPT-IF,而我选择LPT-IF却下载失败,所以,大家可以两个都试一试。
6.点击下载程序并调试图标
正在下载程序……
7.下载成功后进入调试界面….
本人本来是使用CCS(Code Composer Studio v5)的编译环境的,但是发现编译超慢,iar就很快,还有一个重要原因是CCS使用sprintf函数编译不了不然就是格式化不了long格式的变量,设置了CCS的Library Function Assumptions使用full 选项也不行,相同代码却在IAR能编译和运行到想要的sprintf结果,所以毅然决定该用IAR了。
MSP430G2553用户手册中文

时钟
LF,
1
DCO,
VLO
LF,
1
DCO,
VLO
LF,
1
DCO,
VLO
LF,
1
DCO,
VLO
LF,
1
DCO,
VLO
I/O 封装类型
24
32 引脚 QFN 封装
28 引脚 24 TSSOP 封
装
20 引脚 16 TSSOP 封
装
16
20 引脚 PDIP 封装
24
32 引脚 QFN 封装
时钟
I/O 封装类型
16
512 2x TA3
8
8
512 2x TA3
8
4
256 2x TA3
8
2
256 2x TA3
8
1
256 2x TA3
8
24
32 引脚 QFN 封装
28 引脚
24 TSSOP 封
LF,
装
-
1
DCO,Βιβλιοθήκη VLO20 引脚16 TSSOP 封
装
16
20 引脚 PDIP 封装
24
32 引脚 QFN 封装
典型应用包括低成本传感器系统,此类系统负责捕获模拟信号、将之转换为数字值、随后对数据进行处理以进行显 示或传送至主机系统。
1
Please be aware that an important notice concerning availability, standard warranty, and use in critical applications of Texas Instruments semiconductor products and disclaimers thereto appears at the end of this data sheet.
OPT3001 MSP430G2553完整程序

{
return 0;
}
else//否则初始化不成功
{
return 1;
}
}
//OPT3001寄存器配置
//12-15位RN[0,3]:0x1100,设置为Full-Scale Mode
OPT3001IIC_Init();//OPT3001端口初始化
OPT3001Config(); //配置OPT3001并且唤醒OPT3001
delay();
ManufacturerIDNum=GetOPT3001ManufacturerID();
delay();
DeviceIDNum=GetOPT3001DeviceID();
write1();
stop();//停止信号
}
//*********************************************************
//读出BMP085内部数据,连续两个
//*********************************************************
}
BCSCTL1 = CALBC1_1MHZ; // Set DCO
DCOCTL = CALDCO_1MHZ;
}
void Opt3001WriteRegister(unsigned char registerName, unsigned int value)
{
start(); //起始信号
write1byte(0x88); //发送设备地址+写信号
基于MSP430G2553的简易信号发生器

基于MSP430G2553的简易信号发生器浙江工业大学摘要:本作品基于TI的LaunchPad设计了一款简易信号发生器,选用TI的MSP430G2553单片机。
通过单片机加外围LCD12864、DAC0832及TL082放大电路,实现了可产生正弦波、锯齿波、三角波、方波的简易信号发生器,且频率可调。
关键词:MSP430G2553 DAC0832 正弦波锯齿波三角波一、作品基本功能介绍表1.1 技术参数2 在信号产生和处理方面。
通过MSP430G2553内部的TA 定时器,外加DAC0832产生四种波形,在DA 输出后,通过一个由运算放大器TL082和精密可调电位器组成的运算放大电路,以实现信号的增益控制。
最后在 50负载电阻上输出电压。
系统总体框图如图1.1所示。
图1.1系统总体框图表1.2 按键功能说明二、系统硬件和软件说明1 硬件构成本作品使用LCD12864作为人机交互模块,由于MSP430G2553的I/O 口很少,所以通过对LCD 的进行串行数据输入,以节约I/O 口。
其连接如图1.2所示。
+5V图1.2 LCD12864硬件连接由于是通过MSP430G2553输出数字量的信号来产生波形,因此需要用到DA 将数字量转换为模拟量。
考虑到单片机的I/O 口数量,选用8位的DA 来进行数模转换。
硬件如图1.3所示,DAC0832采用直通工作方式,节省I/O 口控制引脚。
+5V+5VI OUTP1.0-P1.3P1.4-P1.7图1.3 DAC0832 直通方式硬件连接由DAC 输出模拟量后,由于波形的幅值太小,因此还需要进行幅值的放大。
其中R3是精密可调电位器,方便用户对信号的幅度进行调节。
50Ω的电阻可以保证整个信号发生器的输出阻抗为50Ω。
信号幅度调节和输出部分电路如图1.4所示。
图1.4 幅值放大的硬件电路2 软件系统整个系统的软件主要有主函数、定时器TA 中断函数、按键中断函数三个大的模块组成。
MSP430G2553手册解读

MSP430G2XX外设
• 欠压复位
– 可在上电和断电期间提供正确的复位信号 – 功耗包含于MCU最低功耗时(LPM4)所消耗电流之中
• 串行通信
– 支持 I2C 和 SPI 的 USI – 支持 I2C、SPI 以及 UART 的 USCI
• Comparator_A+
– – – – 可设定反相和同相输入 可选的 RC 输出滤波器 可直接输出至 Timer_A2 捕获输入 具有中断能力
LaunchPad 开发板上各部分介绍
USB 仿真器接口
片上仿真器模块 6针 eZ430 连接器 外置晶体接口 芯片引出脚 MSP430器件和插座
P1.3 按钮
LED和跳线 P1.0 & P1.6
电源连接器 复位按钮
MSP430系列功能框图
MSP430G2XX 无Port3
低压、 电源复 位保护
VLO Min. Puls Filter ACLK Peripherals
32768Hz
OSC_Fault
辅助时钟
MCLK CPU
主系统时钟
16MHz Biblioteka CO SMCLK Peripherals
子系统时钟
上电后: MCLK 和 SMCLK 由DCOCLK 提 供(约1.1 MHz) ACLK 由 LFXT1CLK 提供(LF 模式,6pF内部负载电容)
• 。此外,其还可提供板上Flash 仿真工具, 以直接连接至PC 轻松进行编程、调试和评 估。 • MSP-EXP430G2 采用IAR Embedded Workbench 集成开发环境(IDE) 或Code Composer Studio (CCS)编写、下载和调试 应用。 • 可提供板上Flash 仿真工具,以直接连接至 PC 轻松进行编程、调试和评估。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
//
// Description: This program demonstrates setting the internal DCO to run at
// 8MHz with auto-calibration by the FLL+.
LaunchPad
一切皆为2012TI杯电子设计大赛
1.
//******************************************************************************
// LaunchPad Lab2 - Software Toggle P1.0,
//
#include <msp430g2553.h>
void main(void)
{
WDTCTL = WDTPW + WDTHOLD; // Stop watchdog timer
if (CALBC1_1MHZ == 0xFF || CALDCO_1MHZ == 0xFF)
{
while(1);// If calibration constants erased, trap CPU!!
//
// MSP430G2xx2
// -----------------
// /|\| XIN|-
// | | |
// --|RST XOUT|-
// /|\ | |
// --o--|P1.3 P1.0|-->LED
// \|/
//
//******************************************************************************
{
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
//Configure ADC10
ADC10CTL1 = INCH_10 + ADC10DIV_3; // Choose ADC Channel as Temp Sensor
ADC10CTL0 = SREF_1 + ADC10SHT_3 + REFON + ADC10ON + ADC10IE;//Choose ADC Ref source
// MSP430G2xx2
// -----------------
// /|\| XIN|-
// | | |
// --|RST XOUT|-
// | |
// | P1.0|-->LED
//
//******************************************************************************
//
//******************************************************************************
#include "msp430g2553.h"
long temp;
long IntDegF;
long IntDegC;
void main(void)
// oC = ((A10/1024)*1500mV)-986mV)*1/3.55mV = A10*423/1024 - 278
temp = ADC10MEM;
IntDegC = ((temp - 673) * 423) / 1024;
__no_operation(); // SET BREAKPOINT HERE
P1OUT = 0;// green LED off
_delay_cycles(5000);
}
}
2.
//******************************************************************************
// LaunchPad Lab3 - Software Port Interrupt Service
// Texas Instruments Inc.
// October 2005
// Built with IAR Embedded Workbench Version: 3.40A
//******************************************************************************
__enable_interrupt(); // Enable interrupts.
TACCR0 = 30; // Delay to allow Ref to settle
TACCTL0 |= CCIE; // Compare-mode interrupt.
TACTL = TASSEL_2 | MC_1; // TACLK = SMCLK, Up mode.
// ACLK = LFXT1 = 32768Hz, MCLK = SMCLK = DCO = (121+1) x 2 x ACLK = 7995392Hz
// //* An external watch crystal between XIN & XOUT is required for ACLK *//
LPM0; // Wait for delay.
TACCTL0 &= ~CCIE; // Disable timer Interrupt
__disable_interrupt();
while(1)
{
ADC10CTL0 |= ENC + ADC10SC; // Sampling and conversion start
// /|\| XIN|-
// | | |
// --|RST XOUT|-
// | |
// | P1.4/SMCLK|-->SMCLK = Default DCO
// | P1.5|-->MCLK/10 = DCO/10
// | P1.0/ACLK|-->ACLK = VLO
//
// M. Buccini / L. Westlund
// P1.5.
// ACLK = LFXT1 = VLO, MCLK = SMCLK = default DCO
// //* External watch crystal installed on XIN XOUT is required for ACLK *//
//
// MSP430F20xx
// -----------------
}
// Configure Basic Clock
BCSCTL1 = CALBC1_1MHZ;// Set range
DCOCTL = CALDCO_1MHZ;// Set DCO step + modulation
BCSCTL3 |= LFXT1S_2;// Set LFXT1
P1DIR = BIT6;// P1.6 output (green LED)
w P1.5 = 1,通过开关P1.5来体现MCLK,这两条指令的周期大概为SMCLK的1/10
P1OUT &= ~0x20;//20;
}
}
5.
//******************************************************************************
// LaunchPad Lab5 - ADC10, Sample A10 Temp and Convert to oC and oF
//
// MSP430G2452
// -----------------
// /|\| XIN|-
// | | |
// --|RST XOUT|-
// | |
// |A10 |
// MSP430F20xx Demo - Basic Clock, Output Buffered SMCLK, ACLK and MCLK/10
//
// Description: Buffer ACLK on P2.0, default SMCLK(DCO) on P1.4 and MCLK/10 on
#pragma vector=PORT1_VECTOR
__interrupt void Port_1(void)
{
if (P1IFG & BIT3)
{
P1OUT ^= BIT0; // P1.0 = toggle
P1IFG &= ~BIT3; // P1.3 IFG cleared
}
}
3.
//******************************************************************************
P1OUT = 0;// LED off
IFG1 &= ~OFIFG;// Clear OSCFault flag
BCSCTL2 |=SELM_1 + DIVM_0;// Set MCLK
for(;;)
{
P1OUT = BIT6;// P1.6 on (green LED)
_delay_cycles(100);
#include <msp430x20x3.h>
unsigned char s;
void main(void)
{
WDTCTL = WDTPW +WDTHOLD; // Stop Watchdog Timer