標題:
有哪位大神有廣州塔的編程
[打印本頁]
作者:
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
/********************************************************/
/****** 名稱:廣州塔 ***************************/
/****** 編寫:憂傷的季節(jié) ***************************/
/****** 時間:2014年12月01日 ***************************/
/********************************************************/
#include<reg52.h>
#include<STC12C5A60S2.H>
#define uchar unsigned char
#define uint unsigned int
uchar i,k,a;
uint cy,cy1,pw;
uchar code table[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};// 一個燈順時針流水
uchar code table1[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};// 一個燈順時針流水
uchar code table2[]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};
uchar code table3[]={0x00,0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe};
uchar code table4[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
uchar code table5[]={0x00,0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f};
uchar code table6[]={0x7f,0x3f,0x1f,0x0f,0x07,0x03,0x01,0x00};
uchar code table7[]={0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00};
uchar code table8[]={0x55,0xaa};
uchar code table9[]={0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xff};
uchar code table10[]={0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff};
void delay1(uint z)
{
uint x,y;
for(x=250;x>0;x--)
for(y=z;y>0;y--);
}
void delay2(uint x)
{
uint a,b;
for(a=x;a>0;a--)
for(b=5;b>0;b--);
}
/******************兩層向上*********************/
void yiceng()
{
for(k=0;k<8;k++){P3=table[k];P2=table[k];delay1(200);}
}
/******************兩層向下*********************/
void yiceng1()
{
for(k=0;k<8;k++){P3=table1[k];P2=table1[k];delay1(200);}
}
/******************兩條單個順時針滴水*********************/
void dishushun()
{
for(i=0;i<8;i++)
{
P1=table4[i];
P0=table2[i];
for(k=0;k<8;k++){P2=table1[k];delay1(5);}P2=0xff;
for(k=0;k<8;k++){P3=table1[k];delay1(5);}P3=0xff;
}
}
/******************兩條單個逆時針滴水*********************/
void dishuni()
{
for(i=0;i<8;i++)
{
P1=table2[i];
P0=table4[i];
for(k=0;k<8;k++){P2=table1[k];delay1(5);}P2=0xff;
for(k=0;k<8;k++){P3=table1[k];delay1(5);}P3=0xff;
}
}
/******************滴水下*********************/
void liangdix()
{
for(i=0;i<8;i++)
{
P1=table2[i];
P0=table4[i];
for(k=0;k<8;k++){P2=table1[k];delay1(50);}P2=0xff;
for(k=0;k<8;k++){P3=table1[k];delay1(50);}P3=0xff;
}
}
/******************滴水上*********************/
void liangdis()
{
for(i=0;i<8;i++)
{
P1=table4[i];
P0=table2[i];
for(k=0;k<8;k++){P2=table[k];delay1(50);}P2=0xff;
for(k=0;k<8;k++){P3=table[k];delay1(50);}P3=0xff;
}
}
/******************兩層從中間向上下拉伸*********************/
void sxl()
{
P1=0xff;
P0=0xff;
for(k=0;k<8;k++){P3=table4[k];P2=table4[k];delay1(200);}
}
/******************兩層從頂向下拉伸*********************/
void sxl1()
{
P1=0xff;
P0=0xff;
for(k=0;k<8;k++){P3=table6[k];P2=table6[k];delay1(400);}
}
/******************兩層從中間向上下拉伸*********************/
void sxls()
{
P1=0xff;
P0=0xff;
for(k=0;k<8;k++){P3=table6[k];P2=table7[k];delay1(200);}
}
/******************單層從底向上旋轉(zhuǎn)*********************/
void danxuan()
{ P2=0xff;P3=0xff;
for(i=0;i<8;i++)
{
P1=0x00;P0=0x00;
P3=table[i];
for(k=0;k<8;k++){P0=table5[k];delay1(200);}
for(k=0;k<8;k++){P1=table3[k];delay1(200);}
}P3=0xff;
for(i=0;i<8;i++)
{
P1=0x00;P0=0x00;
P2=table[i];
for(k=0;k<8;k++){P0=table5[k];delay1(200);}
for(k=0;k<8;k++){P1=table3[k];delay1(200);}
}P2=0xff;
}
/******************單層從頂向上旋轉(zhuǎn)*********************/
void danxuand()
{ P2=0xff;P3=0xff;
for(i=0;i<8;i++)
{
P1=0x00;P0=0x00;
P2=table1[i];
for(k=0;k<8;k++){P0=table5[k];delay1(200);}
for(k=0;k<8;k++){P1=table3[k];delay1(200);}
}P2=0xff;
for(i=0;i<8;i++)
{
P1=0x00;P0=0x00;
P3=table1[i];
for(k=0;k<8;k++){P0=table5[k];delay1(200);}
for(k=0;k<8;k++){P1=table3[k];delay1(200);}
}P3=0xff;
}
/******************兩層豎立向圓順時針合圍*********************/
void shw()
{
P2=0x00;P3=0x00;
for(k=0;k<8;k++){P0=table5[k];P1=table3[k];delay1(700);}
}
/******************兩層豎立向圓順時針回收*********************/
void shw1()
{
P2=0x00;P3=0x00;
for(k=0;k<8;k++){P0=table6[k];P1=table7[k];delay1(700);}
}
/******************兩層豎立向圓逆時針回收*********************/
void shw3()
{
P2=0x00;P3=0x00;
for(k=0;k<8;k++){P0=table7[k];P1=table6[k];delay1(700);}
}
/******************兩層豎立向圓逆時針合圍*********************/
void shw2()
{
P2=0x00;P3=0x00;
for(k=0;k<8;k++){P0=table9[k];P1=table10[k];delay1(700);}
}
/******************四條單個順時針滴水閃*********************/
void sidisun()
{
for(i=0;i<2;i++)
{
P1=table8[i];
P0=table8[i];
for(k=0;k<8;k++){P2=table1[k];delay1(50);}P2=0xff;
for(k=0;k<8;k++){P3=table1[k];delay1(50);}P3=0xff;delay1(700);
}
}
/******************四條單個順時針滴水閃*********************/
void sidisun1()
{
for(i=0;i<2;i++)
{
P1=table8[i];
P0=table8[i];
for(k=0;k<8;k++){P2=table1[k];delay1(50);}P2=0xff;
for(k=0;k<8;k++){P3=table1[k];delay1(50);}P3=0xff;
}
}
/******************四條單個順時針滴水轉(zhuǎn)*********************/
void sisunz()
{ P2=0x00;
P3=0x00;
for(i=0;i<2;i++)
{
P1=table8[i];
P0=table8[i];
delay1(1000);
}
}
/******************呼吸燈*********************/
void hxd()
{
P0=0xff;P1=0xff;
for(pw=1;pw<cy1;pw++)
{
P2=0x55;P3=0x55;delay2(pw);
P2=0xff;P3=0xff;delay2(cy1-pw);
}
for(pw=1;pw<cy1;pw++)
{
P2=0xaa;P3=0xaa;delay2(pw);
P2=0xff;P3=0xff;delay2(cy1-pw);
}
}
/******************半層呼吸燈*********************/
void bhxd()
{
P0=0xff;P1=0xff;
for(pw=1;pw<cy;pw++)
{
P2=0x00;P3=0xff;delay2(pw);
P2=0xff;P3=0x00;delay2(cy-pw);
}
}
/******************四滴下閃*********************/
void sxs()
{
P1=0x55;
P0=0x55;
for(k=0;k<8;k++){P2=table1[k];delay1(500);}P2=0xff;
for(k=0;k<8;k++){P3=table1[k];delay1(500);}P3=0xff;
}
/******************四滴上閃*********************/
void sxss()
{
P1=0xaa;
P0=0xaa;
for(k=0;k<8;k++){P3=table[k];delay1(500);}P2=0xff;
for(k=0;k<8;k++){P2=table[k];delay1(500);}P3=0xff;
}
void main()
{
cy=2000,cy1=1200,pw=1;
while(1)
{
bhxd();//半層呼吸
for(a=0;a<5;a++){P0=0xff;P1=0xff;yiceng();}//兩層上跳動
for(a=0;a<5;a++){P0=0xff;P1=0xff;yiceng1();}//兩層下跳動
for(a=0;a<5;a++){P0=0xff;P1=0xff;yiceng();yiceng1();}//兩層上下跳動
for(a=0;a<8;a++){dishushun();} //兩條單個順時針滴水
for(a=0;a<8;a++){dishuni();} //兩條單個逆時針滴水
for(a=0;a<5;a++){dishushun();dishuni();}//兩條單個順時+逆時針滴水
for(a=0;a<5;a++){liangdix();}//兩滴掉下
for(a=0;a<5;a++){liangdis();}//兩滴掉上
for(a=0;a<5;a++){sxl();}
for(a=0;a<4;a++){sidisun();}
for(a=0;a<2;a++){hxd();}//呼吸燈
for(a=0;a<2;a++){shw();shw2();}//兩層豎立向圓順+逆時針合圍
for(a=0;a<2;a++){shw1();shw3();}//兩層豎立向圓順+逆時針回收
for(a=0;a<4;a++){sxl1();}//兩層從頂向下拉伸
for(a=0;a<5;a++){sxls();}//兩層從中間向上下拉伸
for(a=0;a<4;a++){sisunz();}
danxuan();//單層從底向上旋轉(zhuǎn)
danxuand();//單層從頂向下旋轉(zhuǎn)
for(a=0;a<3;a++){shw();} //兩層豎立向圓順時針合圍
for(a=0;a<3;a++){shw2();}//兩層豎立向圓逆時針合圍
for(a=0;a<2;a++){shw1();}//兩層豎立向圓順時針回收
for(a=0;a<2;a++){shw3();}//兩層豎立向圓逆時針回收
for(a=0;a<4;a++){sidisun1();}
sxs();//四滴下閃
sxss();//四滴上閃
}
}
/********************* the end******************************/
復(fù)制代碼
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1