蘇 珊,肖 英,李行杰
(廣西科技大學(xué)電氣與信息工程學(xué)院,廣西柳州 545006)
基于STC單片機(jī)的8×8×8LED光立方系統(tǒng)設(shè)計(jì)*
蘇 珊,肖 英,李行杰
(廣西科技大學(xué)電氣與信息工程學(xué)院,廣西柳州 545006)
為解決二維LED顯示屏顯示單調(diào)和立體性差的問題,以STC系列單片機(jī)為核心,采用鎖存器74HC573和ULN2803芯片實(shí)現(xiàn)大功率LED的驅(qū)動(dòng),提出了軟硬件系統(tǒng)設(shè)計(jì)方案,并完成了8×8×8的LED光立方系統(tǒng)設(shè)計(jì).該系統(tǒng)能動(dòng)態(tài)和靜態(tài)地立體顯示文字、圖案和動(dòng)畫,適用于傳媒信息和裝飾顯示,為進(jìn)一步開發(fā)三維顯示器提供了一定的理論與實(shí)踐基礎(chǔ).
單片機(jī);光立方;LED點(diǎn)陣;74HC573;ULN2803
在信息化社會(huì)的高速發(fā)展過程中,LED顯示屏扮演著越來越重要的角色,隨著各種信息的傳播和人們視覺審美的提高,人們對(duì)LED顯示屏提出了更高的要求[1].當(dāng)下二維LED顯示屏技術(shù)已經(jīng)相當(dāng)成熟,但是二維平面點(diǎn)陣顯示單調(diào)、乏味,人們已經(jīng)不再滿足于二維平面顯示,從而在二維平面LED顯示屏基礎(chǔ)上,開發(fā)設(shè)計(jì)三維LED點(diǎn)陣屏——光立方,顯示色彩鮮艷畫面,立體感強(qiáng),不僅可以用于室外環(huán)境信息傳播,還可用于室內(nèi)環(huán)境裝飾,其顯示給人們帶來全新的娛樂體驗(yàn),具有投影儀、電視墻、液晶顯示屏無法比擬的優(yōu)點(diǎn)[2].筆者提出了基于STC單片機(jī)8×8×8光立方設(shè)計(jì)方案,該系統(tǒng)電路結(jié)構(gòu)簡單,控制系統(tǒng)穩(wěn)定.
單色8×8×8光立方由512個(gè)LED構(gòu)建的三維LED點(diǎn)陣模塊及其控制系統(tǒng)組成.三維LED點(diǎn)陣模塊規(guī)格約為18cm ×18cm×18.5cm,分8層共陰和64列共陽,每個(gè)LED之間的空間間距約22mm.系統(tǒng)的工作原理是在二維LED點(diǎn)陣的基礎(chǔ)上,擴(kuò)大LED之間的距離,應(yīng)用層疊技巧搭建成一個(gè)實(shí)心LED立方體,用主控系統(tǒng)直接控制外圍驅(qū)動(dòng)電路輸出,間接實(shí)現(xiàn)對(duì)LED的亮滅控制.采用逐層掃描的工作方式,利用人們視覺暫留效應(yīng),實(shí)現(xiàn)動(dòng)靜態(tài)文字和圖像顯示[3].因?yàn)榭刂粕婕暗腖ED較多,且要求自由控制每個(gè)LED的亮滅,所以對(duì)控制系統(tǒng)的功能有較高的要求.
硬件系統(tǒng)主要分為3大模塊:主控模塊、驅(qū)動(dòng)模塊和顯示模塊.其中主控系統(tǒng)發(fā)送顯示信息和控制驅(qū)動(dòng)電路顯示;驅(qū)動(dòng)模塊分為陽極驅(qū)動(dòng)模塊和陰極驅(qū)動(dòng)模塊,驅(qū)動(dòng)電路傳輸顯示信息和放大電流驅(qū)動(dòng)三維LED點(diǎn)陣模塊顯示;顯示模塊顯示預(yù)設(shè)文字或圖像信息.
設(shè)計(jì)方案總體結(jié)構(gòu)框圖如圖1所示.
圖1 總體結(jié)構(gòu)框圖
2.1 主控模塊
主控采用STC12系列單片機(jī)STC12C5A60S2作為核心芯片,該芯片運(yùn)算速度快,功率損耗低,抗干擾能力強(qiáng),完全兼容傳統(tǒng)8051指令代碼,內(nèi)部自帶高達(dá)60kB FLASH ROM,集成MAX810專用復(fù)位電路,8路高速10位A/D轉(zhuǎn)換(250kB/s),2路PWM,適用于電機(jī)控制以及干擾性較強(qiáng)的場合[4].主控模塊電路如圖2所示.單片機(jī)引腳P1.0~P1.7分別與陰極驅(qū)動(dòng)芯片ULN2803的8個(gè)數(shù)據(jù)輸入口相連,發(fā)送層掃描信號(hào);引腳P0.0~P0.7分別與8片74HC573的8個(gè)數(shù)據(jù)輸入端口相連,發(fā)送共陽束數(shù)據(jù);引腳P2.0~P2.7分別與8片74HC573的使能端相連,發(fā)送片選信號(hào).復(fù)位電路由按鍵、10μF電解電容和1 0kΩ電阻組成,復(fù)位引腳REST連接復(fù)位電路,實(shí)現(xiàn)按鍵復(fù)位.XTAL1和XTAL2分別接1 2MHz晶振兩端,串接電容接地,為單片機(jī)工作提供時(shí)鐘源.P3.0RXD(串行輸入口)和P3.1TXD(串行輸出口)分別連接USB轉(zhuǎn)串口的TXD和RXD,用于串口通信,向內(nèi)部FLASH ROM寫入程序.
圖2 主控模塊電路
2.2 驅(qū)動(dòng)模塊
光立方顯示部分由512個(gè)LED組成,整體顯示需要較大的功率,若功率不夠,則顯示會(huì)出現(xiàn)不亮、半亮等現(xiàn)象,嚴(yán)重影響顯示效果.因此,光立方對(duì)驅(qū)動(dòng)方式有較高的要求.驅(qū)動(dòng)部分模塊選用NPN達(dá)林頓連接晶體管ULN2803作為共陰層驅(qū)動(dòng),8進(jìn)制3態(tài)非反轉(zhuǎn)透明鎖存器74HC573為主要芯片作為共陽束驅(qū)動(dòng).
2.2.1 共陰層驅(qū)動(dòng)電路設(shè)計(jì) 8個(gè)共陰層采用逐層掃描的工作方式,使用八重達(dá)林頓管ULN2803放大電流驅(qū)動(dòng).ULN2803達(dá)林頓管一般用來驅(qū)動(dòng)功率稍大的被動(dòng)器件,內(nèi)部設(shè)計(jì)了二極管防止被擊穿,使用的時(shí)候不需要外接二極管,同時(shí)驅(qū)動(dòng)多路器件的時(shí)候可以節(jié)省PCB空間,方便走線[5].共陰層驅(qū)動(dòng)電路如圖3所示.ULN2803的引腳9和10分別接GND和VCC,8個(gè)數(shù)據(jù)輸入口IN1~I(xiàn)N8分別與主控電路的P1.0~P1.7引腳相連,8個(gè)數(shù)據(jù)輸出端均接1個(gè)1kΩ限流電阻后,分別與三維LED點(diǎn)陣模塊的8個(gè)共陰層相連,工作過程中向數(shù)據(jù)輸入端發(fā)送層掃描信號(hào),數(shù)據(jù)輸出端反相輸出選中相應(yīng)層.
圖3 共陰層驅(qū)動(dòng)模塊電路
圖4 1片74HC573驅(qū)動(dòng)模塊電路
2.2.2共陽束驅(qū)動(dòng)電路 共陽束采用并行輸入并行輸出控制方式,使用8進(jìn)制3態(tài)反轉(zhuǎn)透明鎖存器74HC573設(shè)計(jì)共陽束驅(qū)動(dòng)電路.8片74HC573的三態(tài)允許控制端OE均接地,64個(gè)數(shù)據(jù)輸入口按D1~D8對(duì)應(yīng)相連后,再分別與主控系統(tǒng)的P0.0~P0.7引腳相連,8個(gè)鎖存控制端LE分別與主控系統(tǒng)的P2.0~P2.7引腳相連,64個(gè)數(shù)據(jù)輸出端分別與三維LED點(diǎn)陣模塊的64個(gè)共陽束相連.1片74HC573的驅(qū)動(dòng)電路如圖4所示.
在工作中,單片機(jī)從P0口將共陽束數(shù)據(jù)送到D端,然后控制數(shù)據(jù)鎖存端,使LE從“0→1→0”,此時(shí)需要輸出的數(shù)據(jù)就鎖存在Q端上,不受輸入的數(shù)據(jù)變化影響.
2.3 三維LED點(diǎn)陣顯示模塊
顯示模塊利用LED在空間上的亮滅實(shí)現(xiàn)文字或圖形的顯示.該設(shè)計(jì)用到512個(gè)LED,整體顯示需要功率較高,選用小功率插件式長腳草帽形LED(陽極引腳27~28mm,陰極引腳25~26mm)可降低對(duì)驅(qū)動(dòng)電路的要求,發(fā)光集中,LED點(diǎn)陣整體的通透性強(qiáng).在孔間距為8×8平面模板上,根據(jù)所選用LED規(guī)格大小設(shè)定孔大小,LED統(tǒng)一彎折管腳使燈帽、陰極、陽極三者之間分別成90°,其中陰極平LED根部往一水平方向折90°,陽極距離LED根部4mm處往另一水平方向折90°[6].將折好的LED放置模板上,將同極管腳首尾焊接即可快速制作一面8×8的LED二維平面點(diǎn)陣.用同樣的方法制作8面8×8的LED二維平面點(diǎn)陣后,將它們組成立方型(面與面間距22mm),并將不同面的行依次相接,構(gòu)成8層共陽、64列共陰的三維LED點(diǎn)陣模塊.
3.1 設(shè)計(jì)思路
三維LED點(diǎn)陣模塊是在二維點(diǎn)陣模塊的基礎(chǔ)上,應(yīng)用層疊技巧搭建而成的,因此在控制上可以將三維LED點(diǎn)陣模塊看作一個(gè)64×8的平面矩陣.從數(shù)據(jù)結(jié)構(gòu)上分析,控制一個(gè)8×8×8的三維LED點(diǎn)陣模塊顯示,或者是一個(gè)64×8的平面LED矩陣,就是對(duì)長度為64byte數(shù)組的控制.一個(gè)字節(jié)有8位(bit),64×8=512位,對(duì)應(yīng)了三維LED點(diǎn)陣的512個(gè)LED,每一位有“1”和“0”2種狀態(tài),對(duì)應(yīng)了LED的亮和滅.
雖然光立方和二維點(diǎn)陣控制原理相似,采用“逐層掃描”或者“逐行掃描”方式,但是在實(shí)際應(yīng)用中,編程控制卻有很大的差別.光立方控制,需要應(yīng)用三維空間中點(diǎn)、線、面、體的算法規(guī)律.在幾何上,通常計(jì)算一個(gè)立方體的體積,需要知道立方體的長、寬、高.在光立方的三維LED點(diǎn)陣模塊中,任意取一點(diǎn)都可以與其他相應(yīng)的點(diǎn)構(gòu)成一個(gè)立方體.因此,要控制光立方中的任意LED亮滅,可以建立三維坐標(biāo)系xyz,定義光立方中任一個(gè)LED的坐標(biāo)為(x,y,z),其中x,y,z值域?yàn)椋?,7].光立方共有64束,束用k表示,k的值域?yàn)椋?,63].另外,每束上有8個(gè)LED,可以用一個(gè)字節(jié)的8個(gè)位數(shù)據(jù)定義其顯示狀態(tài).各束上對(duì)應(yīng)位置的LED陰極連在一起構(gòu)成了層,采用逐層掃描方式可以避免同層不同束LED之間的相互影響.
固定畫面控制顯示過程如下:(1)主控系統(tǒng)控制片選將第1層64個(gè)點(diǎn)的數(shù)據(jù)有序地發(fā)送到8片74HC573進(jìn)行鎖存;(2)發(fā)送接通第1層且其他層關(guān)閉的掃描信號(hào);(3)延遲時(shí)間t;(4)發(fā)送關(guān)閉所有層信號(hào).依此類推,掃描完8層為1個(gè)周期T.利用人眼的視覺暫留特性,只要掃描得夠快,一個(gè)掃描周期的時(shí)間就小于人眼的視覺暫留時(shí)間;從人眼看來,光立方顯示的就是一幅完整的立體圖形.由于掃描完8層為1個(gè)周期,若每層點(diǎn)亮的時(shí)間t占整個(gè)周期T的比值不同,因此必然導(dǎo)致光立方整體顯示亮度不同,要使得光立方顯示亮度均勻,就必須讓每層點(diǎn)亮?xí)r間t相等.一般情況下,顯示動(dòng)畫大于15幀時(shí),人眼才能看到比較流暢的動(dòng)畫效果,故一個(gè)掃描周期T最多s,即每層停留時(shí)間t最多
3.2 運(yùn)行程序設(shè)計(jì)
在層掃描工作方式中,無論是動(dòng)態(tài)顯示圖文還是靜態(tài)顯示圖文,在整個(gè)顯示過程中,主控單片機(jī)不斷發(fā)送數(shù)據(jù)和不斷掃描,每次發(fā)送數(shù)據(jù)只能點(diǎn)亮1層,掃描完1個(gè)周期,即可看到完整的立體圖形.為保證點(diǎn)亮每層停留時(shí)間相等,需要單片機(jī)中斷設(shè)定1個(gè)時(shí)間基準(zhǔn).采用動(dòng)畫程序和輸出顯示程序分離設(shè)計(jì),運(yùn)行程序可以分為3大部分:第1部分是上層的系統(tǒng)應(yīng)用程序,第2部分是顯示數(shù)據(jù)運(yùn)算程序,第3部分是中斷刷新顯示程序.系統(tǒng)應(yīng)用程序完成系統(tǒng)環(huán)境的初始化設(shè)置和循環(huán)調(diào)用驅(qū)動(dòng)顯示子程序等工作;顯示數(shù)據(jù)運(yùn)算程序負(fù)責(zé)運(yùn)算出動(dòng)畫結(jié)果存放到指定數(shù)組中;中斷刷新顯示程序負(fù)責(zé)向屏體發(fā)送指定數(shù)組中顯示數(shù)據(jù),并產(chǎn)生行掃描信號(hào)[7].程序流程如圖5所示.
圖5 程序流程
圖6是實(shí)驗(yàn)的顯示效果.使用STC12C5A60S2作為下位機(jī),設(shè)置串口通訊波特率為57 600,根據(jù)上位機(jī)控制三維LED點(diǎn)陣顯示所需的格式,編寫文字或圖像數(shù)據(jù)信息,通過串行口與下位機(jī)連接通訊,發(fā)送有效的文字或圖像數(shù)據(jù)信息,即可控制光立方,實(shí)現(xiàn)顯示功能[8].主控系統(tǒng)對(duì)上位機(jī)類型要求不高,只需要上位機(jī)能與主控系統(tǒng)實(shí)現(xiàn)串口通訊,設(shè)置相同的串口通訊波特率.
圖6 實(shí)驗(yàn)顯示效果
文中以高性能的STC芯片為硬件基礎(chǔ),完成了光立方的硬件和軟件系統(tǒng)主設(shè)計(jì).實(shí)驗(yàn)效果表明,該方案有效可行,設(shè)計(jì)的光立方牢固、美觀,LED顯示屏各點(diǎn)亮度均勻、充足,可以動(dòng)靜態(tài)、立體顯示三維文字或圖形,顯示過程穩(wěn)定.
[1] 梁銘林.LED顯示技術(shù)的應(yīng)用[J].智能建筑,2010(3):42-45.
[2] 楊富強(qiáng),朱利強(qiáng).基于單片機(jī)的LED點(diǎn)陣動(dòng)態(tài)顯示系統(tǒng)[J].工業(yè)控制計(jì)算機(jī),2013(1):101-102.
[3] 官微宏.3D8S的設(shè)計(jì)理念與開發(fā)心得——基于Arduino的8×8×8光立方[J].無線電,2012(10):66-69.
[4] 顏兵兵,任 翔,賈俊成,等.基于單片機(jī)的LED立體成像系統(tǒng)設(shè)計(jì)[J].佳木斯大學(xué)學(xué)報(bào):自然科學(xué)版,2013,31(3):393-395.
[5] 楊清德.LED驅(qū)動(dòng)電路設(shè)計(jì)與工程施工案例精講[M].北京:化學(xué)工業(yè)出版社,2010.
[6] 劉小平,李志遠(yuǎn).單片機(jī)版光立方的制作[J].無線電,2012(10):70-74.
[7] 王浩然,秦會(huì)斌.LED點(diǎn)陣屏顯示單元的設(shè)計(jì)與驅(qū)動(dòng)控制[J].電子器件,2010,33(5):550-552.
[8] 李行杰,李克儉,肖 英.基于AVR單片機(jī)的8×8×8三維LED點(diǎn)陣設(shè)計(jì)[J].大眾科技,2013(5):42-44.
(責(zé)任編輯 陳炳權(quán))
Design of 8×8×8LED Light Cube Based on STC Microcontroller
SU Shan,XIAO Ying,LI Hang-jie
(Institute of Electrical and Information Engineering,Guangxi University of Science and Technology,Liuzhou 545006,Guangxi China)
In order to solve the problems of drab display and poor stereoscopic of 2DLED screen,based on the core of STC single chip,a LED light cube of 8×8×8is designed,with application of latch 74HC573&ULN2803to obtain high power drive.In this design,text,graph and animation are displayed in multiple 3Dforms statically and dynamically.It is suitable for the display of media information and decoration information,and contributes to further development and design of 3Ddisplay screen.
microcontroller;light cube;LED lattice;74HC573;ULN2803
TP332
A
10.3969/j.issn.1007-2985.2013.06.010
1007-2985(2013)06-0033-04
2013-09-12
廣西省教育廳科學(xué)研究項(xiàng)目(201203YB131);廣西省2012年度“大學(xué)生創(chuàng)新創(chuàng)業(yè)訓(xùn)練計(jì)劃”資助項(xiàng)目(35)
蘇 珊(1979-),女,廣西柳州人,廣西科技大學(xué)電氣與信息工程學(xué)院講師,主要從事應(yīng)用電子技術(shù)及自動(dòng)控制系統(tǒng)設(shè)計(jì)研究.