登录|立即注册|使用QQ帐号登录
论坛 > 24小时必答区
发帖|
看5864|回18|收藏
楼主 ID:484589 只看他
2019-3-6 19:47
刚开始了解51单片机,看见很多牛人做的非常酷的东西,目前属于零基础,求大神给一个32灯的电路设计图以及内部元器件名称型号和程序文件。刚开始了解不太懂这些,但是又想做一个东西练练手。谢谢了。

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

代码:

  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, 2019-3-7 14:23 上传)



板凳 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
看我的: IMG_20180127_161845.jpg

IMG_20180127_161903.jpg

QQ截图20190301095124.jpg

说明书2.jpg

程序:(不是我的程序,是网上的,电路图也是的)
http://www.51hei.com/bbs/dpj-49819-1.html
7# ID:164602 只看他
2019-3-7 08:04
学会邓就可以扩展:这个是用595带动的,60几个灯,6片595——有时是两灯同时亮,带蜂鸣器,可以演奏乐曲,单片机只用到几个口。
IMG_20180312_134734.jpg

IMG_20180312_134742.jpg

IMG_20180312_141515.jpg


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排成一列是一个一个的逐个亮吗?怎么会用这么多行程序语言?

程式越多花样就越多,玩起来就越炫酷,算法也越灵活。
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黑电子论坛

Powered by Discuz! X3.1

首页|标准版|触屏版|电脑版