標題: 4*4*4光立方原理圖及參考代碼與實物制作 [打印本頁]
作者: 想飛的豬1 時間: 2017-9-7 17:07
標題: 4*4*4光立方原理圖及參考代碼與實物制作
將4*4*4的LED光立方分層4層,分別由單片機的P2.0,P2.1,P2.2,P2.3,四個口來控制每一層,且給低電平有效,再有P0口和P1的總共16個口來控制16列,給高電平有效,P0和P1口加上位排阻,再給每一列加三極管放大,三極管的基極接單片機的P0和P1口,集電極接5V電源,發射極接每一列。這樣就可以通過控制每個口的輸出信號來控制每個的亮滅。
通過某種方式,是單片機內部各類寄存器的值變為出事狀態的操作稱為復位。單片機的復位是通過外部電路來實現的,復位引腳RET通過一個施密特觸發器與復位電路相連接,施密特觸發器用作噪聲抑制,偉哥機器周期的S5P2時刻,復位電路采樣一次施密特輸出電平,獲得內部復位操作所需要的信號。單片機的時鐘電路正常工作后,CPU在RET/VPD引腳上連續采集到兩個機器周期的高電平后就可以完成復位操作了,但實際應用時,復位電平的脈沖寬度一般大于1ms。復位電路通常采用上電復位、手動按鍵復位和看門狗復位三種方式,本次采用的是上電復位方式。

3.3時鐘電路
單片機的各個功能部件的運行都是是時鐘控制信號為基準,一拍一拍的工作。因此時鐘頻率直接影響單片機的速度,時鐘電路的質量也直接影響單片機系統的可靠性和穩定性。常用的時鐘電路設計為內部時鐘方式,單片機內部有一個由反向放大器構成的震蕩電路,芯片上的XTAL1和XTAL2分別為震蕩電路的輸入和輸出端。只要在這兩個引腳上接一個石英晶體振蕩器和兩個微調電容就構成內部方式的振蕩器電路,有振蕩器產生自激振蕩,便構成一個完整的震蕩信號發生器。
一般選用石英晶體振蕩器。此電路在加電大約延遲10ms后振蕩器起振,在XTAL2引腳產生幅度為3V左右的正弦波時鐘信號,其振蕩頻率主要由石英晶振的頻率確定。電路中兩個電容C1、C2的作用有兩個:一是幫助振蕩器起振;二是對振蕩器的頻率進行微調。本系統的C1、C2的值為33pf。
單片機在工作時,有內部振蕩器產生或由外直接輸入的送至內部控制邏輯單元的時鐘信號的周期稱為時鐘周期。其大小是時鐘信號頻率的倒數,f表示。圖2中的時鐘頻率為12MHz,即f=12MHz,則時鐘周期為1/12us。
附注: 三極管可以不接,只是會影響光源亮度。

3.4系統的工作原理圖
光立方一、二層:

光立方三、四層:
單片機口點連接:
三極管放大電路:
總原理圖:
元器件清單:
單片機源程序如下:
- #include<reg51.h>
- #define uchar unsigned char
- unsigned char code smg[] = {0x50,0x61};
- void delay100ms(uchar data1ms)
- {uchar i,j,m;
- for(i=0;i<data1ms;i++)
- for(j=0;j<110;j++)
- for(m=0;m<100;m++);
- }
- void disp(uchar ceng,uchar lie1,uchar lie2 )
- {
- delay100ms(7);
- P1=ceng;
- P2=lie1;
- P0=lie2;
-
- }
- void main(void)
- {unsigned char hang,shu1;
- unsigned char code C1[][16]={
- {0x07,0x0B,0x0D,0x0E,0x0E,0x0C,0x08,0x00,0x00,0x08,0x0C,0x0E,0x0C,0x08,0x00,0x00},
- {0x08,0x0C,0x0E,0x0C,0x08,0x00,0x00,0x08,0x0C,0x0E,0x0C,0x08,0x00,0x00,0x08,0x0C},
- {0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E},
- {0x0C,0x08,0x00,0x00,0x08,0x0C,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
- {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x0C,0x0E,0x0F,0x0E,0x0C,0x08,0x00},
- {0x00,0x00,0x00,0x00,0x00,0x0D,0x0D,0x0D,0x05,0x09,0x09,0x09,0x0D,0x0D,0x0D,0x05},
- {0x09,0x09,0x09,0x00,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09},
- {0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09}
- };
- unsigned char code L1[][16]={
- {0xFF,0xFF,0xFF,0xFF,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x96,0x96,0x96,0x96,0x96},
- {0x96,0x96,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0xCC,0xCC,0xCC,0xCC,0xCC,0xCC,0xCC},
- {0x01,0x03,0x07,0x0F,0x8E,0x8C,0x88,0x80,0x00,0x00,0x00,0x10,0x30,0x70,0x70,0x60},
- {0x60,0x60,0x60,0x60,0x60,0x60,0x60,0xCC,0x0F,0x33,0x66,0xCC,0xF0,0x33,0x66,0xCC},
- {0x66,0x33,0xF0,0xCC,0x66,0x33,0xF0,0xCC,0xCC,0xCC,0xCC,0xCC,0x60,0x60,0x60,0x60},
- {0xE8,0x74,0x32,0x11,0x00,0x06,0x66,0x60,0x60,0x60,0x00,0x00,0x06,0x66,0x60,0x60},
- {0x60,0x00,0x00,0x00,0x80,0x40,0x20,0x20,0x20,0x60,0x62,0x60,0x30,0x10,0x80,0xC0},
- {0x60,0x60,0x60,0x60,0x64,0x60,0x30,0x10}
- // {0x01,0x02,0x04,0x08,0x80,0x40,0x20,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},//列掃描
- };
-
- unsigned char code L2[][16]={
- {0xFF,0xFF,0xFF,0xFF,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x69,0x69,0x69,0x69,0x69},
- {0x69,0x69,0xCC,0xCC,0xCC,0xCC,0xCC,0xCC,0xCC,0x33,0x33,0x33,0x33,0x33,0x33,0x33},
- {0x00,0x00,0x00,0x00,0x00,0x08,0x88,0xC8,0xE8,0xF0,0x71,0x31,0x11,0x10,0x04,0x06},
- {0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x33,0xF0,0xCC,0x66,0x33,0x0F,0xCC,0x66,0x33},
- {0x66,0xCC,0x0F,0x33,0x66,0xCC,0x0F,0x33,0x33,0x33,0x33,0x33,0x06,0x06,0x06,0x06},
- {0x8E,0x47,0x23,0x11,0x00,0x00,0x00,0x06,0x06,0x06,0x66,0x60,0x00,0x00,0x06,0x06},
- {0x06,0x66,0x60,0x00,0x08,0x0C,0x06,0x66,0x06,0x06,0x06,0x06,0x03,0x01,0x00,0x08},
- {0x04,0x64,0x06,0x06,0x06,0x06,0x03,0x01}
- // {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x04,0x08,0x80,0x40,0x20,0x10}
- };
- while(1)
- {
- for(hang=0;hang<8;hang++)
- {for(shu1=0;shu1<16;shu1++)
- disp(C1[hang][shu1],L1[hang][shu1],L2[hang][shu1]);
- ……………………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
0.png (49.42 KB, 下載次數: 173)
下載附件
2017-9-7 18:09 上傳
所有資料51hei提供下載:
444光立方.zip
(1.08 MB, 下載次數: 351)
2017-9-7 17:07 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
作者: 弓長張 時間: 2018-6-3 21:15
如果實物圖不接三極管會有什么影響?
作者: 弓長張 時間: 2018-6-7 17:18
admin大佬 這個 4*4*4的光立方 實物接線 如果不接三極管會有什么影響啊 ?
作者: 51學習 時間: 2018-6-8 19:51
燈的亮度會很底
作者: 風游兮 時間: 2018-6-15 20:59
三極管起放大電路的作用
作者: LINKEEE 時間: 2018-7-13 14:53
學習了
作者: leleluo123 時間: 2018-7-13 16:17
厲害的小伙子
作者: Starway 時間: 2018-8-23 12:33
1. 文章中寫的是P2控制層 但是代碼和圖片中是P1控制 是文章錯了嗎?
2. 另外 為什么只有P0 口有排阻呢?
3. 樓主在焊接燈的時候是水平方向是層 還是垂直方向是層呢?
最后 問一下 那個設計圖加入hex程序之后能直接運行出結果嗎?
謝謝樓主分享
作者: 小小斑鳩 時間: 2018-8-23 13:47
在51芯片的內部是沒有加上拉電阻的,所以外部需要接排阻,
作者: Starway 時間: 2018-8-23 16:15
但是為什么只有P0口有排阻呢?P2口沒有啊
在需求原件里面是寫了兩個102排阻的 但是電路圖里面沒有

作者: lxy999 時間: 2018-8-23 18:27
不錯,值得學習
作者: Starway 時間: 2018-8-26 00:37
1. 文章錯了,以電路圖為準
2. 你看過P0口的結構你就知道了,開漏形式輸出沒有輸出高的能力(只能實現灌電流,不能實現拉電流)。簡單的說就是沒有上拉電阻,沒有辦法輸出“1”,
流水燈的那個排阻是限流!如果只是為了點共陽極連接方式的LED的話,上拉電阻是可以省掉的(個人認為)。
3. 水平方向層疊
4. 電路圖抄到ISIS里面可以直接運行
作者: mayday555 時間: 2018-9-11 16:38
P0口作為I/O口輸出的時候時,輸出低電平為0 輸出高電平為高阻態。P0 口不能真正的輸出高電平。由于單片機P0口內部沒有上拉電阻,是開漏的,不管它的驅動能力多大,相當于它是沒有電源的,需要外部的電路提供,絕大多數情況下P0口是必需加上拉電阻的。
作者: Starway 時間: 2018-9-24 22:36
謝謝 明白了
作者: sweet小開開 時間: 2018-12-19 10:41
要怎么才能下載?
作者: sweet小開開 時間: 2018-12-19 11:16
leleluo123 發表于 2018-7-13 16:17
厲害的小伙子
想知道是怎么下載的,我也想下載,謝謝
作者: liuyanghe 時間: 2018-12-20 20:48
三極管起放大電路的作用。如果實物圖不接三極管會有什么影響?
作者: 冰冰潔潔 時間: 2019-1-8 19:31
liuyanghe 發表于 2018-12-20 20:48
三極管起放大電路的作用。如果實物圖不接三極管會有什么影響?
這里也是放大電流,不接電流太小,輕的說不很亮,重的說就很不亮。
作者: s396869499 時間: 2019-1-10 12:55
nice啊兄弟
作者: Arvin0011 時間: 2019-1-11 09:33
不錯學到了
作者: Youens 時間: 2019-1-25 11:34
很強!贊贊贊!
作者: dodge666 時間: 2019-5-29 18:24
謝謝樓主分享
作者: 斯蒂芬1215 時間: 2019-6-6 12:54
不錯
作者: 機電光束 時間: 2019-8-19 15:55
謝謝分享,學到了。
作者: meilidianzhi 時間: 2019-8-20 19:24
樓主太牛了學習一下
作者: 白給少年 時間: 2019-12-18 10:16
樓主,一開始沒用程序時很亮,用了程序之后就不怎么亮了
作者: WKKD 時間: 2020-10-26 18:34
怎么沒有proteus 工程文件
作者: yufen 時間: 2021-10-14 17:21
想問問代碼中的數組里面的0xXX代表什么?起什么作用?需要涉及哪些知識?
作者: sxy4609 時間: 2021-12-5 19:57
是一個16進制數,需要轉換成2進制,控制P口輸出
作者: Apen~ 時間: 2021-12-5 20:04
強啊 樓主
作者: mick32 時間: 2022-6-3 03:50
buzz about P0
Schematic has RP1 as pullup ...
作者: QQQQ987 時間: 2022-9-11 22:34
燈光效果怎取模?
作者: 271399390 時間: 2022-11-6 11:49
三極管起放大電路的作用
作者: kkkkkasd 時間: 2023-12-26 21:46
電流過大,可能會燒壞單片機
| 歡迎光臨 (http://www.denmoz.com/bbs/) |
Powered by Discuz! X3.1 |