找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 6929|回复: 0
收起左侧

51单片机做的“心形+I LOVE U”流水灯

[复制链接]
ID:137190 发表于 2016-9-9 23:30 | 显示全部楼层 |阅读模式
        本人自己动手设计了一款“心形” 加 “I LOVE U ”字样的LED 流水灯,“心形”一共16只LED灯,全部由单片机引脚控制,“I LOVE U ”字样全部采用3片74H595芯片级联控制,这样既节省单片机资源又方便原理图PCB布局。我先在PROTUES上把软件设计仿真了一遍,达到我要的效果以后进行硬件设计。花了2个周末的时间终于把PCB板画好了,大家可以先一起欣赏一下,嘿嘿,第一次动手画板子。昨天已经联系了一家PCB打样厂家进行打样,估计下周板子就能到手了。
        情人节马上就要到了,送一份这样的礼物给女朋友应该会给她一个大大的惊喜的,有需要的同志可以联系我QQ。谢谢大家!
0.png


0.png


先来2张没焊接元件的:
0.png 0.png


元件已经焊接好的板子: 0.png 0.png

最后来个视频,到目前为止已经实现了40多种流水花样!链接如下:
http://v.youku.com/v_show/id_XNzc2NDM1MTY4.html
权限限制只能这样发网址了,要看的复制这个网址到网页再看
再把焊接好元件的图片发上来,上面的元件只支持LED 流水灯功能,没焊接的部分还支持一些其他功能!元件焊接得不是很好,以为设计的时候考虑到用贴片元件,实际焊接的时候使用的是直插电阻,所以电阻部分看上去不是很好,不过这样也不影响使用,为了使效果更好,有几个灯的走线我改了一下。。。所以能看见有几根飞线,嘿嘿zzz。。。。。。。。。。
背面照:

TB2pZd_apXXXXccXpXXXXXXXXXX_%21%21282387808.jpg
正面照:
为了使视觉效果更好,正面我没有设计元件的位置,所有使用的元件都分布在背面,这样的效果应该比上面有元件的好多了吧。。。。
TB2RJuaapXXXXXsXpXXXXXXXXXX_%21%21282387808.jpg
改天录个流水灯工作的视频,弱弱地问问大家,帖子上怎样发网址链接啊?我的权限貌似不够哦网址都放不上来,真是万般纠结啊!!

源程序:
  1. #include <REGX52.H>
  2. #include <string.h>
  3. #include "main.h"
  4. #include "595.h"
  5. #include "1602.h"
  6. #include "DS1302.h"
  7. #include "common_include.h"

  8. /*unsigned char aucLoveWords[6]= "Hello";
  9. unsigned char aucLoveYou[16] = "World!";
  10. */
  11. unsigned char k[]={0x0,0x1,0x2,0x3,0x4,0x5,0x6,0x7};
  12. /*unsigned char k2[]={0x0,0x1,0x2,0x3,0x4,0x5,0x6,0x7};
  13. unsigned char k3[]={0x0,0x1,0x2,0x3,0x4,0x5,0x6,0x7};
  14. */
  15. void main()
  16. {
  17. #ifndef TWO_74HC595
  18.         unsigned char j;
  19.         unsigned char k[8];
  20. #endif
  21.         unsigned char ucX;
  22.         int ucY;
  23. #ifdef ENABLE_LCD

  24.         LCD_Initial();
  25.         Initial_DS1302();
  26.         Init_1302();
  27.        
  28.         LCD_GotoXY(5,0);
  29.         LCD_Print( aucLoveWords );
  30.         LCD_GotoXY(0,1);
  31.         LCD_Print( aucLoveYou );

  32.         LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN);          //清屏
  33.        
  34.         memset(CurrentTime.TimeString,0x00,sizeof(CurrentTime.TimeString));
  35. #endif

  36.         while(1)
  37.         {                 
  38.                 SCK=0;
  39.                 RCK=1;
  40.                 ucX ++;
  41.                 P1 = 0x00;P0 = 0x00;
  42.                 P1 = P1 + ucX;
  43.                 P0 = P0 + ucX;
  44.                 if(ucX > 8)
  45.                 {
  46.                         ucX = 0;
  47.                 }
  48.                 //LCD_Display_DateTime();
  49.                 /*for(ucX = 0;ucX < 8;ucX ++)
  50.                 {
  51.                         P0 = 0xFE << ucX;
  52.                         for(ucY=0;ucY<50;ucY++);
  53.                         for(ucY=0;ucY<50;ucY++);
  54.                         for(ucY=0;ucY<50;ucY++);
  55.                         for(ucY=0;ucY<50;ucY++);
  56.                         for(ucY=0;ucY<50;ucY++);
  57.                         for(ucY=0;ucY<50;ucY++);
  58.                         for(ucY=0;ucY<100;ucY++);
  59.                         COMM_Delay10ms(1);
  60.                 }
  61.                 ucX = 0;
  62.                 for(ucX = 0;ucX < 8;ucX ++)
  63.                 {
  64.                         P1 = 0xFE << ucX;
  65.                         for(ucY=0;ucY<50;ucY++);
  66.                         for(ucY=0;ucY<50;ucY++);
  67.                         for(ucY=0;ucY<50;ucY++);
  68.                         for(ucY=0;ucY<50;ucY++);
  69.                         for(ucY=0;ucY<50;ucY++);
  70.                         for(ucY=0;ucY<50;ucY++);
  71.                         for(ucY=0;ucY<100;ucY++);
  72.                         COMM_Delay10ms(1);
  73.                 }*/
  74.                 //P1 = 0xFF;

  75.                 //P0 = 0xFE<<ucCounter;
  76.                 /*k[0]=CurrentTime.TimeString[7] - '0';                                //个位
  77.                 k[1]=CurrentTime.TimeString[6] - '0';                              //十位
  78.                 k[2] = 0x40- '0'  ;
  79.                 k[3]=CurrentTime.TimeString[4] - '0';                                //千位

  80.                 k[4]=CurrentTime.TimeString[3] - '0';                                //个位
  81.                 k[5] = 0x40- '0'  ;
  82.                 k[6]=CurrentTime.TimeString[1] - '0';                                //百位
  83.                 k[7]=CurrentTime.TimeString[0] - '0';                                   //千位
  84.                 */
  85. #ifndef TWO_74HC595
  86.                 for(j=0;j<8;j++)
  87.                 {       
  88.                         In595(j,k[j]);
  89. #else
  90.                         HC595_LED_Flash(ucCounter);
  91.                        
  92.                         ucCounter ++;
  93.                         if( ucCounter == 0x06)
  94.                         {
  95.                                 ucCounter = 0x00;
  96.                         }
  97. #endif
  98. #ifndef TWO_74HC595
  99.                 }                               
  100. #endif
  101.         }
  102.        
  103. }
复制代码
0.png


51单片机做的“心形 I LOVE U”流水灯.rar

266.54 KB, 下载次数: 13, 下载积分: 黑币 -5

回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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