4836|3

324

帖子

0

TA的资源

一粒金砂(高级)

楼主
 

爱心流水灯+电子音乐 [复制链接]

本帖最后由 hjl240 于 2014-2-10 16:07 编辑

很多人都做过爱心流水灯,网上有很多相关的视频,但是具体分享怎么做的却不多。爱心流水灯对于那些比较懂单片机的人来说很容易做,但是对于单片机初学者,对于不怎么懂单片机的人来说还是有一定难度的。对于单片机初学者来说,做一个爱心流水灯是比较好的,因为电路比较简单,对编程来说有不是很复杂,只是有点繁琐。再者,还可以送人,大多数女生都挺喜欢这个的。真是一举两得!对于没接触过单片机的人来说,爱心流水灯简单易做,自己也不需要编程(我会把程序也附上),直接把现成的程序下载上去就行。做一个这样的东西送人,可以给人眼前一亮的感觉,足以体现你的诚意。我觉得比点心形蜡烛要好得多(点蜡烛谁不会呀,缺少一点“技术含量”)。
网上看到很多相关作品,发现大多数作品都喜欢把单片机放在“爱心”的中间,我觉得这样不是很美观,“爱心”区域就放爱心就行了,这样就比较“单纯”了。我觉得也显得更好看了。
这个爱心流水灯是用STC89C52单片机的24个IO口控制24个LED,实现每个LED的随意亮灭。还配有电子音乐播放功能。音乐播放是由MSP430G2553单片机控制的,电路很简单。都是用C语言编程。



第一步购买元件爱心流水灯部分:1. 6mm红色LED(可以再多买几个备用)  24个2.15cm*20cm万用板   2个3.STC89C52单片机   1片4.单片机插座DIP-40    1个5.自锁式开关1个6.30pF 电容 2个7.10uF电解电容 1个8.12M晶振(或者11.0592M晶振)1个9. 三节电池盒  一个10.按键  2个11.1K电阻   24个12.10K上拉电阻 1个13.导线若干  电子音乐部分:1.MSP430G2553 单片机   1个2.1N4001二极管   2个  (或者用ams1117-3.3V稳压芯片)3.10K电阻  1个4.喇叭 一个5.10uF电解电容
第二步准备工具   基本的电子制作工具:         1、电烙铁一个。         2、焊锡丝若干。         3、松香少许,助焊剂也可以。         4、镊子
第三步焊接     第一步,在万用板上排好要焊接的LED     正面图如下:

第二步,在背面焊接上1k限流电阻:在这里采用贴片电阻,占用地方少。焊接好好后的的样子如下:




第三步,就是把所有的正极连起来,如下:




第四步,焊接单片机最小系统。原理图如下: 正面如下:


反面如下:
第五步,将24个led的阴极连接到单片机引脚上(原理图如下)。




第六步:焊接电源,采用双电源供电,usb供电和外接干电池供电。






第七步:焊接msp430g3553(电子音乐部分)。(可选,要是不想要电子音乐,也可以不焊接这处)




  至此,大部分已经焊接完成,最后再焊接两个按键和三个个跳线帽和一个音频接口。其中一个按键的作用是启动流水灯,另一个备用,三个跳线帽其中两个跳线帽可以选择控制两个绿色的led的亮灭(拔掉跳线帽就是是绿色led不发光),另外一个控制喇叭能否发声。下面贴上几幅焊接完成的图片:







为了好看,可以将电路板背面的导线遮挡住,在此处采用再加一个空板子放在下面。




第四步 程序分析
#include"reg52.h"
#include"intrins.h"
#define uint unsigned int
#define uchar unsigned char
uchar f=0;
bit ff=0;
sbit P10=P1^0;
sbit P11=P1^1;
sbit P12=P1^2;
sbit P13=P1^3;
sbit P14=P1^4;
sbit P15=P1^5;
sbit P16=P1^6;
sbit P17=P1^7;
sbit P00=P0^0;
sbit P01=P0^1;
sbit P02=P0^2;
sbit P03=P0^3;
sbit P04=P0^4;
sbit P05=P0^5;
sbit P06=P0^6;
sbit P07=P0^7;
sbit P24=P2^4;
sbit key1=P3^2;
sbit key2=P3^3;
void delay_ms(uint ms)
void offall()//close all led
void onall()//open all led
void ss(uint a)//闪烁 a为闪烁间隔
void jgss(uint a)//间隔闪烁
void bbss(uint a)//半边交替闪烁
void sxss(uint a)//上下交替闪烁
void func1(uint a)//等时流水灯
void func1_1()//等时流水灯
void func2(uint a)//反向等时流水灯
void func2_1()//反向等时流水灯
void func3(uint a)//半双边流水 由上至下
void func3_1()//半双边流水 由上至下
void func4(uint a)//半双边流水 右下至上
void func4_1()//半双边流水 右下至上
void func5(uint a)//正向生长
void func5_11()//正向生长
void func6(uint a)//反向生长
void func6_11()//反向生长
void func5_1(uint a)//两边同时向下生长
void func5_12()//两边同时向下生长
void func6_1(uint a)//两边从下往上同时生长
void func6_12()//两边从下往上同时生长
void func7(uint a)//不亮的灯流水 顺时针
void func7_1()//不亮的灯流水 顺时针
void func8(uint a)//不亮的灯流水 逆时针
void func8_1()//不亮的灯流水 逆时针
void func9(uint a)//正向死亡
void func9_1()//正向死亡
void func10(uint a)//逆向消亡
void func10_1()//逆向消亡
void func12(uint a)//流水灯,留下每4位的第12,3led
void func12_1()//流水灯,留下每4位的第12,3led
void func13(uint a)//自下而上依次填满
void func13_1()//自下而上依次填满
void func14(uint a)//自上而下依次填满
void func14_1()//自上而下依次填满
void func15(uint a)//P0,P1,P2同时循环左移
void func16(uint a)//P0,P1,P2同时循环左移
void func17(uint a)//P0,P1,P2同时左移
void func18(uint a)//P0,P1,P2同时右移
void func19(uint a)//逐个熄灭
void func20(uint a)//逐个变亮
以上只给出了函数名,具体函数见附录。
在这里一共写了20多个变换花样,只要稍加排列组合,便会出现各种各样的花样。下面分析两个子函数。
void func3(uint a)//半双边流水 由上至下
{
       offall();
       P1=0xfe;delay_ms(a);
       P1=0xfd;P0=0x7f;delay_ms(a);
       P1=0xfb;P0=0xbf;delay_ms(a);
       P1=0xf7;P0=0xdf;delay_ms(a);
       P1=0xef;P0=0xef;delay_ms(a);
       P1=0xdf;P0=0xf7;delay_ms(a);
       P1=0xbf;P0=0xfb;delay_ms(a);
       P1=0x7f;P0=0xfd;delay_ms(a);P1=0xff;
       P2=0xfe;P0=0xfe;delay_ms(a);P0=0xff;
       P2=0x7d;delay_ms(a);
       P2=0xbb;delay_ms(a);
       P2=0xd7;delay_ms(a);
       P2=0xef;delay_ms(a);P2=0xff;
}
这个是“半双边流水 由上至下”函数,只要改变形参a的值,流水的速度便会改变,视觉效果便会不一样。
void func3_1()//半双边流水 由上至下
{
       offall();
       P1=0xfe;delay_ms(70);
       P1=0xfd;P0=0x7f;delay_ms(70);
       P1=0xfb;P0=0xbf;delay_ms(70);
       P1=0xf7;P0=0xdf;delay_ms(70);
       P1=0xef;P0=0xef;delay_ms(70);
       P1=0xdf;P0=0xf7;delay_ms(70);
       P1=0xbf;P0=0xfb;delay_ms(50);
       P1=0x7f;P0=0xfd;delay_ms(50);P1=0xff;
       P2=0xfe;P0=0xfe;delay_ms(50);P0=0xff;
       P2=0x7d;delay_ms(50);
       P2=0xbb;delay_ms(50);
       P2=0xd7;delay_ms(50);
       P2=0xef;delay_ms(50);P2=0xff;
}
这个同样是“半双边流水 由上至下”函数,与上面不同之处就是此处流水的速度不是均匀的,只要改变延时函数delay_ms(70);中的70,便可以实现在“流水”时速度不均匀变化。
按照以上两只思路,同一种变换样式,只要改变流水间隔,便可以实现不一样的视觉效果,故以上20多种样式只要稍微改变延时,便可以实现更多的花样。
电子音乐部分的程序是基于msp430g2553的,由于程序比较长,便不再分析。这个“爱心流水灯”加上电子音乐就是锦上添花,不加也行,两者是相对独立的。
电子音乐部分的程序见附件。
       原理图.rar (380.67 KB, 下载次数: 50)
       51单片机部分程序.rar (75.76 KB, 下载次数: 26)
       爱心流水灯.pdf (3.21 MB, 下载次数: 75)
       msp430部分程序.rar (71.22 KB, 下载次数: 41)


最新回复

女生都喜欢苹果啊,小米啦。谁爱这个?  详情 回复 发表于 2014-2-10 19:48

赞赏

1

查看全部赞赏

点赞 关注
个人签名

欢迎关注:JL单片机

 

回复
举报

633

帖子

0

TA的资源

裸片初长成(中级)

沙发
 
给力  

楼主的文章结构清晰,让我有尝试一把的冲动啦 。

个人签名DIY是一种信仰~~
 
 

回复

18

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
楼主很给力
 
 
 

回复

608

帖子

4

TA的资源

纯净的硅(初级)

4
 
女生都喜欢苹果啊,小米啦。谁爱这个?
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表