找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 11759|回复: 9
收起左侧

单片机心形流水灯PCB源文件+原理图+代码与实物制作图片

  [复制链接]
ID:449590 发表于 2019-3-1 19:45 | 显示全部楼层 |阅读模式
心形 LED 流水灯,即可作为一个趣味性的电子练习模块,也可以作为单片机的系统板使用。心形流水灯制作资料齐全,有原理图,PCB(可以直接打板),当然最重要的源程序也有。

原理图
TIM截图20190301193018.jpg


PCB
TIM截图20190301192846.JPG

Altium Designer画的原理图和PCB图如下:(51hei附件中可下载工程文件)
0.png



自己焊接的实物
IMG_20190301_191600.jpg

IMG_20190301_191550.jpg

IMG_20190301_191649.jpg

IMG_20190301_191650.jpg

IMG_20190301_191828.jpg

IMG_20190301_192003.jpg

IMG_20190301_191907.jpg

IMG_20190301_191910_1.jpg



源程序
  1. #include<reg52.h>
  2. #define uchar unsigned char
  3. uchar flag=200;
  4. ///////////////////////////////////////////////////////////////////////
  5. uchar code Tab1[]={0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F,0xFF};//暗中左移  向下
  6. uchar code Tab2[]={0x7F,0xBF,0xDF,0xEF,0xF7,0xFB,0xFD,0xFE,0xFF};//暗中右移  向上
  7. uchar code Tab3[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,0x00};//亮中左移         向下
  8. uchar code Tab4[]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01,0x00};//亮中右移  向上
  9. uchar code Tab11[]={0xFE,0xFC,0xF8,0xF0,0xE0,0xC0,0x80,0x00,0xff};//暗中左移  向下
  10. uchar code Tab22[]={0x7F,0x3F,0x1F,0x0F,0x07,0x03,0x01,0x00,0xff};
  11. ////////////////////////////////////////////////////////////////////
  12. uchar code Tab33[]={0x80,0xC0,0xE0,0xF0,0xF8,0xFC,0xFE,0xFF};
  13. uchar code Tab44[]={0x01,0x03,0x07,0x0F,0x1F,0x3F,0x7F,0xFF};
  14. uchar code Tab55[]={0x08,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xff,0xff};
  15. uchar code Tab5[]={0x00,0x80,0xC0,0xE0,0xF0,0xF8,0xFC,0xFE,0xff};
  16. uchar code Tab6[]={0x00,0x01,0x03,0x07,0x0F,0x1F,0x3F,0x7F,0xff};
  17. uchar code Tab7[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};
  18. uchar code Tab8[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
  19. ////////////////////////////////////////////////////////////////
  20. void shansuo();
  21. void xl();
  22. ///////////////////////////////////////////////////////////////
  23. void delay(void)   
  24. {
  25.    unsigned char m,n;
  26.          for(m=0;m<flag;m++)
  27.           for(n=0;n<250;n++)           
  28.            ;
  29. }
  30. ///////////////////////////////////
  31. void hy1(void)  //点亮状态逆时针旋转90度(一个一个灭)
  32. {
  33.   unsigned char i;
  34.   for(i=0;i<8;i++)
  35.     {
  36.                 P0=Tab11[i];P1=Tab22[i];
  37.             P2=Tab11[i];P3=Tab22[i];
  38.                  delay();
  39.          }
  40.   for(i=0;i<8;i++)
  41.     {
  42.                 P0=Tab44[i];P1=Tab55[i];
  43.             P2=Tab44[i];P3=Tab55[i];
  44.                  delay();
  45.          }
  46. }
  47. ///////////////////////////////////////////
  48. void hy2(void)  //暗中逆时针转360。(一个一个点亮)
  49. {
  50.   unsigned char i;
  51. for(flag=250;flag>0;flag=flag-50)
  52.   {
  53.         P0=0xff;P1=0xff;P2=0xff;P3=0xff;
  54.         for(i=0;i<8;i++)
  55.     {
  56.                 P0=Tab11[i];
  57.                 delay();
  58.          }
  59.   for(i=0;i<8;i++)
  60.     {
  61.             P2=Tab11[i];
  62.                 delay();
  63.          }
  64.   for(i=0;i<8;i++)
  65.     {
  66.                 P3=Tab22[i];
  67.                 delay();
  68.          }
  69.   for(i=0;i<8;i++)
  70.     {
  71.             P1=Tab22[i];
  72.                 delay();
  73.          }
  74.         }
  75. flag=250;
  76. }
  77. ////////////////////////////////////////////////
  78. void hy3(void)  //点亮中逆时针转360°(一个一个灭)
  79. {
  80.   unsigned char i;
  81.                 flag=50;
  82.                 P0=0x00;P1=0x00;P2=0x00;P3=0x00;
  83.   for(i=0;i<8;i++)
  84.     {
  85.                 P0=Tab44[i];
  86.                 delay();
  87.          }
  88.   for(i=0;i<8;i++)
  89.     {
  90.             P2=Tab44[i];
  91.                 delay();
  92.          }
  93.   for(i=0;i<8;i++)
  94.     {
  95.                 P3=Tab33[i];
  96.                 delay();
  97.          }
  98.   for(i=0;i<8;i++)
  99.     {
  100.             P1=Tab33[i];
  101.                 delay();
  102.          }
  103.     flag=150;
  104. }
  105. ///////////////////////////////////////////////////
  106. void hy4(void)  //点亮状态顺时针旋转90度(一个一个灭)
  107. {
  108.   unsigned char i;
  109.   for(i=0;i<8;i++)
  110.     {
  111.                 P1=Tab11[i];P0=Tab22[i];
  112.             P3=Tab11[i];P2=Tab22[i];
  113.                  delay();
  114.          }
  115.   for(i=0;i<9;i++)
  116.     {
  117.                 P1=Tab6[i];P0=Tab5[i];
  118.             P3=Tab6[i];P2=Tab5[i];
  119.                  delay();
  120.          }
  121. }
  122. /////////////////////////////////////////
  123. void hy2_1(void)  //暗中逆时针转90度。(一个一个点亮)
  124. {
  125.   unsigned char i;
  126.                 flag=200;
  127.                 P0=0xff;P1=0xff;P2=0xff;P3=0xff;
  128.   for(i=0;i<9;i++)
  129.     {
  130.                 P0=Tab11[i];
  131.                 delay();
  132.          }
  133.                 flag=110;
  134.   for(i=0;i<9;i++)
  135.     {
  136.             P2=Tab11[i];
  137.                 delay();
  138.          }
  139.                 flag=80;
  140.   for(i=0;i<9;i++)
  141.     {
  142.                 P3=Tab22[i];
  143.                 delay();
  144.          }
  145.                 flag=80;
  146.   for(i=0;i<9;i++)
  147.     {
  148.             P1=Tab22[i];
  149.                 delay();
  150.          }
  151. }
  152. ////////////////////////////////////////////////
  153. void hy2_2(void)  //暗中逆时针转180度。(一个一个点亮)
  154. {
  155.   unsigned char i;
  156.                 P0=0xff;P1=0xff;P2=0xff;P3=0xff;
  157.   for(i=0;i<8;i++)
  158.     {
  159.                 P0=Tab11[i];
  160.                 delay();
  161.          }
  162.   for(i=0;i<8;i++)
  163.     {
  164.             P2=Tab11[i];
  165.                 delay();
  166.          }
  167.                 P0=0xff;P2=0xff;
  168.   for(i=0;i<8;i++)
  169.     {
  170.                 P3=Tab22[i];
  171.                 delay();
  172.          }
  173.   for(i=0;i<8;i++)
  174.     {
  175.             P1=Tab22[i];
  176.                 delay();
  177.          }
  178.                 P1=0xff;P3=0xff;
  179. }
  180. ///////////////////////////////////////////////////
  181. void hy2_3(void)  //暗中向下180。(一个一个点亮)
  182. {
  183.   unsigned char i;
  184.                 P0=0xff;P1=0xff;P2=0xff;P3=0xff;
  185.   for(i=0;i<8;i++)
  186.     {
  187.                 P0=Tab11[i];
  188.             P1=Tab11[i];
  189.                 delay();
  190.          }
  191.   for(i=0;i<8;i++)
  192.     {
  193.             P2=Tab11[i];
  194.                 P3=Tab11[i];
  195.                 delay();
  196.          }
  197. ///////////////////////
  198.     flag=100;
  199.   for(i=0;i<8;i++)
  200.     {
  201.                 P2=Tab33[i];
  202.             P3=Tab33[i];
  203.                 delay();
  204.          }
  205.   for(i=0;i<8;i++)
  206.     {
  207.             P0=Tab33[i];
  208.                 P1=Tab33[i];
  209.                 delay();
  210.     flag=200;
  211.          }
  212. }
  213. ///////////////////////////////////////////////////
  214. void hy2_4(void)  //暗中逆时针转360。(一个一个点亮)
  215. {
  216.   unsigned char i;
  217.                 P0=0xff;P1=0xff;P2=0xff;P3=0xff;
  218.   for(i=0;i<8;i++)
  219.     {
  220.                 P0=Tab11[i];
  221.                 P3=Tab22[i];
  222.                 delay();
  223.          }
  224.   for(i=0;i<8;i++)
  225.     {
  226.             P2=Tab11[i];
  227.                 P1=Tab22[i];
  228.                 delay();
  229.          }
  230. ///////////////////////
  231.     flag=100;
  232. for(i=0;i<8;i++)
  233.     {
  234.                 P0=Tab44[i];
  235.                 P3=Tab5[i];
  236.                 delay();
  237.          }
  238.   for(i=0;i<8;i++)
  239.     {
  240.             P2=Tab44[i];
  241.                 P1=Tab5[i];
  242.                 delay();
  243.          }
  244.     flag=200;
  245. }

  246. ///////////////////////////////////

  247. void hy5(void)  //先向下伸展,然后向上伸展逐渐点亮
  248. {
  249.   unsigned char i;
  250.   for(i=0;i<8;i++)
  251.     {
  252.                 P0=Tab8[i];
  253.                 P1=Tab8[i];
  254.                 delay();
  255.          }
  256.         P0=0xff;
  257.         P1=0xff;
  258.   for(i=0;i<8;i++)
  259.     {
  260.                 P2=Tab8[i];
  261.                 P3=Tab8[i];
  262.                 delay();
  263.          }
  264.         P2=0xff;
  265.         P3=0xff;
  266.   for(i=0;i<8;i++)
  267.     {
  268.                 P2=Tab7[i];
  269.                 P3=Tab7[i];
  270.                 delay();
  271.          }
  272.         P2=0xff;
  273.         P3=0xff;
  274.   for(i=0;i<8;i++)
  275.     {
  276.                 P0=Tab7[i];
  277.                 P1=Tab7[i];
  278.                 delay();
  279.          }
  280.         P0=0xff;
  281.         P1=0xff;
  282. }
  283. /////////////////////////////
  284. void jr(void)//聚拢
  285. {
  286.   unsigned char i;
  287.   for(i=0;i<9;i++)  //8位控制码
  288.     {
  289.             P0=Tab1[i];P1=Tab1[i];
  290.             P2=Tab2[i];P3=Tab2[i];            
  291.                 delay();
  292.           }  
  293.   for(i=0;i<9;i++)
  294.     {
  295.             P0=Tab2[i];P1=Tab2[i];
  296.              P2=Tab1[i];P3=Tab1[i];
  297.                 delay();
  298.          }            
  299. ///////////////////////////
  300.   for(i=0;i<9;i++)  
  301.     {
  302.             P0=Tab1[i];P1=Tab1[i];
  303.             P2=Tab2[i];P3=Tab2[i];            
  304.                 delay();
  305.           }
  306.   for(i=0;i<9;i++)
  307.     {
  308.             P0=Tab2[i];P1=Tab2[i];
  309.              P2=Tab1[i];P3=Tab1[i];
  310.                  delay();
  311.          }
  312.         xl(); //星星眨眼
  313.         xl(); //星星眨眼
  314. ///////////////////////////
  315.   for(i=0;i<9;i++)
  316.     {
  317.             P0=Tab3[i]; P1=Tab3[i];
  318.             P2=Tab4[i]; P3=Tab4[i];
  319.                 delay();
  320.          }
  321.   for(i=0;i<9;i++)
  322.     {
  323.             P0=Tab4[i];P1=Tab4[i];
  324.              P2=Tab3[i];P3=Tab4[i];
  325.                 delay();
  326.          }
  327. ////////////////////////////////
  328.   for(i=0;i<9;i++)
  329.     {
  330.             P0=Tab1[i];P1=Tab1[i];
  331.             P2=Tab2[i]; P3=Tab2[i];            
  332.                 delay();
  333.          }
  334.            
  335.   for(i=0;i<9;i++)  
  336.     {
  337.             P0=Tab4[i];P1=Tab4[i];
  338.              P2=Tab3[i];P3=Tab3[i];
  339.                 delay();            
  340.          }
  341. /////////////////////////////
  342.   for(i=0;i<9;i++)
  343.     {
  344.             P0=Tab3[i]; P1=Tab3[i];
  345.              P2=Tab4[i];P3=Tab4[i];
  346.                  delay();
  347.          }
  348.   for(i=0;i<9;i++)
  349.     {
  350.             P0=Tab2[i];P1=Tab2[i];
  351.              P2=Tab1[i];P3=Tab1[i];
  352.                  delay();
  353.          }
  354. }
  355. ////////////////////////////////////
  356. void azzy(void)  //暗中向下
  357. {
  358.   unsigned char i;
  359.         flag=200;
  360.   for(i=0;i<8;i++)
  361.     {
  362.                 P2=0xff;P3=0xff;
  363.             P1=Tab1[i];P0=Tab1[i];
  364.                 delay();            
  365.           }
  366.   for(i=0;i<9;i++)
  367.     {
  368.                 P1=0xff;P0=0xff;
  369.             P2=Tab1[i];P3=Tab1[i];
  370.                  delay();
  371.           }
  372. }
  373. /////////////////////////////////
  374. void azyy(void)  //暗中you移
  375. {
  376.   unsigned char i;
  377.   for(i=0;i<8;i++)
  378.     {
  379.                 P0=0xff;P1=0xff;
  380.             P2=Tab2[i];P3=Tab2[i];
  381.                  delay();
  382.           }
  383.   for(i=0;i<9;i++)
  384.     {
  385.             P0=Tab2[i];P1=Tab2[i];
  386.                  delay();
  387.           }
  388. }
  389. //////////////////////////////////
  390. void led_flow1(void)  
  391. {
  392.   unsigned char i;
  393.   for(i=0;i<9;i++)
  394.     {
  395.                 P2=0;P3=0;
  396.             P1=Tab3[i];P0=Tab3[i];
  397.                 delay();            
  398.           }
  399.   for(i=0;i<9;i++)  
  400.     {
  401.             P2=Tab3[i];P3=Tab3[i];
  402.                  delay();
  403.           }
  404. }
  405. ///////////////////////////////////
  406. void lzyy(void)  //亮中右移
  407. {
  408.   unsigned char i;
  409.   for(i=0;i<9;i++)  
  410.     {
  411.                 P0=0x00;P1=0x00;
  412.             P2=Tab4[i];P3=Tab4[i];
  413.                 delay();            
  414.           }
  415.   for(i=0;i<9;i++)  
  416.     {
  417.             P0=Tab4[i];P1=Tab4[i];
  418.                  delay();
  419.           }
  420. }
复制代码

0.png
完整程序及资料在附件
心形灯制作资料大全.rar (9.44 MB, 下载次数: 249)

评分

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

查看全部评分

回复

使用道具 举报

ID:450793 发表于 2019-3-7 19:47 | 显示全部楼层
谢谢楼主
回复

使用道具 举报

ID:484589 发表于 2019-3-9 14:47 | 显示全部楼层
我用proteus能不能打开你的图纸
回复

使用道具 举报

ID:449590 发表于 2019-3-10 23:01 来自手机 | 显示全部楼层
西边的天 发表于 2019-3-9 14:47
我用proteus能不能打开你的图纸

用Altium designer 打开
回复

使用道具 举报

ID:687606 发表于 2020-1-21 19:27 | 显示全部楼层
Thanks, bit i can not download rar package from this page because just a last day registered, but source code very usefull Thank You,
回复

使用道具 举报

ID:857252 发表于 2020-12-26 18:28 来自手机 | 显示全部楼层
元件哪里能弄齐
回复

使用道具 举报

ID:863768 发表于 2021-2-26 11:33 | 显示全部楼层
jp1和jp2是什么
回复

使用道具 举报

ID:894857 发表于 2021-3-22 09:10 | 显示全部楼层
你好,我想问一下有没有完整版的心形花样流水灯的操作,从设计到最后的制板,焊接调试
回复

使用道具 举报

ID:230742 发表于 2021-10-13 16:02 | 显示全部楼层
找到程序了。先学习一下。想学习的师兄可以立创开源自己打板。电路和灯的接法自己研究。
回复

使用道具 举报

ID:1069907 发表于 2023-4-4 20:20 | 显示全部楼层
感谢楼主,很全
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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