找回密码
 立即注册

QQ登录

只需一步,快速开始

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

有哪位大神有广州塔的编程

[复制链接]
跳转到指定楼层
楼主
ID:161715 发表于 2017-1-14 10:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
帮下忙
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:155507 发表于 2017-1-14 17:29 | 只看该作者
广州 塔diy程序,效果详见:http://www.51hei.com/bbs/dpj-54601-1.html
http://www.51hei.com/bbs/dpj-59352-1.html

  1. /********************************************************/
  2. /****** 名称:广州塔          ***************************/
  3. /****** 编写:忧伤的季节      ***************************/
  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. /******************单层从底向上旋转*********************/
  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. /******************单层从顶向上旋转*********************/
  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. /******************四条单个顺时针滴水转*********************/
  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();//单层从底向上旋转
  267.                 danxuand();//单层从顶向下旋转
  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******************************/

复制代码
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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