找回密码
 立即注册

QQ登录

只需一步,快速开始

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

8*8*8光立方实物已经焊接连接好了,但是不知道程序怎么写

[复制链接]
跳转到指定楼层
楼主
5黑币
本人目前新手一个,只会8*8LED点阵,但是想做8*8*8光立方,实物已经焊接连接好了,但是不知道程序怎么写,还有怎么从PCB原理图得出单片机哪个口进行控制输入的

3.png (193.25 KB, 下载次数: 6)

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

使用道具 举报

沙发
ID:155507 发表于 2018-11-26 09:52 | 只看该作者

我给你来个程序试试


  1. #include <REG52.H>
  2. #include <intrins.h>
  3. #define uchar unsigned char

  4. #define uint unsigned int

  5. uchar display[8][8];

  6. /*rank:A,1,2,3,4,I,心,U*/

  7. uchar code table_cha[8][8]= {0x51,0x51,0x51,0x4a,0x4a,0x4a,0x44,0x44,0x18,0x1c,0x18,0x18,0x18,0x18,0x18,0x3c,0x3c,0x66,0x66,0x30,0x18,0xc,0x6,0xf6,0x3c,0x66,0x60,0x38,0x60,0x60,0x66,0x3c,0x30,0x38,0x3c,0x3e,0x36,0x7e,0x30,0x30,0x3c,0x3c,0x18,0x18,0x18,0x18,0x3c,0x3c,0x66,0xff,0xff,0xff,0x7e,0x3c,0x18,0x18,0x66,0x66,0x66,0x66,0x66,0x66,0x7e,0x3c};

  8. /*the "ideasoft"*/

  9. uchar code table_id[40]= {0x81,0xff,0x81,0x00,0xff,0x81,0x81,0x7e,0x00,0xff,0x89,0x89,0x00,0xf8,0x27,0x27,0xf8,0x00,0x8f,0x89,0x89,0xf9,0x00,0xff,0x81,0x81,0xff,0x00,0xff,0x09,0x09,0x09,0x01,0x0,0x01,0x01,0xff,0x01,0x01,0x00};

  10. /*railway*/

  11. uchar code dat[128]= {0x0,0x20,0x40,0x60,0x80,0xa0,0xc0,0xe0,0xe4,0xe8,0xec,0xf0,0xf4,0xf8,0xfc,0xdc,0xbc,0x9c,0x7c,0x5c,0x3c,0x1c,0x18,0x14,0x10,0xc,0x8,0x4,0x25,0x45,0x65,0x85,0xa5,0xc5,0xc9,0xcd,0xd1,0xd5,0xd9,0xb9,0x99,0x79,0x59,0x39,0x35,0x31,0x2d,0x29,0x4a,0x6a,0x8a,0xaa,0xae,0xb2,0xb6,0x96,0x76,0x56,0x52,0x4e,0x6f,0x8f,0x93,0x73,0x6f,0x8f,0x93,0x73,0x4a,0x6a,0x8a,0xaa,0xae,0xb2,0xb6,0x96,0x76,0x56,0x52,0x4e,0x25,0x45,0x65,0x85,0xa5,0xc5,0xc9,0xcd,0xd1,0xd5,0xd9,0xb9,0x99,0x79,0x59,0x39,0x35,0x31,0x2d,0x29,0x0,0x20,0x40,0x60,0x80,0xa0,0xc0,0xe0,0xe4,0xe8,0xec,0xf0,0xf4,0xf8,0xfc,0xdc,0xbc,0x9c,0x7c,0x5c,0x3c,0x1c,0x18,0x14,0x10,0xc,0x8,0x4};

  12. /*railway 2*/

  13. uchar code dat2[28]= {0x0,0x20,0x40,0x60,0x80,0xa0,0xc0,0xe0,0xe4,0xe8,0xec,0xf0,0xf4,0xf8,0xfc,0xdc,0xbc,0x9c,0x7c,0x5c,0x3c,0x1c,0x18,0x14,0x10,0xc,0x8,0x4};

  14. /*railway 3*/

  15. uchar code dat3[24]= {0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x16,0x26,0x36,0x46,0x56,0x66,0x65,0x64,0x63,0x62,0x61,0x60,0x50,0x40,0x30,0x20,0x10};

  16. /*3p char*/

  17. uchar code table_3p[3][8]= {0xff,0x89,0xf5,0x93,0x93,0xf5,0x89,0xff,0x0e,0x1f,0x3f,0x7e,0x7e,0x3f,0x1f,0x0e,0x18,0x3c,0x7e,0xff,0x18,0x18,0x18,0x18};

  18. /*initializtion

  19. That is to initialize the program .

  20. It is write to set the timer in c52 mcu.

  21. So the program can renovate the led_3d_cube in fixed time use the interrupt function.*/

  22. void sinter()
  23. {
  24.         IE=0x82;
  25.         TCON=0x01;
  26.         TH0=0xc0;
  27.         TL0=0;
  28.         TR0=1;
  29. }

  30. void delay5us(void)   //误差 -0.026765046296us STC 1T 22.1184Mhz
  31. {
  32.         unsigned char a,b;
  33.         for(b=7; b>0; b--)
  34.                 for(a=2; a>0; a--);
  35. }

  36. void delay(uint i)
  37. {
  38.         while (i--) {
  39.                 delay5us();
  40.         }//12t的mcu 注释这个延时即可
  41. }

  42. /*To judge the num bit*/

  43. uchar judgebit(uchar num,uchar b)
  44. {
  45.         char n;
  46.         num=num&(1<<b);
  47.         if (num)
  48.                 n=1;
  49.         else
  50.                 n=0;
  51.         return n;
  52. }

  53. /*To figure out the round number*/

  54. uchar abs(uchar a)
  55. {
  56.         uchar b;
  57.         b=a/10;
  58.         a=a-b*10;
  59.         if (a>=5)
  60.                 b++;
  61.         return b;
  62. }

  63. /*To figure out the absolute value*/

  64. uchar abss(char a)
  65. {
  66.         if (a<0)
  67.                 a=-a;
  68.         return a;
  69. }

  70. /*The function can comparat the character.

  71. And remove the big one to the back.*/

  72. void max(uchar *a,uchar *b)
  73. {
  74.         uchar t;
  75.         if ((*a)>(*b)) {
  76.                 t=(*a);
  77.                 (*a)=(*b);
  78.                 (*b)=t;
  79.         }
  80. }

  81. /*The function is to figure out the max number and return it.*/

  82. uchar maxt(uchar a,uchar b,uchar c)
  83. {
  84.         if (a<b)
  85.                 a=b;
  86.         if (a<c)
  87.                 a=c;
  88.         return a;
  89. }

  90. void clear(char le)
  91. {
  92.         uchar i,j;
  93.         for (j=0; j<8; j++) {
  94.                 for (i=0; i<8; i++)
  95.                         display[j][i]=le;
  96.         }
  97. }

  98. void trailler(uint speed)
  99. {
  100.         char i,j;
  101.         for (i=6; i>=-3; i--) {
  102.                 if (i>=0) {
  103.                         for (j=0; j<8; j++)
  104.                                 display[j][i]=display[j][i+1];
  105.                 }
  106.                 if (i<4) {
  107.                         for (j=0; j<8; j++)
  108.                                 display[j][i+4]=0;
  109.                 }
  110.                 delay(speed);
  111.         }
  112. }

  113. void point(uchar x,uchar y,uchar z,uchar le)
  114. {
  115.         uchar ch1,ch0;
  116.         ch1=1<<x;
  117.         ch0=~ch1;
  118.         if (le)
  119.                 display[z][y]=display[z][y]|ch1;
  120.         else
  121.                 display[z][y]=display[z][y]&ch0;
  122. }

  123. void type(uchar cha,uchar y)
  124. {
  125.         uchar xx;
  126.         for (xx=0; xx<8; xx++) {
  127.                 display[xx][y]=table_cha[cha][xx];
  128.         }
  129. }

  130. /*The first variable is the distance from the midpoint.

  131. The second is the layer.

  132. the third is the flash speed of the time between each two point.

  133. The forth is the enable io,it controls weather draw or claen.*/

  134. void cirp(char cpp,uchar dir,uchar le)
  135. {
  136.         uchar a,b,c,cp;
  137.         if ((cpp<128)&(cpp>=0)) {
  138.                 if (dir)
  139.                         cp=127-cpp;
  140.                 else
  141.                         cp=cpp;
  142.                 a=(dat[cp]>>5)&0x07;
  143.                 b=(dat[cp]>>2)&0x07;
  144.                 c=dat[cp]&0x03;
  145.                 if (cpp>63)
  146.                         c=7-c;
  147.                 point (a,b,c,le);
  148.         }
  149. }

  150. void line(uchar x1,uchar y1,uchar z1,uchar x2,uchar y2,uchar z2,uchar le)
  151. {
  152.         char t,a,b,c,a1,b1,c1,i;
  153.         a1=x2-x1;
  154.         b1=y2-y1;
  155.         c1=z2-z1;
  156.         t=maxt(abss(a1),abss(b1),abss(c1));
  157.         a=x1*10;
  158.         b=y1*10;
  159.         c=z1*10;
  160.         a1=a1*10/t;
  161.         b1=b1*10/t;
  162.         c1=c1*10/t;
  163.         for (i=0; i<t; i++) {
  164.                 point(abs(a),abs(b),abs(c),le);
  165.                 a+=a1;
  166.                 b+=b1;
  167.                 c+=c1;
  168.         }
  169.         point(x2,y2,z2,le);
  170. }

  171. void box(uchar x1,uchar y1,uchar z1,uchar x2,uchar y2,uchar z2,uchar fill,uchar le)
  172. {
  173.         uchar i,j,t=0;
  174.         max(&x1,&x2);
  175.         max(&y1,&y2);
  176.         max(&z1,&z2);
  177.         for (i=x1; i<=x2; i++)
  178.                 t|=1<<i;
  179.         if (!le)
  180.                 t=~t;
  181.         if (fill) {
  182.                 if (le) {
  183.                         for (i=z1; i<=z2; i++) {
  184.                                 for (j=y1; j<=y2; j++)
  185.                                         display[j][i]|=t;
  186.                         }
  187.                 } else {
  188.                         for (i=z1; i<=z2; i++) {
  189.                                 for (j=y1; j<=y2; j++)
  190.                                         display[j][i]&=t;
  191.                         }
  192.                 }
  193.         } else {
  194.                 if (le) {
  195.                         display[y1][z1]|=t;
  196.                         display[y2][z1]|=t;
  197.                         display[y1][z2]|=t;
  198.                         display[y2][z2]|=t;
  199.                 } else {
  200.                         display[y1][z1]&=t;
  201.                         display[y2][z1]&=t;
  202.                         display[y1][z2]&=t;
  203.                         display[y2][z2]&=t;
  204.                 }
  205.                 t=(0x01<<x1)|(0x01<<x2);
  206.                 if (!le)
  207.                         t=~t;
  208.                 if (le) {
  209.                         for (j=z1; j<=z2; j+=(z2-z1)) {
  210.                                 for (i=y1; i<=y2; i++)
  211.                                         display[i][j]|=t;
  212.                         }
  213.                         for (j=y1; j<=y2; j+=(y2-y1)) {
  214.                                 for (i=z1; i<=z2; i++)
  215.                                         display[j][i]|=t;
  216.                         }
  217.                 } else {
  218.                         for (j=z1; j<=z2; j+=(z2-z1)) {
  219.                                 for (i=y1; i<=y2; i++) {
  220.                                         display[i][j]&=t;
  221.                                 }
  222.                         }
  223.                         for (j=y1; j<=y2; j+=(y2-y1)) {
  224.                                 for (i=z1; i<=z2; i++) {
  225.                                         display[j][i]&=t;
  226.                                 }
  227.                         }
  228.                 }
  229.         }
  230. }

  231. void box_apeak_xy(uchar x1,uchar y1,uchar z1,uchar x2,uchar y2,uchar z2,uchar fill,uchar le)
  232. {
  233.         uchar i;
  234.         max(&z1,&z2);
  235.         if (fill) {
  236.                 for (i=z1; i<=z2; i++) {
  237.                         line (x1,y1,i,x2,y2,i,le);
  238.                 }
  239.         } else {
  240.                 line (x1,y1,z1,x2,y2,z1,le);
  241.                 line (x1,y1,z2,x2,y2,z2,le);
  242.                 line (x2,y2,z1,x2,y2,z2,le);
  243.                 line (x1,y1,z1,x1,y1,z2,le);
  244.         }
  245. }

  246. void poke(uchar n,uchar x,uchar y)
  247. {
  248.         uchar i;
  249.         for (i=0; i<8; i++) {
  250.                 point(x,y,i,judgebit(n,i));
  251.         }
  252. }

  253. void boxtola(char i,uchar n)
  254. {
  255.         if ((i>=0)&(i<8)) {
  256.                 poke(n,0,7-i);
  257.         }
  258.         if ((i>=8)&(i<16)) {
  259.                 poke(n,i-8,0);
  260.         }
  261.         if ((i>=16)&(i<24)) {
  262.                 poke(n,7,i-16);
  263.         }
  264. }

  265. void rolldisplay(uint speed)
  266. {
  267.         uchar j;
  268.         char i,a;
  269.         for (i=23; i>-40; i--) {
  270.                 for (j=0; j<40; j++) {
  271.                         a=i+j;
  272.                         if ((a>=0)&(a<24))
  273.                                 boxtola(a,table_id[j]);
  274.                 }
  275.                 delay(speed);
  276.         }
  277. }

  278. void roll_apeak_yz(uchar n,uint speed)
  279. {
  280.         uchar i;
  281.         switch(n) {
  282.         case 1:
  283.                 for (i=0; i<7; i++) {
  284.                         display[i][7]=0;
  285.                         display[7][6-i]=255;
  286.                         delay(speed);
  287.                 };
  288.                 break;
  289.         case 2:
  290.                 for (i=0; i<7; i++) {
  291.                         display[7][7-i]=0;
  292.                         display[6-i][0]=255;
  293.                         delay(speed);
  294.                 };
  295.                 break;
  296.         case 3:
  297.                 for (i=0; i<7; i++) {
  298.                         display[7-i][0]=0;
  299.                         display[0][i+1]=255;
  300.                         delay(speed);
  301.                 };
  302.                 break;
  303.         case 0:
  304.                 for (i=0; i<7; i++) {
  305.                         display[0][i]=0;
  306.                         display[i+1][7]=255;
  307.                         delay(speed);
  308.                 };
  309.         }
  310. }

  311. void roll_apeak_xy(uchar n,uint speed)
  312. {
  313.         uchar i;
  314.         switch(n) {
  315.         case 1:
  316.                 for (i=0; i<7; i++) {
  317.                         line(0,i,0,0,i,7,0);
  318.                         line(i+1,7,0,i+1,7,7,1);
  319.                         delay(speed);
  320.                 };
  321.                 break;
  322.         case 2:
  323.                 for (i=0; i<7; i++) {
  324.                         line(i,7,0,i,7,7,0);
  325.                         line(7,6-i,0,7,6-i,7,1);
  326.                         delay(speed);
  327.                 };
  328.                 break;
  329.         case 3:
  330.                 for (i=0; i<7; i++) {
  331.                         line(7,7-i,0,7,7-i,7,0);
  332.                         line(6-i,0,0,6-i,0,7,1);
  333.                         delay(speed);
  334.                 };
  335.                 break;
  336.         case 0:
  337.                 for (i=0; i<7; i++) {
  338.                         line(7-i,0,0,7-i,0,7,0);
  339.                         line(0,i+1,0,0,i+1,7,1);
  340.                         delay(speed);
  341.                 };
  342.         }
  343. }

  344. void roll_3_xy(uchar n,uint speed)
  345. {
  346.         uchar i;
  347.         switch(n) {
  348.         case 1:
  349.                 for (i=0; i<8; i++) {
  350.                         box_apeak_xy (0,i,0,7,7-i,7,1,1);
  351.                         delay(speed);
  352.                         if (i<7)
  353.                                 box_apeak_xy (3,3,0,0,i,7,1,0);
  354.                 };
  355.                 break;
  356.         case 2:
  357.                 for (i=0; i<8; i++) {
  358.                         box_apeak_xy (7-i,0,0,i,7,7,1,1);
  359.                         delay(speed);
  360.                         if (i<7)
  361.                                 box_apeak_xy (3,4,0,i,7,7,1,0);
  362.                 };
  363.                 break;
  364.         case 3:
  365.                 for (i=0; i<8; i++) {
  366.                         box_apeak_xy (0,i,0,7,7-i,7,1,1);
  367.                         delay(speed);
  368.                         if (i<7)
  369.                                 box_apeak_xy (4,4,0,7,7-i,7,1,0);
  370.                 };
  371.                 break;
  372.         case 0:
  373.                 for (i=0; i<8; i++) {
  374.                         box_apeak_xy (7-i,0,0,i,7,7,1,1);
  375.                         delay(speed);
  376.                         if (i<7)
  377.                                 box_apeak_xy (4,3,0,7-i,0,7,1,0);
  378.                 };
  379.         }
  380. }

  381. void trans(uchar z,uint speed)
  382. {
  383.         uchar i,j;
  384.         for (j=0; j<8; j++) {
  385.                 for (i=0; i<8; i++) {
  386.                         display[z][i]>>=1;
  387.                 }
  388.                 delay(speed);
  389.         }
  390. }

  391. void tranoutchar(uchar c,uint speed)
  392. {
  393.         uchar i,j,k,a,i2=0;
  394.         for (i=0; i<8; i++) {
  395.                 if (i<7)
  396.                         box_apeak_xy (i+1,0,0,i+1,7,7,1,1);
  397.                 box_apeak_xy (i2,0,0,i2,7,7,1,0);
  398.                 a=0;
  399.                 i2=i+1;
  400.                 for (j=0; j<=i; j++) {
  401.                         a=a|(1<<j);
  402.                 }
  403.                 for (k=0; k<8; k++) {
  404.                         display[k][3]|=table_cha[c][k]&a;
  405.                         display[k][4]|=table_cha[c][k]&a;
  406.                 }
  407.                 delay(speed);
  408.         }
  409. }

  410. void transss()
  411. {
  412.         uchar i,j;
  413.         for (i=0; i<8; i++) {
  414.                 for (j=0; j<8; j++)
  415.                         display[i][j]<<=1;
  416.         }
  417. }



  418. /*From now on,the function below is to display the flash.*/

  419. void flash_1()
  420. {
  421.         clear(0);
  422.         type(1,0);
  423.         delay(60000);
  424.         type(2,0);
  425.         delay(60000);
  426.         type(3,0);
  427.         delay(60000);
  428.         type(4,0);
  429.         delay(60000);
  430.         delay(60000);
  431.         clear(0);
  432.         rolldisplay(30000);
  433.         type(0,7);
  434.         delay(60000);
  435.         trailler(6000);
  436.         delay(60000);
  437. }

  438. void flash_2()
  439. {
  440.         uchar i;
  441.         for (i=129; i>0; i--) {
  442.                 cirp(i-2,0,1);
  443.                 delay(8000);
  444.                 cirp(i-1,0,0);
  445.         }
  446.         delay(8000);
  447.         for (i=0; i<136; i++) {
  448.                 cirp(i,1,1);
  449.                 delay(8000);
  450.                 cirp(i-8,1,0);
  451.         }
  452.         delay(8000);
  453.         for (i=129; i>0; i--) {
  454.                 cirp(i-2,0,1);
  455.                 delay(8000);
  456.         }
  457.         delay(8000);
  458.         for (i=0; i<128; i++) {
  459.                 cirp(i-8,1,0);
  460.                 delay(8000);
  461.         }
  462.         delay(60000);
  463. }

  464. void flash_3()
  465. {
  466.         char i;
  467.         for (i=0; i<8; i++) {
  468.                 box_apeak_xy(0,i,0,7,i,7,1,1);
  469.                 delay(20000);
  470.                 if (i<7)
  471.                         box_apeak_xy(0,i,0,7,i,7,1,0);
  472.         }
  473.         for (i=7; i>=0; i--) {
  474.                 box_apeak_xy(0,i,0,7,i,7,1,1);
  475.                 delay(20000);
  476.                 if (i>0)
  477.                         box_apeak_xy(0,i,0,7,i,7,1,0);
  478.         }
  479.         for (i=0; i<8; i++) {
  480.                 box_apeak_xy(0,i,0,7,i,7,1,1);
  481.                 delay(20000);
  482.                 if (i<7)
  483.                         box_apeak_xy(0,i,0,7,i,7,1,0);
  484.         }
  485. }

  486. void flash_4()
  487. {
  488.         char i,j,an[8];
  489.         for (j=7; j<15; j++)
  490.                 an[j-7]=j;
  491.         for (i=0; i<=16; i++) {
  492.                 for (j=0; j<8; j++) {
  493.                         if ((an[j]<8)&(an[j]>=0))
  494.                                 line(0,an[j],j,7,an[j],j,1);
  495.                 }
  496.                 for (j=0; j<8; j++) {
  497.                         if (((an[j]+1)<8)&(an[j]>=0))
  498.                                 line(0,an[j]+1,j,7,an[j]+1,j,0);
  499.                 }
  500.                 for (j=0; j<8; j++) {
  501.                         if (an[j]>0)
  502.                                 an[j]--;
  503.                 }
  504.                 delay(15000);
  505.         }
  506.         for (j=0; j<8; j++)
  507.                 an[j]=1-j;
  508.         for (i=0; i<=16; i++) {
  509.                 for (j=0; j<8; j++) {
  510.                         if ((an[j]<8)&(an[j]>=0))
  511.                                 line(0,an[j],j,7,an[j],j,1);
  512.                 }
  513.                 for (j=0; j<8; j++) {
  514.                         if (((an[j]-1)<7)&(an[j]>0))
  515.                                 line(0,an[j]-1,j,7,an[j]-1,j,0);
  516.                 }
  517.                 for (j=0; j<8; j++) {
  518.                         if (an[j]<7)
  519.                                 an[j]++;
  520.                 }
  521.                 delay(15000);
  522.         }
  523. }

  524. void flash_5()
  525. {
  526.         uint a=15000;//a=delay
  527.         char i=8,j,an[4];
  528.         //1
  529.         for (j=7; j<11; j++)
  530.                 an[j-7]=j;
  531.         while(i--) {
  532.                 for (j=0; j<4; j++) {
  533.                         if (an[j]<8)
  534.                                 box_apeak_xy(j,an[j],j,7-j,an[j],7-j,0,1);
  535.                         if (an[j]<7)
  536.                                 box_apeak_xy(j,an[j]+1,j,7-j,an[j]+1,7-j,0,0);
  537.                 }
  538.                 for (j=0; j<4; j++) {
  539.                         if (an[j]>3)
  540.                                 an[j]--;
  541.                 }
  542.                 delay(a);
  543.         }
  544.         //2
  545.         i=3;
  546.         for (j=0; j<4; j++)
  547.                 an[j]=5-j;
  548.         while(i--) {
  549.                 for (j=1; j<4; j++) {
  550.                         if (an[j]<4)
  551.                                 box_apeak_xy(j,an[j],j,7-j,an[j],7-j,0,1);
  552.                         if (an[j]<3)
  553.                                 box_apeak_xy(j,an[j]+1,j,7-j,an[j]+1,7-j,0,0);
  554.                 }
  555.                 for (j=0; j<4; j++) {
  556.                         if (an[j]>0)
  557.                                 an[j]--;
  558.                 }
  559.                 delay(a);
  560.         }
  561.         //3
  562.         i=3;
  563.         for (j=1; j<4; j++)
  564.                 an[j]=4-j;
  565.         while(i--) {
  566.                 for (j=1; j<4; j++) {
  567.                         if (an[j]>=0)
  568.                                 box_apeak_xy(j,an[j],j,7-j,an[j],7-j,0,1);
  569.                         if (an[j]>0)
  570.                                 box_apeak_xy(j,an[j]-1,j,7-j,an[j]-1,7-j,0,0);
  571.                 }
  572.                 for (j=1; j<4; j++) {
  573.                         if (an[j]<3)
  574.                                 an[j]++;
  575.                 }
  576.                 delay(a);
  577.         }
  578.         //4
  579.         i=3;
  580.         for (j=0; j<4; j++)
  581.                 an[j]=j+1;
  582.         while(i--) {
  583.                 for (j=1; j<4; j++) {
  584.                         if (an[j]>3)
  585.                                 box_apeak_xy(j,an[j],j,7-j,an[j],7-j,0,1);
  586.                         if (an[j]>3)
  587.                                 box_apeak_xy(j,an[j]-1,j,7-j,an[j]-1,7-j,0,0);
  588.                 }
  589.                 for (j=0; j<4; j++)
  590.                         an[j]++;
  591.                 delay(a);
  592.         }
  593.         //5
  594.         i=3;
  595.         for (j=3; j<6; j++)
  596.                 an[j-2]=j;
  597.         while(i--) {
  598.                 for (j=1; j<4; j++) {
  599.                         box_apeak_xy(j,an[j],j,7-j,an[j],7-j,0,1);
  600.                         box_apeak_xy(j,an[j]+1,j,7-j,an[j]+1,7-j,0,0);
  601.                 }
  602.                 for (j=0; j<4; j++) {
  603.                         if (an[j]>3)
  604.                                 an[j]--;
  605.                 }
  606.                 delay(a);
  607.         }
  608.         //6
  609.         i=3;
  610.         for (j=0; j<4; j++)
  611.                 an[j]=5-j;
  612.         while(i--) {
  613.                 for (j=1; j<4; j++) {
  614.                         if (an[j]<4)
  615.                                 box_apeak_xy(j,an[j],j,7-j,an[j],7-j,0,1);
  616.                         if (an[j]<3)
  617.                                 box_apeak_xy(j,an[j]+1,j,7-j,an[j]+1,7-j,0,0);
  618.                 }
  619.                 for (j=0; j<4; j++) {
  620.                         if (an[j]>0)
  621.                                 an[j]--;
  622.                 }
  623.                 delay(a);
  624.         }
  625.         //7
  626.         i=3;
  627.         for (j=0; j<4; j++)
  628.                 an[j]=3-j;
  629.         an[0]=2;
  630.         while(i--) {
  631.                 for (j=0; j<3; j++) {
  632.                         if (an[j]>=0)
  633.                                 box_apeak_xy(j,an[j],j,7-j,an[j],7-j,0,1);
  634.                         if (an[j]>=0)
  635.                                 box_apeak_xy(j,an[j]+1,j,7-j,an[j]+1,7-j,0,0);
  636.                 }
  637.                 for (j=0; j<4; j++) {
  638.                         if (j<5-i)
  639.                                 an[j]--;
  640.                 }
  641.                 delay(a);
  642.         }
  643.         //8
  644.         i=10;
  645.         for (j=0; j<4; j++)
  646.                 an[j]=j-2;
  647.         while(i--) {
  648.                 for (j=0; j<4; j++) {
  649.                         if (an[j]>=0)
  650.                                 box_apeak_xy(j,an[j],j,7-j,an[j],7-j,0,1);
  651.                         if (an[j]>=0)
  652.                                 box_apeak_xy(j,an[j]-1,j,7-j,an[j]-1,7-j,0,0);
  653.                 }
  654.                 for (j=0; j<4; j++) {
  655.                         if (an[j]<7)
  656.                                 an[j]++;
  657.                 }
  658.                 delay(a);
  659.         }
  660. }

  661. void flash_6()
  662. {
  663.         uchar i,j,k,z;
  664.         roll_apeak_yz(1,10000);
  665.         roll_apeak_yz(2,10000);
  666.         roll_apeak_yz(3,10000);
  667.         roll_apeak_yz(0,10000);
  668.         roll_apeak_yz(1,10000);
  669.         roll_apeak_yz(2,10000);
  670.         roll_apeak_yz(3,10000);
  671.         for (i=0; i<3; i++) {
  672.                 for (j=0; j<8; j++) {
  673.                         for (k=0; k<8; k++) {
  674.                                 if ((table_3p[i][j]>>k)&1) {
  675.                                         for (z=1; z<8; z++) {
  676.                                                 point (j,7-k,z,1);
  677.                                                 if (z-1)
  678.                                                         point (j,7-k,z-1,0);
  679.                                                 delay(5000);
  680.                                         }
  681.                                 }
  682.                         }
  683.                 }
  684.                 trans(7,15000);
  685.         }
  686. }

  687. void flash_7()
  688. {
  689.         uchar i;
  690.         uint a=3000;
  691.         roll_apeak_yz(0,10000);
  692.         roll_apeak_yz(1,10000);
  693.         roll_apeak_yz(2,10000);
  694.         roll_apeak_yz(3,10000);
  695.         roll_apeak_yz(0,10000);
  696.         roll_apeak_yz(1,10000);
  697.         roll_apeak_yz(2,10000);
  698.         roll_apeak_yz(3,10000);
  699.         roll_apeak_yz(0,10000);
  700.         roll_apeak_yz(1,10000);
  701.         roll_apeak_yz(2,10000);
  702.         roll_apeak_xy(0,10000);
  703.         roll_apeak_xy(1,10000);
  704.         roll_apeak_xy(2,10000);
  705.         roll_apeak_xy(3,10000);
  706.         roll_apeak_xy(0,10000);
  707.         roll_apeak_xy(1,10000);
  708.         roll_apeak_xy(2,10000);
  709.         roll_apeak_xy(3,10000);
  710.         for (i=0; i<8; i++) {
  711.                 box_apeak_xy (0,i,0,7-i,i,7,1,1);
  712.                 delay(a);
  713.         }
  714.         delay(30000);
  715.         roll_3_xy(0,a);
  716.         delay(30000);
  717.         roll_3_xy(1,a);
  718.         delay(30000);
  719.         roll_3_xy(2,a);
  720.         delay(30000);
  721.         roll_3_xy(3,a);
  722.         delay(30000);
  723.         roll_3_xy(0,a);
  724.         delay(30000);
  725.         roll_3_xy(1,a);
  726.         delay(30000);
  727.         roll_3_xy(2,a);
  728.         delay(30000);
  729.         roll_3_xy(3,a);
  730.         for (i=7; i>0; i--) {
  731.                 box_apeak_xy(i,0,0,i,7,7,1,0);
  732.                 delay(a);
  733.         }
  734. }

  735. void flash_8()
  736. {
  737.         uchar i;
  738.         for (i=5; i<8; i++) {
  739.                 tranoutchar(i,10000);
  740.                 delay(60000);
  741.                 delay(60000);
  742.         }
  743. }

  744. void flash_9()
  745. {
  746.         char i;
  747.         uchar j,an[8],x,y,t,x1,y1;
  748.         for (i=0; i<8; i++) {
  749.                 box_apeak_xy (i,0,0,i,7,7,1,1);
  750.                 if (i)
  751.                         box_apeak_xy (i-1,0,0,i-1,7,7,1,0);
  752.                 delay(10000);
  753.         }
  754.         roll_apeak_xy(3,10000);
  755.         roll_apeak_xy(0,10000);
  756.         roll_apeak_xy(1,10000);
  757.         for (i=0; i<7; i++) {
  758.                 line(6-i,6-i,0,6-i,6-i,7,1);
  759.                 line(i,7,0,i,7,7,0);
  760.                 delay(10000);
  761.         }
  762.         for (i=0; i<8; i++)
  763.                 an[i]=14;
  764.         for (i=0; i<85; i++) {
  765.                 clear(0);
  766.                 for (j=0; j<8; j++) {
  767.                         t=an[j]%28;
  768.                         x=dat2[t]>>5;
  769.                         y=(dat2[t]>>2)&0x07;
  770.                         t=(an[j]-14)%28;
  771.                         x1=dat2[t]>>5;
  772.                         y1=(dat2[t]>>2)&0x07;
  773.                         line(x,y,j,x1,y1,j,1);
  774.                 }
  775.                 for (j=0; j<8; j++) {
  776.                         if ((i>j)&(j>i-71))
  777.                                 an[j]++;
  778.                 }
  779.                 delay(5000);
  780.         }
  781.         for (i=0; i<85; i++) {
  782.                 clear(0);
  783.                 for (j=0; j<8; j++) {
  784.                         t=an[j]%28;
  785.                         x=dat2[t]>>5;
  786.                         y=(dat2[t]>>2)&0x07;
  787.                         t=(an[j]-14)%28;
  788.                         x1=dat2[t]>>5;
  789.                         y1=(dat2[t]>>2)&0x07;
  790.                         line(x,y,j,x1,y1,j,1);
  791.                 }
  792.                 for (j=0; j<8; j++) {
  793.                         if ((i>j)&(j>i-71))
  794.                                 an[j]--;
  795.                 }
  796.                 delay(5000);
  797.         }
  798.         for (i=0; i<29; i++) {
  799.                 clear(0);
  800.                 t=an[0]%28;
  801.                 x=dat2[t]>>5;
  802.                 y=(dat2[t]>>2)&0x07;
  803.                 t=(an[0]-14)%28;
  804.                 x1=dat2[t]>>5;
  805.                 y1=(dat2[t]>>2)&0x07;
  806.                 box_apeak_xy(x,y,0,x1,y1,7,0,1);
  807.                 box_apeak_xy(x,y,1,x1,y1,6,0,1);
  808.                 an[0]++;
  809.                 delay(5000);
  810.         }
  811.         for (i=0; i<16; i++) {
  812.                 clear(0);
  813.                 t=an[0]%28;
  814.                 x=dat2[t]>>5;
  815.                 y=(dat2[t]>>2)&0x07;
  816.                 t=(an[0]-14)%28;
  817.                 x1=dat2[t]>>5;
  818.                 y1=(dat2[t]>>2)&0x07;
  819.                 box_apeak_xy(x,y,0,x1,y1,7,1,1);
  820.                 an[0]--;
  821.                 delay(5000);
  822.         }
  823.         for (i=0; i<8; i++) {
  824.                 line(i,i,0,0,0,i,0);
  825.                 delay(5000);
  826.         }
  827.         for (i=1; i<7; i++) {
  828.                 line(i,i,7,7,7,i,0);
  829.                 delay(5000);
  830.         }
  831.         for (i=1; i<8; i++) {
  832.                 clear(0);
  833.                 box(7,7,7,7-i,7-i,7-i,0,1);
  834.                 delay(10000);
  835.         }
  836.         for (i=1; i<7; i++) {
  837.                 clear(0);
  838.                 box(0,0,0,7-i,7-i,7-i,0,1);
  839.                 delay(10000);
  840.         }
  841.         for (i=1; i<8; i++) {
  842.                 clear(0);
  843.                 box(0,0,0,i,i,i,0,1);
  844.                 delay(10000);
  845.         }
  846.         for (i=1; i<7; i++) {
  847.                 clear(0);
  848.                 box(7,0,0,i,7-i,7-i,0,1);
  849.                 delay(10000);
  850.         }
  851.         for (i=1; i<8; i++) {
  852.                 box(7,0,0,7-i,i,i,1,1);
  853.                 delay(10000);
  854.         }
  855.         for (i=1; i<7; i++) {
  856.                 clear(0);
  857.                 box(0,7,7,7-i,i,i,1,1);
  858.                 delay(10000);
  859.         }
  860. }

  861. void flash_10()
  862. {
  863.         uchar i,j,an[4],x,y,t;
  864.         for (i=1; i<7; i++) {
  865.                 clear(0);
  866.                 box(0,6,6,1,7,7,1,1);
  867.                 box(i,6,6-i,i+1,7,7-i,1,1);
  868.                 box(i,6,6,i+1,7,7,1,1);
  869.                 box(0,6,6-i,1,7,7-i,1,1);
  870.                 box(0,6-i,6,1,7-i,7,1,1);
  871.                 box(i,6-i,6-i,i+1,7-i,7-i,1,1);
  872.                 box(i,6-i,6,i+1,7-i,7,1,1);
  873.                 box(0,6-i,6-i,1,7-i,7-i,1,1);
  874.                 delay(30000);
  875.         }
  876.         for (i=0; i<4; i++) {
  877.                 an[i]=6*i;
  878.         }
  879.         for (i=0; i<35; i++) {
  880.                 clear(0);
  881.                 for(j=0; j<4; j++) {
  882.                         t=an[j]%24;
  883.                         x=dat3[t]>>4;
  884.                         y=dat3[t]&0x0f;
  885.                         box(x,y,0,x+1,y+1,1,1,1);
  886.                         box(x,y,6,x+1,y+1,7,1,1);
  887.                 }
  888.                 for (j=0; j<4; j++)
  889.                         an[j]++;
  890.                 delay(10000);
  891.         }
  892.         for (i=0; i<35; i++) {
  893.                 clear(0);
  894.                 for(j=0; j<4; j++) {
  895.                         t=an[j]%24;
  896.                         x=dat3[t]>>4;
  897.                         y=dat3[t]&0x0f;
  898.                         box(x,y,0,x+1,y+1,1,1,1);
  899.                         box(x,y,6,x+1,y+1,7,1,1);
  900.                 }
  901.                 for (j=0; j<4; j++)
  902.                         an[j]--;
  903.                 delay(10000);
  904.         }
  905.         for (i=0; i<35; i++) {
  906.                 clear(0);
  907.                 for(j=0; j<4; j++) {
  908.                         t=an[j]%24;
  909.                         x=dat3[t]>>4;
  910.                         y=dat3[t]&0x0f;
  911.                         box(x,0,y,x+1,1,y+1,1,1);
  912.                         box(x,6,y,x+1,7,y+1,1,1);
  913.                 }
  914.                 for (j=0; j<4; j++)
  915.                         an[j]++;
  916.                 delay(10000);
  917.         }
  918.         for (i=0; i<36; i++) {
  919.                 clear(0);
  920.                 for(j=0; j<4; j++) {
  921.                         t=an[j]%24;
  922.                         x=dat3[t]>>4;
  923.                         y=dat3[t]&0x0f;
  924.                         box(x,0,y,x+1,1,y+1,1,1);
  925.                         box(x,6,y,x+1,7,y+1,1,1);
  926.                 }
  927.                 for (j=0; j<4; j++)
  928.                         an[j]--;
  929.                 delay(10000);
  930.         }
  931.         for (i=6; i>0; i--) {
  932.                 clear(0);
  933.                 box(0,6,6,1,7,7,1,1);
  934.                 box(i,6,6-i,i+1,7,7-i,1,1);
  935.                 box(i,6,6,i+1,7,7,1,1);
  936.                 box(0,6,6-i,1,7,7-i,1,1);
  937.                 box(0,6-i,6,1,7-i,7,1,1);
  938.                 box(i,6-i,6-i,i+1,7-i,7-i,1,1);
  939.                 box(i,6-i,6,i+1,7-i,7,1,1);
  940.                 box(0,6-i,6-i,1,7-i,7-i,1,1);
  941.                 delay(30000);
  942.         }
  943. }

  944. void flash_11()
  945. {
  946.         uchar i,j,t,x,y;
  947.         uchar code daa[13]= {0,1,2,0x23,5,6,7,6,5,0x23,2,1,0};
  948.         for (j=0; j<5; j++) {
  949.                 for (i=0; i<13; i++) {
  950.                         if (daa[i]>>4) {
  951.                                 t=daa[i]&0x0f;
  952.                                 line (0,0,t+1,0,7,t+1,1);
  953.                         } else
  954.                                 t=daa[i];
  955.                         line (0,0,t,0,7,t,1);
  956.                         transss();
  957.                         delay(10000);
  958.                 }
  959.         }
  960.         for (j=1; j<8; j++) {
  961.                 if (j>3)
  962.                         t=4;
  963.                 else
  964.                         t=j;
  965.                 for (i=0; i<24; i+=j) {
  966.                         x=dat3[i]>>4;
  967.                         y=dat3[i]&0x0f;
  968.                         box_apeak_xy(0,x,y,0,x+1,y+1,1,1);
  969.                         transss();
  970.                         delay(10000);
  971.                 }
  972.         }
  973.         for (j=1; j<8; j++) {
  974.                 if (j>3)
  975.                         t=4;
  976.                 else
  977.                         t=j;
  978.                 for (i=0; i<24; i+=j) {
  979.                         x=dat3[i]>>4;
  980.                         y=dat3[i]&0x0f;
  981.                         point (0,x,y,1);
  982.                         transss();
  983.                         delay(10000);
  984.                 }
  985.         }
  986. }

  987. void main()
  988. {
  989.         sinter();
  990.         while(1) {
  991.                 // clear(0);
  992.                 /*play list*/
  993.                 //flash_1();
  994.                 clear(0);
  995.                 flash_2();
  996.                 flash_3();
  997.                 flash_4();
  998.                 flash_4();
  999.                 flash_5();
  1000.                 flash_5();
  1001.                 flash_6();
  1002.                 flash_7();
  1003.                 flash_8();
  1004.                 flash_9();
  1005.                 flash_10();
  1006.                 clear (0);
  1007.                 flash_11();
  1008.                 flash_9();
  1009.                 flash_5();
  1010.                 flash_7();
  1011.                 flash_5();
  1012.                 flash_6();
  1013.                 flash_8();
  1014.                 flash_9();
  1015.                 flash_10();
  1016.         }
  1017. }

  1018. //P0;   //573 in
  1019. //P1;  //uln2803
  1020. //P2;  //573 LE

  1021. void print() interrupt 1
  1022. {
  1023.         uchar i;
  1024.         static uchar layer=0;
  1025.         P1=0;
  1026.         for (i=0; i<8; i++) {
  1027.                 P2=1<<i;
  1028.                 delay(3);
  1029.                 P0=display[layer][i];
  1030.                 delay(3);
  1031.         }
  1032.         P1=1<<layer;
  1033.         if (layer<7)
  1034.                 layer++;
  1035.         else
  1036.                 layer=0;
  1037.         TH0=0xc0;
  1038.         TL0=0;
  1039. }
复制代码



schematic.pdf

591.54 KB, 下载次数: 13

原理图

回复

使用道具 举报

板凳
ID:416364 发表于 2019-1-13 22:44 | 只看该作者
RXD/TXD是程序下载口
回复

使用道具 举报

地板
ID:428457 发表于 2019-1-14 09:10 | 只看该作者
头疼的没有注释的程序,哈哈哈
回复

使用道具 举报

5#
ID:453974 发表于 2019-1-18 15:00 | 只看该作者
要不直接搜一个程序吧,改一下引脚
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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