基於51單片機的8x8x8LED光立方設計

1.簡介
本設計是以STC89C52單片機的8x8x8的LED光立方。本設計將LED光立方分成8層,分別由單片機的P1,8個IO口來控制每一層,由於採用的是共陰極所以當層電位爲高電平有效,由P0口和P2的總共16個IO口來控制每層的64盞燈,低電平有效,P2口通過8個74HC573緩衝器芯片來驅動LED。這樣就可以通過控制IO口的輸出電平來控制每盞燈的亮滅。

2.硬件設計
本系統的硬件電路主要單片機最小系統、LED光立方驅動電路、LED光立方電路組成,其硬件框圖如圖:
在這裏插入圖片描述
(1)光立方驅動電路原理
以8X8X8光立方爲例:

一個光立方我們可以拆成8個面,如圖
在這裏插入圖片描述
而每個面又有8X8共64個LED燈,如圖:
在這裏插入圖片描述
這樣,我們只要控制這 64 個燈使其能夠自由變換,然後再通過控制每個層依次點亮即可,由於我們眼睛的視覺暫留,使我們感覺看到的東西是一起再亮的。這樣我們就看到了一個完整的個體。
驅動的步驟是:

  1. Z軸選中一個要點亮的面(一個面共有8段Y軸)
  2. Y軸選中一個需要點亮的Y軸(一段Y軸共有8個LED燈)
  3. X軸上的8個控制引腳通過設定的編碼來點亮8個LED中某幾個,並延時相應的時間
  4. 重複掃描8個Y軸邊完成一個面的點亮,然後再重複掃描其他7個面,便完成了一次光立方的點亮了

(2)光立方驅動電路設計
此光立方採用一個ULN2308驅動芯片(作爲Z軸的選擇),和8個8路的74HC573鎖存器(一個74HC573作爲一個Y軸)來驅動8X8X8共512個LED燈。整體電路如圖:
在這裏插入圖片描述
總的原理是每一時刻選中573的LE使能腳,使其爲低電平,再由573輸送次引腳對應的8個LED的亮滅狀態,一個陰極點需要8位,即一個字節數據,完成一次完整的顯示需要64個字節,此爲一幀,要產生動畫效果則需要產生中斷進入下一幀。

(3)總體硬件電路
在這裏插入圖片描述
3.軟件設計
(1)軟件說明
光立方的軟件設計相對簡單,主要根據相應的動畫效果的編碼對光立方進行動態掃描,軟件流程如圖:
在這裏插入圖片描述
程序開始運行,獲取到要顯示的LED所在的層和列然後調用顯示子程序點亮LED燈,通過延時程序進行短暫延時後繼續獲取下一個要顯示的LED燈的所在的層和列。
如果你想要設計自己所要的動畫效果,可以通過常用的光立方取模軟件獲得相應的動畫編碼。

(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,	    //1
					 0x00,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,	    //2
					 0x00,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-49
					 0x00,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)主函數代碼

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原理圖 下載:關注公衆號,首頁回覆“光立方”獲取資料
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章