东南大学MCU第三四次实验文档格式.docx
- 文档编号:21837002
- 上传时间:2023-02-01
- 格式:DOCX
- 页数:13
- 大小:1.01MB
东南大学MCU第三四次实验文档格式.docx
《东南大学MCU第三四次实验文档格式.docx》由会员分享,可在线阅读,更多相关《东南大学MCU第三四次实验文档格式.docx(13页珍藏版)》请在冰豆网上搜索。
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的硬件电路图
三、实验步骤
1.将PC与开发板相连;
2.建立CCS工程;
3.选择
对该工程进行编译链接,生成.out文件。
然后选择
,将程序下载到实验板中。
程序下载完毕之后,可以选择
全速运行程序,也可以选择
单步调试程序,选择F3查看具体函数。
也可以程序下载之后,按下
,软件界面恢复到原编辑程序的画面。
再按下实验板的复位键,运行程序。
4.将示波器输入端分别接开发板的P1.2和P1.3端口查看输出波形。
四、实验现象
P1.2输出75%的PWM波形,P1.3输出25%的PWM波形。
五、实验代码
#include<
msp430f6638.h>
voidmain(void)
WDTCTL=WDTPW+WDTHOLD;
P1DIR|=BIT2+BIT3;
P1SEL|=BIT2+BIT3;
TA0CCR0=32768;
TA0CCTL1=OUTMOD_7;
TA0CCR1=24576;
//75%
TA0CCTL2=OUTMOD_7;
TA0CCR2=8192;
//25%
TA0CTL=TASSEL0+MC_1+TACLR;
LPM3;
六、预习思考
(1)430时钟系统产生的ACLK、MCLK和SMCLK各自用于什么场合?
系统复位时三种时钟输出的默认值为多少?
答:
ACLK可由软件选作各个外设模块的时钟信号,一般用于低速外设模块;
MCLK主要用于CPU和系统;
SMCLK可由软件选作各个外设模块的时钟信号,主要用于高速外设模块。
系统复位时ACLK的频率典型值是32768Hz,即32KHz,MCLK和SMCLK的频率在0.8MHz~1.5MHz,即819.2KHz~1536KHz。
(2)MSP430F6638有哪些定时器模块?
其中Timer_A0有多少捕获/比较器?
有看门狗定时器(WDT),基本定时器(Basic
timer1),定时器A(Timer_A),定时器B(Timer_B)等。
即Timer_A0有五个捕获/比较器。
(3)定时器有哪几种工作模式?
各种工作模式的特点和定时周期如何计算?
其最大定时周期分别是多少?
定时器工作模式有:
停止模式,增计数模式,减计数模式,增减计数模式。
停止模式主要是使定时器停止、暂停。
增计数模式是从0开始计数,直到设定的一个值ccr0,超过就回到0,此时会产生一个定时中断,时间就是ccr0的时间,减模式就是设定一个初值ccr0,计数器会一直减,直到减到0,又将产生一个定时中断,时间为ccr0。
增减计数模式,即计数器从0开始计数,直到ccr0,又开始减计数,直到回到0,此时产生一个中断,时间为2倍ccr0。
七、实验总结
实验开始并未出现矩形波,后经检查发现是示波器的问题,更换示波器后波形正常。
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,00h,02h,04h,06h};
//地址
WriteDATA(Addr[0],Num[Disp[0]]);
//最左边的数码管显示第一位学号
(5)ACLK设置
初始化时,需要设置ACLK引脚输出,即
P1DIR|=BIT0;
P1SEL|=BIT0;
按下按键1显示,按下按键2显示。
#include<
#include"
TM1638.h"
constuint8_tDisp1[8]={0,8,0,1,2,2,0,2};
constuint8_tDisp2[8]={0,8,0,1,2,2,0,8};
constuint8_tNum[16]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,
0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71};
constuint8_tAddr[8]={0x08,0X0a,0X0c,0X0e,0X00,0X02,0X04,0X06};
//原始
voidmain(void){
WDTCTL=WDTPW+WDTHOLD;
//Stopwatchdogtimer
P3DIR|=BIT2+BIT4+BIT5;
init_TM1638();
unsignedchari;
while
(1)
for(i=0;
i<
8;
i++)
{
Write_DATA(Addr[i],Num[Disp1[i]]);
}
//进阶
Write_DATA(Addr[0],Num[Disp1[0]]);
unsignedcharstu=1;
P4REN|=BIT2+BIT3;
P4OUT|=BIT2+BIT3;
if((P4IN&
BIT2)==0)//没有按下
stu=1;
BIT3)==0)
stu=2;
for(i=0;
if(stu==1)
{
Write_DATA(Addr[i],Num[Disp1[i]]);
}
elseif(stu==2)
Write_DATA(Addr[i],Num[Disp2[i]]);
//_delay_us
(1);
掌握LED数码管的显示控制,并说明采用TM1638是如何实现段控和位控的。
通过管脚的电平高低来进行设置。
其中,SEG9~SEG10为输出(段),控制段输出,P管开漏输出。
GRID1~GRID8为输出(位),控制位输出,N管开漏输出。
本次实验了解了TM1638芯片工作原理与使用方法,和LED数码管的动态显示控制。
实验程序能够顺利运行。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 东南大学 MCU 第三 四次 实验