標題: 有哪位大神有廣州塔的編程 [打印本頁]

作者: yrpc    時間: 2017-1-14 10:53
標題: 有哪位大神有廣州塔的編程
幫下忙

作者: angmall    時間: 2017-1-14 17:29
廣州 塔diy程序,效果詳見:http://www.torrancerestoration.com/bbs/dpj-54601-1.html
http://www.torrancerestoration.com/bbs/dpj-59352-1.html

  1. /********************************************************/
  2. /****** 名稱:廣州塔          ***************************/
  3. /****** 編寫:憂傷的季節(jié)      ***************************/
  4. /****** 時間:2014年12月01日  ***************************/
  5. /********************************************************/
  6. #include<reg52.h>
  7. #include<STC12C5A60S2.H>
  8. #define uchar unsigned char
  9. #define uint unsigned int
  10. uchar i,k,a;
  11. uint cy,cy1,pw;
  12. uchar code table[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};// 一個燈順時針流水
  13. uchar code table1[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};// 一個燈順時針流水
  14. uchar code table2[]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};
  15. uchar code table3[]={0x00,0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe};
  16. uchar code table4[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
  17. uchar code table5[]={0x00,0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f};
  18. uchar code table6[]={0x7f,0x3f,0x1f,0x0f,0x07,0x03,0x01,0x00};
  19. uchar code table7[]={0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00};
  20. uchar code table8[]={0x55,0xaa};
  21. uchar code table9[]={0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xff};
  22. uchar code table10[]={0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff};
  23. void delay1(uint z)
  24. {
  25.         uint x,y;
  26.         for(x=250;x>0;x--)
  27.         for(y=z;y>0;y--);
  28. }
  29. void delay2(uint x)
  30. {
  31.         uint a,b;
  32.         for(a=x;a>0;a--)
  33.         for(b=5;b>0;b--);
  34. }
  35. /******************兩層向上*********************/
  36. void yiceng()
  37. {
  38.         for(k=0;k<8;k++){P3=table[k];P2=table[k];delay1(200);}
  39. }
  40. /******************兩層向下*********************/
  41. void yiceng1()
  42. {
  43.         for(k=0;k<8;k++){P3=table1[k];P2=table1[k];delay1(200);}
  44. }
  45. /******************兩條單個順時針滴水*********************/
  46. void dishushun()
  47. {
  48.         for(i=0;i<8;i++)
  49.         {
  50.                 P1=table4[i];
  51.                 P0=table2[i];
  52.                 for(k=0;k<8;k++){P2=table1[k];delay1(5);}P2=0xff;
  53.                 for(k=0;k<8;k++){P3=table1[k];delay1(5);}P3=0xff;
  54.         }
  55. }
  56. /******************兩條單個逆時針滴水*********************/
  57. void dishuni()
  58. {
  59.         for(i=0;i<8;i++)
  60.         {
  61.                 P1=table2[i];
  62.                 P0=table4[i];
  63.                 for(k=0;k<8;k++){P2=table1[k];delay1(5);}P2=0xff;
  64.                 for(k=0;k<8;k++){P3=table1[k];delay1(5);}P3=0xff;
  65.         }
  66. }
  67. /******************滴水下*********************/
  68. void liangdix()
  69. {
  70.         for(i=0;i<8;i++)
  71.         {
  72.                 P1=table2[i];
  73.                 P0=table4[i];
  74.                 for(k=0;k<8;k++){P2=table1[k];delay1(50);}P2=0xff;
  75.                 for(k=0;k<8;k++){P3=table1[k];delay1(50);}P3=0xff;
  76.         }
  77. }
  78. /******************滴水上*********************/
  79. void liangdis()
  80. {
  81.         for(i=0;i<8;i++)
  82.         {
  83.                 P1=table4[i];
  84.                 P0=table2[i];
  85.                 for(k=0;k<8;k++){P2=table[k];delay1(50);}P2=0xff;
  86.                 for(k=0;k<8;k++){P3=table[k];delay1(50);}P3=0xff;
  87.         }
  88. }
  89. /******************兩層從中間向上下拉伸*********************/
  90. void sxl()
  91. {
  92.         P1=0xff;
  93.         P0=0xff;
  94.         for(k=0;k<8;k++){P3=table4[k];P2=table4[k];delay1(200);}
  95. }
  96. /******************兩層從頂向下拉伸*********************/
  97. void sxl1()
  98. {
  99.         P1=0xff;
  100.         P0=0xff;
  101.         for(k=0;k<8;k++){P3=table6[k];P2=table6[k];delay1(400);}
  102. }
  103. /******************兩層從中間向上下拉伸*********************/
  104. void sxls()
  105. {
  106.         P1=0xff;
  107.         P0=0xff;
  108.         for(k=0;k<8;k++){P3=table6[k];P2=table7[k];delay1(200);}
  109. }
  110. /******************單層從底向上旋轉(zhuǎn)*********************/
  111. void danxuan()
  112. {  P2=0xff;P3=0xff;
  113.         for(i=0;i<8;i++)
  114.         {
  115.                 P1=0x00;P0=0x00;
  116.                 P3=table[i];
  117.                 for(k=0;k<8;k++){P0=table5[k];delay1(200);}
  118.                 for(k=0;k<8;k++){P1=table3[k];delay1(200);}
  119.         }P3=0xff;
  120.         for(i=0;i<8;i++)
  121.         {
  122.                 P1=0x00;P0=0x00;
  123.                 P2=table[i];
  124.                 for(k=0;k<8;k++){P0=table5[k];delay1(200);}
  125.                 for(k=0;k<8;k++){P1=table3[k];delay1(200);}
  126.         }P2=0xff;
  127. }
  128. /******************單層從頂向上旋轉(zhuǎn)*********************/
  129. void danxuand()
  130. {  P2=0xff;P3=0xff;
  131.         for(i=0;i<8;i++)
  132.         {
  133.                 P1=0x00;P0=0x00;
  134.                 P2=table1[i];
  135.                 for(k=0;k<8;k++){P0=table5[k];delay1(200);}
  136.                 for(k=0;k<8;k++){P1=table3[k];delay1(200);}
  137.         }P2=0xff;
  138.         for(i=0;i<8;i++)
  139.         {
  140.                 P1=0x00;P0=0x00;
  141.                 P3=table1[i];
  142.                 for(k=0;k<8;k++){P0=table5[k];delay1(200);}
  143.                 for(k=0;k<8;k++){P1=table3[k];delay1(200);}
  144.         }P3=0xff;
  145. }
  146. /******************兩層豎立向圓順時針合圍*********************/
  147. void shw()
  148. {
  149.         P2=0x00;P3=0x00;
  150.         for(k=0;k<8;k++){P0=table5[k];P1=table3[k];delay1(700);}
  151. }
  152. /******************兩層豎立向圓順時針回收*********************/
  153. void shw1()
  154. {
  155.         P2=0x00;P3=0x00;
  156.         for(k=0;k<8;k++){P0=table6[k];P1=table7[k];delay1(700);}
  157. }
  158. /******************兩層豎立向圓逆時針回收*********************/
  159. void shw3()
  160. {
  161.         P2=0x00;P3=0x00;
  162.         for(k=0;k<8;k++){P0=table7[k];P1=table6[k];delay1(700);}
  163. }
  164. /******************兩層豎立向圓逆時針合圍*********************/
  165. void shw2()
  166. {
  167.         P2=0x00;P3=0x00;
  168.         for(k=0;k<8;k++){P0=table9[k];P1=table10[k];delay1(700);}
  169. }
  170. /******************四條單個順時針滴水閃*********************/
  171. void sidisun()
  172. {
  173.         for(i=0;i<2;i++)
  174.         {
  175.                 P1=table8[i];
  176.                 P0=table8[i];
  177.                 for(k=0;k<8;k++){P2=table1[k];delay1(50);}P2=0xff;
  178.                 for(k=0;k<8;k++){P3=table1[k];delay1(50);}P3=0xff;delay1(700);
  179.         }
  180. }
  181. /******************四條單個順時針滴水閃*********************/
  182. void sidisun1()
  183. {
  184.         for(i=0;i<2;i++)
  185.         {
  186.                 P1=table8[i];
  187.                 P0=table8[i];
  188.                 for(k=0;k<8;k++){P2=table1[k];delay1(50);}P2=0xff;
  189.                 for(k=0;k<8;k++){P3=table1[k];delay1(50);}P3=0xff;
  190.         }
  191. }
  192. /******************四條單個順時針滴水轉(zhuǎn)*********************/
  193. void sisunz()
  194. { P2=0x00;
  195.         P3=0x00;
  196.         for(i=0;i<2;i++)
  197.         {
  198.                 P1=table8[i];
  199.                 P0=table8[i];
  200.                 delay1(1000);
  201.         }
  202. }
  203. /******************呼吸燈*********************/
  204. void hxd()
  205. {
  206.         P0=0xff;P1=0xff;
  207.         for(pw=1;pw<cy1;pw++)
  208.         {
  209.                 P2=0x55;P3=0x55;delay2(pw);
  210.                 P2=0xff;P3=0xff;delay2(cy1-pw);         
  211.         }
  212.         for(pw=1;pw<cy1;pw++)
  213.         {
  214.                 P2=0xaa;P3=0xaa;delay2(pw);
  215.                 P2=0xff;P3=0xff;delay2(cy1-pw);         
  216.         }
  217. }
  218. /******************半層呼吸燈*********************/
  219. void bhxd()
  220. {
  221.         P0=0xff;P1=0xff;
  222.         for(pw=1;pw<cy;pw++)
  223.         {
  224.                 P2=0x00;P3=0xff;delay2(pw);
  225.                 P2=0xff;P3=0x00;delay2(cy-pw);         
  226.         }
  227. }
  228. /******************四滴下閃*********************/
  229. void sxs()
  230. {
  231.         P1=0x55;
  232.         P0=0x55;
  233.         for(k=0;k<8;k++){P2=table1[k];delay1(500);}P2=0xff;
  234.         for(k=0;k<8;k++){P3=table1[k];delay1(500);}P3=0xff;
  235. }
  236. /******************四滴上閃*********************/
  237. void sxss()
  238. {
  239.         P1=0xaa;
  240.         P0=0xaa;
  241.         for(k=0;k<8;k++){P3=table[k];delay1(500);}P2=0xff;
  242.         for(k=0;k<8;k++){P2=table[k];delay1(500);}P3=0xff;
  243. }
  244. void main()
  245. {
  246.         cy=2000,cy1=1200,pw=1;
  247.         while(1)
  248.         {

  249.                 bhxd();//半層呼吸
  250.                 for(a=0;a<5;a++){P0=0xff;P1=0xff;yiceng();}//兩層上跳動
  251.                 for(a=0;a<5;a++){P0=0xff;P1=0xff;yiceng1();}//兩層下跳動
  252.                 for(a=0;a<5;a++){P0=0xff;P1=0xff;yiceng();yiceng1();}//兩層上下跳動
  253.                 for(a=0;a<8;a++){dishushun();}   //兩條單個順時針滴水
  254.                 for(a=0;a<8;a++){dishuni();}           //兩條單個逆時針滴水
  255.                 for(a=0;a<5;a++){dishushun();dishuni();}//兩條單個順時+逆時針滴水
  256.                 for(a=0;a<5;a++){liangdix();}//兩滴掉下
  257.                 for(a=0;a<5;a++){liangdis();}//兩滴掉上
  258.                 for(a=0;a<5;a++){sxl();}
  259.                 for(a=0;a<4;a++){sidisun();}
  260.                 for(a=0;a<2;a++){hxd();}//呼吸燈
  261.                 for(a=0;a<2;a++){shw();shw2();}//兩層豎立向圓順+逆時針合圍
  262.                 for(a=0;a<2;a++){shw1();shw3();}//兩層豎立向圓順+逆時針回收
  263.                 for(a=0;a<4;a++){sxl1();}//兩層從頂向下拉伸
  264.                 for(a=0;a<5;a++){sxls();}//兩層從中間向上下拉伸
  265.                 for(a=0;a<4;a++){sisunz();}
  266.                 danxuan();//單層從底向上旋轉(zhuǎn)
  267.                 danxuand();//單層從頂向下旋轉(zhuǎn)
  268.                 for(a=0;a<3;a++){shw();} //兩層豎立向圓順時針合圍
  269.                 for(a=0;a<3;a++){shw2();}//兩層豎立向圓逆時針合圍
  270.                 for(a=0;a<2;a++){shw1();}//兩層豎立向圓順時針回收
  271.                 for(a=0;a<2;a++){shw3();}//兩層豎立向圓逆時針回收
  272.                 for(a=0;a<4;a++){sidisun1();}
  273.                 sxs();//四滴下閃
  274.                 sxss();//四滴上閃
  275.         }                                                  
  276. }
  277. /********************* the end******************************/

復(fù)制代碼





歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1