自己写的光立方程序.docx
- 文档编号:7686442
- 上传时间:2023-01-25
- 格式:DOCX
- 页数:40
- 大小:19.21KB
自己写的光立方程序.docx
《自己写的光立方程序.docx》由会员分享,可在线阅读,更多相关《自己写的光立方程序.docx(40页珍藏版)》请在冰豆网上搜索。
自己写的光立方程序
#include
#include
#defineucharunsignedchar
#defineuintunsignedint
uchardisplay[8][8];
ucharcodeTab_BMP1[]={0xC3,0xE7,0x7E,0x24,0x24,0x7E,0xE7,0xC3};
/*rank:
A,1,2,3,4,I,心,U*/
ucharcodetable_cha[8][8]={0x00,0x00,0x00,0xE7,0x42,0x24,0x24,0x18,0x18,0x18,0x24,0x24,0x42,0xE7,0x00,0x00};
/*the"ideasoft"*/
ucharcodetable_id[40]={0x00,0x00,0x00,0xE7,0x42,0x24,0x24,0x18,0x18,0x18,0x24,0x24,0x42,0xE7,0x00,0x00};
/*railway*/
ucharcodedat[128]={0x99,0x24,0x42,0x81,0x81,0x42,0x24,0x99,0x20,0x20,0x3F,0x24,0x24,0xFC,0x04,0x04,0xC3,0xE7,0x7E,0x24,0x24,0x7E,0xE7,0xC3};
/*railway2*/
ucharcodedat2[28]={0x99,0x24,0x42,0x81,0x81,0x42,0x24,0x99,0x20,0x20,0x3F,0x24,0x24,0xFC,0x04,0x04,0xC3,0xE7,0x7E,0x24,0x24,0x7E,0xE7,0xC3};
/*railway3*/
ucharcodedat3[24]={0x99,0x24,0x42,0x81,0x81,0x42,0x24,0x99,0x20,0x20,0x3F,0x24,0x24,0xFC,0x04,0x04,0xC3,0xE7,0x7E,0x24,0x24,0x7E,0xE7,0xC3};
/*3pchar*/
ucharcodetable_3p[3][8]={0x99,0x24,0x42,0x81,0x81,0x42,0x24,0x99,0x20,0x20,0x3F,0x24,0x24,0xFC,0x04,0x04,0xC3,0xE7,0x7E,0x24,0x24,0x7E,0xE7,0xC3};
/*initializtion
Thatistoinitializetheprogram.
Itiswritetosetthetimerinc52mcu.
Sotheprogramcanrenovatetheled_3d_cubeinfixedtimeusetheinterruptfunction.*/
voidsinter()
{
IE=0x82;
TCON=0x01;
TH0=0xc0;
TL0=0;
TR0=1;
}
voiddelay5us(void)//误差-0.026765046296usSTC1T22.1184Mhz
{
unsignedchara,b;
for(b=7;b>0;b--)//速度调试
for(a=2;a>0;a--);
}
voiddelay(uinti)
{
while(i--){
delay5us();}//12t的mcu注释这个延时即可
}
/*Tojudgethenumbit*/
ucharjudgebit(ucharnum,ucharb)
{
charn;
num=num&(1<
if(num)
n=1;
else
n=0;
returnn;
}
/*Tofigureouttheroundnumber*/
ucharabs(uchara)
{
ucharb;
b=a/10;
a=a-b*10;
if(a>=5)
b++;
returnb;
}
/*Tofigureouttheabsolutevalue*/
ucharabss(chara)
{
if(a<0)
a=-a;
returna;
}
/*Thefunctioncancomparatthecharacter.
Andremovethebigonetotheback.*/
voidmax(uchar*a,uchar*b)
{
uchart;
if((*a)>(*b))
{
t=(*a);
(*a)=(*b);
(*b)=t;
}
}
/*Thefunctionistofigureoutthemaxnumberandreturnit.*/
ucharmaxt(uchara,ucharb,ucharc)
{
if(a
a=b;
if(a a=c; returna; } voidclear(charle) { uchari,j; for(j=0;j<8;j++) { for(i=0;i<8;i++) display[j][i]=le; } } voidtrailler(uintspeed) { chari,j; for(i=6;i>=-3;i--) { if(i>=0) { for(j=0;j<8;j++) display[j][i]=display[j][i+1]; } if(i<4) { for(j=0;j<8;j++) display[j][i+4]=0; } delay(speed); } } voidpoint(ucharx,uchary,ucharz,ucharle) { ucharch1,ch0; ch1=1< ch0=~ch1; if(le) display[z][y]=display[z][y]|ch1; else display[z][y]=display[z][y]&ch0; } voidtype(ucharcha,uchary) { ucharxx; for(xx=0;xx<8;xx++) { display[xx][y]=table_cha[cha][xx]; } } /*Thefirstvariableisthedistancefromthemidpoint. Thesecondisthelayer. thethirdistheflashspeedofthetimebetweeneachtwopoint. Theforthistheenableio,itcontrolsweatherdraworclaen.*/ voidcirp(charcpp,uchardir,ucharle) { uchara,b,c,cp; if((cpp<128)&(cpp>=0)) { if(dir) cp=127-cpp; else cp=cpp; a=(dat[cp]>>5)&0x07; b=(dat[cp]>>2)&0x07; c=dat[cp]&0x03; if(cpp>63) c=7-c; point(a,b,c,le); } } voidline(ucharx1,uchary1,ucharz1,ucharx2,uchary2,ucharz2,ucharle) { chart,a,b,c,a1,b1,c1,i; a1=x2-x1; b1=y2-y1; c1=z2-z1; t=maxt(abss(a1),abss(b1),abss(c1)); a=x1*10; b=y1*10; c=z1*10; a1=a1*10/t; b1=b1*10/t; c1=c1*10/t; for(i=0;i { point(abs(a),abs(b),abs(c),le); a+=a1; b+=b1; c+=c1; } point(x2,y2,z2,le); } voidbox(ucharx1,uchary1,ucharz1,ucharx2,uchary2,ucharz2,ucharfill,ucharle) { uchari,j,t=0; max(&x1,&x2); max(&y1,&y2); max(&z1,&z2); for(i=x1;i<=x2;i++) t|=1< if(! le) t=~t; if(fill) { if(le) { for(i=z1;i<=z2;i++) { for(j=y1;j<=y2;j++) display[j][i]|=t; } } else { for(i=z1;i<=z2;i++) { for(j=y1;j<=y2;j++) display[j][i]&=t; } } } else { if(le) { display[y1][z1]|=t; display[y2][z1]|=t; display[y1][z2]|=t; display[y2][z2]|=t; } else { display[y1][z1]&=t; display[y2][z1]&=t; display[y1][z2]&=t; display[y2][z2]&=t; } t=(0x01< if(! le) t=~t; if(le) { for(j=z1;j<=z2;j+=(z2-z1)) { for(i=y1;i<=y2;i++) display[i][j]|=t; } for(j=y1;j<=y2;j+=(y2-y1)) { for(i=z1;i<=z2;i++) display[j][i]|=t; } } else { for(j=z1;j<=z2;j+=(z2-z1)) { for(i=y1;i<=y2;i++) { display[i][j]&=t; } } for(j=y1;j<=y2;j+=(y2-y1)) { for(i=z1;i<=z2;i++) { display[j][i]&=t; } } } } } voidbox_apeak_xy(ucharx1,uchary1,ucharz1,ucharx2,uchary2,ucharz2,ucharfill,ucharle) { uchari; max(&z1,&z2); if(fill) { for(i=z1;i<=z2;i++) { line(x1,y1,i,x2,y2,i,le); } } else { line(x1,y1,z1,x2,y2,z1,le); line(x1,y1,z2,x2,y2,z2,le); line(x2,y2,z1,x2,y2,z2,le); line(x1,y1,z1,x1,y1,z2,le); } } voidpoke(ucharn,ucharx,uchary) { uchari; for(i=0;i<8;i++) { point(x,y,i,judgebit(n,i)); } } voidboxtola(chari,ucharn) { if((i>=0)&(i<8)) { poke(n,0,7-i); } if((i>=8)&(i<16)) { poke(n,i-8,0); } if((i>=16)&(i<24)) { poke(n,7,i-16); } } voidrolldisplay(uintspeed) { ucharj; chari,a; for(i=23;i>-40;i--) { for(j=0;j<40;j++) { a=i+j; if((a>=0)&(a<24)) boxtola(a,table_id[j]); } delay(speed); } } voidroll_apeak_yz(ucharn,uintspeed) { uchari; switch(n) { case1: for(i=0;i<7;i++) { display[i][7]=0; display[7][6-i]=255; delay(speed); }; break; case2: for(i=0;i<7;i++) { display[7][7-i]=0; display[6-i][0]=255; delay(speed); }; break; case3: for(i=0;i<7;i++) { display[7-i][0]=0; display[0][i+1]=255; delay(speed); }; break; case0: for(i=0;i<7;i++) { display[0][i]=0; display[i+1][7]=255; delay(speed); }; } } voidroll_apeak_xy(ucharn,uintspeed) { uchari; switch(n) { case1: for(i=0;i<7;i++) { line(0,i,0,0,i,7,0); line(i+1,7,0,i+1,7,7,1); delay(speed); }; break; case2: for(i=0;i<7;i++) { line(i,7,0,i,7,7,0); line(7,6-i,0,7,6-i,7,1); delay(speed); }; break; case3: for(i=0;i<7;i++) { line(7,7-i,0,7,7-i,7,0); line(6-i,0,0,6-i,0,7,1); delay(speed); }; break; case0: for(i=0;i<7;i++) { line(7-i,0,0,7-i,0,7,0); line(0,i+1,0,0,i+1,7,1); delay(speed); }; } } voidroll_3_xy(ucharn,uintspeed) { uchari; switch(n) { case1: for(i=0;i<8;i++) { box_apeak_xy(0,i,0,7,7-i,7,1,1); delay(speed); if(i<7) box_apeak_xy(3,3,0,0,i,7,1,0); }; break; case2: for(i=0;i<8;i++) { box_apeak_xy(7-i,0,0,i,7,7,1,1); delay(speed); if(i<7) box_apeak_xy(3,4,0,i,7,7,1,0); }; break; case3: for(i=0;i<8;i++) { box_apeak_xy(0,i,0,7,7-i,7,1,1); delay(speed); if(i<7) box_apeak_xy(4,4,0,7,7-i,7,1,0); }; break; case0: for(i=0;i<8;i++) { box_apeak_xy(7-i,0,0,i,7,7,1,1); delay(speed); if(i<7) box_apeak_xy(4,3,0,7-i,0,7,1,0); }; } } voidtrans(ucharz,uintspeed) { uchari,j; for(j=0;j<8;j++) { for(i=0;i<8;i++) { display[z][i]>>=1; } delay(speed); } } voidtranoutchar(ucharc,uintspeed) { uchari,j,k,a,i2=0; for(i=0;i<8;i++) { if(i<7) box_apeak_xy(i+1,0,0,i+1,7,7,1,1); box_apeak_xy(i2,0,0,i2,7,7,1,0); a=0; i2=i+1; for(j=0;j<=i;j++) { a=a|(1< } for(k=0;k<8;k++) { display[k][3]|=table_cha[c][k]&a; display[k][4]|=table_cha[c][k]&a; } delay(speed); } } voidtransss() { uchari,j; for(i=0;i<8;i++) { for(j=0;j<8;j++) display[i][j]<<=1; } } /*Fromnowon,thefunctionbelowistodisplaytheflash.*/ voidflash_0(void) { uchari,j=0; clear(0); for(j=0;j<8;j++) { for(i=0;i<8;i++) { display[j][i]=Tab_BMP1[i]; } delay(8000); delay(8000); delay(8000); } clear(0); for(j=0;j<8;j++) { for(i=0;i<8;i++) { display[i][j]=Tab_BMP1[i]; } delay(8000); delay(8000); delay(8000); } } voidflash_1() { clear(0); type(1,0); delay(60000); type(2,0); delay(60000); type(3,0); delay(60000); type(4,0); delay(60000); delay(60000); clear(0); rolldisplay(30000); type(0,7); delay(60000); trailler(6000); delay(60000); } voidflash_2() { uchari; for(i=129;i>0;i--) { cirp(i-2,0,1); delay(8000); cirp(i-1,0,0); } delay(8000); for(i=0;i<136;i++) { cirp(i,1,1); delay(8000); cirp(i-8,1,0); } delay(8000); for(i=129;i>0;i--) { cirp(i-2,0,1); delay(8000); } delay(8000); for(i=0;i<128;i++) { cirp(i-8,1,0); delay(8000); } delay(60000); } voidflash_3() { chari; for(i=0;i<8;i++) { box_apeak_xy(0,i,0,7,i,7,1,1); delay(20000); if(i<7) box_apeak_xy(0,i,0,7,i,7,1,0); } for(i=7;i>=0;i--) { box_apeak_xy(0,i,0,7,i,7,1,1); delay(20000); if(i>0) box_apeak_xy(0,i,0,7,i,7,1,0); } for(i=0;i<8;i++) { box_apeak_xy(0,i,0,7,i,7,1,1); delay(20000); if(i<7) box_apeak_xy(0,i,0,7,i,7,1,0); } } voidflash_4() { chari,j,an[8]; for(j=7;j<15;j++) an[j-7]=j; for(i=0;i<=16;i++) { for(j=0;j<8;j++) { if((an[j]<8)&(an[j]>=0)) line(0,an[j],j,7,an[j],j,1); } for(j=0;j<8;j++) { if(((an[j]+1)<8)&(an[j]>=0)) line(0,an[j]+1,j,7,an[j]+1,j,0); } for(j=0;j<8;j++) { if(an[j]>0) an[j]--; } delay(15000); } for(j=0;j<8;j++) an[j]=1-j; for(i=0;i<=16;i++) { for(j=0;j<8;j++) { if((an[j]<8)&(an[j]>=0)) line(0,an[j],j,7,an[j],j,1); } for(j=0;j<8;j++) { if(((an[j]-1)<7)&(an[j]>0)) line(0,an[j]-1,j,7,an[j]-1,j,0); } for(j=0;j<8;j++) { if(an[j]<7) an[j]++; }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 自己 立方 程序