完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
1设计跑马灯:应用msp430f5529板子
用定时器控制LED的闪烁间隔,慢流水时亮灭间隔0.5s,快流水时亮灭间隔0.2s,两个按键一个控制流水速度,一个控制流水方向,流水速度分快慢,流水方向分正负,还有单数灯流水和双数灯流水。用电位器控制LED灯的亮灭,当调整电位器的值时,LED的亮灯数变化。 我已经做出来了跑马灯的正流水和负流水和按键变速部分,延时用的delay函数,然后不知道该怎么弄了求大神指教 |
|
相关推荐
12个回答
|
|
不知道怎么用定时器精确定时闪烁间隔
|
|
|
|
也不知道怎么应用ad模块控制
|
|
|
|
定时器可以定成0.1秒,快流水是进去2次才闪灯,慢流水是进去5次才闪烁就行了
|
|
|
|
多谢楼上,用程序怎么写,我那个定时器模块不是很理解
|
|
|
|
#include void main(void) { WDTCTL = WDTPW + WDTHOLD; P1DIR |= 0x01; TA0CCTL0 = CCIE; TA0CCR0 = 50000; TA0CTL = TASSEL_2 + MC_1 + TACLR; // SMCLK, 增计数模式, 清除TAR计数器 __bis_SR_register(LPM0_bits + GIE); // 进入LPM0,使能中断 } #pragma vector=TIMER0_A0_VECTOR __interrupt void TIMER0_A0_ISR(void) { 跑马灯程序 } 这样是能不能实现?那个5000应该改多少合适? |
|
|
|
这个芯片我没用过,你查查手册上应该有写,方法肯定没问题。
|
|
|
|
官方电话国际化的感受到
|
|
|
|
/***********************************************
程序功能:实现流水灯以三种流动方式和四种流动速度 的不同组合而进行点亮"流动" ------------------------------------------------ 测试说明:观察流水灯流动顺序和速度的变化 ************************************************/ #include unsigned int flag,dir,i,j,speed; /****************主函数*****************/ void main( void ) { WDTCTL = WDTPW + WDTHOLD; //关闭看门狗 P1DIR = 0x3e; //设置端口方向 P1OUT = 0x3e; //设置输出高低电平 TA0CTL |= TASSEL_2 + TACLR + ID_3 + MC_1;//设置定时器时钟源为SCMLK,8分频,允许置位,增加计数 TA0CCTL0 = CCIE; //允许使能中断 TA0CCR0 = 50000; //设置定时周期 __bis_SR_register(CPUOFF + GIE); //复位CPUOFF并打开SCMLK,开可屏蔽中断 } /******************************************* 函数名称:Timer_A 功 能:定时器A的中断服务函数,在这里通过标志 控制流水灯的流动方向和流动速度 参 数:无 返回值 :无 ********************************************/ #pragma vector = TIMER0_A0_VECTOR __interrupt void Timer_A(void) { if(flag == 0) { P1OUT = 0x02< } else if(flag == 1) { P1OUT = 0x20>>i; } else if(dir) { P1OUT = 0x02< } else { P1OUT = 0x20>>i; } i++; if(i == 6) { i = 0; dir = ~dir; } j++; if(j == 25) { i = 0; j = 0; flag++; if(flag == 5) { flag = 0; } switch(speed) { case 0: TA0CTL &=~(ID0 + ID1); //将分频位置零,其他位不变 TA0CTL |= ID_3; //将时钟进行分频 break; case 1: TA0CTL &=~(ID0 + ID1); TA0CTL |= ID_3; //8分频 break; case 2: TA0CTL &=~(ID0 + ID1); TA0CTL |= ID_2; //4分频 break; case 3: TA0CTL &=~(ID0 + ID1); TA0CTL |= ID_1; //2分频 break; case 4: TA0CTL &=~(ID0 + ID1); TA0CTL |= ID_0; //1分频 break; default: break; } if(flag != 4) speed++; if(flag == 4) speed = 0; } } 评分
|
||
|
||
SunLeeinfinity 发表于 2014-10-30 14:38 douxie多谢!当初太傻了== |
|
|
|
楼上点赞!!!!
|
|
|
|
用timer中断,可以多中断几次嘛
|
|
|
|
SunLeeinfinity 发表于 2014-10-30 14:38 请问大神——这一个周期是多少时间 |
|
|
|
只有小组成员才能发言,加入小组>>
3029个成员聚集在这个小组
加入小组2917 浏览 1 评论
MSP430FR5994 使用库函数 定时器触发AD问题请教
3579 浏览 2 评论
请问怎么把下面51单片机的代码改成msp430 g2 pocket的代码,还有改下时间变成30秒
2337 浏览 1 评论
4795 浏览 1 评论
2571 浏览 1 评论
1317浏览 3评论
MSP430FR5994 使用库函数 定时器触发AD问题请教
3580浏览 2评论
2917浏览 1评论
1495浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-25 00:44 , Processed in 1.509518 second(s), Total 74, Slave 66 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号