OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 6114|回复: 7

【记录开源】DIY带拖尾流水灯庆元旦

[复制链接]

51

主题

1455

帖子

3

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2613
金钱
2613
注册时间
2011-1-25
在线时间
176 小时
发表于 2013-12-31 11:02:01 | 显示全部楼层 |阅读模式
写了一个只需要一个定时器和GPIO即可实现流水灯,方便大家DIY喜庆物品。
图在楼下。。

核心源码部分:
#define LedDelay 20
#define LedBright 200
#define LedChangeSpeed 3

#define PwmLed0 PwmLed[0] = LedBright
#define PwmLed1 PwmLed[1] = LedBright
#define PwmLed2 PwmLed[2] = LedBright
#define PwmLed3 PwmLed[3] = LedBright
#define PwmLed4 PwmLed[4] = LedBright
#define PwmLed5 PwmLed[5] = LedBright
#define PwmLed6 PwmLed[6] = LedBright
#define PwmLed7 PwmLed[7] = LedBright
#define PwmLed8 PwmLed[8] = LedBright
#define PwmLed9 PwmLed[9] = LedBright
#define PwmLed10 PwmLed[10] = LedBright
#define PwmLed11 PwmLed[11] = LedBright
#define PwmLed12 PwmLed[12] = LedBright
#define PwmLed13 PwmLed[13] = LedBright
#define PwmLed14 PwmLed[14] = LedBright
#define PwmLed15 PwmLed[15] = LedBright
#define PwmLed16 PwmLed[16] = LedBright
#define PwmLed17 PwmLed[17] = LedBright
#define PwmLed18 PwmLed[18] = LedBright
#define PwmLed19 PwmLed[19] = LedBright
#define PwmLed20 PwmLed[20] = LedBright
#define PwmLed21 PwmLed[21] = LedBright
#define PwmLed22 PwmLed[22] = LedBright
#define PwmLed23 PwmLed[23] = LedBright


u16 PwmLed[24]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};


void Delay(u16 nms);
void SimplifyLed(u32 simplify);//?ò????·¨



int main(void)
{
SystemInit();
delay_init(72);     //???±??????
NVIC_Configuration();
  LED_Init();
Time2_Init(2);
while(1)
{
SimplifyLed(0x00800001);
Delay(LedDelay);
SimplifyLed(0x00400002);
Delay(LedDelay);
SimplifyLed(0x00200004);
Delay(LedDelay);
SimplifyLed(0x00100008);
Delay(LedDelay);
SimplifyLed(0x00080010);
Delay(LedDelay);
SimplifyLed(0x00040020);
Delay(LedDelay);
SimplifyLed(0x00020040);
Delay(LedDelay);
SimplifyLed(0x00010080);
Delay(LedDelay);
SimplifyLed(0x00008100);
Delay(LedDelay);
SimplifyLed(0x00004200);
Delay(LedDelay);
SimplifyLed(0x00002400);
Delay(LedDelay);
SimplifyLed(0x00001800);
Delay(LedDelay);
SimplifyLed(0x00002400);
Delay(LedDelay);
SimplifyLed(0x00004200);
Delay(LedDelay);
SimplifyLed(0x00008100);
Delay(LedDelay);
SimplifyLed(0x00010080);
Delay(LedDelay);
SimplifyLed(0x00020040);
Delay(LedDelay);
SimplifyLed(0x00040020);
Delay(LedDelay);
SimplifyLed(0x00080010);
Delay(LedDelay);
SimplifyLed(0x00100008);
Delay(LedDelay);
SimplifyLed(0x00200004);
Delay(LedDelay);
SimplifyLed(0x00400002);
Delay(LedDelay);
SimplifyLed(0x00800001);
Delay(LedDelay*16);
}
}

void SimplifyLed(u32 simplify)
{
if(simplify&0x00000001) PwmLed0;
if(simplify&0x00000002) PwmLed1;
if(simplify&0x00000004) PwmLed2;
if(simplify&0x00000008) PwmLed3;
if(simplify&0x00000010) PwmLed4;
if(simplify&0x00000020) PwmLed5;
if(simplify&0x00000040) PwmLed6;
if(simplify&0x00000080) PwmLed7;
if(simplify&0x00000100) PwmLed8;
if(simplify&0x00000200) PwmLed9;
if(simplify&0x00000400) PwmLed10;
if(simplify&0x00000800) PwmLed11;
if(simplify&0x00001000) PwmLed12;
if(simplify&0x00002000) PwmLed13;
if(simplify&0x00004000) PwmLed14;
if(simplify&0x00008000) PwmLed15;
if(simplify&0x00010000) PwmLed16;
if(simplify&0x00020000) PwmLed17;
if(simplify&0x00040000) PwmLed18;
if(simplify&0x00080000) PwmLed19;
if(simplify&0x00100000) PwmLed20;
if(simplify&0x00200000) PwmLed21;
if(simplify&0x00400000) PwmLed22;
if(simplify&0x00800000) PwmLed23;
}




void TIM2_IRQHandler(void)   //TIM2????
{
TIM_ClearITPendingBit(TIM2,TIM_IT_Update);
if(PwmLed[0])LEDS0=0;
delay_us(PwmLed[0]);
LEDS0=1;
if(PwmLed[0]>0)PwmLed[0]--;
if(PwmLed[1])LEDS1=0;
delay_us(PwmLed[1]);
LEDS1=1;
if(PwmLed[1]>0)PwmLed[1]--;
if(PwmLed[2])LEDS2=0;
delay_us(PwmLed[2]);
LEDS2=1;
if(PwmLed[2]>0)PwmLed[2]--;
if(PwmLed[3])LEDS3=0;
delay_us(PwmLed[3]);
LEDS3=1;
if(PwmLed[3]>0)PwmLed[3]--;
if(PwmLed[4])LEDS4=0;
delay_us(PwmLed[4]);
LEDS4=1;
if(PwmLed[4]>0)PwmLed[4]--;
if(PwmLed[5])LEDS5=0;
delay_us(PwmLed[5]);
LEDS5=1;
if(PwmLed[5]>0)PwmLed[5]--;
if(PwmLed[6])LEDS6=0;
delay_us(PwmLed[6]);
LEDS6=1;
if(PwmLed[6]>0)PwmLed[6]--;

if(PwmLed[7])LEDS7=0;
delay_us(PwmLed[7]);
LEDS7=1;
if(PwmLed[7]>0)PwmLed[7]--;
if(PwmLed[8])LEDS8=0;
delay_us(PwmLed[8]);
LEDS8=1;
if(PwmLed[8]>0)PwmLed[8]--;
if(PwmLed[9])LEDS9=0;
delay_us(PwmLed[9]);
LEDS9=1;
if(PwmLed[9]>0)PwmLed[9]--;
if(PwmLed[10])LEDS10=0;
delay_us(PwmLed[10]);
LEDS10=1;
if(PwmLed[10]>0)PwmLed[10]--;
if(PwmLed[11])LEDS11=0;
delay_us(PwmLed[11]);
LEDS11=1;
if(PwmLed[11]>0)PwmLed[11]--;
if(PwmLed[12])LEDS12=0;
delay_us(PwmLed[12]);
LEDS12=1;
if(PwmLed[12]>0)PwmLed[12]--;
if(PwmLed[13])LEDS13=0;
delay_us(PwmLed[13]);
LEDS13=1;
if(PwmLed[13]>0)PwmLed[13]--;
if(PwmLed[14])LEDS14=0;
delay_us(PwmLed[14]);
LEDS14=1;
if(PwmLed[14]>0)PwmLed[14]--;
if(PwmLed[15])LEDS15=0;
delay_us(PwmLed[15]);
LEDS15=1;
if(PwmLed[15]>0)PwmLed[15]--;

if(PwmLed[16])LEDS16=0;
delay_us(PwmLed[16]);
LEDS16=1;
if(PwmLed[16]>0)PwmLed[16]--;

if(PwmLed[17])LEDS17=0;
delay_us(PwmLed[17]);
LEDS17=1;
if(PwmLed[17]>0)PwmLed[17]--;

if(PwmLed[18])LEDS18=0;
delay_us(PwmLed[18]);
LEDS18=1;
if(PwmLed[18]>0)PwmLed[18]--;

if(PwmLed[19])LEDS19=0;
delay_us(PwmLed[19]);
LEDS19=1;
if(PwmLed[19]>0)PwmLed[19]--;

if(PwmLed[20])LEDS20=0;
delay_us(PwmLed[20]);
LEDS20=1;
if(PwmLed[20]>0)PwmLed[20]--;

if(PwmLed[21])LEDS21=0;
delay_us(PwmLed[21]);
LEDS21=1;
if(PwmLed[21]>0)PwmLed[21]--;

if(PwmLed[22])LEDS22=0;
delay_us(PwmLed[22]);
LEDS22=1;
if(PwmLed[22]>0)PwmLed[22]--;

if(PwmLed[23])LEDS23=0;
delay_us(PwmLed[23]);
LEDS23=1;
if(PwmLed[23]>0)PwmLed[23]--;


}
void Delay(u16 nms)
{
u16 i=0;
while(nms--)
{
i=7000;
while(i--);
}
}


日历要换新了,祝大家新一年身体健康,学习进步,事业有成。


一直努力就很好。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

93

主题

746

帖子

1

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1850
金钱
1850
注册时间
2012-9-16
在线时间
286 小时
发表于 2013-12-31 11:24:16 | 显示全部楼层
上传到别的地方,给个链接也好啊!
纵浪大化中,不喜亦不惧;应尽便须尽,无复独多虑!
回复 支持 反对

使用道具 举报

120

主题

7878

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12012
金钱
12012
注册时间
2013-9-10
在线时间
427 小时
发表于 2013-12-31 11:26:31 | 显示全部楼层
强烈要求上图片。。。
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复 支持 反对

使用道具 举报

38

主题

2061

帖子

6

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3273
金钱
3273
注册时间
2012-1-16
在线时间
37 小时
发表于 2013-12-31 12:57:28 | 显示全部楼层
我刚上传过图片,你再试试。
站在巨人的肩膀上不断的前进。。。
回复 支持 反对

使用道具 举报

51

主题

1455

帖子

3

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2613
金钱
2613
注册时间
2011-1-25
在线时间
176 小时
 楼主| 发表于 2013-12-31 13:14:40 | 显示全部楼层


一直努力就很好。
回复 支持 反对

使用道具 举报

51

主题

1455

帖子

3

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2613
金钱
2613
注册时间
2011-1-25
在线时间
176 小时
 楼主| 发表于 2013-12-31 13:16:02 | 显示全部楼层
回复【2楼】象牙塔:
---------------------------------
回复【3楼】Badu_Space:
---------------------------------
回复【5楼】qq942266575:
---------------------------------
OK啦。
一直努力就很好。
回复 支持 反对

使用道具 举报

27

主题

774

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1473
金钱
1473
注册时间
2013-4-12
在线时间
77 小时
发表于 2013-12-31 13:18:41 | 显示全部楼层
STM32跑流水灯这很是浪费啊
简单是多么的快乐,而快乐就因你而简单!微芯动力LTKKS
回复 支持 反对

使用道具 举报

51

主题

1455

帖子

3

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2613
金钱
2613
注册时间
2011-1-25
在线时间
176 小时
 楼主| 发表于 2013-12-31 13:29:30 | 显示全部楼层
回复【7楼】LTKKS:
---------------------------------
我只是拿它做,其他单片机只要提供个TIME就可以了。
一直努力就很好。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-11 07:20

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表