东南大学MCU第三四次实验.docx
- 文档编号:8700820
- 上传时间:2023-02-01
- 格式:DOCX
- 页数:13
- 大小:1.01MB
东南大学MCU第三四次实验.docx
《东南大学MCU第三四次实验.docx》由会员分享,可在线阅读,更多相关《东南大学MCU第三四次实验.docx(13页珍藏版)》请在冰豆网上搜索。
东南大学MCU第三四次实验
东南大学自动化学院
实验报告
课程名称:
MCU技术及课程设计
第二次实验
实验三:
定时器输出PWM波形
实验四:
LED数码管的使用
院(系):
自动化专业:
自动化
姓名:
学号:
实验室:
实验组别:
同组人员:
实验时间:
2015年5月7日
评定成绩:
审阅教师:
实验三:
定时器输出PWM波形
一、实验目的与要求
1.实验目的
(1)学习MP430单片机的时钟原理和定时器使用方法。
(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//共源中断入口
__interruptvoidTIMER0_A0_ISR(void)
{
switch(__even_in_range(TA0IV,14))//共源中断处理
{
case0:
fun_no();break;//Nointerrupt
case2:
fun_CCR1();break;//CCR1interrupt
case4:
fun_CCR2();break;//CCR2interrupt
case6:
fun_CCR3();break;//CCR3interrupt
case8:
fun_CCR4();break;//CCR4interrupt
case10:
fun_CCR5();break;//CCR5interrupt
case12:
fun_CCR6();break;//CCR6interrupt
case14:
fun_overflow();break;//overflow
default:
fun_default();break;//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
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。
七、实验总结
实验开始并未出现矩形波,后经检查发现是示波器的问题,更换示波器后波形正常。
实验四:
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数码管编码表
0
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.将PC与开发板相连;
2.建立CCS工程;
3.选择
对该工程进行编译链接,生成.out文件。
然后选择
,将程序下载到实验板中。
程序下载完毕之后,可以选择
全速运行程序,也可以选择
单步调试程序,选择F3查看具体函数。
也可以程序下载之后,按下
,软件界面恢复到原编辑程序的画面。
再按下实验板的复位键,运行程序。
四、实验现象
按下按键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]]);
}
}
}
//进阶
voidmain(void){
WDTCTL=WDTPW+WDTHOLD;//Stopwatchdogtimer
P3DIR|=BIT2+BIT4+BIT5;
init_TM1638();
Write_DATA(Addr[0],Num[Disp1[0]]);
unsignedchari;
unsignedcharstu=1;
P4REN|=BIT2+BIT3;
P4OUT|=BIT2+BIT3;
while
(1)
{
if((P4IN&BIT2)==0)//没有按下
stu=1;
if((P4IN&BIT3)==0)
stu=2;
for(i=0;i<8;i++)
{
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 第三 四次 实验