1、MSP430F5529实验指导书MSP430F5529 实验指导书()2014年10月27日东北林业大学机电工程学院“3+1”实验室实验一 基础GPIO实验实验二 键盘与液晶显示实验实验三 时钟系统配置实验实验四 看门狗与定时器实验实验五 AD/DA实验实验六 比较器实验实验七 Flash实验实验八 串行通信实验实验一 基础GPIO实验【实验目的】1、熟悉CCS的基本使用方法;2、掌握MSP430系列单片机程序开发的基本步骤;3、掌握MSP430 IO口的基本功能。【实验仪器】1、开发板一套;2、PC机操作系统Windows XP或Windows 7,集成开发环境。【实验原理】CCS(Code
2、 Composer Studio)是 TI 公司研发的一款具有环境配置、源文件编辑、程序调试、跟踪和分析等功能的集成开发环境,能够帮助用户在一个软件环境下完成编辑、编译、链接、调试和数据分析等工作。 为 CCS 软件的最新版本,功能更强大、性能更稳定、可用性更高,是 MSP430 软件开发的理想工具。开发板上的有8个可操作的LED灯,与MCU的IO口对应关系如图1-1所示:图1-1 LED与MCU的IO对应关系电路我们可以通过控制单片机IO口的输出电平状态来控制各个LED灯的亮灭。开发板上还有2个可操作的按键S1,S2。如图1-2所示。图1-2 按键电路我们可以通过读取与按键相连的IO口的输入
3、电平状态来执行相应的操作。此外,S1,S2还可以作为外部中断源,触发中断。【实验内容】1、用调用头文件的方法,使能MSP430F5529开发板上的8个LED灯依次按顺序循环点亮;2、用按键S1控制开发板上LED1的亮灭状态(查询法);3、用按键S2控制开发板上跑马灯的循环速度(中断方式)。【实验步骤】内容1:使能开发板上的8个LED灯依次按顺序循环点亮1、打开CCSv5并确定工作区间,然后选择File-New-CCS Project 弹出图1-3对话框。图1-3 新建一个CCS工程2、在 Project name 中输入新建工程的名称,在此输入 lab1_1。3、在 Device 部分选择器件
4、的型号:在此Family选择MSP430;Variant选择MSP430X5XX family,芯片选择MSP430F552;其余保持默认。4、在左下角对话框中,选择Empty Projects下拉菜单下的Empty Project(空工程),单击Finish。5、在新窗口中输入如下代码:#include void main(void) volatile unsigned int i; WDTCTL=WDTPW+WDTHOLD; / 32 x 32 x MHz / 32,768 Hz = 76563 = MCLK cycles for DCO to settle _delay_cycles(7
5、6563); / Loop until XT1,XT2 & DCO fault flag is cleared do UCSCTL7 &= (XT2OFFG + XT1LFOFFG + 0x0004 + DCOFFG);/ Clear XT2,XT1,DCO fault flags SFRIFG1 &= OFIFG; / Clear fault flags while (SFRIFG1&OFIFG); / Test oscillator fault flag while(1); / Loop in place3、编译、调试并下载程序到开发板。4、运行程序,用示波器观察、口的输出波形。【思考与分
6、析】1、在不做任何配置的情况下,MSP430F5529单片机的各个时钟的默认值是多少?试编程加以验证。2、试编写程序验证MSP430F5529单片机的主时钟频率最大可达到多少?3、MSP430系列单片机最大的特点是低功耗,低功耗是如何体现的?查阅资料,加以详细论述。实验四 看门狗与定时器实验【实验目的】1、了解看门狗定时器的基本作用;2、学会使用定时器在MSP430的某一引脚输出特定占空比的方波;3、掌握MSP430系列单片机定时器的几种工作模式;4、熟悉MSP430系列单片机定时器的比较/捕获功能。【实验仪器】1、MSP430G2553 Launch Pad一块,MSP430F5529 Mi
7、ni Board 一块;2、键盘接口一块,液晶屏一块;3、TDS210双踪示波器一台;4、PC机操作系统Windows XP或Windows 7,集成开发环境。【实验原理】看门狗定时器主要用于在程序跑飞时,则不会在看门狗定时时间到达之前执行看门狗清零指令,看门狗就会溢出,从而使系统产生复位,保证程序的正常运行。16位定时器的计数值寄存器TAR在每个时钟信号的上升沿进行增加/减少,可利用软件读取TAR寄存器的计数值。此外,当定时时间到,产生溢出时,定时器可产生中断。置位定时器控制寄存器中的TACLR控制位,可自动清除TAR寄存器的计数值,同时,在增/减计数模式下,清除了时钟分频器和计数方向。Ti
8、mer_A共有4种工作模式:停止模式、增计数模式、连续计数模式和增/减计数模式,具体工作模式可以通过MC控制位进行选择,具体配置如表4-1所示。表4-1 Timer_A工作模式配置列表MC控制位配置值Timer_A工作模式描 述00停止模式Timer_A停止01增计数模式Timer_A从0到TAxCCR0重复计数10连续计数模式Timer_A从0到0FFFFh重复计数11增/减计数模式Timer_A从0增计数到TAxCCR0之后减计数到0,循环往复定时器Timer_A的捕获模式:当CAP控制位置为1时,捕获/比较模块配置为捕获模式。捕获模式被用于捕获事件发生的时间。捕获输入CCIxA和CCIx
9、B可连接外部引脚或内部信号,这需通过CCIS控制位进行配置。可通过CM控制位将捕获输入信号触发沿配置为上升沿触发、下降沿触发或两者都触发。捕获事件在所选输入信号触发沿产生,如果产生捕获事件,定时器将完成以下工作:? 主计数器计数值复制到TAxCCRn寄存器中;? 置位中断标志位CCIFG。【实验内容】1、使用看门狗定时功能产生一个方波(周期性的取反);2、利用定时器TA0,使其工作在增计数模式下,选择ACLK作为其参考时钟。将和引脚配置为定时器输出,且使CCR1和CCR2工作在比较输出模式7下,最终使引脚输出75%占空比的PWM波形,使引脚输出25%占空比的PWM波形。3、选择键盘上的一个按键
10、,当该按键按下一次时,打开定时器开始计时,利用定时器的捕获功能,捕捉该按键再次按下时的精确时间,并将该时间显示在液晶显示屏上。【实验步骤】内容1:看门狗定时器产生方波信号1、建立新工程,并命名为lab4_1。2、在新建工程的编辑窗口输入如下代码:#include void main(void) WDTCTL = WDTPW+WDTCNTCL+WDTSSEL0+WDTIS_5; / 看门狗定时器工作在看门狗模式,定时1S,选择ACLK作为参考时钟 P1DIR |= 0x01; / 设置端口为输出 P1OUT = 0x01; / 反转端口状态 _bis_SR_register(LPM3_bits
11、+ GIE); / 进入低功耗模式3,并启用中断3、编译、调试并下载程序到开发板。4、运行程序,用示波器观察口的输出波形。内容2:用定时器产生特定占空比的PWM信号1、建立新工程,步骤同上,并命名为lab4_2。2、在新建工程的编辑窗口输入如下代码:#include void main(void) WDTCTL = WDTPW + WDTHOLD; / 关闭看门狗 P1DIR |= BIT2+BIT3; / 和设为输出 P1SEL |= BIT2+BIT3; / 和引脚功能选为定时器输出 TA0CCR0 = 512-1; / PWM周期定义 TA0CCTL1 = OUTMOD_7; / CCR
12、1比较输出模式7:复位/置位 TA0CCR1 = 384; / CCR1 PWM 占空比定义 TA0CCTL2 = OUTMOD_7; / CCR2 比较输出模式7:复位/置位 TA0CCR2 = 128; / CCR2 PWM 占空比定义 TA0CTL = TASSEL_1 + MC_1 + TACLR; / ACLK,增计数模式,清除TAR计数器 _bis_SR_register(LPM3_bits); / 进入LPM33、编译、调试并下载程序到开发板。4、运行程序,用示波器观察、口的输出波形。内容3:用定时器的捕获功能捕捉开发板上按键按下的精确时间。1、将单片机、独立键盘和MSP430G
13、2553 Launch Pad仿真器部分用杜邦线连接起来。2、导入工程“Lcd_and_Key”,并在此基础上添加Timer的相关文件:和。 文件如下:/*Copyright(c)* 东北林业大学机电工程学院* 3+1 创新实验室* 文件信息-*文 件 名: *创 建 人: 刘 毅*最后修改日期: 2014年11月13日*描 述:*-历史版本信息-* 创 建 人: 刘 毅* 版 本: * 日 期: 2014年11月13日* 描 述: 原始版本*/#include #include #include #include int pressent_time; /定义当前时间/*函 数 名:TA1_I
14、nit()功 能:对TimerA1进行初始化入 口 参 数:返 回 值:*/void TA1_Init() P1DIR &= BIT7; P1SEL |= BIT7; /将引脚配置为定时器捕获输入 P1OUT |= BIT7; P1REN |=BIT7; /设置为内部上拉 TA1CTL = TASSEL_1 + ID_3;/TA1主计数器时钟选择ACLK,8分频 /TA1EX0 = TAIDEX_7; /分频扩展,8分频,timer clock = 32768/8/8=512Hz /最大定时时间:65526/512=128s TA1CCTL0 = CM1 + SCS + CAP + CCIE;
15、/CCR0工作于捕获模式,下降沿触发/*函 数 名:TA1_Start()功 能:启动TimerA1入 口 参 数:返 回 值:*/void TA1_Start() TA1CTL |= MC_2 + TACLR;/清除TAR,选择连续计数模式/*函 数 名:TimerA1中断服务子程序功 能:读取捕获值入 口 参 数:返 回 值:*/#pragma vector = TIMER0_A1_VECTOR_interrupt void TIMER0_A1_ISR(void) /char str80; pressent_time = (TA1CCR0+1)/512;/捕获当前时间,单位ms LCD_S
16、howNum(32,16,pressent_time,3); /sprintf(str,The perssent is: %d,pressent_time); /LCD_ShowString(32,16,str); _delay_cycles(300000); TA1CCTL0 &= CCIFG; /清除中断标志位文件如下:/*Copyright(c)* 东北林业大学机电工程学院* 3+1 创新实验室* 文件信息-*文 件 名: *创 建 人: 刘 毅*最后修改日期: 2014年11月13日*描 述:*-历史版本信息-* 创 建 人: 刘 毅* 版 本: * 日 期: 2014年11月13日*
17、 描 述: 原始版本*/#ifndef TIMER_H_#define TIMER_H_extern void TA1_Init();extern void TA1_Start();#endif /* TIMER_H_ */3、在文件的主函数中调用Timer相关函数。void main(void)WDTCTL = WDTPW + WDTHOLD; / 关闭开门狗 TA1_Init(); TA1_Start(); _bis_SR_register(GIE); while(1) 4、编译、调试并下载程序到开发板。5、运行程序,按下按键,观察液晶屏上捕获到的时间值。【思考与分析】1、利用定时器TA0
18、实现开发板上的第一个LED灯以200ms间隔闪烁,同时利用定时器TA2实现液晶屏上的一个两位数以59s循环计时。2、试利用MSP430的定时器捕获功能做一个频率计。实验五 AD/DA实验【实验目的】1、了解AD的工作原理;2、熟悉ADC12的4种转换模式;3、掌握MSP430F5529的ADC12基本使用方法。4、掌握MSP430F6638的DAC的基本使用方法。【实验仪器】1、开发板一套;2、键盘接口一块,液晶屏一块;3、PC机操作系统Windows XP或Windows 7,集成开发环境。【实验原理】 模数转换器的作用是把从传感器采集到的连续变化的模拟电压信号转换为单片机可识别的数字信号。
19、在转换的过程中,数字输出代码与模拟输入电压之间的关系如图5-1所示。图5-1 数字输出代码与模拟输入电压之间的关系 数字量的计算方法:ADC内核一般要使用两个参考电压VR+和VR-,一般这两个电压可以是用户接入或者是使用内部参考电压。VR+是定义的转换最大值,VR-则是转换的最小值。 以12位分辨率为例。 Vin =VR+ ADC12输出满量程值0x0FFF; Vin =VR- ADC12输出0; VR-VinVR+ ADC12的转换结果满足如下公式: NADC = 4095 * (Vin- VR-)/(VR+ - VR-)【实验内容】1、利用开发板上的齿轮电位器进行采样,并将采样得到的模拟电
20、压转换为数字量,在液晶屏上显示出来,并同时显示所采样的模拟电压值。2、利用A10通道采样内部温度传感器,并将采样的数值转化为摄氏和华氏温度,分别在液晶屏上显示出来。3、试编写程序,从MSP430F6638单片机的DA引脚输出一个正弦波。【实验步骤】内容1:用电位器采样模拟电压并显示1、导入工程“Lcd_and_Key”,改写程序,将开发板与键盘接口连接起来,将原程序中的P1口改写为P7口。2、并在此基础上添加ADC12的相关文件:和。 文件如下:/*Copyright(c)* 东北林业大学机电工程学院* 3+1 创新实验室* 文件信息-*文 件 名: *创 建 人: 刘 毅*最后修改日期: 2
21、014年11月13日*描 述:*-历史版本信息-* 创 建 人: 刘 毅* 版 本: * 日 期: 2014年11月13日* 描 述: 原始版本*/#include #include #include #include /*函 数 名:ADC_Init()功 能:ADC12初始化入 口参 数:返 回 值:*/void ADC_Init() volatile unsigned int i; P6SEL |= BIT5; / 将引脚设为ADC输入功能 ADC12CTL0 = ADC12ON+ADC12SHT02+ADC12MSC; / 打开ADC12,设置采样间隔,序列采样 ADC12CTL1 = ADC12SHP+ ADC12CONSEQ_2 + ADC12SSEL_1 + ADC12CSTARTADD_5;/ 采样保持触发信号选择采样定时器,设置单通道多次转换模式,时钟源选择ACLK,ADC转换开始地址ADC12MEM5 ADC12MCTL5 |= ADC12SREF_0 + ADC12INCH_5; / Vr+=AVcc ,Vr-=AVss,输入通道5 ADC12IE = BIT5; /使能ADC中断 for ( i=0; i= 0x7ff) / ADC12MEM = A0
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1