msp430 TIMER实验报告.

合集下载

msp430实验报告

msp430实验报告

msp430实验报告msp430实验报告引言:msp430是一种低功耗、高性能的微控制器,被广泛应用于嵌入式系统和物联网设备中。

本实验报告将介绍我对msp430微控制器进行的一系列实验,包括实验目的、实验过程、实验结果以及对实验的总结和展望。

实验目的:本次实验的主要目的是熟悉msp430微控制器的基本功能和使用方法,以及学习如何进行简单的控制程序设计。

通过实验,我希望能够掌握msp430的基本操作和编程技巧,并且能够运用所学知识解决实际问题。

实验过程:在实验开始之前,我首先对msp430微控制器进行了一些基本的了解。

我了解到,msp430具有低功耗、高性能和丰富的外设接口等特点,可以满足各种嵌入式系统的需求。

接着,我根据实验指导书的要求,准备好实验所需的硬件设备和软件工具。

第一部分实验是关于GPIO口的实验。

我按照实验指导书上的步骤,将msp430与LED灯连接起来,并编写了一个简单的程序,实现了对LED灯的控制。

通过这个实验,我学会了如何配置GPIO口和编写简单的控制程序。

第二部分实验是关于定时器的实验。

我学习了如何配置msp430的定时器,并编写了一个简单的程序,实现了定时闪烁LED灯的功能。

通过这个实验,我深入了解了定时器的工作原理和编程方法。

第三部分实验是关于ADC的实验。

我学习了如何配置msp430的ADC模块,并编写了一个简单的程序,实现了对外部模拟信号的采样和转换。

通过这个实验,我了解了ADC的基本原理和使用方法。

实验结果:通过一系列实验,我成功地掌握了msp430微控制器的基本功能和使用方法。

我能够独立完成GPIO口的配置和控制、定时器的配置和编程、ADC的配置和采样等任务。

实验结果表明,msp430具有强大的功能和灵活的编程能力,可以满足各种嵌入式系统的需求。

总结和展望:通过本次实验,我对msp430微控制器有了更深入的了解,并且掌握了一些基本的操作和编程技巧。

然而,由于实验时间和条件的限制,我还没有完全发挥出msp430的潜力。

msp430f5529定时器实验

msp430f5529定时器实验

定时器实验一、实验目的1、学习MSP430F5529定时器的使用。

2、学习MSP430F5529定时器相应的寄存器的使用。

二、实验任务LED灯的电路图如图*所示:图* LED灯的电路图任务:编程实现LED1 以1Hz频率闪烁。

三、程序流程图实现LED1 以1Hz频率闪烁的程序流程图如图*所示四、程序代码#includ#include<msp430.h>#define CPU_F ((double)1000000)#define delay_us(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0)) #define delay_ms(x) __delay_cycles((long)(CPU_F*(double)x/1000.0)) unsigned char count=0;int main(void){//定时器口中断控制函数WDTCTL = WDTPW | WDTHOLD; // stop watchdog timerP1DIR |= BIT0; //P1.0置为输出TA0CCTL0 = CCIE; //CCR0中断使能TA0CCR0 = 50000; //设定计数值TA0CTL =TASSEL_2+MC_1+TACLR;//SMCLK,增计数模式,清除TAR_bis_SR_register(LPM0_bits+GIE);//低功耗模式0,使能中断}#pragma vector=TIMER0_A0_VECTOR__interrupt void TIMER0_A0_ISR(void){count++;if(count==20){count=0;P1OUT ^= BIT0; //1s改变LED1灯状态 }}五、遇到的问题及解决办法无六、实验小结练习了单片机mspf5529的编程。

MSP430实验

MSP430实验
三、实验内容
1、 熟悉实验板和 EW430 开发环境 要求: 能够连接仿真器、电源到实验板 能够创建工程、文件,熟练进行 C 程序和汇编程序的编译、连接
2、I/0 端口实验 要求:通过口线 P5.1 控制 LED3
3、设置、观测时钟频率 要求:设置时钟,使得 P1.1,P1.4 输出时钟频率为 ACLK*10,P1.5 输出为 ACLK
3、连通 J2,进行 I/O 实验
4、置DIP开关P6的SW6、DIP开关P5的SW1、开关P5的SW2为ON,观测时钟频率
五、分析与思考
1、 修改程序,使 MCLK = 4MHZ。
2、 在不使用 XT2 的情况下,MCLK 的最大频率可为多少?
3、 ACLK 有没有可能比 MCLK 的频率还要低?请说明原因。
六、实验参考代码
1.时钟实验参考代码(C 语言)
/******************************************************************
* 文件名称:
*
clock.c
* 文件说明:
* 通过实验,熟悉如何设置系统主时钟(MCLK)、辅助时钟(ACLK)、
*
四、实验步骤
1、设置 JTAG 与晶振对应的开关
2
MSP430-TEST44X 开发实验板实验
置 DIP 开关 P6 的 SW1、SW2 以及 DIP 开关 P7 的 SW4、SW3、SW2 为 ON
置 DIP 开关 P10 的 SW1,SW2 为 ON
2、打开实验板电源对应的开关
置 DIP 开关 P8 的 SW2、SW3、SW4 和 P9 的 SW5 为 ON
5
MSP430-TEST44X 开发实验板实验

430单片机实验报告

430单片机实验报告
430单片机实验报告
题 目430单片机实验报告
学院(部)信息工程学院
专 业
指导教师
学号姓名
同组成员
二〇一六年五月
实验一 LED流水灯实验
一、
LED流水灯实验
二、
1.掌握IAR 开发环境的使用方法;
2.练习IO端口寄存器的设置;练习时钟部分的配置
三、
1、制作相应的外围电路。要求用单片机的P1口连接8个发光二级管,当相应的IO口输出为高电平时发光二极管发光。
P2SEL=0X00;
key_val=0;
}
void Key_Scan(void) //扫描键盘获得键值
{
unsigned char row,col,temp1,temp2;
unsigned char key_table[]={0,1,2,3,4,5,6,7,8,
9,10,11,12,13,14,15};//设置键盘逻辑键值
P1DIR |= BIT0+BIT6; // P1.0 - P1.2 outputs
P1SEL|= 0x00;
P1OUT= BIT0;
CCR0=20000;
CCTL0 = CCIE; // CCR0 toggle, interrupt enabled
TACTL = TASSEL_2 + MC0 +TACLR; // SMCLK, Contmode, int enabled
BCSCTL1 = CALBC1_1MHZ; // Set DCO
DCOCTL = CALDCO_1MHZ;
P1SEL = BIT1 + BIT2 ; // P1.1 = RXD, P1.2=TXD
P1SEL2 = BIT1 + BIT2 ; // P1.1 = RXD, P1.2=TXD

msp430实验与程序

msp430实验与程序

[ 实验目的]学会使用ADC12,DMA,TIMERB模块了解语音采集,以及PWM-DA工作原理。

[ 实验要求]1、编程要求:IAR4.11B C语言。

2、实现功能:录/放音。

3、实验现象:可进行17秒左右录/放音。

[ 实验原理]该实验的基本原理是:利用MIC 将声音信号转换成模拟的电信号,通过功放将该信号放大,利用ADC12 进行采集、转换成数字量,并且通过DMA 直接将转换数据送入FLASH 中进行存放。

在存放过程中通过LCD进行一定的信息提示,这就完成了整个录音过程。

放音过程中,则是通过提取存放在FLASH中的数据,通过计算得出PWM波占空比,利用TIMERB 输出PWM 波,再通过1 阶带通滤波器进行滤波,模拟出采集进来的模拟电信号,通过语音输出功放TPA301进行放大送给耳机输出接口。

因此整个的过程的基本框图如图4-4:图 4-4 语音基本框图在该实验中最需要注意的是,采样频率的设置。

根据奈奎斯特采样定理,采样频率必须大于被采样信号中最大频率分量频率的两倍,否则不能从信号采样中回复原始信号。

由于人耳听觉范围通常为20Hz到20KHz,如果要将所有声音都做一个非常精确的记录以及播___________放,很显然MCU的速度上无法支持。

但是做一个相对清晰语音记录的话,则采样频率仅仅需要11KHz(电话音质)。

为了采样数据的存放的方便,也由于采样频率本身就被限制在了11KHz,因此ADC12 在进行转换的时候精度要求就不那么高了,通过设置我们将ADC12DC 的转换精度改成8 位。

则每次进行采样的数据仅仅就是8 位,一个字节而已。

在采样的时候进行处理将两次采样的数据整合成一个字,存入FLAH中。

而MSP430F5438系列有256K的FLASH ROM,扣去一些预留空间,则有192K的空间来进行语音数据的存取。

则总共可记录语音时间:T = 192Kbyte/(11K/S*1byte)=17S电信号电信ADC 号FLASHTIMEBPWM波电信号DMA TB 带通1第131页共179页如果采样 12 位精度的AD 转换,则时间会大大减少而音质并不会因此而有太大的提高。

MSP430流水灯蜂鸣器实验报告.docx

MSP430流水灯蜂鸣器实验报告.docx

MSP430 实验报告姓名:学号:、实验目的:掌握msp43冲片机的程序编写和运行过程。

掌握IAR Embedded Workbench程序的编译和运行。

二、实验内容:实现流水灯以三种流动方式和四种流动速度的不同组合而进行点亮"流动" ,同时每改变一次流水方式,蜂鸣器响一次。

三、使用串口:P2 口,P6 口四、蜂鸣器实现:通过定义Timer() 函数,并在每次改变流水方式时调用Timer() 函数,通过对p6接口的设置,来达到蜂鸣器声音的实现。

五、实验代码://BoardConfig.h//typedef unsigned char uchar;typedef unsigned int uint;// 控制位的宏定义#define Ctrl_Out P3DIR |= BIT3 + BIT6 + BIT7;#define Ctrl_0 P3OUT &= ~(BIT3 + BIT6 + BIT7)#define SRCLK_1 P3OUT |= BIT7#define SRCLK_0 P3OUT &= ~BIT7#define SER_1 P3OUT |= BIT6#define SER_0 P3OUT &= ~BIT6#define RCLK_1 P3OUT |= BIT3#define RCLK_0 P3OUT &= ~BIT3 // 板上资源配置函数void BoardConfig(uchar cmd) {uchar i;Ctrl_Out;Ctrl_0;for(i = 0; i < 8; i++){SRCLK_0; if(cmd & 0x80) SER_1; else SER_0;SRCLK_1;cmd <<= 1;}RCLK_1;_NOP();RCLK_0;}主函数:#include <msp430x14x.h>#include "BoardConfig.h" void Timer (void); void delay(int z);uint i = 0,j = 0,dir = 0;uchar step = 0xff; uint flag = 0,speed = 0; //flag-- void main(void) {WDTCTL = WDTPW + WDTHOLD;BoardConfig(0xf0);CCTL0 = CCIE; //CCR0 = 50000;TACTL = TASSEL_2 + ID_3 + MC_1; // 数模式P2DIR = 0xff; //P2OUT = 0xff;P6DIR |= BIT7;使能CCR冲断定时器A的时钟源选择SMCLK增计设置P2 口方向为输出灯光流动方式,speed-- 灯光流动速度// 关闭看门狗// 蜂鸣器对应IO 设置为输出_EINT();LPM0; }// 使能全局中断//CPU 进入LPM(模式函数名称:Timer_A功能:定时器 A 的中断服务函数,在这里通过标志控制流水灯的流动方向和流动速度参数:无返回值:无#pragma vector = TIMERA0_VECTOR__interrupt void Timer_A (void) {if(flag == 0){P2OUT = ~(0x80>>(i++)); // }else if(flag == 1){P2OUT = ~(0x01<<(i++)); // }灯的点亮顺序D8 -> D1 灯的点亮顺序D1 -> D8else{if(dir) // 环绕圈{P2OUT = ~(0x80>>(i++));}else{P2OUT = ~(0x01<<(i++));}灯的点亮顺序D8 -> D1,D1 -> D8, if(i == 8)i = 0; dir = ~dir;j++;if(j == 8){ Timer();i = 0;j = 0;flag++;if(flag == 4) flag = 0; switch(speed){case 0:TACTL &=~ (ID0 + ID1);TACTL |= ID_3;break;case 1:TACTL &=~ (ID0 + ID1);TACTL |= ID_2;break;case 2:TACTL &=~ (ID0 + ID1);TACTL |= ID_1;break;case 3:TACTL &=~ (ID0 + ID1);TACTL |= ID_0;break;default:break;}if(flag != 3) speed++; if(speed == 4) speed = 0;}void Timer (void){P60UT A= BIT7;// Toggle P6.7 delay(1);}void delay(int z) {int x; for(x=z;x>0;x--); //for(y=10;y>0;y--);}六、总结通过这次msp43冲片机的实验,是我进一步的了解了单片机的远离, 虽然在实验过程中遇到了一些问题,但我及时与同学讨论与老师沟通,解决了以上问题。

个人学习总结:MSP430_TimerA

个人学习总结:MSP430_TimerA

【8种输出模式】 OUTMOD_0:立即,直接输出OUT位 OUTMOD_1:CCRx置位;CCR0保持(all) OUTMOD_2:CCRx翻转;CCR0复位(all) OUTMOD_3:CCRx置位;CCR0复位 OUTMOD_4:CCRx翻转;CCR0保持(all) OUTMOD_5:CCRx复位;CCR0保持(all) OUTMOD_6:CCRx翻转;CCR0置位 OUTMOD_7:CCRx复位;CCR0置位 输出单元只工作于比较模式,捕获时不会产生输出。 输出单元0不能输出2,3,6,7模式 输出是自动而独立的,和中断使能、中断标志都无关。 产生TA中断的原则:只要计数归零就产生TA中断
SCS
捕获与 定时器同步
SCCI
锁定的 捕获信号
未使用
CAP
捕获/比较 选择位
捕获方式
捕获信号输入源
7.rw-(0) OUTMOD2
6.rw-(0) OUTMOD1 输出模式选择
5.rw-0 OUTMOD0
4.rw-(0)
3.rw-(0)
2.rw-(0)
1.rw-(0)
0.rw-(0)
CCIE
中断使能
ID1
ID0
MC1
MC0
未使用
TACLR
TAIE
TAIFG
选择分频因子
选择计数方式
TAR复位清零 TA中断使能 TA中断标志
【计数时钟源】 TASSEL_0:TACLK外部引脚P1.0/TACLK(12脚)信号 TASSEL_1:ACLK内部辅助时钟 TASSEL_2:SMCLK内部子系统时钟 TASSEL_3:INCLK外部P2.1/TAINCLK(21脚)时钟 【TIMER_A的再次分频】 ID_0:1分频 ID_1:2分频 ID_2:4分频 ID_3:8分频 【计数模式】 MC_0:暂停计数,计数停止,但内容不清零,将继续计数。 MC_1:0~CCR0增计数,到达CCR0后归零,重新计数。先CCR0中断,后TA中断。 MC_2:0~FFFFH连续计数,到达TAR最大值后归零,重新计数。归零时产生TA中断。 MC_3:0~CCR0~0增减计数,到达CCR0后开始减1(产生CCR0中断),减至0时重新 计数,并产生TA中断。 【TACLR置位】 1:TAR清零 2:ID1,ID0复位 3:计数方向为增方向( 比如正由CCR0~0减计数,TACLR后会变为从0~CCR0方向增计数) 产生TA中断的原则: 只要计数归零就产生TA中断

MSP430单片机实验报告

MSP430单片机实验报告

MSP430单片机实验报告--段式LCD显示1.实验介绍:实验演示了将ADC结果用段式LCD显示,并且还原输入电压也采用段式LCD显示。

ADC的结果可以通过ADC12MEM0的值来显示。

当程序运行时,LCD屏幕采用10进制显示出ADC12MEM0的值。

2.实验目的:a.熟悉IAR5.0软件开发环境的使用b.了解MSP430段式LCD的工作方式c.掌握MSP430段式LCD的编程方法3.实验原理:驱动LCD需要在段电极和公共电极上施加交流电压。

若只在电极上施加直流电压,液晶本身发生劣化。

解决这个问题的一般方法是使用短时也就驱动器,如MSP430F4xx系列单片机就集成有段式液晶驱动。

如果要在没有液晶驱动器的情况下使用段式液晶显示器,就要用到如图1所示电路。

图1中,A为电极信号输入端,控制该段液晶是否被点亮;B为交流方波信号输入端,将有一个固定频率的方波信号从此端输入;com为公共背极信号。

工作原理为;固定的方波信号被直接加载到液晶公共背极,同时该信号通过一个异或门加载到液晶段极。

当A端为低电平时,液晶的段极与公共背极将得到一个同相、同频率、同幅度的方波信号,液晶的两端始终保持没有电压差;当A端为高电平时,液晶的段极也公共背极将得到一个反相、同幅度、同频率的方波信号,液晶两端将保持一个交流的电压差。

这样既能使液晶保持点亮状态,又不会发生劣化而损坏液晶显示器。

图一.段式液晶驱动电路4.实验步骤:(1)将PC 和板载仿真器通过USB 线相连;5.实验现象:段式LCD显示屏显示的数字为002031,ADC12MEM0的值为07EF,其值为16进制,将其转换后值为2031与屏幕显示一致。

6.关键代码分析:#include <msp430x26x.h>#include "General_File.h"#include "I2C_Define.h"void I2C_Start(void){DIR_OUT;SDA_1;I2C_Delay();SCL_1;I2C_Delay();SDA_0;I2C_Delay();SCL_0;}//End I2C_Start/*函数名:I2C_Stop 功能:遵循I2C总线协议定义的停止*/void I2C_Stop(void){DIR_OUT;SDA_0;I2C_Delay();SCL_1;I2C_Delay();SDA_1;}//End I2C_Stop/* 函数名:I2C_ReceiveACK 功能:待接受ACK 信号,完成一次操作*/void I2C_Write_ACK( void ){SDA_1;DIR_IN;SCL_1;I2C_Delay();while(SDA_IN );SCL_0;I2C_Delay();DIR_OUT;return;}//End I2C_ReceiveACK/* 函数名:2C_Read_Ack 功能:接受数据后发送一个ACK信号*/void I2C_Read_Ack(void){DIR_OUT;SCL_0;SDA_0;I2C_Delay();SCL_1;I2C_Delay();SCL_0;SDA_1;}//End I2C_Read_Ack/* 函数名:I2C_Read_NoAck 功能:最后接受数据后发送NoACK信号*/void I2C_Read_NoAck( void ){DIR_OUT;SCL_0;SDA_1;I2C_Delay();SCL_1;I2C_Delay();SCL_0;}//End I2C_Read_Ack/* 函数名:I2C_Receiveuchar 功能:接受一个字节的数据*/uchar I2C_Receiveuchar(void){uchar Read_Data = 0x00; //返回值uchar DataBit = 0x00; //每一个clk 接受到的数据SCL_0;I2C_Delay();SDA_1;DIR_IN;for( uchar i = 0;i < 8;i++ ){SCL_1;I2C_Delay();DataBit = SDA_IN;SCL_0;I2C_Delay();I2C_Delay();Read_Data = ( ( Read_Data << 1 ) | DataBit ); //将数据依次存入Read_Data }return( Read_Data );}//End I2C_Receiveuchar/* 函数名:I2C_Senduchar 功能:遵循I2C总线协议定义发送一字节数据*/void I2C_Senduchar( uchar Wr_Data ){DIR_OUT;SCL_0;SDA_1;for( uchar i = 0;i < 8;i++ ){if( Wr_Data & 0x80 ){SDA_1; //最高位是否为1,为1则SDA= 1 }else{SDA_0; //否则SDA=0}I2C_Delay();SCL_1;I2C_Delay();SCL_0;I2C_Delay();Wr_Data <<= 1; //数据左移一位,进入下一轮送数}SDA_1;return;}//End I2C_Senduchar/************ BU9796FS相关指令定义**********/#define Write_Com 0x80#define Write_Data 0x00#define Display_ON 0x48#define Half_Bias 0x44#define Set_Reset 0x6A#define Ext_Clock 0x69#define Blink_Mode0 0x70#define Blink_Mode1 0x71#define Blink_Mode2 0x72#define Blink_Mode3 0x73#define Pixel_ON 0x7E#define Pixel_OFF 0x7D#define BU9796_Addr 0x7C#define Base_Add 0x00/************** 引用的外部函数*********************/extern void I2C_Start(void);extern void I2C_Stop(void);extern void I2C_Write_ACK(void);extern void I2C_Senduchar( uchar Wr_Data );/************** 定义段式LCD的阿拉伯数字码*********************/const uchar Num_Code[] ={0xAF, // 00x06, // 10x6D, // 20x4F, // 30xC6, // 40xCB, // 50xEB, // 60x0E, // 70xEF, // 80xCF, // 90x10, //. 如果要显示小数点,必须要将此值与下一位值相加0x88 //: ,包括LCD上的两个":"};uchar Disp_Data[]={ 5,5,7,3,1,5 };/* 函数名:Segment_Display 功能:段式LCD数据包写入服务程序,负责将一串字符送到段式LCD 上去显示*/void Segment_Display( const uchar Addr,const uchar *P_Data, uchar Length ){uchar User_Addr = Addr;I2C_Start(); //启动BU9796I2C_Senduchar( BU9796_Addr ); //写BU9796的物理地址I2C_Write_ACK();I2C_Senduchar( Base_Add + User_Addr * 2 ); //发送起始地址,下一个紧跟的是数据I2C_Write_ACK();for( uchar i = Length ;i > 0;i-- ){if( *P_Data != 0x0A ) // 显存中是否有小数点?如果有,就将小数点码值与下一位码值相加{I2C_Senduchar( Num_Code[ *P_Data++ ] );}else{uchar Temp_Disp_Data = Num_Code[ *P_Data++ ];I2C_Senduchar( Temp_Disp_Data + Num_Code[ *P_Data++ ]);i--;}I2C_Write_ACK();}I2C_Stop(); //访问结束}/* 函数名:Init_BU9796FS 功能:初始化驱动芯片BU9796的相关参数*/void Init_BU9796FS( void ){I2C_Start(); //启动BU9796I2C_Senduchar( BU9796_Addr ); //写BU9796的物理地址I2C_Write_ACK(); //等待ackI2C_Senduchar( Write_Com + Set_Reset); //启动软复位I2C_Write_ACK(); //等待ackI2C_Senduchar( Write_Com + Blink_Mode2 );I2C_Write_ACK();I2C_Senduchar( Write_Com + Display_ON ); //开显示I2C_Write_ACK();I2C_Senduchar( Write_Data + Base_Add ); //发送起始地址,下一个紧跟的是数据I2C_Write_ACK();for( uchar i = 0;i<10;i++ ) //清LCD显示屏{I2C_Senduchar( 0x00 );I2C_Write_ACK();}I2C_Stop(); //访问结束}/* 函数名:Init_MCU 功能:初始化MSP430的相关参数*/void Init_MCU( void ){/* WDTCTL = WDTPW + WDTHOLD; */ // 关看门狗BCSCTL3 |= XT2S_2; // XT2频率范围设置BCSCTL1 &= ~XT2OFF; // 打开XT2振荡器do{IFG1 &= ~OFIFG; // 清振荡器失效标志BCSCTL3 &= ~XT2OF; // 清XT2失效标志for( uint i = 0x47FF; i > 0; i-- ); // 等待XT2频率稳定}while (IFG1 & OFIFG); // 外部时钟源正常起动了吗?BCSCTL2 |= SELM_2 + SELS ; // 设置MCLK、SMCLK为XT2P4OUT &= ~BIT4;P4DIR |= BIT4; // 打开LCD显示部分的电源//P8REN |= BIT3 + BIT4;P8DIR |= BIT3 + BIT4; // 配置MSP430与BU9796的数据数P8OUT |= BIT3 + BIT4;P5OUT &= ~BIT7; // 点亮外部LEDP5DIR |= BIT7;}/* 函数名:main 功能:系统入口主函数*/void main( void ){WDTCTL = WDTPW + WDTHOLD; // 停看门狗ADC12CTL0 = SHT0_2 + ADC12ON; // 设置采样时间,开ADC12,Vref = V ACC ADC12CTL1 = SHP; // 使用定时器采样ADC12MCTL0 = INCH_1; // 选用A1通道ADC12IE = 0x01; // 开ADC12MCTL0中断ADC12CTL0 |= ENC; // 启动转换ADC12MCTL0 = INCH_1;P5DIR |= BIT7; // P5.7输出-LED/*for (;;){ADC12CTL0 |= ADC12SC; // 软件启动转换_BIS_SR(CPUOFF + GIE); // LPM0模式,由ADC12中断唤醒}*//* 功能:将16进制转化为10进制*/int a,b;a=ADC12MEM0;Disp_Data[5]=a%10;b=a/10;Disp_Data[4]=b%10;a=b/10;Disp_Data[3]=a%10;b=a/10;Disp_Data[2]=b%10;a=b/10;Disp_Data[1]=a%10;b=a/10;Disp_Data[0]=b%10;Init_MCU();Init_BU9796FS();P5OUT |= BIT7;Segment_Display( 0,Disp_Data,6 );_BIS_SR( CPUOFF );}#pragma vector=ADC12_VECTOR__interrupt void ADC12_ISR (void){ _BIC_SR_IRQ(CPUOFF); }。

msp430单片机实验报告

msp430单片机实验报告

实验报告课程名称:单片机原理及应用实验题目:实用多功能定时器学生姓名:**学号:**********专业班级:自动化二零一六年五月七日目录一、课程实验目的 (1)二、实验要求 (1)三、课程实验硬件电路 (2)3.1、硬件电路结构 (2)3.2、电路原理 (2)3.2.1、显示电路 (2)3.2.2、按键检测电路 (3)四、实验步骤 (6)五、软件设计 (6)5.1、倒计时主程序 (6)5.2、中断程序设计 (7)六、调试与结论 (7)七、附录 (8)一、目的(1)熟练运用CCS开发环境和Proteus仿真软件,巩固和加深单片机原理课程知识的理解和运用。

(2)综合本学期所学的按键检测以及液晶的动态显示原理,设计出以MSP430G2553为核心的以LCD1602为显示的倒计时系统。

(3)熟悉各元器件的性能和设置元件参数,进一步提高学生单片机应用系统的设计能力。

(4)培养学生综合分析问题、发现问题和解决问题的能力。

二、实验要求(1)设计一个倒计时器,定时范围99分60秒,用液晶作为显示器。

4个按键控制,分别是分钟加一、秒钟加一、清零和开始停止键。

按分钟加一键时,分钟显示值加1,最大99 ;按秒钟加一键时,秒钟显示值加1,最大60;按清零键时,分钟、秒钟显示值都清零;按开始键,则开始倒计时。

显示值为零时停止倒计时,且报警器报警,直到按停止键报警器停止报警。

按开始键后,分钟加一、秒钟加一、清零键不起作用。

按停止键可以暂停。

倒计时为零后,按停止键,显示值恢复设定值,按开始键又可以工作。

(2)总体要求如下:1、方案论证,确定总体电路原理图。

2、画硬件仿真电路图。

3、绘制程序流程图,编写C语言源程序。

4、安装调试,实现倒计时器的基本功能。

三、硬件电路3.1、电路结构图:多功能定时器主要由三个最基本模块组成,一是以LCD1602液晶为基础的显示电路,二是以四个按键为核心的控制电路,三是以MSP430G2553为核心的信号发生电路。

msp430 实验报告

msp430 实验报告

msp430 实验报告MSP430 实验报告引言:MSP430是一款低功耗、高性能的微控制器,广泛应用于嵌入式系统开发领域。

本实验报告将介绍我对MSP430进行的一系列实验,包括基本的GPIO控制、定时器应用、模拟信号采集和通信接口应用等。

实验一:GPIO控制在本实验中,我使用MSP430的GPIO引脚控制LED灯的亮灭。

通过配置引脚的输入/输出模式以及设置引脚电平,我成功地实现了对LED灯的控制。

这为后续实验奠定了基础,也让我更加熟悉了MSP430的寄存器配置。

实验二:定时器应用在本实验中,我探索了MSP430的定时器功能。

通过配置定时器的时钟源和计数模式,我实现了定时器中断功能,并利用定时器中断实现了LED灯的闪烁。

这个实验让我更加深入地了解了MSP430的定时器模块,并学会了如何利用定时器进行时间控制。

实验三:模拟信号采集在本实验中,我使用MSP430的模拟信号输入引脚和模数转换模块,成功地将外部的模拟信号转换为数字信号。

通过配置ADC模块的采样速率和精度,我实现了对模拟信号的准确采集,并将采集到的数据通过串口输出。

这个实验让我对MSP430的模拟信号处理有了更深入的了解。

实验四:通信接口应用在本实验中,我使用MSP430的串口通信模块,实现了与外部设备的数据传输。

通过配置串口的波特率和数据格式,我成功地实现了与计算机的串口通信,并通过串口发送和接收数据。

这个实验让我掌握了MSP430与外部设备进行数据交互的方法。

结论:通过一系列的实验,我对MSP430的基本功能和应用有了更深入的了解。

MSP430作为一款低功耗、高性能的微控制器,具备丰富的外设和强大的处理能力,适用于各种嵌入式系统的开发。

通过学习和实践,我掌握了MSP430的GPIO控制、定时器应用、模拟信号采集和通信接口应用等基本技能,为以后的嵌入式系统开发打下了坚实的基础。

未来展望:MSP430作为一款成熟的微控制器,具备广阔的应用前景。

大学实习报告-msp430 (ADand定时器)

大学实习报告-msp430 (ADand定时器)

湖南大学本科生实习报告实习题目:MSP430单片机实习时间:2011.7.15---2011.7.24 专业:班级:学生姓名:指导教师:目录第1章调试平台-----------------------------------------------------------------------3 1.1 简介------------------------------------------------------------------------------3 1.2 下载指令------------------------------------------------------------------------3 1.3程序调试指令-------------------------------------------------------------------3 1.4 各种设置------------------------------------------------------------------------4第2章实验内容----------------------------------------------------------------------4 2.1 内容简介------------------------------------------------------------------------4 2.2 定时器时钟---------------------------------------------------------------------42.2.1 基本功能介绍--------------------------------------------------------------42.2.2 总体方案介绍--------------------------------------------------------------42.2.3 定时器时钟硬件图-------------------------------------------------------42.2.3.1 独立式键盘-----------------------------------------------------------42.2.3.2 LED显示模块-----------------------------------------------------52.2.3.3LCD显示模块----------------------------------------------------52.2.4 软件系统设计---------------------------------------------------------------62.2.4.1 主流程图----------------------------------------------------------------62.2.4.2 扫描函数流程图-------------------------------------------------------72.3 测试结果------------------------------------------------------------------------72.4 总结------------------------------------------------------------------------------73.1 ADC12----------------------------------------------------------------------------73.1.1基本功能介绍----------------------------------------------------------------73.1.2总体方案介绍----------------------------------------------------------------83.1.3 AD微处理器片内温度测量硬件图--------------------------------------83.1.3.1 MSP430芯片AD通道------------------------------------------------83.1.3.2 AD电压检测-滑动变阻器--------------------------------------------93.1.3.3 LCD模块--------------------------------------------------------------93.3.3.4 LED模块----------------------------------------------------------------93.1.4软件系统设计----------------------------------------------------------------103.1.4.1 程序流程图-------------------------------------------------------------103.1.5 测试结果---------------------------------------------------------------------103.1.6 总结---------------------------------------------------------------------------10 附录1---------------------------------------------------------------------------------------10 附录2---------------------------------------------------------------------------------------16第1章调试平台1 IAR调试平台1.1简介:IARsystems 是全球领先的嵌入式系统开发工具和服务的供应商,本次实验所用的IAREW430就是其产品之一。

单片机MSP430实验报告

单片机MSP430实验报告

实验二一、示例:按S1,LED1改变状态#include <msp430f5529.h>void Delay(void) //延迟子程序{int i;for(i = 100;i--;i > 0) ;//延时一点时间}void main(void){WDTCTL = WDTPW + WDTHOLD; // 停止看门狗P1DIR=0x7f;//P1DIR,置1为输出,置0为输入。

0x7f=0111 1111,p1.7为输入,p1.0~p1.6为输出P1REN |= BIT7;//P1.7开启上拉电阻。

|= 为与或,BIT7为1000 0000,P1.7的REN置1,开启端口拉电阻。

P1OUT=0xff; //P1输出高电平。

注意:while (1){if ((P1IN & BIT7)==0)//按键S1被按下。

&位与,若S1按下,P1.7=0,位与操作后,P1IN&BIT7=0x00 {void Delay(void);if (!(P1IN & BIT7)) //按键S1被按下.!(P1IN & BIT7)等同(P1IN & BIT7)==0 {while(!(P1IN & BIT7)); //按键S1被松开P1OUT ^= 0x01; //P1.0输出状态翻转}}}}二、上机自编程序的要求:按下按键S1,控制LED1的亮和灭。

短按键,则小灯亮1秒,然后灭;长按键,小灯常亮。

//********************************************************************* *********// MSP430F552x Demo - Timer0_A5, Toggle P1.0, CCR0 Up Mode ISR, DCO SMCLK //// Description: Toggle P1.0 using software and TA_1 ISR. Timer1_A is// configured for up mode, thus the timer overflows when TAR counts// to CCR0. In this example, CCR0 is loaded with 50000.// ACLK = n/a, MCLK = SMCLK = TACLK = default DCO ~1.045MHz//// MSP430F552x// ---------------// /|\| |// | | |// --|RST |// | |// | P1.0|-->LED//// Bhargavi Nisarga// Texas Instruments Inc.// April 2009// Built with CCSv4 and IAR Embedded Workbench Version: 4.21//********************************************************************* #include<msp430f5529.h>unsigned int h,i;void Delay(void) //延迟子程序{int i;for(i = 100;i--;i > 0) ;//延时一点时间}void main(void){WDTCTL = WDTPW + WDTHOLD; // Stop WDTP1DIR=0x7f;//P1DIR,置1为输出,置0为输入。

MSP430单片机定时器实验报告

MSP430单片机定时器实验报告

实验四定时器实验实验目的:MPS430F5529片内集成的定时器A的使用,学习计数器的补捕获比较模块的使用。

实验内容:定时器采用辅助时钟ACLK作为计数脉冲,fACLK=32768Hz,实现以下功能:1.定时器TA0延时1s,点亮或熄灭LED6,即灯亮1s灭1s,如此循环,采用中断服务程序实现。

2.定时器TA0延时1s,点亮或熄灭LED4,采用捕获比较器CCR0的比较模式,设定输出方式,输出方波,不用中断服务程序3.采用捕获比较器CCR1的比较模式LED5,设定输出方式,输出PWM波形,使LED 亮2s,灭1s。

4.用定时器实现30s倒计时,在液晶模块上显示,每过一秒显示数字变化一次。

5.使用TA1的捕获比较器CCR0捕获按键的间隔时间,在液晶模块上显示。

程序代码:程序1:#include <msp430f5529.h>void main(){WDTCTL = WDTPW + WDTHOLD; //关看门狗P1DIR |= BIT3; //设置P1.0口方向为输出。

TA0CCTL0 = CCIE; //设置捕获/比较控制寄存器中CCIE位为1,//CCR0捕获/比较功能中断为允许。

TA0CCR0 = 32767; //捕获/比较控制寄存器CCR0初值为32767TA0CTL = TASSEL_1 + MC_1+TACLR; //设置定时器A控制寄存器TACTL,//使时钟源选择为SMCLK辅助时钟。

//进入低功耗模式LPM0和开总中断_BIS_SR(LPM0_bits +GIE);}//定时器A 中断服务程序区#pragma vector=TIMER0_A0_VECTOR__interrupt void Timer_A (void){P1OUT ^= BIT3; //P1.0取反输出}实验现象:实验开始后,实验板上LED6亮灭闪烁,间隔为1s。

程序2:#include <msp430f5529.h>void main(void){WDTCTL = WDTPW + WDTHOLD; // 关狗P1DIR |= BIT1; // P1.1 设置为输出P1SEL |= BIT1; // P1.1 输出使能TA0CCR0 = 60000; // PWM PeriodTA0CCTL0 = OUTMOD_4; // CCR1 模式4TA0CCR1 = 30000; // CCR1 PWM duty cycleTA0CTL = TASSEL_1 + MC_1 + TACLR; // ACLK, up mode, clear TAR__bis_SR_register(LPM3_bits); // Enter LPM3__no_operation(); // For debugger}实验现象:实验开始后,实验板上LED4亮灭闪烁,间隔为1s。

TIMERA定时器实验报告

TIMERA定时器实验报告
TIMERA
TIMERA组要由以下四个部分组成:
1、计数器
输入的时钟源具有4种选择(ACLK,SMCLK,INCLK,TACLK),所选择的时钟源又可以1、2、4、8分频作为计数频率。通过选择4种工作模式灵活的完成定时/计数功能。
ACLK:辅助时钟,一般用于低速设备
MCLK:系统主时钟,通常用于CPU运行,也可以用于其他高速模块
{
switch(TAIV)
{
case 2:break;
case 4:break;
case 10:flag=1;
break;
}
}
int main( void )
{
// Stop watchdog timer to prevent time out reset
WDTCTL = WDTPW + WDTHOLD;//关闭开门狗
四、
1、设定TIMERA工作时钟源
2、定时计数器TIMERA清零
3、设置工作模式MCX
4、若工作在UP模式或者UP/DWON模式TACCR0清零
5、开启总中断开关,TIMERA中断使能
6、编写中断服务函数,根据中断标识位执行不同的操作。

例1、CONTINOUS模式
#include "MSP430x14x.h"
#include "MSP430x16x.h"
int flag=0;
int time=0;
int k=0x80;
int i=0;
__intrinsic void __delay_cycles(unsigned long __cycles);
#define CPU_F ((double)8000000)

msp430实验报告

msp430实验报告

msp430实验报告Title: MSP430 Experiment ReportIntroductionThe MSP430 is a series of microcontroller units developed by Texas Instruments. It is widely used in embedded systems and has gained popularity due to its low power consumption and high performance. In this experiment report, we will discuss the results of our experiments with the MSP430 microcontroller. Experiment 1: Blinking LEDIn our first experiment, we programmed the MSP430 to blink an LED at a specific frequency. We used the MSP430 LaunchPad development kit, which provided us with a simple and easy-to-use platform for programming and testing the microcontroller. By writing a simple program in C using the Code Composer Studio IDE, we were able to control the LED and make it blink at different rates. This experiment helped us understand the basics of programming the MSP430 and how to interface with external components.Experiment 2: Analog-to-Digital ConversionIn our second experiment, we explored the analog-to-digital conversion (ADC) capabilities of the MSP430. We connected a potentiometer to one of the analog input pins of the microcontroller and wrote a program to read the analog voltage and convert it to a digital value. We then displayed the digital value on the LaunchPad's built-in LCD display. This experiment helped us understand how the MSP430 can be used to interface with analog sensors and convert theirreadings into digital values for further processing.Experiment 3: Serial CommunicationIn our final experiment, we used the MSP430's built-in UART module to establish serial communication with a computer. We wrote a program to send data from the microcontroller to the computer and receive data from the computer to the microcontroller. This experiment helped us understand how the MSP430 can be used to communicate with external devices and interfaces, opening up a wide range of possibilities for building complex embedded systems.ConclusionIn conclusion, our experiments with the MSP430 microcontroller have provided us with valuable insights into its capabilities and potential applications. We have learned how to program the MSP430, interface with external components, perform analog-to-digital conversion, and establish serial communication. We are excited to continue exploring the possibilities of the MSP430 and look forward to applying our knowledge to future projects and developments in the field of embedded systems.。

MSP430单片机编程与实践-实验报告

MSP430单片机编程与实践-实验报告
unsigned char aa,bb,b=0; unsigned char com_byte; unsigned char num; unsigned char key; unsigned char key_flag;
void key_scan(); void delay(unsigned x) {
实验二:使用基本定时器,通过 P1.0 口控制 LED 灯的亮灭,亮灭时间都为
2
1S。 实验原理如图 1 所示:
实验程序:
图 1:LED 灯控制电路
#include <msp430x44x.h>
void main()
{ WDTCTL=WDTPW+WDTHOLD; IE2|=BTIE;
//关闭看门狗定时器 //打开基本定时器中断
{
}
ADC12CTL0 |= ENC; _EINT();
//允许转换

while(1)
{ ADC12CTL0 |= ADC12SC;
//开始转换
_BIS_SR(LPM0_bits); DegC = ((((long)ADCresult-1615)*704)/4095);
}
#pragma vector=ADC_VECTOR
○3 掌握 LED 静态显示和动态扫描显示的原理与编程设计; ○4 掌握 LCD 显示的原理以及编程设计; ○5 掌握 ADC 工作的原理,熟悉使用 ADC12 的工作方式; ○6 熟悉独立键盘以及行列式键盘的设计方法,掌握键盘工作原理和一般的编 程设计; ○7 综合 MSP430 的各个功能模块,练习编写数字密码锁程序,实现基本的一 些条件,使学生的学习与社会发展同步,更接近生活实际;
ADC12CTL0 = ADC12ON+REFON+REF2_5V+SHT0_6; 采样周期

430单片机实验报告

430单片机实验报告
四、
1、建立工程
2、编写程序,编译、运行
3、把程序下载到单片机中
4、程序代码:
#include <msp430g2452.h>
int i=0;
void main(void)
{
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
//P1SEL |= 0x06; // P1.1 - P1.2 option select
unsigned char temp;
P1OUT=0; //p1out全为0;等待按键输
temp=P1IN;
if((temp&0xf0)<0xf0) ; //如果有键按下;
{
delay();
Key_Scan();
switch(key_val)
{
case 0:P2DIR|=0xff;P2OUT=0x3f;break;
}
void main()
{
WDTCTL=WDTPW+WDTHOLD;
init_keyboard();
delay();
ctrlkey(1);
while(1)
{
key_event();
}
}
五、实验设备
计算机、IAR-FET集成开发环境、MSP430G2553单片机
六、问题分析
使用单片机的P1口与矩阵式键盘连接时,可以将P1口低4位的4条端口线定义为行线,P1口高4位的4条端口线定义为列线,形成4*4键盘,可以配置16个按键,将单片机P2口与七段数码管连接,当按下矩阵键盘任意键时,数码管显示该键所在的键号。
P2SEL=0X00;
key_val=0;
}
void Key_Scan(void) //扫描键盘获得键值

摘要本文分析了利用MSP430的Timer_B在比较模式下输出及应用探究

摘要本文分析了利用MSP430的Timer_B在比较模式下输出及应用探究

摘要:本文分析了利用MSP430的Timer_B在比较模式下输出的脉宽调制(PWM)波,来实现D/A转换的工作原理。

介绍了利用MSP430F449的Timer_B的PWM输出产生正弦波和直流电平的方法,并给出了对应的硬件电路和C语言源程序。

关键词:MSP430F449;脉宽调制;D/A转换1.简介1.1 MSP430单片机介绍虽然目前在国内市场上应用较多的单片机仍然是8位单片机,但是由美国德州仪器(TI)公司推出的16位单片机MSP430具有处理能力强、运行速度快、低功耗、指令简单等优点。

并采用了JTAG技术、FLASH 在线编程技术、BOOTSTRAP等诸多先进技术,因此具有很高的性价比,在欧洲市场已得到了非常广泛的应用。

虽然MSP430进入国内市场的时间不是很长,但是因其具有以上所述的卓越品质,一进入国内市场就被众多电子工程师所青睐。

其中MSP430F449具有7个工作模式可选8、10、12、16的16位计数器。

用其比较模式产生的PWM可以实现D/A转换(D/A conversion)。

1.2 PWM D/A简介很多嵌入式的微控制器(microcontroller)应用都需要产生模拟信号。

这种情况下往往是采用集成的或者是分立的数模转换器DAC(digital- to-analog converter)来实现。

但是采用脉宽调制PWM(pulse-width modulated)信号来实现D/A转换(简写为PWM D/A)也是一种常用的方法。

可以用PWM信号产生所需的直流或交流信号。

这篇文章以MSP430F449的Timer_B输出的PWM为例来产生一个200Hz的正弦波和一个0.5VCC的直流电平。

实际上类似的方法可以用于Timer_A以及MSP430其它型号的单片机。

2. 用PWM实现DAC的原理2.1 基本原理PWM信号是一种具有固定周期(T)不定占空比()的数字信号,如图1所示。

如果PWM信号的占空比随时间变化,那么通过滤波之后的输出信号将是幅度变化的模拟信号。

msp-430课程大作业实践报告

msp-430课程大作业实践报告

简易自行车速度计设计报告班级:二班姓名:王根胜学号: 02121187一、摘要该设计使用超低功耗MSP430单片机为控制处理器,并结合简单的硬件电路来实现自行车测速。

在自行车前轮上装有一个干簧管和一个磁铁,随着车轮每转一圈磁铁铁划过干簧管,都会吸合干簧管而接通电路,输出一个低电平脉冲信号,通过单片机计时器记录两次中断时间间隔,通过软件处理最终实现测速。

二、硬件设计自行车测速系统以MSP430单片机为处理器,通过安装在自行车前轮上的硬件系统产生周期性脉冲信号(即产生低电平信号),单片机对信号采集并计时(发生中断并记录两次中断的时间间隔),通过软件计算得到自行车的实时速度(用自行车轮周长除以周期即可的到速度),并在LCD上显示。

具体设计流程如图:图1-1 硬件设计流程图三、软件设计这个程序使用MSP430单片机的定时器来测量硬件信号的周期,给定时器设置溢出周期,通过软件计算定时器的溢出次数来测量信号的周期,进而测出自行车的行进速度。

1、主程序主程序主要包括各部件的初始化,定时器TimerA中断,I/O中断的定义等。

WDTCTL = WDTPW + WDTHOLD;TACTL=TASSEL_1+MC_2+TAIE+TACLR;//TA 清零并开始计时,ACLK,开中断LPM3;//进入低功耗模式三休眠,全部程序在中断内执行2、 数据处理子程序Period=TA_OverflowCnt*65536+TAR;//得到相邻两次中断之间相隔的时间Speed=(long)32768*Circle*36/(10*Period);//计算速度(km/h ),保留2位小数如以下程序图(图1-2)所示:3、 LCD 显示子程序void LCD_DisplayDigit(char Digit,char Location) void LCD_DisplayLetter(char Letter,char Location)void LCD_DisplayNum(unsigned int Number,charStartLocation)图1-2 数据处理子程序流程图图1-3 LCD 子程序设计流程图void LCD_DisplayDecimal(int Number,char DOT,charStartLocation)LCD_DispalyDecimal(Speed,2)如图所示设计程序:见图1-3四、测试结果对于程序的编译和调试都较为较为成功。

430单片机实践报告

430单片机实践报告

void main (void )
{
unsigned i,k;
WDTCTL=WDTPW+WDTHOLD;
//利用看门口防止程序跑飞
P5DIR |= BIT1;
//设置端口,0为输入,1为输出
for (i=0; i<6000; i++)
{
for (k = 0; k<60000; k++);
// 通过判断外层循环次数的奇偶决定 P5.1 的电平高低
8
{ switch(j) { case 0: { P1OUT &=~0x80; P1OUT |= 0x04; P1OUT |= 0x02;
if(!(P1IN&BIT4)) num =10; else if (!(P1IN&BIT5)) num = 3; else if (!(P1IN&BIT6)) num = 2; else if (!(P1IN&BIT7)) num = 1;
__interrupt void Timer_A(void)
{
P5OUT ^= 0x02;
// P5.1 异或取反
CCR0 += 50000;
// 在已计数的50000基础上再计数50000 使 CCR0与TAR同步计数到 65535 在计数到65535-50000 产生中断使占空比为50%
}
3、 总结与分析
(1) 看门狗
[1] 作用:看门狗在语句中能够防止由于程序处理定期清零造成的错误,能使处 理器重新启动 [2] 代码实现:
停止模式:关闭看门狗 WDTCTL=WDTPW+WDTHOLD;
计时器模式:计数器溢出产生中断时执行看门狗中断函数 WDT_MDLY_8 或 WDTCTL = WDT_ADY_250
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Msp430系列单片机的定时器实验1.看门狗定时器(WDT)1.1实验介绍计数单元WDTCNT:不能直接通过软件存取,必须通过WDTCTL来控制。

控制寄存器WDTCTL高8位为口令:写5AH,读69H低8位为WDT操作的控制命令HOLD:停止看门狗定时器工作。

0 :激活;1 :停止WDTSSEL:时钟源选择TMSEL:工作模式选择。

0:看门狗;1 :定时CNTCL:该位为1时,WDTCNT清除IS2、IS1、IS0:选择看门狗定时器的定时长度1.2 实验目的学会使用看门狗定时器(WDT)。

熟悉WDT相关寄存器1.3 实验原理1.4 实验步骤(1) 将PC 和板载仿真器通过USB 线相连;(2) 打开CCS 集成开发工具,选择Project->Import Existing CCS Eclipse Project,导入MSP430F6638_DemoV2.0\11.WTD 文件夹中的工程;(3) 选择对该工程进行编译链接,生成.out 文件。

然后选择,将程序下载到实验板中。

程序下载完毕之后,可以选择全速运行程序,也可以选择单步调试程序,选择F3 查看具体函数。

也可以程序下载之后,按下,软件界面恢复到原编辑程序的画面。

再按下实验板的复位键,运行程序。

(调试方式下的全速运行和直接上电运行程序在时序有少许差别,建议上电运行程序)。

1.5 实验现象实验板上对应的LED灯以一定周期闪烁。

1.6 关键代码实验一:#include<msp430f6638.h>void main(void){volatile unsigned int i;volatile unsigned int count=0;WDTCTL = WDTPW+WDTHOLD; // Stop WDTP4DIR |= BIT1 + BIT2 + BIT3; // P4.1,P4.2,P4.3 set as outputP4OUT &= ~(BIT1 + BIT2 + BIT3); // P4.1,P4.2,P4.3 set "0"for (i=0;i<60000;i++) ; //延时大约60msP4OUT |= (BIT1 + BIT2 + BIT3); // P4.1,P4.2,P4.3 set "1"for (i=0;i<60000;i++) ; //延时大约60msWDTCTL=WDTPW+WDTIS_4; //启动看门狗while(1) ; // continuous loop}实验二:#include<msp430f6638.h>void main(void){volatile unsigned int i;volatile unsigned int count=0;WDTCTL = WDTPW+(WDTCTL&0xff)+WDTHOLD; // Stop WDTP4DIR |= BIT1 + BIT2 + BIT3; // P4.1,P4.2,P4.3 set as outputP4OUT &= ~(BIT1 + BIT2 + BIT3); // P4.1,P4.2,P4.3 set "0"for (i=0;i<60000;i++) ; //延时大约60msP4OUT |= (BIT1 + BIT2 + BIT3); // P4.1,P4.2,P4.3 set "1"for (i=0;i<60000;i++) ; //延时大约60msWDTCTL=WDTPW+(WDTCTL&0xff)-WDTHOLD; //启动看门狗while(1){// WDTCTL=WDTPW+WDTCTL&0xff+WDTCNTCL; //计数器清零};分析:实验一与实验二结果相同,只不过在每个周期结束启动看门狗定时器时修改的寄存器参数不同。

如果把实验二循环中的语句去掉,则有可能使输出的信号周期不稳定。

通过改变循环语句中的循环次数可以改变输出信号的频率。

2.Timer_A的时钟源和计数模式实验2.1 实验介绍MSP430 系列有丰富定时器资源:看门狗定时器(WDT),基本定时器(Basic timer1),定时器A(Timer_A),定时器B(Timer_B)等。

器件因系列不同可能包含这些模块的全部或者部分。

这些模块除了具有定时功能外,各自还有一些特定功能。

在应用中根据需求选择多种定时器模块。

本实验以定时A(Timer_A)为基础。

在MSP430F6638 中,例化了3 个定时器A (Timer_A),1 个定时器B(Timer_B)。

2.3 实验原理Timer_A的时钟源:Timer_A的计数模式:2.4 实验步骤(1) 将PC 和板载仿真器通过USB 线相连;(2) 打开CCS 集成开发工具,选择Project->Import Existing CCS Eclipse Project,导入MSP430F6638_DemoV2.0\11.Timer_A1 文件夹中的工程;(3) 选择对该工程进行编译链接,生成.out 文件。

然后选择,将程序下载到实验板中。

程序下载完毕之后,可以选择全速运行程序,也可以选择单步调试程序,选择F3 查看具体函数。

也可以程序下载之后,按下,软件界面恢复到原编辑程序的画面。

再按下实验板的复位键,运行程序。

(调试方式下的全速运行和直接上电运行程序在时序有少许差别,建议上电运行程序)。

2.5 实验现象对应的LED灯以一定频率和占空比闪烁。

2.6 关键代码#include<msp430f6638.h>void main(void){WDTCTL = WDTPW + WDTHOLD; // Stop WDTwhile(BAKCTL & LOCKIO) // Unlock XT1 pins for operation BAKCTL &= ~(LOCKIO);UCSCTL6 &= ~(XT1OFF); // XT1 OnUCSCTL6 |= XCAP_3; // Internal load cap// Loop until XT1 fault flag is cleareddo{UCSCTL7 &= ~(XT2OFFG + XT1LFOFFG + DCOFFG);// Clear XT2,XT1,DCO fault flags SFRIFG1 &= ~OFIFG; // Clear fault flags}while (SFRIFG1&OFIFG); // Test oscillator fault flagP4DIR |= BIT1+BIT2+BIT3;TA0CTL = TASSEL_1 + MC_2 + TACLR + TAIE; // ACLK, continue mode, clear TAR// enable interrupt__bis_SR_register(LPM3_bits + GIE); // Enter LPM3, enable interrupts__no_operation(); // For debugger}// Timer0_A5 Interrupt Vector (TAIV) handler#pragma vector=TIMER0_A1_VECTOR__interrupt void TIMER0_A1_ISR(void){switch(__even_in_range(TA0IV,14)){case0: break; // No interruptcase2: break; // CCR1 not usedcase4: break; // CCR2 not usedcase6: break; // reservedcase8: break; // reservedcase 10: break; // reservedcase 12: break; // reservedcase 14:P4OUT ^= BIT1+BIT2+BIT3; //overflowbreak;default: break;}}2.7 思考题(1)Timer_A的捕获比较功能是如何实现的?答:在连续计数模式下,当计数器计数到0xffff时,会产生一个中断,即可以实现定时功能。

在增计数模式下,计数器计数到CCR0时,计数器自动清零,且产生一个中断,即可实现捕获比较功能。

(2)如何修改LED灯闪烁的频率?答:只需将MC_2改为MC_1,再修改 TA0CCR0的值即可。

(3)MSP430F6638 有哪些定时器资源?答:看门狗定时器(WDT),基本定时器(Basic timer1),定时器A(Timer_A),定时器B(Timer_B)等。

Timer0_A5、Timer1_A3、Timer2_A3、Timer0_B7(4) 基本定时器是否可以定时任意的时间?答:不可以,因为当计数器从0 计数到0FFFFH 到之后,发生溢出中断,CCR0的值不可以超过0xffffh(5)MSP430 系列单片机中实现定时和计数的方法有什么,每种方法的特点是什么?答:MC_0:停止计数。

MC_1:递增计数,计数器从0计数到TAxCCR0。

MC_2:连续计数,计数器从0计数到0xffffh。

MC_3:计数器从0计数到TAxCCR0,然后再递减计数到0。

3.Timer_A的PWM实验3.1 实验介绍实验程序产生两路PWM 波形输出。

CCR0 中的值定义了PWM 信号的周期,CCR1,CCR2 中的值定义了PWM 信号的占空比。

定时器使用32KHz 的ACLK 作为输入时钟源。

时钟周期为:15.6ms。

P1.2 上的占空比为75%,P1.3 上的占空比为25%。

3.2 实验目的(1) 了解PWM 技术;(2) 掌握PWM 控制技术的原理;(3) 掌握MSP430F6638 产生PWM输出的方法;(4) 掌握示波器测量频率的方法。

3.3 实验原理PWM 技术的三个要素:(1) Frequency 时钟频率(2) Duty cycle 占空比(3) Amplitude 信号幅度3.4 实验步骤(1) 将PC 和板载仿真器通过USB 线相连;(2) 打开CCS 集成开发工具,选择Project->Import Existing CCS Eclipse Project,导入MSP430F6638_DemoV2.0\11.Timer_A2 文件夹中的工程;(3) 选择对该工程进行编译链接,生成.out 文件。

相关文档
最新文档