|
Chinked-out工作室的作品888光立方帶視頻教程,一個很酷炫的電子制作分享給51黑電子論壇的朋友們.
資料代碼可能隨時更新,請登錄http://blog.sina.com.cn/chinkedoutstudio博客下載
這光立方的代碼和原理圖我都從新更新過bug
視頻教程:
8*8*8光立方的原理圖:
0.png (84.55 KB, 下載次數: 167)
下載附件
2017-3-24 04:52 上傳
光立方軟件:
0.png (22.17 KB, 下載次數: 181)
下載附件
2017-3-24 04:49 上傳
光立方的原件清單:
名稱 | 數量 | 規格/型號 | 備注 | 萬能板 | 3 | 18*30cm |
| 單片機STC15F2K60S2 | 1 | DIP40 | 除非你會改程序,否則請勿擅自更換 | 74hc154 | 4 |
| 寬窄兩種封裝均可 | 40P IC座 | 1 |
|
| 24P IC座 | 4 |
|
| 電解電容47uF | 1 |
|
| 104電容 | 1 |
|
| 撥動開關 | 1 |
|
| 銅柱(含螺母) | 4 | M3*100mm |
| 燈珠 | 540 | 2*5*7mm霧狀 | 顏色自選 | 彎排針 | 1 | 每組40P |
| 直排針 | 8 | 每組40P |
| 白色飛線 | 2 | 若干 |
| USB轉TTL下載器 | 1 |
| PL2303系列或CH340系列 | 母對母杜邦線 | 3 | 每組40P |
| 母對公杜邦線 | 1 | 每組40P |
| 微動開關 | 1 |
|
|
部分光立方單片機代碼預覽:(動畫數組由于太大,請從附件下載)
- unsigned char code Segs_tab[]={
- 0xe0,0xe1,0xe2,0xe3,0xe4,0xe5,0xe6,0xe7,0xe8,0xe9,0xea,0xeb,0xec,0xed,0xee,0xef,
- 0xd0,0xd1,0xd2,0xd3,0xd4,0xd5,0xd6,0xd7,0xd8,0xd9,0xda,0xdb,0xdc,0xdd,0xde,0xdf,
- 0xb0,0xb1,0xb2,0xb3,0xb4,0xb5,0xb6,0xb7,0xb8,0xb9,0xba,0xbb,0xbc,0xbd,0xbe,0xbf,
- 0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7a,0x7b,0x7c,0x7d,0x7e,0x7f,
- };
- unsigned char idata Rec_buf[64]={
- 0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- };
- sbit Rest=P3^0;
- void IO_Interrupt_UART_Init();
- unsigned char T1_count=0,Anm1=0,Mode=0,Rec_count=0;
- unsigned int End,Anm=0;
- void main()
- {
- End=sizeof(table);
- IO_Interrupt_UART_Init();
- while(1)
- {
- if(Anm>End)Anm=0;
-
- Segs=Segs_tab[Anm1];
- switch (Mode)
- {
- case 0:Out=table[Anm1+Anm];break;
- case 1:Out=Rec_buf[Anm1];break;
- default:break;
- }
- }
- }
- void IO_Interrupt_UART_Init()
- {
- P0M1=0x00;
- P0M0=0x00;
- P1M1=0x00;
- P1M0=0xff;
- EA=1;
- EX0=1;
- IT0=1;
- ET0=1;
- ET1=1;
- ES=1;
- AUXR |= 0x80; //定時器時鐘1T模式
- TMOD &= 0xF0; //設置定時器模式
- TL0 = 0x5C; //設置定時初值
- TH0 = 0xF7; //設置定時初值
- TF0 = 0; //清除TF0標志
- TR0 = 1; //定時器0開始計時
- AUXR &= 0xBF; //定時器時鐘12T模式
- TMOD &= 0x0F; //設置定時器模式
- TL1 = 0x00; //設置定時初值
- TH1 = 0x70; //設置定時初值
- TF1 = 0; //清除TF1標志
- TR1 = 1; //定時器1開始計時
- SCON = 0x50; //8位數據,可變波特率
- AUXR |= 0x04; //定時器2時鐘為Fosc,即1T
- T2L = 0xD0; //設定定時初值
- T2H = 0xFF; //設定定時初值
- AUXR |= 0x01; //串口1選擇定時器2為波特率發生器
- }
-
- void Button() interrupt 0
- {
- Mode=Mode+1;
- if(Mode==1)
- {
- AUXR |= 0x10;
- ET1=0;
- TR1=0;
- Anm=0;
- Anm1=0;
- }
- if(Mode>1)IAP_CONTR=0x60;
- }
- void Display_delay() interrupt 1
- {
- TR0=0;
- Anm1=Anm1+1;
- if(Anm1>63)Anm1=0;
- Out=0x00;
- Segs=0xff;
- TR0=1;
- }
- void LED_Display() interrupt 3
- {
- TR1=0;
- T1_count++;
- if(T1_count==Anm_speed)
- {
- T1_count=0;
- Anm=Anm+64;
- }
- TR1=1;
- }
- void uart_receive() interrupt 4
- {
- unsigned char ch;
- ES=0;
- if(RI)
- {
- ch=SBUF;
- Rec_buf[Rec_count]=ch;
- Rec_count++;
- if(Rec_count>63)Rec_count=0;
- }
- RI=0;
- ES=1;
- }
復制代碼
0.png (51.68 KB, 下載次數: 173)
下載附件
2017-3-24 04:53 上傳
資料代碼可能隨時更新,請登錄http://blog.sina.com.cn/chinkedoutstudio博客下載
這光立方的代碼和原理圖我都從新更新過bug
全部資料下載:
888光立方資料包.zip
(1.31 MB, 下載次數: 228)
2017-3-24 04:55 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|
評分
-
查看全部評分
|