东南大学MSP实验报告第三四次解析Word格式文档下载.docx
《东南大学MSP实验报告第三四次解析Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《东南大学MSP实验报告第三四次解析Word格式文档下载.docx(18页珍藏版)》请在冰豆网上搜索。
![东南大学MSP实验报告第三四次解析Word格式文档下载.docx](https://file1.bdocx.com/fileroot1/2022-10/17/30c17c12-7fe8-4e5e-9c67-cfc34cc9a54f/30c17c12-7fe8-4e5e-9c67-cfc34cc9a54f1.gif)
(2)认识学习PWM波形的作用及原理。
2)实验要求
编写程序输出1s周期的PWM波形,产生两路PWM波形从引脚P1.2和P1.3分别输出。
CCR0中的值定义了PWM信号的周期,CCR1,CCR2中的值定义了PWM信号的占空比。
定时使用32.768KHz的ACLK作为输入时钟源,P1.2上的占空比为75%,P1.3上的占空比为25%。
二、实验原理
1)Timer_A定时器模块框图如图3-1所示。
由图3-1可知,Timer_A模块可以有三种时钟源输入。
分别是ACLK,SMCLK,TAxCLK。
时钟源的选择通过TASSEL信号来完成。
被选择的时钟源可以直接送给TIMER模块,或者通过ID信号进行2,4,8分频。
选择的时钟信号还可以通过TAIDEX信号进一步做2,3,4,5,6,7或者8分频。
当TACLK信号被设置的时候,TIMER的时钟分频逻辑被复位。
图3-1Timer_A模块框图
2)TimerA控制寄存器TA0CTL详细定义如图3-2所示。
图3-2TimerA控制寄存器TA0CTL
3)定时器中断的中断向量中包含一个独立中断和若干个共源中断,Timer_A模块的中断分类如图3-3所示。
图3-3Timer_A模块的中断向量分类图
1)独立中断源的中断处理
TA0CCTL0=CCIE;
//CCR0中断使能
#pargmavector=TIMER0_A0_VECTOR//中断向量定义,可查询头文件得到
__interruptvoidTIMER0_A0_ISR(void)
{
//添加中断处理代码
}
2)共源中断向量寄存器TAxIV
图3-4共源中断向量寄存器TAxIV
共源中断程序switch处理方式:
#pragmavector=TIMER0_A0_VECTOR//共源中断入口
switch(__even_in_range(TA0IV,14))//共源中断处理
{
case0:
fun_no();
break;
//Nointerrupt
case2:
fun_CCR1();
//CCR1interrupt
case4:
fun_CCR2();
//CCR2interrupt
case6:
fun_CCR3();
//CCR3interrupt
case8:
fun_CCR4();
//CCR4interrupt
case10:
fun_CCR5();
//CCR5interrupt
case12:
fun_CCR6();
//CCR6interrupt
case14:
fun_overflow();
//overflow
default:
fun_default();
//default
}
3)PWM原理PWM技术的三个要素,具体如图3-5所示,PWM频率计算见图3-6。
(1)Frequency时钟频率
(2)Dutycycle占空比
(3)Amplitude信号幅度
图3-5PWM计数三要素示意图
图3-6PWM频率计算示意图
4)实验箱I/O硬件电路如图3-7所示。
图3-7实验箱I/O口P1的硬件电路图
三、实验方案与实验步骤
四、实验设备与器材配置
MSP430F6638,数据线,电脑。
五、实验记录
设置p1.2和p1.3为输出,并且把这两个端口接上示波器观察现象。
P1.2端口输出的是占空比为75%的PWM波形.
P1.3端口输出的是占空比为25%的PWM波形。
六、实验总结
本次试验我学会了利用定时器timerA输出pwm的波形,主要的工作就是设置寄存器计数值。
通过更改控制寄存器能够使用不同的模块,这对今后的程序设计是很重要的启发
七、思考题或讨论题
(1)430时钟系统产生的ACLK、MCLK和SMCLK各自用于什么场合?
系统复位时三种时钟输出的默认值为多少?
ACLK为低速时钟,主要为片内一些低速设备提供低速时钟。
MCLK一般为CPU提供运行时钟,但是也可以用于其他高速模块(如定时器和数模转换模块)。
SMCLK为高速时钟,主要为片内一些高速外设提供高速时钟。
(2)MSP430F6638有哪些定时器模块?
其中Timer_A0有多少捕获/比较器?
三个Timer_A,一个Timer_B。
Timer_A0有5个捕获/比较器。
(3)定时器有哪几种工作模式?
各种工作模式的特点和定时周期如何计算?
其最大定时周期分别是多少?
1)4种,通过设定MC1,MC2实现。
00:
停止模式:
定时器停止
01:
增计数模式:
定时器重复从0计数到TAxCCR0
10:
连续计数模式:
定时器重复从0计数到0FFFFh
11:
增\减计数模式:
定时器重复从0计数到TAxCCR0,再减计算到0
2)特点如上。
定时周期取决于所选择的时钟,周期为计数最大值除以时钟频率。
最大定时周期:
(TAxCCR0+1)/时钟源。
连续奇数:
10000h/时钟源
增减计数:
(2*TAxCCR0+1)/时钟源
(4)PWM控制技术主要运用在哪些场合?
如何根据指定的PWM定时周期和占空比来计算计数周期?
电机驱动控制转速。
定时周期乘以占空比。
八、附上源代码
#include<
msp430f6638.h>
voidmain(void)
WDTCTL=WDTPW+WDTHOLD;
//关闭看门狗
UCSCTL6&
=~XCAP_3;
//配置内接电容值
TA0CCR0=512-1;
//PWM周期
TA0CCTL1=OUTMOD_7;
//复位/置位输出方式
TA0CCR1=384;
//占空比384/512=75%
TA0CCTL2=OUTMOD_7;
TA0CCR2=128;
//占空比128/512=25%
P1DIR|=BIT2+BIT3;
//P1.2和P1.3输出
P1SEL|=BIT2+BIT3;
//P1.2和P1.3设置为第二功能:
TA0.1和TA0.2
TA0CTL|=TASSEL_1+MC_1;
//ACLK,Timer_A增计数模式
for(;
;
)
{
_BIS_SR(LPM3_bits);
//进入LPM3
_NOP();
}
第4次实验
实验四:
LED数码管的使用
1)实验目的
(1)了解TM1638芯片工作原理与使用方法;
(2)掌握LED数码管的动态显示控制。
2)实验要求
通过MSP430F6638端口控制TM1638芯片以实现LED数码管显示,例如用数码管显示自己八位学号。
(1)TM1638控制芯片
TM1638是带键盘扫描接口的LED驱动控制专用电路,内部集成有MCU数字接口、数据锁存器、LED高压驱动、键盘扫描等电路。
主要应用于冰箱、空调、家庭影院等产品的高段位显示屏驱动。
TM1638原理图如4-1所示,其中SEG_DIO,SEG_CLK,SEG_STB与MSP430芯片中P3.5,P3.4,P3.2三个IO口相连,仅占用3个端口即可完成数据的输入输出,大大节约单片机的IO口和开发板的空间,降低了布线的难度。
TM1638与MSP430实验箱连接示意图如图4-1所示,实验开发板LED数码管对应关系见图4-2。
图4-1MSP430与TM1638连接示意图
图4-2实验开发板LED数码管对应关系图
TM1638的各引脚定义如图4-3所示。
图4-3TM1638各引脚定义
(2)TM1638接收数据
串行数据传输格式:
读取和接收1个BIT都在时钟的上升沿操作。
数据接收(写数据)时序如图4-4所示。
图4-4TM1638数据接收时序图
以下写数据代码仅作为参考。
(更多关于TM1638的程序请参考给出的TM1638.h和TM1638.c两个文件以及芯片说明书)
voidTM1638_Write(unsignedcharDATA)//写数据函数
unsignedchari;
DIO_OUT;
//将DIO配置为输出状态
for(i=0;
i<
8;
i++)
{
CLK_low;
if(DATA&
0x01)
{
DIO_high;
else
DIO_low;
CLK_high;
DATA>
>
=1;
//数据左移一位
(3)LED数码管显示
图4-5共阴极数码管连接图
图4-5给出一个共阴数码管的连接示意图,如果让该数码管显示“0”,那你需要在GRID1为低电平的时候让SEG1,SEG2,SEG3,SEG4,SEG5,SEG6为高电平,SEG7为低电平,即在00H地址单元里面写数据3FH就可以让数码管显示“0”。
共阴极LED数码管编码如表4-1所示。
表4-1共阴极LED数码管编码表
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
3F
06
5B
4F
66
6D
7D
07
7F
6F
77
7C
39
5E
79
71
(4)开发板上LED地址
开发板共有8个LED数码管,从左至右其地址分别为:
08h,0ah,0ch,0eh,00h,02h,04h,06h。
例如:
constuint8_tDisp[8]={0,8,0,1,2,1,4,0};
//要显示的学号
constuint8_tNum[16]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71};
//段码
constuint8_tAddr[8]={08h,0ah,0ch,0eh,0