您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 咨询培训 > 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:#includemsp430f5529.hvoidmain(){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中断服务程序区#pragmavector=TIMER0_A0_VECTOR__interruptvoidTimer_A(void){P1OUT^=BIT3;//P1.0取反输出}实验现象:实验开始后,实验板上LED6亮灭闪烁,间隔为1s。程序2:#includemsp430f5529.hvoidmain(void){WDTCTL=WDTPW+WDTHOLD;//关狗P1DIR|=BIT1;//P1.1设置为输出P1SEL|=BIT1;//P1.1输出使能TA0CCR0=60000;//PWMPeriodTA0CCTL0=OUTMOD_4;//CCR1模式4TA0CCR1=30000;//CCR1PWMdutycycleTA0CTL=TASSEL_1+MC_1+TACLR;//ACLK,upmode,clearTAR__bis_SR_register(LPM3_bits);//EnterLPM3__no_operation();//Fordebugger}实验现象:实验开始后,实验板上LED4亮灭闪烁,间隔为1s。程序3:#includemsp430f5529.hvoidmain(void){WDTCTL=WDTPW+WDTHOLD;//关狗P1DIR|=BIT2;//P1.2输出P1SEL|=BIT2;//P1.2输出使能TA0CTL=TASSEL_1+MC_3+TACLR;//ACLK,upmode,clearTARTA0CCR0=49152;//PWMPeriodTA0CCTL1=OUTMOD_3;//CCR1reset/setTA0CCR1=16384;//CCR1PWMdutycycle__bis_SR_register(LPM3_bits);//EnterLPM3__no_operation();//Fordebugger}实验现象:实验开始后,实验板上LED5亮灭闪烁,其中亮2s,灭1s,循环闪烁。程序4:#includemsp430f5529.h#includeHAL_Dogs102x6.h#includestdint.hintnumber1=0;//定义全局变量intnumber2=0;voidmain(){WDTCTL=WDTPW+WDTHOLD;//关闭看门狗P1DIR|=BIT3;Dogs102x6_init();//LCD初始化Dogs102x6_backlightInit();//背光初始化Dogs102x6_setBacklight(50);//设置LCD背光亮度Dogs102x6_clearAllPixelsOn();//中断函数,使液晶返回正常工作Dogs102x6_clearScreen();//清屏chars1[]=0;chars2[]=3;Dogs102x6_clearScreen();Dogs102x6_stringDraw(1,14,s1,0);//显示个位数Dogs102x6_stringDraw(1,4,s2,0);//显示十位数TA0CCTL0=CCIE;TA0CCR0=32768;TA0CTL=TASSEL_1+MC_1+TACLR;_BIS_SR(LPM0_bits+GIE);}//定时器A中断服务程序区#pragmavector=TIMER0_A0_VECTOR__interruptvoidTimer_A(void){if(number2==3){number2==3;Dogs102x6_charDraw(1,14,48,0);Dogs102x6_charDraw(1,4,48,0);}else{Dogs102x6_clearScreen();Dogs102x6_charDraw(1,14,57-number1,0);Dogs102x6_charDraw(1,4,50-number2,0);number1++;if(number1==10){number1=0;Dogs102x6_charDraw(1,4,50-number2,0);number2++;}if(number2==3){Dogs102x6_clearScreen();}}}实验现象:程序执行时,液晶显示模块上显示30s倒计时,每秒变化一次,直至为00。程序结束。实验结论本次实验主要是学习MPS430F5529片内集成的定时器A的使用,掌握计数器的补捕获比较模块的使用,同时进一步熟悉液晶显示模块的使用。
本文标题:MSP430单片机定时器实验报告
链接地址:https://www.777doc.com/doc-5602502 .html