找回密码
 立即注册

QQ登录

只需一步,快速开始

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

8×8×8光立方程序、原理图及PCB等制作资料

  [复制链接]
跳转到指定楼层
楼主
        这是从一个网友给你的8×8×8光立方程序、原理图及PCB等制作资料,感觉比较好,特此将该制作资料分享给大家,下载: 8×8×8光立方程序、原理图及PCB等.rar (3.52 MB, 下载次数: 250)

光立方的效果视频:



  
元件名称
  
参数规格
数量
AT89S52单片机+管座
DIP40
1
晶振
24MHZ32.678kHZ
1
电解电容
10uF
5
陶瓷电容
22P30P
2
74HC573锁存器+管座
DIP20
8
ULN2803A+管座
DIP18
1
电阻
220R
70
电阻
10K4.7K
10
排阻
10K
1
滑动变阻器(长方体扁形)
10K
1
白发蓝LED
(长脚)3*3mm
600
ISP接口座
10pin
1
USB接口
(母口)
1
单排插
成对的,上下可接
10
按键

10
开关
(上下按的dip6
1
PCB 覆铜板
20*25cm
2
固定铜柱(带螺丝)

4
排线(8P)
10CM
1
导线

5





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

  4. #define uint unsigned int

  5. uchar display[8][8];

  6. /*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. //初始化子程序
  20. void sinter()

  21. {

  22.          IE=0x82;

  23.          TCON=0x01;

  24.          TH0=0xf0;

  25.          TL0=0;

  26.          TR0=1;

  27. }


  28. //延时子程序
  29. void delay(uint i)

  30. {                                                                                                     

  31.          while (i--){
  32.                  _nop_();
  33.                  }
  34. }



  35. // 计算圈数

  36. uchar abs(uchar a)

  37. {

  38.          uchar b;

  39.          b=a/10;

  40.          a=a-b*10;

  41.          if (a>=5)

  42.          b++;

  43.          return b;

  44. }

  45. /*绝对值*/

  46. uchar abss(char a)

  47. {

  48.          if (a<0)

  49.          a=-a;

  50.          return a;

  51. }

  52. /*比较字符串大小,大的移后边*/

  53. void max(uchar *a,uchar *b)

  54. {

  55.    uchar t;

  56.    if ((*a)>(*b))

  57.    {

  58.                    t=(*a);

  59.                    (*a)=(*b);

  60.                    (*b)=t;   

  61.    }

  62. }

  63. /*计算最大数并返回*/

  64. uchar maxt(uchar a,uchar b,uchar c)

  65. {

  66.          if (a<b)

  67.          a=b;

  68.          if (a<c)

  69.          a=c;

  70.          return a;

  71. }
  72. //清屏子程序
  73. void clear(char le)

  74. {

  75.          uchar i,j;

  76.          for (j=0;j<8;j++)

  77.          {

  78.                    for (i=0;i<8;i++)

  79.                    display[j][i]=le;

  80.          }

  81. }


  82. //点显示子程序
  83. void point(uchar x,uchar y,uchar z,uchar le)

  84. {

  85.          uchar ch1,ch0;

  86.          ch1=1<<x;

  87.          ch0=~ch1;

  88.          if (le)

  89.          display[z][y]=display[z][y]|ch1;

  90.          else

  91.          display[z][y]=display[z][y]&ch0;

  92. }




  93. void cirp(char cpp,uchar dir,uchar le)

  94. {

  95.          uchar a,b,c,cp;

  96.          if ((cpp<128)&(cpp>=0))

  97.          {

  98.                    if (dir)

  99.                    cp=127-cpp;

  100.                    else

  101.                    cp=cpp;

  102.                    a=(dat[cp]>>5)&0x07;

  103.                    b=(dat[cp]>>2)&0x07;

  104.                    c=dat[cp]&0x03;

  105.                    if (cpp>63)

  106.                    c=7-c;

  107.                    point (a,b,c,le);

  108.          }

  109. }
  110. //线显示
  111. void line(uchar x1,uchar y1,uchar z1,uchar x2,uchar y2,uchar z2,uchar le)

  112. {

  113.          char t,a,b,c,a1,b1,c1,i;

  114.          a1=x2-x1;

  115.          b1=y2-y1;

  116.          c1=z2-z1;

  117.          t=maxt(abss(a1),abss(b1),abss(c1));

  118.          a=x1*10;

  119.          b=y1*10;

  120.          c=z1*10;

  121.          a1=a1*10/t;

  122.          b1=b1*10/t;

  123.          c1=c1*10/t;

  124.          for (i=0;i<t;i++)

  125.          {

  126.                    point(abs(a),abs(b),abs(c),le);

  127.                    a+=a1;

  128.                    b+=b1;

  129.                    c+=c1;

  130.          }

  131.          point(x2,y2,z2,le);

  132. }
  133. //立方显示
  134. void box(uchar x1,uchar y1,uchar z1,uchar x2,uchar y2,uchar z2,uchar fill,uchar le)

  135. {

  136.          uchar i,j,t=0;

  137.          max(&x1,&x2);

  138.          max(&y1,&y2);

  139.          max(&z1,&z2);

  140.          for (i=x1;i<=x2;i++)

  141.                    t|=1<<i;

  142.          if (!le)

  143.                    t=~t;

  144.          if (fill)

  145.          {

  146.                    if (le)

  147.                    {

  148.                             for (i=z1;i<=z2;i++)

  149.                             {

  150.                                      for (j=y1;j<=y2;j++)

  151.                                                display[j][i]|=t;

  152.                             }

  153.                    }

  154.                    else

  155.                    {

  156.                             for (i=z1;i<=z2;i++)

  157.                             {

  158.                                      for (j=y1;j<=y2;j++)

  159.                                                display[j][i]&=t;

  160.                             }

  161.                    }

  162.          }

  163.          else

  164.          {

  165.                    if (le)

  166.                    {

  167.                             display[y1][z1]|=t;

  168.                             display[y2][z1]|=t;

  169.                             display[y1][z2]|=t;

  170.                             display[y2][z2]|=t;

  171.                    }

  172.                    else

  173.                    {

  174.                            display[y1][z1]&=t;

  175.                             display[y2][z1]&=t;

  176.                             display[y1][z2]&=t;

  177.                             display[y2][z2]&=t;

  178.                    }

  179.                    t=(0x01<<x1)|(0x01<<x2);

  180.                    if (!le)

  181.                             t=~t;

  182.                    if (le)

  183.                    {

  184.                             for (j=z1;j<=z2;j+=(z2-z1))

  185.                             {

  186.                                      for (i=y1;i<=y2;i++)

  187.                                                display[i][j]|=t;

  188.                             }

  189.                             for (j=y1;j<=y2;j+=(y2-y1))

  190.                             {

  191.                                      for (i=z1;i<=z2;i++)

  192.                                                display[j][i]|=t;

  193.                             }

  194.                    }

  195.                    else

  196.                    {

  197.                             for (j=z1;j<=z2;j+=(z2-z1))

  198.                             {

  199.                                      for (i=y1;i<=y2;i++)

  200.                                      {

  201.                                      display[i][j]&=t;

  202.                                      }

  203.                             }

  204.                             for (j=y1;j<=y2;j+=(y2-y1))

  205.                             {

  206.                                      for (i=z1;i<=z2;i++)

  207.                                      {

  208.                                      display[j][i]&=t;

  209.                                      }

  210.                             }

  211.                    }

  212.          }

  213. }
  214. //垂直于xy面的正方行
  215. void box_apeak_xy(uchar x1,uchar y1,uchar z1,uchar x2,uchar y2,uchar z2,uchar fill,uchar le)

  216. {

  217.          uchar i;

  218.          max(&z1,&z2);

  219.          if (fill)

  220.          {

  221.                    for (i=z1;i<=z2;i++)

  222.                    {

  223.                             line (x1,y1,i,x2,y2,i,le);

  224.                    }

  225.          }

  226.          else

  227.          {

  228.                    line (x1,y1,z1,x2,y2,z1,le);

  229.                    line (x1,y1,z2,x2,y2,z2,le);

  230.                    line (x2,y2,z1,x2,y2,z2,le);

  231.                    line (x1,y1,z1,x1,y1,z2,le);

  232.          }

  233. }


  234. //滚动面

  235. void roll_apeak_yz(uchar n,uint speed)

  236. {

  237.          uchar i;

  238.          switch(n)

  239.          {

  240.                    case 1:

  241.                             for (i=0;i<7;i++)

  242.                             {

  243.                                      display[i][7]=0;

  244.                                      display[7][6-i]=255;

  245.                                      delay(speed);

  246.                             };

  247.                             break;

  248.                    case 2:

  249.                             for (i=0;i<7;i++)

  250.                             {

  251.                                      display[7][7-i]=0;

  252.                                      display[6-i][0]=255;

  253.                                      delay(speed);

  254.                             };

  255.                             break;

  256.                    case 3:

  257.                             for (i=0;i<7;i++)

  258.                             {

  259.                                      display[7-i][0]=0;

  260.                                      display[0][i+1]=255;

  261.                                      delay(speed);

  262.                             };

  263.                             break;

  264.                    case 0:

  265.                             for (i=0;i<7;i++)

  266.                             {

  267.                                      display[0][i]=0;

  268.                                      display[i+1][7]=255;

  269.                                      delay(speed);

  270.                             };

  271.          }

  272. }

  273. void roll_apeak_xy(uchar n,uint speed)

  274. {

  275.          uchar i;

  276.          switch(n)

  277.          {

  278.                    case 1:

  279.                             for (i=0;i<7;i++)

  280.                             {

  281.                                      line(0,i,0,0,i,7,0);

  282.                                      line(i+1,7,0,i+1,7,7,1);

  283.                                      delay(speed);

  284.                             };

  285.                             break;

  286.                    case 2:

  287.                             for (i=0;i<7;i++)

  288.                             {

  289.                                      line(i,7,0,i,7,7,0);

  290.                                      line(7,6-i,0,7,6-i,7,1);

  291.                                      delay(speed);

  292.                             };

  293.                             break;

  294.                    case 3:

  295.                             for (i=0;i<7;i++)

  296.                             {

  297.                                      line(7,7-i,0,7,7-i,7,0);

  298.                                      line(6-i,0,0,6-i,0,7,1);

  299.                                      delay(speed);

  300.                             };

  301.                             break;

  302.                    case 0:

  303.                             for (i=0;i<7;i++)

  304.                             {

  305.                                      line(7-i,0,0,7-i,0,7,0);

  306.                                      line(0,i+1,0,0,i+1,7,1);

  307.                                      delay(speed);

  308.                             };

  309.          }

  310. }

  311. void roll_3_xy(uchar n,uint speed)

  312. {

  313.          uchar i;

  314.          switch(n)

  315.          {

  316.                    case 1:

  317.                             for (i=0;i<8;i++)

  318.                             {

  319.                                      box_apeak_xy (0,i,0,7,7-i,7,1,1);

  320.                                      delay(speed);

  321.                                      if (i<7)

  322.                                      box_apeak_xy (3,3,0,0,i,7,1,0);

  323.                             };

  324.                             break;

  325.                    case 2:

  326.                             for (i=0;i<8;i++)

  327.                             {

  328.                                       box_apeak_xy (7-i,0,0,i,7,7,1,1);

  329.                                      delay(speed);

  330.                                      if (i<7)

  331.                                      box_apeak_xy (3,4,0,i,7,7,1,0);

  332.                             };

  333.                             break;

  334.                    case 3:

  335.                             for (i=0;i<8;i++)

  336.                             {

  337.                                      box_apeak_xy (0,i,0,7,7-i,7,1,1);

  338.                                      delay(speed);

  339.                                      if (i<7)

  340.                                      box_apeak_xy (4,4,0,7,7-i,7,1,0);

  341.                             };

  342.                             break;

  343.                    case 0:

  344.                             for (i=0;i<8;i++)

  345.                             {

  346.                                      box_apeak_xy (7-i,0,0,i,7,7,1,1);

  347.                                      delay(speed);

  348.                                      if (i<7)

  349.                                      box_apeak_xy (4,3,0,7-i,0,7,1,0);

  350.                             };

  351.          }

  352. }

  353. void trans(uchar z,uint speed)

  354. {

  355.          uchar i,j;

  356.          for (j=0;j<8;j++)

  357.          {

  358.                    for (i=0;i<8;i++)

  359.                    {

  360.                             display[z][i]>>=1;

  361.                    }

  362.                    delay(speed);

  363.          }

  364. }

  365. void tranoutchar(uchar c,uint speed)

  366. {

  367.          uchar i,j,k,a,i2=0;

  368.          for (i=0;i<8;i++)

  369.          {

  370.                    if (i<7)

  371.                    box_apeak_xy (i+1,0,0,i+1,7,7,1,1);

  372.                    box_apeak_xy (i2,0,0,i2,7,7,1,0);

  373.                    a=0;

  374.                    i2=i+1;

  375.                    for (j=0;j<=i;j++)

  376.                    {

  377.                             a=a|(1<<j);

  378.                    }

  379.                    for (k=0;k<8;k++)

  380.                    {

  381.                             display[k][3]|=table_cha[c][k]&a;

  382.                             display[k][4]|=table_cha[c][k]&a;

  383.                    }

  384.                    delay(speed);

  385.          }

  386. }

  387. void transss()

  388. {

  389.          uchar i,j;

  390.          for (i=0;i<8;i++)

  391.          {

  392.                    for (j=0;j<8;j++)

  393.                    display[i][j]<<=1;

  394.          }

  395. }



  396. /*动画程序*/

  397. void flash_1()

  398. {

  399.          uchar i;

  400.          for (i=129;i>0;i--)

  401.          {

  402.                    cirp(i-2,0,1);

  403.                    delay(800);

  404.                    cirp(i-1,0,0);

  405.          }

  406.          delay(800);     

  407.          for (i=0;i<136;i++)

  408.          {

  409.                    cirp(i,1,1);

  410.                    delay(800);

  411.                    cirp(i-8,1,0);

  412.          }

  413.          delay(800);

  414.                   for (i=129;i>0;i--)

  415.          {

  416.                    cirp(i-2,0,1);

  417.                    delay(800);

  418.          }

  419.          delay(800);

  420.                    for (i=0;i<128;i++)

  421.          {

  422.                    cirp(i-8,1,0);

  423.                    delay(800);

  424.          }

  425.          delay(6000);  

  426. }


  427. void flash_2()

  428. {

  429.          char i;

  430.          for (i=0;i<8;i++)

  431.          {

  432.                    box_apeak_xy(0,i,0,7,i,7,1,1);

  433.                    delay(2000);

  434.                    if (i<7)

  435.                    box_apeak_xy(0,i,0,7,i,7,1,0);

  436.          }

  437.          for (i=7;i>=0;i--)

  438.          {

  439.                    box_apeak_xy(0,i,0,7,i,7,1,1);

  440.                    delay(2000);

  441.                    if (i>0)

  442.                    box_apeak_xy(0,i,0,7,i,7,1,0);

  443.          }

  444.          for (i=0;i<8;i++)

  445.          {

  446.                    box_apeak_xy(0,i,0,7,i,7,1,1);

  447.                    delay(2000);

  448.                    if (i<7)

  449.                    box_apeak_xy(0,i,0,7,i,7,1,0);

  450.          }

  451. }

  452. void flash_3()

  453. {

  454.          char i,j,an[8];

  455.          for (j=7;j<15;j++)

  456.                    an[j-7]=j;

  457.          for (i=0;i<=16;i++)

  458.          {

  459.                    for (j=0;j<8;j++)

  460.                    {

  461.                             if ((an[j]<8)&(an[j]>=0))

  462.                             line(0,an[j],j,7,an[j],j,1);

  463.                    }

  464.                    for (j=0;j<8;j++)

  465.                    {

  466.                             if (((an[j]+1)<8)&(an[j]>=0))

  467.                             line(0,an[j]+1,j,7,an[j]+1,j,0);

  468.                    }

  469.                    for (j=0;j<8;j++)

  470.                    {

  471.                             if (an[j]>0)

  472.                             an[j]--;

  473.                    }

  474.                    delay(1500);

  475.          }

  476.          for (j=0;j<8;j++)

  477.                    an[j]=1-j;

  478.          for (i=0;i<=16;i++)

  479.          {

  480.                    for (j=0;j<8;j++)

  481.                    {

  482.                             if ((an[j]<8)&(an[j]>=0))

  483.                             line(0,an[j],j,7,an[j],j,1);

  484.                    }

  485.                    for (j=0;j<8;j++)

  486.                    {

  487.                             if (((an[j]-1)<7)&(an[j]>0))

  488.                             line(0,an[j]-1,j,7,an[j]-1,j,0);

  489.                    }

  490.                    for (j=0;j<8;j++)

  491.                    {

  492.                             if (an[j]<7)

  493.                             an[j]++;

  494.                    }

  495.                    delay(1500);

  496.          }

  497. }

  498. void flash_4()

  499. {

  500.          uint a=1500;//a=delay

  501.          char i=8,j,an[4];

  502.          //1

  503.          for (j=7;j<11;j++)

  504.                    an[j-7]=j;

  505.          while(i--)

  506.          {

  507.                    for (j=0;j<4;j++)

  508.                    {

  509.                             if (an[j]<8)

  510.                             box_apeak_xy(j,an[j],j,7-j,an[j],7-j,0,1);

  511.                             if (an[j]<7)

  512.                             box_apeak_xy(j,an[j]+1,j,7-j,an[j]+1,7-j,0,0);

  513.                    }

  514.                    for (j=0;j<4;j++)

  515.                    {

  516.                             if (an[j]>3)

  517.                             an[j]--;

  518.                    }

  519.                    delay(a);

  520.          }

  521.          //2

  522.          i=3;

  523.          for (j=0;j<4;j++)

  524.          an[j]=5-j;

  525.          while(i--)

  526.          {

  527.                    for (j=1;j<4;j++)

  528.                    {

  529.                             if (an[j]<4)

  530.                             box_apeak_xy(j,an[j],j,7-j,an[j],7-j,0,1);

  531.                             if (an[j]<3)

  532.                             box_apeak_xy(j,an[j]+1,j,7-j,an[j]+1,7-j,0,0);

  533.                    }

  534.                    for (j=0;j<4;j++)

  535.                    {

  536.                             if (an[j]>0)

  537.                             an[j]--;

  538.                    }

  539.                    delay(a);

  540.          }

  541.          //3

  542.          i=3;

  543.          for (j=1;j<4;j++)

  544.          an[j]=4-j;

  545.          while(i--)

  546.          {

  547.                    for (j=1;j<4;j++)

  548.                    {

  549.                             if (an[j]>=0)

  550.                             box_apeak_xy(j,an[j],j,7-j,an[j],7-j,0,1);

  551.                             if (an[j]>0)

  552.                             box_apeak_xy(j,an[j]-1,j,7-j,an[j]-1,7-j,0,0);

  553.                    }

  554.                    for (j=1;j<4;j++)

  555.                    {

  556.                             if (an[j]<3)

  557.                             an[j]++;

  558.                    }

  559.                    delay(a);

  560.          }



  561.          //4

  562.          i=3;

  563.          for (j=0;j<4;j++)

  564.          an[j]=j+1;

  565.          while(i--)

  566.          {

  567.                    for (j=1;j<4;j++)

  568.                    {

  569.                             if (an[j]>3)

  570.                             box_apeak_xy(j,an[j],j,7-j,an[j],7-j,0,1);

  571.                             if (an[j]>3)

  572.                             box_apeak_xy(j,an[j]-1,j,7-j,an[j]-1,7-j,0,0);

  573.                    }

  574.                    for (j=0;j<4;j++)

  575.                             an[j]++;

  576.                    delay(a);

  577.          }

  578.          //5

  579.          i=3;

  580.          for (j=3;j<6;j++)

  581.                    an[j-2]=j;

  582.          while(i--)

  583.          {

  584.                    for (j=1;j<4;j++)

  585.                    {

  586.                             box_apeak_xy(j,an[j],j,7-j,an[j],7-j,0,1);

  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.                    {

  591.                             if (an[j]>3)

  592.                             an[j]--;

  593.                    }

  594.                    delay(a);

  595.          }

  596.          //6

  597.          i=3;

  598.          for (j=0;j<4;j++)

  599.          an[j]=5-j;

  600.          while(i--)

  601.          {

  602.                    for (j=1;j<4;j++)

  603.                    {

  604.                             if (an[j]<4)

  605.                             box_apeak_xy(j,an[j],j,7-j,an[j],7-j,0,1);

  606.                             if (an[j]<3)

  607.                             box_apeak_xy(j,an[j]+1,j,7-j,an[j]+1,7-j,0,0);

  608.                    }

  609.                    for (j=0;j<4;j++)

  610.                    {

  611.                             if (an[j]>0)

  612.                             an[j]--;

  613.                    }

  614.                    delay(a);

  615.          }

  616.          //7

  617.          i=3;

  618.          for (j=0;j<4;j++)

  619.          an[j]=3-j;

  620.          an[0]=2;

  621.          while(i--)

  622.          {

  623.                    for (j=0;j<3;j++)

  624.                    {

  625.                             if (an[j]>=0)

  626.                                      box_apeak_xy(j,an[j],j,7-j,an[j],7-j,0,1);

  627.                             if (an[j]>=0)

  628.                                      box_apeak_xy(j,an[j]+1,j,7-j,an[j]+1,7-j,0,0);

  629.                    }

  630.                    for (j=0;j<4;j++)

  631.                    {

  632.                             if (j<5-i)

  633.                             an[j]--;

  634.                    }

  635.                    delay(a);

  636.          }

  637.          //8

  638.          i=10;

  639.          for (j=0;j<4;j++)

  640.                    an[j]=j-2;

  641.          while(i--)

  642.          {

  643.                    for (j=0;j<4;j++)

  644.                    {

  645.                             if (an[j]>=0)

  646.                             box_apeak_xy(j,an[j],j,7-j,an[j],7-j,0,1);

  647.                             if (an[j]>=0)

  648.                             box_apeak_xy(j,an[j]-1,j,7-j,an[j]-1,7-j,0,0);

  649.                    }

  650.                    for (j=0;j<4;j++)

  651.                    {

  652.                             if (an[j]<7)

  653.                             an[j]++;

  654.                    }

  655.                    delay(a);

  656.          }

  657. }

  658. void flash_5()

  659. {

  660.       uchar i,j,k,z;

  661.       roll_apeak_yz(1,1000);

  662.       roll_apeak_yz(2,1000);

  663.       roll_apeak_yz(3,1000);

  664.       roll_apeak_yz(0,1000);

  665.       roll_apeak_yz(1,1000);

  666.       roll_apeak_yz(2,1000);

  667.       roll_apeak_yz(3,1000);

  668.       for (i=0;i<3;i++)

  669.                {

  670.                          for (j=0;j<8;j++)

  671.                          {

  672.                                   for (k=0;k<8;k++)

  673.                                   {

  674.                                            if ((table_3p[i][j]>>k)&1)

  675.                                            {

  676.                                                      for (z=1;z<8;z++)

  677.                                                               {

  678.                                                                        point (j,7-k,z,1);

  679.                                                                        if (z-1)

  680.                                                                        point (j,7-k,z-1,0);

  681.                                                                        delay(500);

  682.                                                               }

  683.                                            }

  684.                                   }

  685.                          }

  686.                          trans(7,1500);

  687.                }

  688. }

  689. void flash_6()

  690. {

  691.       uchar i;

  692.       uint a=3000;

  693.       roll_apeak_yz(0,1000);

  694.       roll_apeak_yz(1,1000);

  695.       roll_apeak_yz(2,1000);

  696.       roll_apeak_yz(3,1000);

  697.       roll_apeak_yz(0,1000);

  698.       roll_apeak_yz(1,1000);

  699.       roll_apeak_yz(2,1000);

  700.       roll_apeak_yz(3,1000);

  701.       roll_apeak_yz(0,1000);

  702.       roll_apeak_yz(1,1000);

  703.       roll_apeak_yz(2,1000);

  704.       roll_apeak_xy(0,1000);

  705.       roll_apeak_xy(1,1000);

  706.       roll_apeak_xy(2,1000);

  707.       roll_apeak_xy(3,1000);

  708.       roll_apeak_xy(0,1000);

  709.       roll_apeak_xy(1,1000);

  710.       roll_apeak_xy(2,1000);

  711.       roll_apeak_xy(3,1000);

  712.       for (i=0;i<8;i++)

  713.       {

  714.                box_apeak_xy (0,i,0,7-i,i,7,1,1);

  715.                delay(a);

  716.       }

  717.       delay(3000);

  718.       roll_3_xy(0,a);

  719.       delay(3000);

  720.       roll_3_xy(1,a);

  721.       delay(3000);

  722.       roll_3_xy(2,a);

  723.       delay(3000);

  724.       roll_3_xy(3,a);

  725.       delay(3000);

  726.       roll_3_xy(0,a);

  727.       delay(3000);

  728.       roll_3_xy(1,a);

  729.       delay(3000);

  730.       roll_3_xy(2,a);

  731.       delay(3000);

  732.       roll_3_xy(3,a);

  733.       for (i=7;i>0;i--)

  734.       {

  735.                box_apeak_xy(i,0,0,i,7,7,1,0);

  736.                delay(a);

  737.       }

  738. }

  739. void flash_7()

  740. {

  741.       uchar i;

  742.       for (i=5;i<8;i++)

  743.       {

  744.                tranoutchar(i,1000);

  745.                delay(6000);

  746.                delay(6000);

  747.       }

  748. }

  749. void flash_8()

  750. {

  751.       char i;

  752.       uchar j,an[8],x,y,t,x1,y1;

  753.       for (i=0;i<8;i++)

  754.       {

  755.                box_apeak_xy (i,0,0,i,7,7,1,1);

  756.                if (i)

  757.                box_apeak_xy (i-1,0,0,i-1,7,7,1,0);

  758.                delay(1000);

  759.       }

  760.       roll_apeak_xy(3,1000);

  761.       roll_apeak_xy(0,1000);

  762.       roll_apeak_xy(1,1000);

  763.       for (i=0;i<7;i++)

  764.       {

  765.                line(6-i,6-i,0,6-i,6-i,7,1);

  766.                line(i,7,0,i,7,7,0);

  767.                delay(1000);

  768.       }

  769.       for (i=0;i<8;i++)

  770.                an[i]=14;

  771.       for (i=0;i<85;i++)

  772.       {

  773.                clear(0);

  774.                for (j=0;j<8;j++)

  775.                {

  776.                          t=an[j]%28;

  777.                          x=dat2[t]>>5;

  778.                          y=(dat2[t]>>2)&0x07;

  779.                          t=(an[j]-14)%28;

  780.                          x1=dat2[t]>>5;

  781.                          y1=(dat2[t]>>2)&0x07;

  782.                          line(x,y,j,x1,y1,j,1);

  783.                }

  784.                for (j=0;j<8;j++)

  785.                {

  786.                if ((i>j)&(j>i-71))

  787.                an[j]++;

  788.                }

  789.                delay(500);

  790.       }

  791.       for (i=0;i<85;i++)

  792.       {

  793.                clear(0);

  794.                for (j=0;j<8;j++)

  795.                {

  796.                          t=an[j]%28;

  797.                          x=dat2[t]>>5;

  798.                          y=(dat2[t]>>2)&0x07;

  799.                          t=(an[j]-14)%28;

  800.                          x1=dat2[t]>>5;

  801.                          y1=(dat2[t]>>2)&0x07;

  802.                          line(x,y,j,x1,y1,j,1);

  803.                }

  804.                for (j=0;j<8;j++)

  805.                {

  806.                if ((i>j)&(j>i-71))

  807.                an[j]--;

  808.                }

  809.                delay(500);

  810.       }

  811.       for (i=0;i<29;i++)

  812.       {

  813.                clear(0);



  814.                t=an[0]%28;

  815.                x=dat2[t]>>5;

  816.                y=(dat2[t]>>2)&0x07;

  817.                t=(an[0]-14)%28;

  818.                x1=dat2[t]>>5;

  819.                y1=(dat2[t]>>2)&0x07;

  820.                box_apeak_xy(x,y,0,x1,y1,7,0,1);

  821.                box_apeak_xy(x,y,1,x1,y1,6,0,1);

  822.                an[0]++;

  823.                delay(500);

  824.       }

  825.       for (i=0;i<16;i++)

  826.       {

  827.                clear(0);



  828.                t=an[0]%28;

  829.                x=dat2[t]>>5;

  830.                y=(dat2[t]>>2)&0x07;

  831.                t=(an[0]-14)%28;

  832.                x1=dat2[t]>>5;

  833.                y1=(dat2[t]>>2)&0x07;

  834.                box_apeak_xy(x,y,0,x1,y1,7,1,1);

  835.                an[0]--;

  836.                delay(500);

  837.       }

  838.       for (i=0;i<8;i++)

  839.       {

  840.                line(i,i,0,0,0,i,0);

  841.                delay(500);

  842.       }

  843.       for (i=1;i<7;i++)

  844.       {

  845.                line(i,i,7,7,7,i,0);

  846.                delay(500);

  847.       }

  848.       for (i=1;i<8;i++)

  849.       {

  850.                clear(0);

  851.                box(7,7,7,7-i,7-i,7-i,0,1);

  852.                delay(1000);

  853.       }

  854.       for (i=1;i<7;i++)

  855.       {

  856.                clear(0);

  857.                box(0,0,0,7-i,7-i,7-i,0,1);

  858.                delay(1000);

  859.       }

  860.       for (i=1;i<8;i++)

  861.       {

  862.                clear(0);

  863.                box(0,0,0,i,i,i,0,1);

  864.                delay(1000);

  865.       }

  866.       for (i=1;i<7;i++)

  867.       {

  868.                clear(0);

  869.                box(7,0,0,i,7-i,7-i,0,1);

  870.                delay(1000);

  871.       }

  872.       for (i=1;i<8;i++)

  873.       {

  874.                box(7,0,0,7-i,i,i,1,1);

  875.                delay(1000);

  876.       }

  877.       for (i=1;i<7;i++)

  878.       {

  879.                clear(0);

  880.                box(0,7,7,7-i,i,i,1,1);

  881.                delay(1000);

  882.       }

  883. }

  884. void flash_9()

  885. {

  886.       uchar i,j,an[4],x,y,t;

  887.       for (i=1;i<7;i++)

  888.       {

  889.                

  890.                clear(0);

  891.                box(0,6,6,1,7,7,1,1);

  892.                box(i,6,6-i,i+1,7,7-i,1,1);

  893.                box(i,6,6,i+1,7,7,1,1);

  894.                box(0,6,6-i,1,7,7-i,1,1);

  895.                box(0,6-i,6,1,7-i,7,1,1);

  896.                box(i,6-i,6-i,i+1,7-i,7-i,1,1);

  897.                box(i,6-i,6,i+1,7-i,7,1,1);

  898.                box(0,6-i,6-i,1,7-i,7-i,1,1);

  899.                delay(3000);

  900.       }

  901.       for (i=0;i<4;i++)

  902.       {

  903.                an[i]=6*i;

  904.       }

  905.       for (i=0;i<35;i++)

  906.       {

  907.                clear(0);

  908.                for(j=0;j<4;j++)

  909.                {

  910.                          t=an[j]%24;

  911.                          x=dat3[t]>>4;

  912.                          y=dat3[t]&0x0f;

  913.                          box(x,y,0,x+1,y+1,1,1,1);

  914.                          box(x,y,6,x+1,y+1,7,1,1);

  915.                }

  916.                for (j=0;j<4;j++)

  917.                an[j]++;

  918.                delay(1000);

  919.       }

  920.       for (i=0;i<35;i++)

  921.       {

  922.                clear(0);

  923.                for(j=0;j<4;j++)

  924.                {

  925.                          t=an[j]%24;

  926.                          x=dat3[t]>>4;

  927.                          y=dat3[t]&0x0f;

  928.                          box(x,y,0,x+1,y+1,1,1,1);

  929.                          box(x,y,6,x+1,y+1,7,1,1);

  930.                }

  931.                for (j=0;j<4;j++)

  932.                an[j]--;

  933.                delay(1000);

  934.       }

  935.       for (i=0;i<35;i++)

  936.       {

  937.                clear(0);

  938.                for(j=0;j<4;j++)

  939.                {

  940.                          t=an[j]%24;

  941.                          x=dat3[t]>>4;

  942.                          y=dat3[t]&0x0f;

  943.                          box(x,0,y,x+1,1,y+1,1,1);

  944.                          box(x,6,y,x+1,7,y+1,1,1);

  945.                }

  946.                for (j=0;j<4;j++)

  947.                an[j]++;

  948.                delay(1000);

  949.       }

  950.       for (i=0;i<36;i++)

  951.       {

  952.                clear(0);

  953.                for(j=0;j<4;j++)

  954.                {

  955.                          t=an[j]%24;

  956.                          x=dat3[t]>>4;

  957.                          y=dat3[t]&0x0f;

  958.                          box(x,0,y,x+1,1,y+1,1,1);

  959.                          box(x,6,y,x+1,7,y+1,1,1);

  960.                }

  961.                for (j=0;j<4;j++)

  962.                an[j]--;

  963.                delay(1000);

  964.       }

  965.       for (i=6;i>0;i--)

  966.       {

  967.                

  968.                clear(0);

  969.                box(0,6,6,1,7,7,1,1);

  970.                box(i,6,6-i,i+1,7,7-i,1,1);

  971.                box(i,6,6,i+1,7,7,1,1);

  972.                box(0,6,6-i,1,7,7-i,1,1);

  973.                box(0,6-i,6,1,7-i,7,1,1);

  974.                box(i,6-i,6-i,i+1,7-i,7-i,1,1);

  975.                box(i,6-i,6,i+1,7-i,7,1,1);

  976.                box(0,6-i,6-i,1,7-i,7-i,1,1);

  977.                delay(3000);

  978.       }

  979. }

  980. void flash_10()

  981. {

  982.       uchar i,j,t,x,y;

  983.       uchar code daa[13]={0,1,2,0x23,5,6,7,6,5,0x23,2,1,0};

  984.       for (j=0;j<5;j++)

  985.       {

  986.                for (i=0;i<13;i++)

  987.                {

  988.                          if (daa[i]>>4)

  989.                          {

  990.                                   t=daa[i]&0x0f;

  991.                                   line (0,0,t+1,0,7,t+1,1);

  992.                          }

  993.                          else

  994.                                   t=daa[i];

  995.                          line (0,0,t,0,7,t,1);

  996.                          transss();

  997.                          delay(1000);

  998.                }

  999.       }

  1000.       for (j=1;j<8;j++)

  1001.       {

  1002.                if (j>3)

  1003.                          t=4;

  1004.                else

  1005.                          t=j;

  1006.                for (i=0;i<24;i+=j)

  1007.                {

  1008.                          x=dat3[i]>>4;

  1009.                          y=dat3[i]&0x0f;

  1010.                          box_apeak_xy(0,x,y,0,x+1,y+1,1,1);

  1011.                          transss();

  1012.                          delay(1000);

  1013.                }

  1014.       }

  1015.       for (j=1;j<8;j++)

  1016.       {

  1017.                if (j>3)

  1018.                          t=4;

  1019.                else

  1020.                          t=j;

  1021.                for (i=0;i<24;i+=j)

  1022.                {

  1023.                          x=dat3[i]>>4;

  1024.                          y=dat3[i]&0x0f;

  1025.                          point (0,x,y,1);

  1026.                          transss();

  1027.                          delay(1000);

  1028.                }

  1029.       }

  1030. }

  1031. void main()

  1032. {
  1033.                
  1034.          sinter();
  1035.                  while(1){
  1036.       
  1037.         

  1038.       clear(0);

  1039.       flash_1();

  1040.       flash_2();

  1041.       flash_3();

  1042.       flash_4();

  1043.       flash_5();

  1044.       flash_6();

  1045.       flash_7();

  1046.       flash_8();

  1047.       flash_9();

  1048.       clear (0);

  1049.       flash_10();

  1050.    
  1051.          }

  1052. }

  1053. //P0;   //573 in
  1054. //P1;  //uln2803
  1055. //P2;  //573 LE

  1056. void print() interrupt 1//显示中断,不断刷新数组中的数据

  1057. {

  1058.          uchar i;

  1059.          static uchar layer=0;

  1060.          P1=0;

  1061.          for (i=0;i<8;i++)

  1062.          {

  1063.                    P2=1<<i;

  1064.                    delay(3);

  1065.                    P0=display[layer][i];

  1066.                    delay(3);

  1067.          }

  1068.          P1=1<<layer;

  1069.          if (layer<7)

  1070.                    layer++;

  1071.          else

  1072.                    layer=0;

  1073.          TH0=0xf0;

  1074.          TL0=0;

  1075. }
复制代码




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

使用道具 举报

沙发
ID:175687 发表于 2017-4-10 14:53 | 只看该作者
请问程序中flash函数的功能是什么?主程序一开始就执行flash,但是flash函数并没有向P0、P1、P2发送控制命令?
回复

使用道具 举报

板凳
ID:236177 发表于 2017-9-27 21:33 | 只看该作者
那位朋友给我发个原理图(protuse),光看程序有些难懂。
回复

使用道具 举报

地板
ID:187096 发表于 2018-2-3 15:15 | 只看该作者
谢谢分享
回复

使用道具 举报

5#
ID:202184 发表于 2018-2-6 21:12 | 只看该作者
厉害,请教一下你电脑上那个软件是什么?
回复

使用道具 举报

6#
ID:328609 发表于 2018-5-27 00:28 | 只看该作者
好的,这程序适合我用
回复

使用道具 举报

7#
ID:163002 发表于 2020-3-21 19:38 | 只看该作者
这个可以显示温度吗
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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