全部资料51hei下载地址:
573 2803 程序 原理图 PCB_20130606213915.zip
(1.76 MB, 下载次数: 22)
上位机程序.zip
(29.11 KB, 下载次数: 12)
所有.pdf
(185.51 KB, 下载次数: 10)
PCB.pdf
(570.92 KB, 下载次数: 9)
原理图.pdf
(591.54 KB, 下载次数: 10)
部分程序
- #include <REG52.H>
- #include <intrins.h>
- #define uchar unsigned char
- #define uint unsigned int
- uchar display[8][8];
- /*rank:A,1,2,3,4,I,心,U*/
- 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};
- /*the "ideasoft"*/
- 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};
- /*railway*/
- 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};
- /*railway 2*/
- 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};
- /*railway 3*/
- 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};
- /*3p char*/
- 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};
- /*initializtion
- That is to initialize the program .
- It is write to set the timer in c52 mcu.
- So the program can renovate the led_3d_cube in fixed time use the interrupt function.*/
- void sinter()
- {
- IE=0x82;
- TCON=0x01;
- TH0=0xc0;
- TL0=0;
- TR0=1;
- }
- void delay5us(void) //误差 -0.026765046296us STC 1T 22.1184Mhz
- {
- unsigned char a,b;
- for(b=7;b>0;b--)
- for(a=2;a>0;a--);
- }
- void delay(uint i)
- {
- while (i--){
- delay5us();}//12t的mcu 注释这个延时即可
- }
- /*To judge the num bit*/
- uchar judgebit(uchar num,uchar b)
- {
- char n;
- num=num&(1<<b);
- if (num)
- n=1;
- else
- n=0;
- return n;
- }
- /*To figure out the round number*/
- uchar abs(uchar a)
- {
- uchar b;
- b=a/10;
- a=a-b*10;
- if (a>=5)
- b++;
- return b;
- }
- /*To figure out the absolute value*/
- uchar abss(char a)
- {
- if (a<0)
- a=-a;
- return a;
- }
- /*The function can comparat the character.
- And remove the big one to the back.*/
- void max(uchar *a,uchar *b)
- {
- uchar t;
- if ((*a)>(*b))
- {
- t=(*a);
- (*a)=(*b);
- (*b)=t;
- }
- }
- /*The function is to figure out the max number and return it.*/
- uchar maxt(uchar a,uchar b,uchar c)
- {
- if (a<b)
- a=b;
- if (a<c)
- a=c;
- 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<<x;
- ch0=~ch1;
- 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];
- }
- }
- /*The first variable is the distance from the midpoint.
- The second is the layer.
- the third is the flash speed of the time between each two point.
- The forth is the enable io,it controls weather draw or claen.*/
- 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<t;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<<i;
- 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;
- }
- }
- }
复制代码
详细的都在压缩包中,图片点亮灯形状等都有。
|