材料清單:
首先要diy光立方需要買齊什么電子元件?
光立方材料清單:
主控芯片 STC90C516RD (這個家里有就沒買)
霧狀 白發(fā)藍發(fā)光二極管 尺寸2*5*7 *550個
74HC573鎖存器 *8個 (貼片)
ULN2803 達林頓管驅(qū)動器 *1個 (貼片)
18*30cm洞洞板 *1
晶振 *1個 12MHZ
陶瓷電容 22PF *2個
200歐電容 *64個
以及跳線、按鍵開關(guān)...
共計70元左右
在快遞寄來前,需要先畫仿真電路圖
psb.png (159.15 KB, 下載次數(shù): 149)
下載附件
2016-5-30 08:30 上傳
淺談光立方硬件原理:
512個獨立LED如果要單片機單獨控制是不可能的,因為51單片機只有32個I/O口(input/output)。
所以就需要用到鎖存器,每個鎖存器能鎖存一個字節(jié)的”電平信號“,可以控制8個LED,8個鎖存器可以控制64個LED。
可以把光立方分成8層,每層共陰,八個層的陰極接ULN2803 達林頓管驅(qū)動器的8個輸出端口。而ULN2803 達林頓管驅(qū)動器的輸8個入端接P1端口,用來控制光立方的8個層哪個層可以有電流通。
如 P0 = 0X01; 二進制值 = 00000001,也就是說,達林頓管驅(qū)動器輸出端只有第一個端口輸出低電平,其他端口都是高電平。這樣一來通過P0端口值的變換就可以用8個鎖存器循環(huán)控制第0~7層。
psb1.png (97.23 KB, 下載次數(shù): 158)
下載附件
2016-5-30 08:30 上傳
/*沒學(xué)過畫畫,畫的是有點丑*/
(補充信息)固定畫面的顯示,所需要硬件執(zhí)行的過程。
1.將第一層64個點的數(shù)據(jù)傳入8個74hc573中,控制uln2803層控制芯片打開第一層開關(guān),使第一層點亮,這個時候,其他層是滅的。
2.等待時間t。 3.熄滅第一層,開始向74hc573中傳輸?shù)诙䦟拥臄?shù)據(jù),鎖存,開啟第二層總控制開關(guān),點亮第二層。 4.等待時間t。 ....... 熄滅第一層,將第八層的的數(shù)據(jù)傳進所有74hc573中,鎖存,開啟第八層總開關(guān),點亮第八層。 再回到第一步,循環(huán)下去.... 這樣,便實現(xiàn)了一個周期畫面的顯示,由于人眼的視覺暫留的特性,只要刷新的夠快,我們看到的就是光立方整體都在亮。便實現(xiàn)了我們想要的效果。為了畫面的穩(wěn)定,上面間隔點亮t要保持一致,否則會出現(xiàn)亮度不均的情況。 在實際使用上述電路的時候,最好給74hc573輸出的64個引腳分別加一個限流電阻,這樣能起到很好的二極管保護作用和整體功耗的限制以及亮度的調(diào)節(jié)。
對于光立方,首先要清楚其工作原理,整個點亮的過程,單片機需要一直工作的,單片機每一次發(fā)送的數(shù)據(jù)只能點亮一層的特性得知,在整個畫面顯示圖案的時候,即使是靜止的圖案,那么單片機也是在不斷循環(huán)工作的。如果單片機停止了工作,那么光立方得圖案即會消失。 又由于這個特性,如果點亮某一層后停留的時間不一樣,就會造成每一層的亮度不均勻,所以為了避免這些,需要一個準確的時間基準來依次點亮光立方的每一層,方法有很多,但單片機不能總處理這么一個任務(wù),他可能要處理的還有,動畫的實時運算,其他數(shù)據(jù)的采集和處理等,所以考慮到這些任務(wù)都是需要實時運行的,編程難度似乎加大了不少,這時需要引入單片機中斷這一基礎(chǔ)功能,難題便會迎刃而解。 首先定義一個緩存數(shù)組,用于儲存所有的光立方每一點的數(shù)據(jù),暫且理解為顯存。我通常用display[8][8]定義為數(shù)組。 下面就要定期把這個數(shù)組定期發(fā)送至驅(qū)動板中,時間如何去定義。 我查閱資料后發(fā)現(xiàn),當現(xiàn)實器播放大于15幀的動畫時,才會在我們的眼中形成流暢的效果。那么光立方刷新頻率要大于15hz/s(越大越好,但是越大單片機負載也越大),這里也就是說,每1/15秒就要進行一次全部圖的刷新,又由于在相同時間,只有一層能夠點亮,那么每一層停留的時間就是1/15/8s根據(jù)這些規(guī)則,我需要定義定時器讓定時器有相應(yīng)的數(shù)值。把這段專門用于刷新光立方顯示的程序放于中斷服務(wù)程序中。這樣,我們程序的基礎(chǔ)框架就有了。由于是定時器中斷自動來刷新驅(qū)動板數(shù)據(jù),這樣我們看到的圖像很穩(wěn)定,亮度也均勻。而且我們再寫其他的圖案動畫程序時候,不用再去考慮去更新驅(qū)動板數(shù)據(jù),一切都會由中斷自動完成。而我們?nèi)绻膱D案,我們只需要對數(shù)組所儲存的數(shù)據(jù)進行更改即可,這也使我們的動畫程序很驅(qū)動程序產(chǎn)生隔離,這樣做的好處是即使更換了驅(qū)動板,那么也只需要對驅(qū)動函數(shù)(中斷里面的程序)做相應(yīng)的改動即可,不必再對其他程序改動。這也避免了“動一發(fā)而牽全身”的尷尬局面。
快遞寄得慢也就算了,居然還少寄了!先倒騰起來
把母孔焊到洞洞板上
psb2.jpg (882.74 KB, 下載次數(shù): 146)
下載附件
2016-5-30 08:30 上傳
用硬紙板做焊接模具,掰彎發(fā)光二極管,準備焊接。
psb3.jpg (557.57 KB, 下載次數(shù): 154)
下載附件
2016-5-30 08:30 上傳
第一面焊好,燙手啊!
psb.jpg (557.44 KB, 下載次數(shù): 133)
下載附件
2016-5-30 08:32 上傳
接著焊好板子及板子底下的跳線
psb.jpg (231.17 KB, 下載次數(shù): 145)
下載附件
2016-5-30 08:34 上傳
接著做好給光立方供電的電源
psb2.jpg (661.76 KB, 下載次數(shù): 137)
下載附件
2016-5-30 08:32 上傳
最后光立方就做出來了
psb (1).jpg (5.12 KB, 下載次數(shù): 138)
下載附件
2016-5-30 08:34 上傳
也許有人會問你光立方的制作過程怎么不全,是這樣的我這篇文章以前是寫在QQ空間的日志草稿里的,還沒全寫完。就在前幾天這個光立方被一個網(wǎng)友買走了,
{MMPEV)FL8Z(4{LZIA@48}4.jpg (84.89 KB, 下載次數(shù): 121)
下載附件
2016-5-24 14:49 上傳
這個網(wǎng)友先是在網(wǎng)上買了一個PCB板做光立方成品,然而畢業(yè)設(shè)計沒通過,就想買洞洞板的光立方于是就跟我買了。
關(guān)于我對光立方驅(qū)動程序的理解,手寫筆記也一起寄給了那個網(wǎng)友。但是我在寄快遞前用手機拍了下來
01.png (1.02 MB, 下載次數(shù): 141)
下載附件
2016-5-24 15:04 上傳
02.png (889.9 KB, 下載次數(shù): 136)
下載附件
2016-5-24 15:04 上傳
03.png (871.33 KB, 下載次數(shù): 133)
下載附件
2016-5-24 15:04 上傳
04.png (803.6 KB, 下載次數(shù): 121)
下載附件
2016-5-24 15:04 上傳
05.png (913.33 KB, 下載次數(shù): 160)
下載附件
2016-5-24 15:05 上傳
06.png (867.84 KB, 下載次數(shù): 132)
下載附件
2016-5-24 15:05 上傳
07.png (745.8 KB, 下載次數(shù): 137)
下載附件
2016-5-24 15:05 上傳
這些程序在帖子附件中都有,想研究光立方程序的可以下載附件看看
小學(xué)生班門弄斧了,希望大家諒解!
最后說一下洞洞板制作光立方容易出現(xiàn)的一些問題
1.鎖存器的兩個腳短路的問題。
2.做好不要用母孔做光立方,容易造成燈腳與板子接觸不良和造成光立方的不整齊
3就是要注意發(fā)光二極管的漏光問題,有的LED被反向擊穿了,所以電流就會從負極流向正極。導(dǎo)致該亮的燈不亮,不該亮的燈亮。
4.國產(chǎn)鎖存器里面壞的多,我買10個國產(chǎn)鎖存器里面有一個是壞的,鎖存器第4個輸入口居然接地了,導(dǎo)致我做光立方遇到了很大的問題。
|