Altium Designer画的心形流水灯原理图和PCB图如下:(51hei附件中可下载工程文件)
单片机源程序如下:
- #include <reg52.h>
- #include<intrins.h> //包含_crol_函数的头文件
- #define uchar unsigned char
- #define uint unsigned int
- uchar aa,bb,cc,dd,ee;
- void delayms(uint t);
- void a();
- void b();
- void c();
- void d();
- void e();
- void f();
- void g();
- void h();
- void k();
- void q();
- void p();
- void l();
- void x();
- void v();
- void z();
- void y();
- void w();
- void m();
- void r();
- void i();
- uchar code LP0[]={0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,//半个心向下
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xff,//半心向上
- 0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,//从右到左全心
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xff//从左到全心
-
- };
- uchar code LP1[]={0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,//
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xff,//
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xff,//
- 0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff
-
- };
- uchar code LP3[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff,//
- 0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff ,//
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff ,//
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff ,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff
-
-
- };
- uchar code LP2[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xff,//
- 0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff ,//
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,//
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-
- };
- uchar code LP01[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80//从0到7的一个一个亮
-
- };
- uchar code LP02[]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};//从7到0的一个一个亮
-
-
- uchar code LP03[]={
- 0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xff
- };
- uchar code LP04[]={
- 0xff,0x7f,0x3f,0x1f,0x0f,0x07,0x03,0x01,0x00
- };//从7开始逐个灭
- uchar code LP05[]={0xff,0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00
- };//从0开始到7逐个灭
- uchar code LP06[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
- };
- uchar code LP07[]={0x00,0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xff
- };//从7逐个亮
- uchar code LP08[]={0x00,0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff
- }; //从0开始逐个亮
- void main()
- {
- k();q();p();v();v();l();l();w();h();h();h();k();m();e();p();c();c();c();c();
- r();d();d();h();h();l();p();d();
- d();y();i();p();v();l();k();h();g();
- f();d();k();p();h();h();z();x();c();v();b();m();
- z();q();f();k();v();v();w();r(); d();d();x();y();i();l();k();h();
- c();v();p();g();k();l();l();b();m();k(); g(); p();
- v();e();y();p();i();p();p();k();g();f(); w();
- z();l();x();c();c();c();c();c();k();p();e();q();v();v();r();b();m();h();
- m();h();d();w();r();k();k();g();k();k();k();x();
- k();d();d();y();l();z();k();j();g();
- f();p();c();c();c();c();i();v();p();k();k();p();k();b(); a();q();
- }
-
- void a() //顺时针一个流水
- {
- uint i,m=150;
- for(m;m>80;m=m-8)
- {
- for(i=0;i<8;i++)
- {
- P1=P2=P3=0X00;
- P0=LP01[i];
- delayms(m);
- }
- for(i=0;i<8;i++)
- {
- P0=P1=P3=0X00;
- P2=LP02[i];
- delayms(m);
- }
-
- for(i=0;i<8;i++)
- {
- P1=P2=P0=0X00;
- P3=LP02[i] ;
- delayms(m);
- }
- for(i=0;i<8;i++)
- {
- P0=P2=P3=0X00;
- P1=LP02[i];
- delayms(m);
-
- }
- }
- }
-
- void b()
- { uint i;
- for(i=0;i<97;i++)
- {
- uint m=150;
- P0=LP0[i];
- P1=LP1[i];
- P2=LP2[i];
- P3=LP3[i];
- delayms(m);
- }
- }
- void c() //一起闪灭
- {
- uint m=380;
- for(m;m>30;m=m-50)
- {P0=P1=P2=P3=0X00;
- delayms(m);
- P0=P1=P2=P3=0xff;
- delayms(m);
-
- }
- }
- void d() //8灯顺时针行走
- { uint m=140,j=0,i=0,k=0,q=0;
-
- for(j;j<9;j++) //从0到2过度
- {
- P0=LP05[j];
- P2=LP07[j];
- P1=P3=LP06[j];
- delayms(m);
- }
-
-
-
- for(i;i<9;i++) //从2到3过度
- {
- P0=P1=LP06[i];
- P2=LP04[i];
- P3=LP07[i];
- delayms(m);
- }
- for(k;j<9;k++)//从3到1过度
- {
- P0=P2=LP06[k];
- P3=LP04[k];
- P1=LP07[k];
- delayms(m);
- }
-
- for(q;q<9;q++)//从3到0过度
- {
- P3=P2=LP06[q];
- P1=LP04[q];
- P0=LP08[q];
- delayms(m);
- }
- }
- void e() //单个从俩边向中间
- { uint i,j,m=250;
- for(i=0;i<8;i++)
- {
- P0=P1=LP01[i];
- P2=P3=LP06[i];
- delayms(m);
- for(j=0;j<8;j++)
- {
- P3=LP01[j];
- P2=LP02[j];
- P0=P1=LP06[j];
- delayms(m);
- }
- }
- }
- void f()//从中间一个向两边
- { uint i,m=200;
- for(i=0;i<8;i++)
- {
- P0=P2=P1=LP02[i];
- P3=LP01[i];
- delayms(m);
- }
-
-
- }
- void g()//中间向俩边亮着走向俩边收回
- { uint i,j,m=200;
- for(i=0;i<8;i++)
- {
- P0=P2=P1=LP07[i];
- P3=LP08[i];
- delayms(m);
- }
- for(j=0;j<9;j++)
- {
- P0=P2=P1=LP04[j];
- P3=LP05[j];
- delayms(m);
- }
- }
- void h()//从中间亮再从下面回来
- { uint i,j,m,n;
- for(i=0;i<8;i++)
- {m=200;
- P0=P2=P1=LP07[i];
- P3=LP08[i];
- delayms(m);
- }
- for(n=0;n<5;n++)
- { m=200;
- P0=P2=P1=P3=0xff;
- delayms(m);
- }
- for(j=0;j<9;j++)
- { m=200;
- P0=P2=P1=LP08[j];
- P3=LP07[j];
- delayms(m);
- }
-
- for(n=0;n<5;n++)
- { m=200;
- P0=P2=P1=P3=0xff;
- delayms(m);
- }
-
- }
- void k() //乱花闪
- { uint i,m=100;
- for(i=0;i<8;i++)
- {
- P0=P1=P2=P3=0xaa;
- delayms(m);
- P0=P1=P2=P3=0x55;
- delayms(m);
-
- }
- }
- void q() //逆时针一个流水
- {
- uint i,m=180;
- for(m;m>0;m=m-10)
- {
-
- for(i=0;i<8;i++)
- {
- P0=P2=P3=0X00;
- P1=LP01[i];
- delayms(m);
-
- }
-
- for(i=0;i<8;i++)
- {
- P1=P2=P0=0X00;
- P3=LP01[i]
- ;
- delayms(m);
- }
- for(i=0;i<8;i++)
- {
- P0=P1=P3=0X00;
- P2=LP01[i];
- delayms(m);
- }
-
-
- for(i=0;i<8;i++)
- {
- P1=P2=P3=0X00;
- P0=LP02[i];
- delayms(m);
- }
- }
- }
- void p()//先左边亮在右边亮
- {
- uint i,j,k,o,m=160;
- for(i=0;i<8;i++)
- {
- P0=P2=P3=0X00;
- P1=LP08[i];
- delayms(m);
- }
- for(j=0;j<8;j++)
- {
- P0=P2=0X00;
- P3=LP08[j];
- delayms(m);
- }
- for(k=0;k<8;k++)
- {
- P1=P3=0Xff;
- P0=LP08[k];
- delayms(m);
- }
- for(o=0;o<8;o++)
- {
- P1=P3=P0=0Xff;
- P2=LP07[o];
- delayms(m);
- }
- }
- void l() //先从左一半灭全灭完后在右边
- {
- uint i,j,x,s,m=300;
- P1=P3=P0=0Xff;
- delayms(80);
- for(i=0;i<8;i++)
- {
- P1=P3=P0=0Xff;
- P2=LP05[i];
- delayms(m);
- }
- for(j=0;j<8;j++)
- {
- P1=P3=0Xff;
- P2=0x00;
- P0=LP04[j];
- delayms(m);
- }
- for(x=0;x<8;x++)
- {
- P0=P2=0x00;
- P1=0xff;
- P3=LP04[x];
- delayms(m);
- }
-
- for(s=0;s<8;s++)
- {
- P0=P2=P3=0x00;
-
- P1=LP04[s];
- delayms(m);
- }
-
- }
- void x()//逆时针流水
- {
- uint i,j,k,n;
- for(i=0;i<8;i++)
- {
- P0=P2=P3=0x00;
-
- P1=LP01[i];
- delayms(250);
- }
- for(j=0;j<8;j++)
- {
- P0=P2=P1=0x00;
-
- P3=LP01[j];
- delayms(200);
- }
- for(k=0;k<8;k++)
- {
- P0=P3=P1=0x00;
-
- P2=LP01[k];
- delayms(170);
- }
- for(n=0;n<8;n++)
- {
- P2=P3=P1=0x00;
-
- P0=LP02[n];
- delayms(130);
- }
-
-
- }
- void v()//中间向俩边
- {
- uint i,j,k,n,p,m;
- for(i=0;i<8;i++)
- { m=300;
- P0=P2=P3=P1=0X00;
- P3=LP08[i];
- delayms(m);
- }
- for(j=0;j<8;j++)
- { m=300;
- P0=P1=0X00;
- P3=0xff;
- P2=LP07[j];
- delayms(m);
- }
- for(k=0;k<8;k++)
- { m=300;
- P3=P2=0Xff;
- P0=0x00;
- P1=LP07[k];
- delayms(m);
- }
- for(n=0;n<8;n++)
- { m=300;
- P1=P3=P2=0Xff;
- P0=0x00;
- P0=LP07[n];
- delayms(m);
- }
- for(p=0;p<3;p++)
- { m=80;
- P0=P1=P3=P2=0Xff;
- delayms(m);
-
- }
-
-
-
- }
- void z()//对角开始亮
- {
- uint i,j,k,m;
- for(i=0;i<8;i++)
- {
- m=200;
- P0=LP08[i];
- P3=LP07[i];
- P1=P2=0x00;
- delayms(m);
- }
-
- for(j=0;i<j;j++)
- {
- m=200;
- P2=P1=LP08[j];
-
- P3=P0=0xff;
- delayms(m);
- }
- for(k=0;k<3;k++)
- { m=40;
- P0=P1=P3=P2=0Xff;
- delayms(m);
-
- }
-
- }
- void y() //从左边向俩边灭
- {uint i,j,k,m;
- for(i=0;i<8;i++)
- { m=200;
- P1=LP04[i];
- P3= LP05[i];
- P0=P2=0xff;
- delayms(m);
-
- }
- for(j=0;j<8;j++)
- { m=200;
- P2=P0=LP05[j];
- P1=P3=0x00;
- delayms(m);
-
- }
- for(k=0;k<3;k++)
- { m=160;
- P0=P1=P3=P2=0Xff;
- delayms(m);
-
- }
- }
-
- void i()
- {
- uint n,j,m=200;
- for(m=200;m>20;m=m-15)
-
- {
- for(n=0;n<8;n++)
- {
- P0=LP08[n];
- P3=LP07[n];
- P1=P2=0x00;
- delayms(m);
-
- }
- for(j=0;j<8;j++)
- {
- P1=P2=LP07[j];
- P0=P3=0xff;
- delayms(m);
-
- }
-
- }
- }
- void w()//半个反向像一起
- {
- uint n,j,m=200;
- for(m=200;m>20;m=m-15)
-
- {
- for(n=0;n<8;n++)
- {
- P0=LP08[n];
- P3=LP07[n];
- P1=P2=0x00;
- delayms(m);
-
- }
- for(j=0;j<8;j++)
- {
- P1=P2=LP07[j];
- P0=P3=0xff;
- delayms(m);
- }
- }
- }
- void m() //一半反着走
- {
- uint i,n,j,m=200;
- for(m=100;m>20;m=m-15)
-
- {
- for(n=0;n<8;n++)
- {
- P1=P2=LP08[n];
-
- P0=P3=0x00;
- delayms(m);
-
- }
- for(j=0;j<8;j++)
- {
- P3=P0=LP08[j];
- P0=LP07[j];
- P1=P2=0xff;
- delayms(m);
- }
-
- }
- for(i=0;i<3;i++)
- {
- m=150;
-
- P3=P0=P1=P2=0xff;
- delayms(m);
- }
- }
- void r()
- {uint m;
-
- for(m=400;m>10;m=m-10)
-
- {
- P3=P1=0xff;
- P0=P2=0x00;
- delayms(m);
- P3=P1=0x00;
- P0=P2=0xff;
- delayms(m);
- }
- }
-
-
- void delayms(uint t) //毫秒延时
- {
- uint i,j;
- for(i=t;i>0;i--)
- for(j=110;j>0;j--);
-
- }
-
复制代码
所有资料51hei提供下载:
心形流水灯制作.rar
(662.86 KB, 下载次数: 106)
|