找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5420|回复: 18
打印 上一主题 下一主题
收起左侧

想自己制作一个心形流水灯,求指教

  [复制链接]
跳转到指定楼层
楼主
刚开始了解51单片机,看见很多牛人做的非常酷的东西,目前属于零基础,求大神给一个32灯的电路设计图以及内部元器件名称型号和程序文件。刚开始了解不太懂这些,但是又想做一个东西练练手。谢谢了。

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏2 分享淘帖 顶 踩
回复

使用道具 举报

来自 2#
ID:404797 发表于 2019-3-7 14:25 | 只看该作者
   楼主要的是32灯心形流水灯,这里的难点是流水灯,也就是灯是按一定顺序一个一个亮,并一个一个灭,它不同于静态显示一个心形图案,比静态显示难度大点。考虑到楼主是个初学者,做32灯的心形流水灯需要器件复杂,初学者很容易做不下来而放弃,所以建议楼主改用单片机+8X8的LED发光矩阵做一个20灯的心形流水灯,这样比较容易实现,技术上同样可以得到很大煅练。
    基于单片机+8X8LED发光矩阵,本人为楼主设计了一个心形流水灯方案。需要单片机1只,最小系统板1块,8X8LED发光矩阵1个,杜帮线16根。利用单片机控制发光矩阵发光,先静态显示一个心形图案,然后先按顺时针顺显示心形,完后再按逆时针顺序显示心形,完后重新开始。依此循环。
下面是设计图:

下面是相应程序:
  1. #include<reg52.h>
  2. unsigned char hdata[]={0x38,0x44,0x42,0x21,0x21,0x42,0x44,0x38};
  3. unsigned char  heart[][2]={{4,2},{5,1},{6,1},{7,2},{7,3},{7,4},{6,5},{5,6},{4,7},{3,7},{2,6},{1,5},{0,4},{0,3},{0,2},{1,1},{2,1},{3,2}};
  4. void delay(int ii){int i,j;for(i=0;i<ii;i++)for(j=0;j<110;j++);}
  5. void heart1()
  6. {int i;
  7. for(i=0;i<8;i++)
  8.    {P2=1<<i;P3=~hdata[i];}
  9. }
  10. void heart2()
  11. {int i;
  12.   for(i=0;i<18;i++)
  13.    {P2=1<<heart[i][0];
  14.     P3=~(1<<heart[i][1]);
  15.         delay(5);
  16.     }
  17.   for(i=17;i>=0;i--)
  18.     {P2=1<<heart[i][0];
  19.      P3=~(1<<heart[i][1]);
  20.          delay(5);
  21.     }
  22.   }
  23. main()
  24. {int i;
  25. while(1)
  26. {for(i=0;i<2500;i++)heart1();
  27.   for(i=0;i<20;i++)heart2();
  28.   }
  29. }
复制代码

附件有完整的proteus设计和相配套的程序:
ask5a.zip (24.7 KB, 下载次数: 16)


评分

参与人数 1黑币 +80 收起 理由
admin + 80 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

来自 3#
ID:142059 发表于 2019-3-7 17:39 | 只看该作者
我点我头像进去我的主题,我发的第一个主题就是流水灯,多种流水效果非常炫酷,还有仿真看效果
回复

使用道具 举报

地板
ID:473186 发表于 2019-3-7 02:11 | 只看该作者
心形流水灯坛子里有案例,照着改改改修修
回复

使用道具 举报

5#
ID:472242 发表于 2019-3-7 02:25 | 只看该作者
心形流水灯?上个月也有人说要做这玩意儿!是送给女朋友吗?哈哈哈!本站案子很多,应该能给你帮助。当然罗,想更深入也完全是没有问题的。有需求应该有动力!
回复

使用道具 举报

6#
ID:164602 发表于 2019-3-7 08:00 | 只看该作者
看我的:







程序:(不是我的程序,是网上的,电路图也是的)
http://www.51hei.com/bbs/dpj-49819-1.html
回复

使用道具 举报

7#
ID:164602 发表于 2019-3-7 08:04 | 只看该作者
学会邓就可以扩展:这个是用595带动的,60几个灯,6片595——有时是两灯同时亮,带蜂鸣器,可以演奏乐曲,单片机只用到几个口。







回复

使用道具 举报

8#
ID:123289 发表于 2019-3-7 08:17 | 只看该作者
你先做个直线的试试。
回复

使用道具 举报

9#
ID:485979 发表于 2019-3-7 08:21 | 只看该作者
刚买了一个送女朋友 的  还不错 准备自己做一个
回复

使用道具 举报

10#
ID:453974 发表于 2019-3-7 08:57 | 只看该作者
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
void delay(uint t);//×óoˉêyéùÃ÷

uint code table[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//êy×é
uint code welatable[]={0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00,0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff};

void main()//Ö÷oˉêy
{
        while(1)
        {uint i,j;
                          P0=0xff;
                                P2=0xff;
                    P1=0xff;
                                P3=0xff;
                                delay(10);
               
                       
       
                                for(i=0;i<8;i++)
                                {
                                                                for(i=0;i<8;i++)
                                                        {
                                                                P1=table[7-i];
                                                                        P3=table[i];
                                                                delay(8000);
                                                               
                                                        }
                                                       
                                                        P1=0xff;
                                                        P3=0xff;
                                                        delay(10);
                                                       
                                                                for(i=0;i<8;i++)
                                                        {
                                                                P0=table[i];
                                                                        P2=table[i];
                                                                delay(8000);
                                                               
                                                        }
                                                       
                                                        P0=0xff;
                                                        P2=0xff;
                                                       
                                                        delay(10);
                                                                                for(i=0;i<8;i++)
                                                        {
                                                                P0=table[7-i];
                                                                        P2=table[7-i];
                                                                delay(8000);
                                                               
                                                        }
                                                       
                                                        P0=0xff;
                                                        P2=0xff;
                                                       
                                                        delay(10);
                                                                for(i=0;i<8;i++)
                                                        {
                                                                P1=table[i];
                                                                        P3=table[7-i];
                                                                delay(8000);
                                                               
                                                        }
                                       
                   }
                         
                               
                for(j=0;j<2;j++)
                {
                                for(i=0;i<8;i++)
                                {
                                                                for(i=0;i<8;i++)
                                                        {
                                                                P1=~welatable[7-i];
                                                                        P3=welatable[i];
                                                                delay(8000);
                                                               
                                                        }
                                                       
                                                        P1=0x00;
                                                        P3=0x00;
                                                        delay(10);
                                                       
                                                                for(i=0;i<8;i++)
                                                        {
                                                               
                                                                P0=welatable[i];
                                                                P1=0x00;
                                                                P3=0x00;
                                                                P2=welatable[i];
                                                                delay(8000);
                                                               
                                                        }
                                                        P1=P2=P0=P3=0x00;
                                                        delay(10);
                                                       
                                                        for(i=8;i<16;i++)
                                                        {
                                                                P0=welatable[16-i];
                                                                P2=welatable[16-i];
                                                                delay(8000);
                                                                }
                                                               
                                                        P2=P0=0xff;
                                                                delay(10);
                                                               
                                                                for(i=8;i<16;i++)
                                                        {
                                                                P0=0xff;
                                                                P2=0xff;
                                                                P1=welatable[i];
                                                                P3=welatable[16-i];
                                                                delay(8000);
                                                                }
                                                        P1=P2=P3=P0=0xff;
                                                                delay(10);
                                        }
                  
                 }
                                       
                                       
//                                       
//                         for(j=0;j<2;j++)
//                          {
//                                        for(i=0;i<8;i++)
//                                                        {
//                                                               
//                                                                        P2=table[i];
//                                                                  P0=table[7-i];
//                                                                        P1=table[i];
//                                                                  P3=table[i];
//                                                                delay(8000);
//                                                               
//                                                        }
//                                                        P1=0xff;
//                                                        P3=0xff;
//                                                        P0=0xff;
//                                                        P2=0xff;
//                                                        delay(10);
//                                                       
//                                                                for(i=0;i<8;i++)
//                                                        {
//                                                                P2=table[7-i];
//                                                                  P0=table[i];
//                                                                        P1=table[7-i];
//                                                                  P3=table[7-i];                                                               
//                                                                delay(8000);
//                                                               
//                                                        }
//                                                        P0=0xff;
//                                                        P2=0xff;
//                                                        P1=0xff;
//                                                        P3=0xff;
//                        delay(10);
//                                                }
               
                                               
                                               
                                               
                        for(j=0;j<2;j++)
                        {
                                        for(i=0;i<8;i++)
                                                        {
                                                                P1=table[7-i];
                                                                        P2=table[7-i];
                                                                delay(8000);
                                                               
                                                        }
                                                       
                                                        P1=0xff;
                                                        P2=0xff;
                                                        delay(10);
                                                       
                                                                for(i=0;i<8;i++)
                                                        {
                                                                P0=table[i];
                                                                       
                                                                P3=table[7-i];
                                                                delay(8000);
                                                               
                                                        }
                                                       
                                                        P0=0xff;
                                                        P3=0xff;
                       
                                                }
                                               
                                               
                                               
                                               
                                        for(j=0;j<2;j++)
                          {
                                        for(i=0;i<8;i++)
                                                        {
                                                               
                                                                        P2=table[7-i];
                                                                  P0=table[7-i];
                                                                        P1=table[7-i];
                                                                  P3=table[i];
                                                                delay(8000);
                                                               
                                                        }
                                                        P1=0xff;
                                                        P3=0xff;
                                                        P0=0xff;
                                                        P2=0xff;
                                                        delay(10);
                                                       
                                                                for(i=0;i<8;i++)
                                                        {
                                                                P2=table[i];
                                                                  P0=table[i];
                                                                        P1=table[i];
                                                                  P3=table[7-i];                                                               
                                                                delay(8000);
                                                               
                                                        }
                                                        P0=0xff;
                                                        P2=0xff;
                                                        P1=0xff;
                                                        P3=0xff;
                        delay(10);
                                                }
                         P0=P1=P2=P3=0xff;
                         delay(10);
                         for(j=0;j<2;j++)
                         {
                                        P1=P2=P0=P3=0x00;
                                        delay(30000);
                                        P1=P2=P0=P3=0xff;
                                        delay(30000);
                                }

                               
                               

                for(j=0;j<2;j++)
                                                {
                                                        P3=P2=P0=0xee;
                                                        P1=0x77;
                                                        delay(20000);
                                                        P0=P1=P2=P3=0xff;
                                                       
                                                        P3=P2=P0=0xdd;
                                                        P1=0xbb;
                                                        delay(20000);
                                                        P0=P1=P2=P3=0xff;
                                                       
                                                        P3=P2=P0=0xbb;
                                                        P1=0xdd;
                                                        delay(20000);
                                                        P0=P1=P2=P3=0xff;
                                                       
                                                        P3=P2=P0=0x77;
                                                        P1=0xee;
                                                        delay(20000);
                                                        P0=P1=P2=P3=0xff;
                                                       
                                                        P3=P2=P0=0x77;
                                                        P1=0xee;
                                                        delay(20000);
                                                        P0=P1=P2=P3=0xff;
                                                       
                                                        P3=P2=P0=0xbb;
                                                        P1=0xdd;
                                                        delay(20000);
                                                        P0=P1=P2=P3=0xff;
                                                       
                                                        P3=P2=P0=0xdd;
                                                        P1=0xbb;
                                                        delay(20000);
                                                        P0=P1=P2=P3=0xff;
                                                       
                                                        P3=P2=P0=0xee;
                                                        P1=0x77;
                                                        delay(20000);
                                                        P0=P1=P2=P3=0xff;
                                                       
                                                }
                                                               
for(j=0;j<5;j++)
                                {
                                        P3=P2=P0=0x55;
                                        P1=0xaa;
                                        delay(20000);
                                        P0=P1=P2=P3=0xff;
                                       
                                        P3=P2=P0=0xaa;
                                        P1=0x55;
                                        delay(20000);
                                        P0=P1=P2=P3=0xff;
                                       
                       
                                }

                                for(j=0;j<4;j++)
                                {
                                        P3=P2=P0=0x11;
                                        P1=0x88;
                                        delay(20000);
                                        P0=P1=P2=P3=0xff;
                                       
                                        P3=P2=P0=0x22;
                                        P1=0x44;
                                        delay(20000);
                                        P0=P1=P2=P3=0xff;
                                       
                                        P3=P2=P0=0x44;
                                        P1=0x22;
                                        delay(20000);
                                        P0=P1=P2=P3=0xff;
                                       
                                        P3=P2=P0=0x88;
                                        P1=0x11;
                                        delay(20000);
                                        P0=P1=P2=P3=0xff;
                                       
                                        P3=P2=P0=0x88;
                                        P1=0x11;
                                        delay(20000);
                                        P0=P1=P2=P3=0xff;
                                       
                                        P3=P2=P0=0x44;
                                        P1=0x22;
                                        delay(20000);
                                        P0=P1=P2=P3=0xff;
                                       
                                        P3=P2=P0=0x22;
                                        P1=0x44;
                                        delay(20000);
                                        P0=P1=P2=P3=0xff;
                                       
                                        P3=P2=P0=0x11;
                                        P1=0x88;
                                        delay(20000);
                                        P0=P1=P2=P3=0xff;
                                       
                                }
        }
}
void delay(uint t)//Ñóê±oˉêy
{
        while(t--);
}
回复

使用道具 举报

11#
ID:472242 发表于 2019-3-7 11:06 | 只看该作者
这里还有,看看是不是你想用的:http://www.51hei.com/bbs/dpj-150528-1.html
回复

使用道具 举报

12#
ID:483837 发表于 2019-3-7 11:22 | 只看该作者
那玩意儿不用单片机也可以,电容电阻LED三极管就够了
回复

使用道具 举报

13#
ID:460466 发表于 2019-3-7 11:59 | 只看该作者

不愧是高手 程序好长啊!这些LED排成一列是一个一个的逐个亮吗?怎么会用这么多行程序语言?
回复

使用道具 举报

14#
ID:483991 发表于 2019-3-7 14:51 | 只看该作者
海阔天空8 发表于 2019-3-7 11:59
不愧是高手 程序好长啊!这些LED排成一列是一个一个的逐个亮吗?怎么会用这么多行程序语言?

程式越多花样就越多,玩起来就越炫酷,算法也越灵活。

评分

参与人数 3黑币 +23 收起 理由
sheng7533967 + 5 赞一个!
zhengchong60 + 10 很给力!
嘉立创AAA + 8 很给力!

查看全部评分

回复

使用道具 举报

15#
ID:484589 发表于 2019-3-7 19:01 | 只看该作者
shuisheng60 发表于 2019-3-7 02:25
心形流水灯?上个月也有人说要做这玩意儿!是送给女朋友吗?哈哈哈!本站案子很多,应该能给你帮助。当然罗 ...

好的,我也找了很多
回复

使用道具 举报

16#
ID:484589 发表于 2019-3-7 19:02 | 只看该作者

谢谢。。。。。。
回复

使用道具 举报

17#
ID:484589 发表于 2019-3-7 19:03 | 只看该作者
yzwzfyz 发表于 2019-3-7 08:17
你先做个直线的试试。

嗯嗯谢谢了。
回复

使用道具 举报

18#
ID:484589 发表于 2019-3-7 19:05 | 只看该作者
zxwdown 发表于 2019-3-7 14:25
楼主要的是32灯心形流水灯,这里的难点是流水灯,也就是灯是按一定顺序一个一个亮,并一个一个灭,它不 ...

谢谢了,这次买元件包没买这个LED显示板
回复

使用道具 举报

19#
ID:472106 发表于 2020-2-14 22:38 | 只看该作者
程序这么多 是有点复杂哦
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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