完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
#include
#define uchar unsigned char #define uint unsigned int uchar display[8][8]; 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}; 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}; 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}; 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}; 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}; 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}; void sinter() { IE=0x82; TCON=0x01; TH0=0xc0; TL0=0; TR0=1; } void delay(uint i) { while (i--); } uchar judgebit(uchar num,uchar b) { char n; num=num&(1< if (num) n=1; else n=0; return n; } uchar abs(uchar a) { uchar b; b=a/10; a=a-b*10; if (a>=5) b++; return b; } uchar abss(char a) { if (a<0) a=-a; return a; } void max(uchar *a,uchar *b) { uchar t; if ((*a)>(*b)) { t=(*a); (*a)=(*b); (*b)=t; } } uchar maxt(uchar a,uchar b,uchar c) { if (a a=b; if (a return a; } void clear(char le) { uchar i,j; for (j=0;j<8;j++) { for (i=0;i<8;i++) display[j][i]=le; } } void trailler(uint speed) { char i,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); } } void point(uchar x,uchar y,uchar z,uchar le) { uchar ch1,ch0; ch1=1< if (le) display[z][y]=display[z][y]|ch1; else display[z][y]=display[z][y]&ch0; } void type(uchar cha,uchar y) { uchar xx; for (xx=0;xx<8;xx++) { display[xx][y]=table_cha[cha][xx]; } } void cirp(char cpp,uchar dir,uchar le) { uchar a,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); } } void line(uchar x1,uchar y1,uchar z1,uchar x2,uchar y2,uchar z2,uchar le) { char t,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); } void box(uchar x1,uchar y1,uchar z1,uchar x2,uchar y2,uchar z2,uchar fill,uchar le) { uchar i,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< 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; } } } } } void box_apeak_xy(uchar x1,uchar y1,uchar z1,uchar x2,uchar y2,uchar z2,uchar fill,uchar le) { uchar i; 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); } } void poke(uchar n,uchar x,uchar y) { uchar i; for (i=0;i<8;i++) { point(x,y,i,judgebit(n,i)); } } void boxtola(char i,uchar n) { 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); } } void rolldisplay(uint speed) { uchar j; char i,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); } } void roll_apeak_yz(uchar n,uint speed) { uchar i; switch(n) { case 1: for (i=0;i<7;i++) { display[i][7]=0; display[7][6-i]=255; delay(speed); }; break; case 2: for (i=0;i<7;i++) { display[7][7-i]=0; display[6-i][0]=255; delay(speed); }; break; case 3: for (i=0;i<7;i++) { display[7-i][0]=0; display[0][i+1]=255; delay(speed); }; break; case 0: for (i=0;i<7;i++) { display[0][i]=0; display[i+1][7]=255; delay(speed); }; } } void roll_apeak_xy(uchar n,uint speed) { uchar i; switch(n) { case 1: 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; case 2: 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; case 3: 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; case 0: 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); }; } } void roll_3_xy(uchar n,uint speed) { uchar i; switch(n) { case 1: 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; case 2: 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; case 3: 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; case 0: 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); }; } } void trans(uchar z,uint speed) { uchar i,j; for (j=0;j<8;j++) { for (i=0;i<8;i++) { display[z][i]>>=1; } delay(speed); } } void tranoutchar(uchar c,uint speed) { uchar i,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); } } void transss() { uchar i,j; for (i=0;i<8;i++) { for (j=0;j<8;j++) display[i][j]<<=1; } } void flash_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); } void flash_2() { uchar i; 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); } void flash_3() { char i; 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); } } void flash_4() { char i,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]++; } delay(15000); } } void flash_5() { uint a=15000;//a=delay char i=8,j,an[4]; //1 for (j=7;j<11;j++) an[j-7]=j; while(i--) { for (j=0;j<4;j++) { if (an[j]<8) box_apeak_xy(j,an[j],j,7-j,an[j],7-j,0,1); if (an[j]<7) box_apeak_xy(j,an[j]+1,j,7-j,an[j]+1,7-j,0,0); } for (j=0;j<4;j++) { if (an[j]>3) an[j]--; } delay(a); } //2 i=3; for (j=0;j<4;j++) an[j]=5-j; while(i--) { for (j=1;j<4;j++) { if (an[j]<4) box_apeak_xy(j,an[j],j,7-j,an[j],7-j,0,1); if (an[j]<3) box_apeak_xy(j,an[j]+1,j,7-j,an[j]+1,7-j,0,0); } for (j=0;j<4;j++) { if (an[j]>0) an[j]--; } delay(a); } //3 i=3; for (j=1;j<4;j++) an[j]=4-j; while(i--) { for (j=1;j<4;j++) { if (an[j]>=0) box_apeak_xy(j,an[j],j,7-j,an[j],7-j,0,1); if (an[j]>0) box_apeak_xy(j,an[j]-1,j,7-j,an[j]-1,7-j,0,0); } for (j=1;j<4;j++) { if (an[j]<3) an[j]++; } delay(a); } //4 i=3; for (j=0;j<4;j++) an[j]=j+1; while(i--) { for (j=1;j<4;j++) { if (an[j]>3) box_apeak_xy(j,an[j],j,7-j,an[j],7-j,0,1); if (an[j]>3) box_apeak_xy(j,an[j]-1,j,7-j,an[j]-1,7-j,0,0); } for (j=0;j<4;j++) an[j]++; delay(a); } //5 i=3; for (j=3;j<6;j++) an[j-2]=j; while(i--) { for (j=1;j<4;j++) { box_apeak_xy(j,an[j],j,7-j,an[j],7-j,0,1); box_apeak_xy(j,an[j]+1,j,7-j,an[j]+1,7-j,0,0); } for (j=0;j<4;j++) { if (an[j]>3) an[j]--; } delay(a); } //6 i=3; for (j=0;j<4;j++) an[j]=5-j; while(i--) { for (j=1;j<4;j++) { if (an[j]<4) box_apeak_xy(j,an[j],j,7-j,an[j],7-j,0,1); if (an[j]<3) box_apeak_xy(j,an[j]+1,j,7-j,an[j]+1,7-j,0,0); } for (j=0;j<4;j++) { if (an[j]>0) an[j]--; } delay(a); } //7 i=3; for (j=0;j<4;j++) an[j]=3-j; an[0]=2; while(i--) { for (j=0;j<3;j++) { if (an[j]>=0) box_apeak_xy(j,an[j],j,7-j,an[j],7-j,0,1); if (an[j]>=0) box_apeak_xy(j,an[j]+1,j,7-j,an[j]+1,7-j,0,0); } for (j=0;j<4;j++) { if (j<5-i) an[j]--; } delay(a); } //8 i=10; for (j=0;j<4;j++) an[j]=j-2; while(i--) { for (j=0;j<4;j++) { if (an[j]>=0) box_apeak_xy(j,an[j],j,7-j,an[j],7-j,0,1); if (an[j]>=0) box_apeak_xy(j,an[j]-1,j,7-j,an[j]-1,7-j,0,0); } for (j=0;j<4;j++) { if (an[j]<7) an[j]++; } delay(a); } } void main() { sinter(); clear(0); /*play list*/ flash_1(); clear(0); flash_2(); flash_3(); flash_4(); flash_4(); flash_5(); while(1); } void print() interrupt 1 { uchar i; static uchar layer=0; P1=0; for (i=0;i<8;i++) { P0=1< delay(3); P2=display[layer][i]; delay(3); } P1=1< layer++; else layer=0; TH0=0xc0; TL0=0; } |
|
相关推荐
7个回答
|
|
|
|
|
|
太长了 而且你没说一下你的需求
|
|
|
|
1192121586 发表于 2012-2-6 16:39 不好意思,什么需求?是问这代码用来干嘛的吗??这是我从网上复制回来的光立方代码,用51单片机来控制寄存器来控制512个led显示动画,但我复制刚回来后又不知道为什么编译不了的。 |
|
|
|
又长又乱的代码,还没一个字的说明,头疼!
uchar abss(char a),你看下这个函数,应该是如果A<0,取反输出吧!-a不是数学意义的负负为正!a=-a等同于a=a-a! |
|
|
|
这么长代码没一个注释{:soso_e127:},楼主是编译不通过? |
|
|
|
已经可以通过编译了
|
|
|
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
938 浏览 0 评论
553 浏览 0 评论
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-串口通讯编程示例之串口编写程序
1105 浏览 0 评论
STM32系列单片机可以让自己的GPIO去控制自己的RESET吗?有什么风险?可以规避吗?
1470 浏览 0 评论
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-串口通讯编程示例之串口参数设置
895 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11590 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-1 17:18 , Processed in 0.595564 second(s), Total 55, Slave 47 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号