LED立方體Touch Cube制作教程
三, 驅(qū)動電路
看上面的圖大家就應(yīng)該知道了,我延續(xù)了以前金字塔的焊接方法,只不過這次是8輸入全部并聯(lián),沒有遞減到1,輸入的并聯(lián)還是用的廢棄管腳,焊接起來沒什么難度,之所以用2組驅(qū)動,是考慮到了電流,每個面的電流還是不小的,8個面組合起來電流就更大了,單片機自己的驅(qū)動能力是遠遠不夠的,一組的驅(qū)動也是不夠的,這是我實際測試過的結(jié)果。所以還希望大家不要嫌麻煩,當(dāng)然我更期待網(wǎng)友給出更好的解決方案,既能節(jié)約IC也能減少焊接的工作量。
四, 總裝和美化
這些工作都完成后,就是把每個面的燈珠組裝上去了,實在是沒什么難度,如果后期發(fā)現(xiàn)有壞點現(xiàn)象,拆卸也很方便的,補焊就是。然后就是根據(jù)原理圖把后面的總線連接到245的輸出上,每個面64跟線,64個輸出與之對應(yīng)。
初裝好后,就是這樣了:
后面就是美化了,軟件調(diào)試過后,硬件可以正常工作的話,就開始美化,把線都整理好,用熱熔膠固定,在圍上護板,把電路遮擋起來。我得承認,我沒老外做的好,但畢竟人家用的是16位單片機,驅(qū)動方式不一樣的,自然電路不一樣,這個電路還算是復(fù)雜的,不過原理簡單,程序設(shè)計上也沒什么難度。
原理圖部分
一,原理介紹
Ledcube1里面的圖是為底面的驅(qū)動圖,也就是我實物的下面的板子和下面的驅(qū)動電路原理,大家看到的那64個發(fā)光二極管代表了64個共陽極接點,并不是真正的燈珠,這樣畫是因為proteus里我找不到更好的表達方式了,希望大家切記,那不是真的燈珠,而是底面的64個共陽極接點(每個面8個陽極8個陰極)。
至于說單片機(請忽略圖里的AT單片機,做樣子的),我這次用的是STC12C5A60S2,倒不是因為89C52速度不行,而是儲存空間不夠大,我手里64K的單片機只有這么一塊,所以就用上了,大家不要擔(dān)心普通51單片機的能力問題,非增強型的單片機是完全可以勝任這個程序的,我親自測試,保證通過。
Ledcube2里面的圖就是側(cè)面板子和驅(qū)動的電路了,完全一樣,只不過沒畫出單片機,側(cè)面245的輸出全部連接的是共陰極,同樣是64個。
兩個圖的19腳請大家注意,是兩兩一組的,大家在焊接的時候也注意到這個部分的布局,否則以后組裝的時候還是很麻煩的。
二,注意事項
1
驅(qū)動芯片選型:我實物用的是LS系列245,因為我實在是比較懶,沒有在所有的輸出上加上拉電阻,因為LS系列的剛剛好就和單片機的TTL電平兼容,即便是P0端口,不加上拉一樣可以直接準(zhǔn)確輸出??蒆C系列的就不行了,19腳和8跟輸入腳都必須加上拉電阻,否則硬件調(diào)試的結(jié)果是不對的,這個也是我親自測試的結(jié)果。
但不是因為這個就不選HC系列的,HC的IC扇出系數(shù)(這部分請自行網(wǎng)上學(xué)習(xí))比相比LS系列就大了很多,也就是說,HC的負載能力要好,而且功耗低,在兩種IC的發(fā)熱上來說,我是深有體會的,HC系列的做驅(qū)動時,芯片發(fā)熱不明顯,但LS的就明顯發(fā)熱,雖然發(fā)熱溫度也是符合范圍的,但感覺上還是不舒服的,所以在骨牌時鐘的時候,我就用了HC系列的,那時候用的都是大功率二極管,換成HC的IC后,發(fā)熱明顯降低。
希望讀者根據(jù)自己的實際情況選用IC,不管選用哪種,都要做好對應(yīng)的處理方案。
2
限流電阻,我在原理圖上是都畫了限流電阻的,這部分加不加要看你選用什么材質(zhì)的發(fā)光管,我這次用的經(jīng)過測試,就不需要加限流電阻,但不保證別人選用的也能承受住IC的輸出電流,而導(dǎo)致二極管亮度過亮。大家把買來的二極管一定要做好電流測試,看你的二極管工作在那個電流范圍最穩(wěn)定,再選擇對應(yīng)的電阻,如果大家選用的和我的是一樣,自然就不需要加電阻了,我的制作清單會附在表格里,給大家參考。
3
原理圖請用proteus7.5版本打開,大家就不要再加我好友問為什么圖打不開或者要99se的圖了,我沒有,也不怎么熟悉那個軟件。
程序部分
這次的程序依然是匯編,控制部分有60多行,我覺得算是簡短的程序了。我在這里小小的抱怨下,希望大家不要再問我為什么不用c語言了,今天我可以告訴大家,不用c語言是因為我不會,我也比較反感別人問我這些,我也知道自己用的是匯編,很多人理解起來有困難,所以我是給了中午注釋的,大家可以根據(jù)程序解構(gòu)和中午注釋來修改成c語言版本的。不懂匯編不是什么問題,但是不懂漢字我就不能再說什么了,本人能力有限,不能再給出c語言程序,希望大家理解。
下面,我根據(jù)我對c語言的理解,給大家做出c語言的結(jié)構(gòu)
1初始化部分,主要是設(shè)置對應(yīng)的中斷,定時工作方式,與匯編是完全一樣的
2 顯示部分
A 把立方體看作8位數(shù)碼管,每個面即為一個數(shù)碼管
B,每個面的顯示原理是和8X8點陣是完全一樣的,保證這段程序正確的,可以直接調(diào)用
C 查表的方式是自0起遞增的,每次加1,每個畫面查表64次,查表的上限為65536/64,當(dāng)然,實際的情況是要小于65536的,控制程序的代碼也會占用rom空間,就會導(dǎo)致了畫面次數(shù)減少,所以,要想在有限的空間內(nèi)顯示更多的畫面,就得盡量把程序?qū)懙暮喍?,?dāng)然了,有的朋友會選用更大容量的單片機,查表的上線自然會增加。
注意:c語言可以直接定義16位變量,匯編在這方面是比較麻煩的,但好處是我可以調(diào)試程序來直接計算我的程序可以寫到多少的上限,c語言的方法我就不知道了。但肯定是可以通過調(diào)試計算出來的。
3中斷部分,為了達到動畫效果切換時間可準(zhǔn)確調(diào)節(jié)性,畫面的切換用中斷方式。建議大家像我這樣,把時間通過一個變量來表示,這樣每次只需修改一個變量,就可以設(shè)置動畫的速度了。每次發(fā)送中斷后,查表的變量就加64(i=i+64),然后返回顯示程序繼續(xù)顯示,中斷程序只做變量的計算,改變的是查表的地址。
4循環(huán)
A程序循環(huán),循環(huán)的條件是i變量不滿足動畫顯示的上限值。比如你做了八個畫面,那么i的的值不滿足8X64時,就繼續(xù)顯示,滿足就清零從新開始。
B 顯示循環(huán)
這個比較重要,主題的顯示程序,應(yīng)該是一個死循環(huán),一直在顯示一個畫面,只有中斷產(chǎn)生的時候,改變了查表的變量,才切換一次動畫,每個畫面都顯示后,注意修正變量,能使其顯示同一個畫面,不管是查表的變量還是Z軸,Y軸的控制變量,都要進行初始化,直到中斷的產(chǎn)生才改變查表的變量數(shù)值。
資料下載:http://www.51hei.com/f/lygyhh548.zip
評論