基于51单片机的8x8x8LED光立方设计
1.簡介
本設(shè)計是以STC89C52單片機的8x8x8的LED光立方。本設(shè)計將LED光立方分成8層,分別由單片機的P1,8個IO口來控制每一層,由于采用的是共陰極所以當(dāng)層電位為高電平有效,由P0口和P2的總共16個IO口來控制每層的64盞燈,低電平有效,P2口通過8個74HC573緩沖器芯片來驅(qū)動LED。這樣就可以通過控制IO口的輸出電平來控制每盞燈的亮滅。
2.硬件設(shè)計
本系統(tǒng)的硬件電路主要單片機最小系統(tǒng)、LED光立方驅(qū)動電路、LED光立方電路組成,其硬件框圖如圖:
(1)光立方驅(qū)動電路原理
以8X8X8光立方為例:
一個光立方我們可以拆成8個面,如圖
而每個面又有8X8共64個LED燈,如圖:
這樣,我們只要控制這 64 個燈使其能夠自由變換,然后再通過控制每個層依次點亮即可,由于我們眼睛的視覺暫留,使我們感覺看到的東西是一起再亮的。這樣我們就看到了一個完整的個體。
驅(qū)動的步驟是:
(2)光立方驅(qū)動電路設(shè)計
此光立方采用一個ULN2308驅(qū)動芯片(作為Z軸的選擇),和8個8路的74HC573鎖存器(一個74HC573作為一個Y軸)來驅(qū)動8X8X8共512個LED燈。整體電路如圖:
總的原理是每一時刻選中573的LE使能腳,使其為低電平,再由573輸送次引腳對應(yīng)的8個LED的亮滅狀態(tài),一個陰極點需要8位,即一個字節(jié)數(shù)據(jù),完成一次完整的顯示需要64個字節(jié),此為一幀,要產(chǎn)生動畫效果則需要產(chǎn)生中斷進入下一幀。
(3)總體硬件電路
3.軟件設(shè)計
(1)軟件說明
光立方的軟件設(shè)計相對簡單,主要根據(jù)相應(yīng)的動畫效果的編碼對光立方進行動態(tài)掃描,軟件流程如圖:
程序開始運行,獲取到要顯示的LED所在的層和列然后調(diào)用顯示子程序點亮LED燈,通過延時程序進行短暫延時后繼續(xù)獲取下一個要顯示的LED燈的所在的層和列。
如果你想要設(shè)計自己所要的動畫效果,可以通過常用的光立方取模軟件獲得相應(yīng)的動畫編碼。
(2)部分顯示效果編碼
uchar code display[]={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,0x18,0x18,0x00,0x00,0x00, //10x00,0x00,0x00,0x18,0x18,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,0x3c,0x24,0x24,0x3c,0x00,0x00,0x00,0x00,0x24,0x00,0x00,0x24,0x00,0x00, //20x00,0x00,0x24,0x00,0x00,0x24,0x00,0x00,0x00,0x00,0x3c,0x24,0x24,0x3c,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,0x18,0x18,0x00,0x00,0x00, //骰子1-490x00,0x00,0x00,0x18,0x18,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,}(3)主函數(shù)代碼
void main() {init(); while(1){for(i=0;i<8;i++){Z = Z_Seg[i];for(j=0;j<8;j++){Y = Y_Seg[j];X = display[count++];delay();}}count=64*temp; } }源碼+AD原理圖 下載:關(guān)注公眾號,首頁回復(fù)“光立方”獲取資料
總結(jié)
以上是生活随笔為你收集整理的基于51单片机的8x8x8LED光立方设计的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何快速学习PLC编程
- 下一篇: 工作242:关于第二个git仓库提交代码