光立方由若干個(gè)二極管led燈以立方體形式搭建,4*4*4、8*8*8、16*16*16甚至更多,又由單片機(jī)、鎖存器、譯碼器等電器元件驅(qū)動(dòng),形成立體動(dòng)畫效果。其中8*8*8光立方最為常見。
例如:8*8*8光立方是由512個(gè)發(fā)光二極管按照立方體的方式搭建焊接起來(lái)的,有層共陰束共陽(yáng)和層共陽(yáng)束共陰兩種方案,每一層有8*8個(gè)發(fā)光二極管,共8層。用c語(yǔ)言編譯單片機(jī)程序使自定義動(dòng)畫效果得以實(shí)現(xiàn)。
光立方工作原理
光立方簡(jiǎn)單講就是用單片機(jī)控制很多規(guī)則排列的LED的亮和滅。
1、單個(gè)LED的控制方式
先了解單個(gè)LED的控制方式,可以是將正極接電源,負(fù)極通過(guò)一個(gè)限流電阻連接至單片機(jī)的某個(gè)IO口。IO口輸出低電平時(shí),LED就亮,反之,LED滅。
如果我們想驅(qū)動(dòng)任意位置的led,我們只需要在該位置led所使用的列線接地,行線接上+V即可。
學(xué)過(guò)單片機(jī)的朋友們,都知道數(shù)碼管是怎么點(diǎn)亮的,其中有位選和段選之分,通過(guò)掃描來(lái)實(shí)現(xiàn)所有數(shù)碼管能正常工作以實(shí)現(xiàn)顯示我們想要的數(shù)字。
點(diǎn)陣也一樣,盡管是8*8的點(diǎn)陣,如果我們讓整體能隨意顯示圖案,那也需要用掃描的方式才能夠?qū)崿F(xiàn),否則,無(wú)法實(shí)現(xiàn)對(duì)其精準(zhǔn)的控制。
所謂掃描,就是說(shuō),我們一次只能讓一行排或者一豎排的燈亮。每次只能這么點(diǎn),8次為一個(gè)周期,從左至右依次點(diǎn)一次,那么循環(huán)起來(lái),我們看到的就是完整的圖像了。
2、每一層LED的控制方式
若按照單個(gè)LED的控制方式,每個(gè)LED需要占用單片機(jī)的一個(gè)IO口,控制100個(gè)LED就需要100個(gè)IO口。那么,有沒(méi)有一種方式,可以用較少的IO口,控制較多的LED呢?答案是肯定的,這種方法,就是掃描驅(qū)動(dòng)電路。
2*2掃描驅(qū)動(dòng)電路
所以一般情況下,光立方的每一層雖然有64個(gè)燈,但是我們會(huì)有64跟線分別連接到這些燈上,從而實(shí)現(xiàn)一次性的對(duì)64個(gè)燈進(jìn)行控制,通常單片機(jī)引腳較少,一般將采用74hc573,74hc595等芯片進(jìn)行拓展。
3、(基于74hc573的)8*8*8光立方LED的控制方式
數(shù)據(jù)通過(guò)并行的方式,分別打入每一個(gè)74hc573中,再控制器儲(chǔ)存這些數(shù)據(jù),從而實(shí)現(xiàn)一層64個(gè)燈同時(shí)的點(diǎn)亮。下面描述一下一個(gè)固定畫面的顯示,所需要硬件執(zhí)行的過(guò)程。
1)將第一層64個(gè)點(diǎn)的數(shù)據(jù)傳入8個(gè)74hc573中,控制uln2803層控制芯片打開第一層開關(guān),使第一層點(diǎn)亮,這個(gè)時(shí)候,其他層是滅的。
2)等待時(shí)間t。
3)熄滅第一層,開始向74hc573中傳輸?shù)诙拥臄?shù)據(jù),鎖存,開啟第二層總控制開關(guān),點(diǎn)亮第二層。
4)等待時(shí)間t
熄滅第一層,將第八層的的數(shù)據(jù)傳進(jìn)所有74hc573中,鎖存,開啟第八層總開關(guān),點(diǎn)亮第八層。
再回到第一步,循環(huán)下去。
這樣,便實(shí)現(xiàn)了一個(gè)周期畫面的顯示,由于人眼的視覺(jué)暫留的特性,只要刷新的夠快,我們看到的就是光立方整體都在亮。便實(shí)現(xiàn)了我們想要的效果。為了畫面的穩(wěn)定,上面間隔點(diǎn)亮t要保持一致,否則會(huì)出現(xiàn)亮度不均的情況。
在實(shí)際使用上述電路的時(shí)候,最好給74hc573輸出的64個(gè)引腳分別加一個(gè)限流電阻,這樣能起到很好的二極管保護(hù)作用和整體功耗的限制以及亮度的調(diào)節(jié)。
仔細(xì)分析上述控制過(guò)程,可以發(fā)現(xiàn)進(jìn)一步節(jié)約IO口的數(shù)量方法。
以16×16的整列為例,若限定16列中,每次只亮一列,就可以用4根IO線加一個(gè)4~16譯碼器替代。這樣,就變?yōu)?6+4只有20個(gè)IO口了。而行還是保留16根,因?yàn)檫@樣做,可以一次控制1列中的多個(gè)LED同時(shí)亮。加快掃描進(jìn)度。