摘 要: 為解決二維LED顯示單調與立體感差的問題,提出了以STC12c5a60s2為核心芯片,輔以ULN2803芯片和74HC573芯片對大功率的512個LED燈驅動來實現3D顯示的設計方案。通過對3D顯示屏原理分析,結合硬件電路設計與軟件編程,完成了8×8×8的顯示屏光立方制作,并給出了最終的交替變換動態效果。該設計不僅產生了一種良好的視覺效果,而且為其他三維效果廣告設計提供了重要的參考價值。
關鍵詞: 單片機;光立方;LED點陣;STC12c5a60s2
0 引言
常見的LED顯示以平面(二維)顯示為主,這種顯示技術相當成熟,賓館、飯店、公司及娛樂場所都可看到各式各樣的二維廣告流水燈。然而這種平面效果的顯示設計因單調性和立體感差已不能滿足人們對LED效果的觀賞性要求,因此在二維顯示屏基礎上,開發設計三維(3D)LED顯示屏非常有必要。3D顯示屏是以LED發光二極管為基本單元組成的顯示器,因其畫面鮮艷逼真、立體感強等特點逐漸進入人們的視野[1-2],被人們接受和認可。
本文建立三維立體模型,利用X、Y、Z三軸,采用STC12c5a60s2核心芯片,輔以ULN2803芯片和74HC573芯片實現大功率的512個LED驅動,達到3D顯示的目的。該設計具有以下特點:(1)外觀設計簡單美觀;(2)實現圖形的動靜態效果顯示,穩定性好,抗干擾性強;(3)程序靈活可變,可局域性更改,實現畫面的自定義,使得圖形在數字、字母、三維立體圖形之間任意交替動態變換;(4)此設計可為其他三維效果設計開拓思路,提供實踐依據。
1 總體方案設計
3D顯示屏由512個LED燈構建的三維LED點陣模塊及相應的控制系統構成[3-4]。其外觀規格為18 cm×18 cm×18 cm,各相鄰兩燈間距約為25.6 mm。系統通過二維8×8的LED驅動電路控制XY基面,依次沿Z軸方向實現8次掃描,恰好完成一次整體的8×8×8 LED從底面到最高面的掃描。整體模型用X、Y、Z三軸模擬,其X軸控制鎖存器使能端,Y軸控制鎖存器數據端,X、Y軸控制XY基面,Z軸控制層面,如圖1所示。利用人眼的視覺暫留效應,分時段刷新每一層面數據就可達到立體顯示的動靜態效果。
本設計采用STC12c5a60s2單片機為核心芯片,該芯片不僅具有運算速度快、功率損耗低、抗干擾能力強等優點,而且內部功能完全兼并8051;同時集成了MAX810專用的復位電路,簡化了傳統的電路設計;其內部還具有8路高速10位A/D轉換和2路PWM,能適應電機控制以及干擾性較強的場合。ULN2803作為整體LED的8位共陰極驅動芯片以增強驅動電流的能力。采用8片規格完全相同的鎖存器74HC573對LED陽極端口控制,可實現圖形穩定顯示、動態快速變換、亮度逐級可調等功能。系統的總體框圖如圖2所示。
2 硬件設計
2.1 MCU主控模塊
本系統采用STC12c5a60s2單片機為核心芯片,內部自帶高達60 KB的Flash ROM和1 280 B RAM數據儲存器,4組8 bit的I/O口。其中P0端口與74HC573數據輸入端口相連,發送陽極數據,對應Y軸;P1口與ULN2803數據輸入端口相連,發送陰極數據,對應Z軸;P2口與74HC573使能端口相連,發送片選信號數據,對應X軸。XTAL1和XTAL2分別連接12 MHz晶振兩端,串連30 pF電容C1、C2后接地,其晶振可滿足運行速度的要求。由于STC12c5a60s2芯片自帶復位電路,因此忽略了電路中復位電路環節,簡化了電路設計。主控電路如圖3所示。
2.2 驅動模塊設計
2.2.1 模塊ULN2803設計
由于本設計中LED較多,單片機本身的驅動能力顯得不足,考慮到ULN2803模塊具有較強的灌電流能力,因此作為共陰極(Z軸)驅動,其中com端口接地,1C~8C分別對應主控器的P1.0~P1.7端口,輸出端口1B~8B分別對應LED點陣的8個共陰極端口[5]。最初實驗中采用ULN2803模塊,電流還是未能滿足設計要求,因此增加了圖4所示的外部灌電流驅動電路,實驗效果明顯改善。
2.2.2 74HC573模塊設計
本設計采用74HC573模塊對陽極束(Y軸)進行并行輸入并行輸出控制。其具有以下優點:(1)具備高阻態功能,輸出既不是高電平,也不是低電平,而是高阻抗狀態,在這種狀態下,可將多個芯片并聯輸出,同時控制;(2)具備數據鎖存功能,當輸入的數據消失時,在芯片的輸出端數據仍然保持;(3)具備數據緩沖功能,可加強電路的驅動能力。
74HC573模塊驅動電路如圖5所示。8片鎖存器使能端OE口均接地,LE鎖存端口P2.i分別與主控系統中P2對應的第i位端口相連,8位數據輸入端口D0~D7分別與主控系統P0口并行連接,8位數據輸出端口Q0~Q7分別與對應8列X軸即64位陽極束連接。
3 軟件設計
本實驗3D顯示屏LED點陣模塊是在二維的基礎上通過層疊加原理實現的[6],因此可將三維8×8×8模型看作是64×8的平面模型,即對應的XY面與Z面的相互作用模型。其中64看作陽極束,一片74HC573芯片輸出端為8位,恰好設計8片74HC573芯片控制64位陽極束。8看作陰極束,用一片ULN2803芯片控制。因此64×8對應了全部的512位即512個LED燈。每一位采用狀態0或1可對其進行亮或滅控制,實現三維LED燈的發光或熄滅。
此設計采用X、Y、Z三軸三維模型模擬,其中任意LED燈的坐標為LED(X,Y,Z),坐標范圍均為0~7。當要(3,4,5)點坐標燈亮,控制其Z=4處平面燈全亮即輸入端口為高電平1,其余為低電平0;Y=3處平面燈全亮即輸入端口為高電平1,其余為低電平0;X=2處平面輸入端口對Y=3處平面數據進行鎖存即由高電平1變為低電平0,這樣便可實現LED(3,4,5)坐標燈保持高亮,其余燈熄滅。由此通過點可實現線、面、體以及兩兩結合組成的各種三維立體動靜態圖形顯示。由于動畫顯示只有大于15幀時人眼才可看到流暢的動態效果,因此在動態圖形中掃描周期必須小于(1/15)s,即每層停留的時間t最多為(1/15)×(1/8)[7]。此效果的顯示都是通過軟件來實現的,這里顯示一個簡單的動態沙漏程序,代碼如下:
void shalou()
{ int i,j,d;
chushihua(); //初始化函數
for (j=0;j<8;j++)
{
For (d=0;d<5*(8-j);d++)
{
For (i=0;i<=j;i++)
{
CLEAR(); //清屏函數
P0=SHALOU[i]; //Y軸掃描數據
P2=SHALOU[i]; //X軸存入高電平數據
P2=0x00; //X軸低電平鎖存數據
P1=0x80>>i; //Z軸發送層掃描函數
Delayms(5);
}
}
}
For (j=7;j>=0;j--)
{
For (d=0;d<5*(8-j);d++)
{
For (i=0;i<=j;i++)
{
CLEAR();
P0=SHALOU[i]; //Y軸掃描數據
P2=SHALOU[i]; //X軸存入高電平數據
P2=0x00; //X軸低電平鎖存數據
P1=0x01<<i; //Z軸發送層掃描函數
Delayms(5);
}
}
}
}
實現該代碼的思路流程如圖6所示。
4 仿真效果
本設計通過硬件電路設計與軟件編程實現了3D效果顯示,如圖7所示。其中,圖7(a)為動態沙漏的某一瞬間截取圖;圖7(b)為動態桃心的某一瞬間截取圖;圖7(c)為動態平面前后掃面的某一瞬間截取圖;圖7(d)為整體靜態顯示圖。從圖7(a)、(b)可明顯看出圖形的立體層次感;從圖7(c)、(d)可看出,與平面二維效果相比,三維立體方位感更強、更真實。
5 結論
本文實現了從開始的硬件設計到最終的軟件仿真,達到了以下目的:(1)該電路設計合理,不僅圖形的穩定性好,而且觀賞性強,為其他三維效果設計提供了一定的實踐基礎;(2)從仿真結果可看出三維效果比二維效果立體感更強、更真實,該設計方案是以后各立體效果圖形設計采納的主流趨勢。然而,由于條件限制,通過A/D轉換音頻控制LED未能進一步設計,將在以后的工作中利用離散傅里葉光學變換展開研究。
參考文獻
[1] 康志強,汪佳,湯勇明.基于FPGA的3D光立方設計[J].電子器件,2012,35(6):683-686.
[2] 王欣,馬青玉.基于Arduino的LED光立方設計[J].南京師范大學學報,2013,13(4):24-28.
[3] 楊永剛.3D光立方的設計與制作[J].電子世界,2014(6):129.
[4] 劉小平,李志遠.單片機版光立方的制作[J].無線電,2012(10):70-74.
[5] 楊清德.LED驅動電路設計與工程施工案例精講[M].北京:化學工業出版社,2010.
[6] 楊富強,朱利強.基于單片機的LED點陣動態顯示系統[J].工業控制計算機,2013,26(1):101-102.
[7] 蘇珊,肖英,李行杰.基于STC單片機的8×8×8 LED光立方系統設計[J].吉林大學學報,2013,34(6):33-36.