版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
河南理工大學(xué)畢業(yè)設(shè)計(jì)(論文)說(shuō)明書(shū)摘要光立方是一個(gè)長(zhǎng)、寬、高由8×8×8個(gè)LED燈組成的真實(shí)3D立方體顯示器。其最大的特點(diǎn),就是帶給觀賞者立體的超酷的3D視覺(jué)體驗(yàn)。因此各大網(wǎng)站也充斥著各種各樣的光立方版本。但是這各種版本的光立方的制作方法都很復(fù)雜,而且成本也很高,而本設(shè)計(jì)與之相比則制作簡(jiǎn)單精美,成本低廉。為保證光立方精美的外形,本設(shè)計(jì)還提供了一種光立方的制作模板,以確保將動(dòng)手能力導(dǎo)致的美觀差異降到最低。為降低其成本,本設(shè)計(jì)采用了STC12C5A60S2單片機(jī),這種單片機(jī)自帶有A/D轉(zhuǎn)換模塊;使用的鎖存器是常用的SN74HC573。這樣可以保證在降低制作成本的情況下,毫不影響作品的美觀;再加上顯示效果極佳的高亮霧面的藍(lán)色方形LED,硬件電路無(wú)需添加額外的驅(qū)動(dòng)和上拉電阻,即可實(shí)現(xiàn)其強(qiáng)大的功能:除了能顯示3D圖形,還可以支持多級(jí)亮度和速度調(diào)整,允許用戶自拓展音頻顯示功能,就像音樂(lè)顯示器一樣。用戶還可以在不改動(dòng)硬件電路的情況下設(shè)計(jì)出自己喜歡的的自定義圖形。這些充分體現(xiàn)了制作成本低、顯示效果好、功能完善的特點(diǎn)。最后,經(jīng)過(guò)軟硬件調(diào)試,解決了一些硬件電路短路,程序報(bào)錯(cuò)的問(wèn)題,完美地實(shí)現(xiàn)了多種圖形動(dòng)態(tài)顯示,流暢的圖形變換和音頻顯示的多種功能。關(guān)鍵詞:光立方制作模板音頻顯示A/D轉(zhuǎn)換ABSTRACTLight-cubeisalong,wide,highiscomposedof8x8x8ledstrue3dvolumetricdisplay.Itsbiggestcharacteristic,istobringtheviewerstereocool3dvisualexperience.Soeachbigwebsiteisfilledwithallkindsofcubiclightversion.Butallversionsofthislightcubicmethodisverycomplex,andthecostisalsohigh,andcomparedwiththisdesignisbeautifullysimpleandlowcost.Inordertoensuretheexquisitecubicshape,thisdesignalsoprovidesalightcubeproductiontemplate,toensurethattheabilitytoappearancedifferencetoaminimum.Toreduceitscost,thisdesignUSESSTC12C5A60S2MCU,theMCUbuilt-inA/Dconversionmodule;UsethelatchisSN74HC573incommonuse.Sothatinthecaseoflowerproductioncosts,noteffectthebeautyoftheworks;PlusshowedexcellentresultshighlightedsquareLEDfogbelowinblue,don'tneedtoaddadditionalhardwarecircuitdrivepullupresistance,anditspowerfulfunctionscanberealized:inadditiontodisplay3dgraphics,cansupportmultiplelevelsofbrightnessandspeedadjustment,allowstheusertoexpandtheaudiodisplayfunction,likemusicdisplay.Userscanalsointhecaseofdonotchangethehardwarecircuitdesigntheirowncustomgraphics.Thesefullyreflecttheproductionoflowcost,goodeffectofdisplay,thecharacteristicsofthefunctionisperfect.Finally,afterthehardwareandsoftwaredebugging,solvesomeoftheshortcircuithardwarecircuit,programerror,perfectthedynamicvarietyofgraphicdisplay,smoothgraphicstransformandaudiodisplayavarietyoffunctions.Keywords:light-cubemakingstencilaudio-displayA/Dconversion目錄TOC\o"1-3"\h\u16781、引言 、引言1.1研究意義LED射燈是指發(fā)出的光線是方向性的(directional)的LED燈泡,
主要類型有MR16,GU10,
PAR
series.LED球泡燈是指發(fā)出的光線為發(fā)散性的LED燈泡,
主要類型為:E27
base.
按照功率來(lái)分,
LED燈泡可分為:
小功率(主要為5mm
LED生產(chǎn)的)和大功率(主要1W,
3W,甚至5WLED生產(chǎn)的)。同時(shí),
市場(chǎng)上也存在超大功率(比如,
50W的LED射),但是這種未經(jīng)過(guò)市場(chǎng)檢驗(yàn),
也未見(jiàn)得有很大市場(chǎng)。其中,
小功率的LED射燈,
球燈為最早設(shè)計(jì)和生產(chǎn)的LED燈泡,
已經(jīng)大規(guī)模采用,
但是質(zhì)量良莠不齊。這燈泡主要是在國(guó)外的零售網(wǎng)站上進(jìn)行銷售,比如
,
,
。而大功率的LED射燈,
球泡燈為最近2-3年才大規(guī)模使用和推廣的,
總體來(lái)說(shuō)要比小功率的LED燈泡穩(wěn)定許多;
隨著大功率LED的價(jià)格下降,
大功率LED燈泡將會(huì)為市場(chǎng)主流??傮w來(lái)說(shuō),
目前LED燈的市場(chǎng)上,
不論是生產(chǎn)商,
采購(gòu)商還是終端客戶,
都不專業(yè),
大多數(shù)還只是憑經(jīng)驗(yàn)或者外觀等主觀臆斷來(lái)判斷產(chǎn)品質(zhì)量的好壞。在產(chǎn)品外觀雷同的情況下,
讓人可以接受的價(jià)格和良好的銷售策略起主導(dǎo)作用。另一方面,從電子愛(ài)好者網(wǎng)站,《無(wú)線電》雜志等一些媒體可以看出,國(guó)內(nèi)越來(lái)越的的人正在加入電子愛(ài)好者的行列。伴隨著這樣的趨勢(shì),作為常用的電子器件之一的LED,其使用量將會(huì)越來(lái)越大,普及速度也會(huì)越來(lái)越快。而作為一個(gè)忠實(shí)的電子愛(ài)好者,美觀時(shí)尚應(yīng)當(dāng)是我們的不懈追求,引領(lǐng)更多的初學(xué)者走上電子愛(ài)好者之路更是值得我們努力的。而3D光立方所能帶來(lái)的震撼力和吸引力是其他電子設(shè)計(jì)所不能動(dòng)搖的。其實(shí)光立方這個(gè)名字早已出現(xiàn)過(guò),也有人嘗試制作過(guò),每個(gè)制作過(guò)的人都會(huì)被其超酷的3D顯示效果所震撼,我就是其中之一。然而在網(wǎng)上搜索了大量相關(guān)資料后,我發(fā)現(xiàn),網(wǎng)上各種版本的光立方的制作方法都很復(fù)雜,而且成本也很高,所以我想找出一種相對(duì)成本較低,制作方法簡(jiǎn)單,便于廣大電子愛(ài)好者學(xué)習(xí)制作的方法。這種方法如果實(shí)現(xiàn),不僅會(huì)為L(zhǎng)ED市場(chǎng)帶去不少的盈利,同樣也能引領(lǐng)更多的人加入電子愛(ài)好者的隊(duì)伍中,可謂一舉兩得。1.2研究現(xiàn)狀其實(shí),對(duì)于許多電子愛(ài)好者來(lái)說(shuō),光立方并不陌生。它的功能也在許多人的開(kāi)發(fā)下越來(lái)越強(qiáng)大。每一個(gè)見(jiàn)過(guò)光立方效果的,都會(huì)被其超酷的3D顯示效果所震撼,我就是其中之一。但是,在搜索了大量相關(guān)資料后,我卻發(fā)現(xiàn),各種版本的光立方的制作方法都很復(fù)雜,不僅需要很強(qiáng)的動(dòng)手能力來(lái)組裝512個(gè)排列整齊的LED和金屬支架,還需要有足夠的耐心設(shè)計(jì)一大堆單片機(jī)和驅(qū)動(dòng)芯片,最后還要為硬件成品設(shè)計(jì)顯示程序,好讓光立方動(dòng)起來(lái)。雖然市場(chǎng)上流通著的光立方中,有一種整機(jī)只有一個(gè)芯片的光立方,但是價(jià)格不菲。到目前為止,尚未出現(xiàn)過(guò)一套既制作簡(jiǎn)單、價(jià)格低廉又功能強(qiáng)大的光立方完整設(shè)計(jì)方案。1.3該論文的內(nèi)容安排開(kāi)篇引言主要介紹研究的意義和目前光立方的研究現(xiàn)狀。提出了光立方的基本功能和總體設(shè)計(jì)方案,使得讀者對(duì)整體設(shè)計(jì)有一個(gè)總體的了解。之后第三章開(kāi)始仔細(xì)介紹設(shè)計(jì)的各個(gè)部分。第三章先從硬件設(shè)計(jì)入手,可以給讀者對(duì)設(shè)計(jì)有一個(gè)具體的了解。硬件設(shè)計(jì)主要包括包括控制電路,驅(qū)動(dòng)電路和顯示部分。第四章是本設(shè)計(jì)的軟件設(shè)計(jì)部分,在熟悉硬件部分之后,軟件設(shè)計(jì)的具體闡述便于讀者深入理解該設(shè)計(jì)的核心思想,從而開(kāi)發(fā)出自己的程序。第五章主要對(duì)設(shè)計(jì)的材料選取和硬件焊接做了詳細(xì)的說(shuō)明,便于廣大電子愛(ài)好者自己動(dòng)手制作。最后,該論文對(duì)整體設(shè)計(jì)的軟硬件測(cè)試過(guò)程做出詳細(xì)的總結(jié),以便讀者在遇到相似的問(wèn)題時(shí),能夠更快的找到合適的解決方案。
2、光立方的設(shè)計(jì)方案2.1本設(shè)計(jì)基本功能和特點(diǎn)1、8*8*8LED陣列3D光立方體顯示器,設(shè)計(jì)方案精簡(jiǎn),電路簡(jiǎn)潔,采用的材料是高亮藍(lán)色霧面LED燈,可以達(dá)到光立方最佳視覺(jué)效果。連貫圖形顯示效果,渾然一體,一氣呵成。能給用戶帶來(lái)立體的可視的震撼視覺(jué)效果。程序內(nèi)置壞點(diǎn)檢測(cè)部分,以及多種圖形顯示模塊。4、創(chuàng)新設(shè)計(jì)的LED陣列制作模板,讓LED陣列制作簡(jiǎn)單快速。套件制作因此變得簡(jiǎn)單。初學(xué)者也可以制作出規(guī)范、美觀的成品。2.2拓展功能1、具有音頻顯示模式,可隨音頻同步顯示,給用戶和制作者超炫酷體驗(yàn)。2、全開(kāi)放式用戶自定義操控,用戶可根據(jù)自己的喜好自行編寫(xiě)對(duì)應(yīng)的程序。3、光立方內(nèi)置三個(gè)模式:圖形顯示模式、音頻顯示模式、夜燈模式。2.3總體設(shè)計(jì)方案該光立方設(shè)計(jì)方案,其核心分為三個(gè)部分:控制系統(tǒng),驅(qū)動(dòng)電路和顯示部分??傮w設(shè)計(jì)圖如下頁(yè)圖(圖2.1):圖2.1本設(shè)計(jì)是用STC125A60S2單片機(jī)做控制芯片的,由單片機(jī)上的P2口來(lái)控制8個(gè)鎖存器的鎖存端,以此決定數(shù)據(jù)的輸入和鎖存。其中這8個(gè)鎖存器每個(gè)鎖存器都各控制一層LED面(含64個(gè)LED)。P0口8個(gè)額引腳則對(duì)應(yīng)鎖存器上的8路輸入。這樣64個(gè)陽(yáng)極控制就設(shè)計(jì)完成了,P3口的8各引腳則負(fù)責(zé)8層LED的負(fù)極控制。這樣512個(gè)LED每一個(gè)都有單獨(dú)的位置編碼,燈的亮滅可以由自由控制。P4口的4,5,6引腳則用來(lái)接三個(gè)按鍵,分別控制:圖形顯示、音頻輸出、夜燈模式,這三個(gè)模式的選擇。P1.0和P1.1管腳分別接音頻插頭的左右聲道,當(dāng)選擇音頻顯示模式時(shí),因?yàn)閱纹瑱C(jī)自帶A/D轉(zhuǎn)換所以只需要在程序里做FFT變換即可??偟膩?lái)說(shuō),本設(shè)計(jì)是以單片機(jī)為核心的集3D顯示,音頻顯示和用戶自定義功能為一體的強(qiáng)大光立方設(shè)計(jì)方案。
3、硬件設(shè)計(jì)3.1單片機(jī)控制電路設(shè)計(jì)3.1.1單片機(jī)選型制作光立方使用的單片機(jī)開(kāi)發(fā)板采用了宏晶科技新推出的1T增強(qiáng)型51單片機(jī)中功能較為強(qiáng)大的一款——STC12C5A60S2。此芯片集成了各種高性能工業(yè)標(biāo)準(zhǔn)接口,并且與傳統(tǒng)51在資源布局上有完全的兼容性,大部分傳統(tǒng)51的程序可以直接拿過(guò)來(lái)使用無(wú)需做修改。與傳統(tǒng)51不同的是,STC12C5A60S2是1T內(nèi)核,速度是傳統(tǒng)51單片機(jī)的12倍,遇到對(duì)延時(shí)有要求的地方,延時(shí)時(shí)間會(huì)變成傳統(tǒng)51的1/12。STC12C5A60S2/AD/PWM系列單片機(jī)是宏晶科技生產(chǎn)的單時(shí)鐘/機(jī)器周期(1T)的單片機(jī),是高速/低功耗/超強(qiáng)抗干擾的新一代8051單片機(jī),指令代碼完全兼容傳統(tǒng)8051,但速度快8-12倍。內(nèi)部集成MAX810專用復(fù)位電路,2路PWM,8路高速10位A/D轉(zhuǎn)換(250K/S,即25萬(wàn)次/秒),針對(duì)電機(jī)控制,強(qiáng)干擾場(chǎng)合。以下是單片機(jī)管腳圖及功能介紹。單片機(jī)管腳圖,如下圖(圖3.1)::其圖3.1單片機(jī)簡(jiǎn)介:1.增強(qiáng)型8051CPU,1T,單時(shí)鐘/機(jī)器周期,指令代碼完全兼容傳統(tǒng)80512.工作電壓:STC12C5A60S2系列工作電壓:5.5V-3.5V(5V單片機(jī))STC12LE5A60S2系列工作電壓:3.6V-2.2V(3V單片機(jī))3.工作頻率范圍:0~35MHz,相當(dāng)于普通8051的0~420MHz4.用戶應(yīng)用程序空間8K/16K/20K/32K/40K/48K/52K/60K/64K字節(jié)5.片上集成1280字節(jié)RAM6.通用I/O口(36/40/44個(gè)),復(fù)位后為:準(zhǔn)雙向口/弱上拉(普通8051傳統(tǒng)I/O口)可設(shè)置成四種模式:準(zhǔn)雙向口/弱上拉,強(qiáng)推挽/強(qiáng)上拉,僅為輸入/高阻,開(kāi)漏每個(gè)I/O口驅(qū)動(dòng)能力均可達(dá)到20mA,但整個(gè)芯片最大不要超過(guò)120mA7.ISP(在系統(tǒng)可編程)/IAP(在應(yīng)用可編程),無(wú)需專用編程器,無(wú)需專用仿真器可通過(guò)串口(P3.0/P3.1)直接下載用戶程序,數(shù)秒即可完成一片8.有EEPROM功能(STC12C5A62S2/AD/PWM無(wú)內(nèi)部EEPROM)9.看門狗10.內(nèi)部集成MAX810專用復(fù)位電路(外部晶體12M以下時(shí),復(fù)位腳可直接1K電阻到地)11.外部掉電檢測(cè)電路:在P4.6口有一個(gè)低壓門檻比較器5V單片機(jī)為1.33V,誤差為±5%,3.3V單片機(jī)為1.31V,誤差為±3%12.時(shí)鐘源:外部高精度晶體/時(shí)鐘,內(nèi)部R/C振蕩器(溫漂為±5%到±10%以內(nèi))用戶在下載用戶程序時(shí),可選擇是使用內(nèi)部R/C振蕩器還是外部晶體/時(shí)鐘常溫下內(nèi)部R/C振蕩器頻率為:5.0V單片機(jī)為:11MHz~17MHz3.3V單片機(jī)為:8MHz~12MHz精度要求不高時(shí),可選擇使用內(nèi)部時(shí)鐘,但因?yàn)橛兄圃煺`差和溫漂,以實(shí)際測(cè)試為準(zhǔn)13.共4個(gè)16位定時(shí)器,兩個(gè)與傳統(tǒng)8051兼容的定時(shí)器/計(jì)數(shù)器,16位定時(shí)器T0和T1,沒(méi)有定時(shí)器2,但有獨(dú)立波特率發(fā)生器做串行通訊的波特率發(fā)生器,再加上2路PCA模塊可再實(shí)現(xiàn)2個(gè)16位定時(shí)器14.3個(gè)時(shí)鐘輸出口,可由T0的溢出在P3.4/T0輸出時(shí)鐘,可由T1的溢出在P3.5/T1輸出時(shí)鐘,獨(dú)立波特率發(fā)生器可以在P1.0口輸出時(shí)鐘外部中斷I/O口7路,傳統(tǒng)的下降沿中斷或低電平觸發(fā)中斷,并新增支持上升沿中斷的PCA模塊?,PowerDown模式可由外部中斷喚醒?,INT0/P3.2,INT1/P3.3,T0/P3.4,T1/P3.5,RxD/P3.0,CCP0/P1.3(也可通過(guò)寄存器設(shè)置到P4.2),CCP1/P1.4(也可通過(guò)寄存器設(shè)置到P4.3)其中選用STC12C5A16S2最主要的原因是,它自帶A/D轉(zhuǎn)換功能,無(wú)需外設(shè)A/D轉(zhuǎn)換模塊,可以精簡(jiǎn)電路,降低成本。而且儲(chǔ)存空間足夠大,能夠存儲(chǔ)足夠多的圖形程序。3.1.2單片機(jī)控制電路圖3.23.2驅(qū)動(dòng)電路設(shè)計(jì)為節(jié)約成本,該設(shè)計(jì)沒(méi)有選擇硬件電路集成設(shè)計(jì),把驅(qū)動(dòng)電路與控制電路合為一體。而是選擇用常用的芯片做為光立方的驅(qū)動(dòng)。驅(qū)動(dòng)部分分為兩部分,如下圖:圖3.3LED正極驅(qū)動(dòng)電路圖3.4LED負(fù)極驅(qū)動(dòng)電路3.2.1負(fù)極驅(qū)動(dòng)芯片ULN2803達(dá)林頓管IC,一般都是用來(lái)驅(qū)動(dòng)功率稍微大一點(diǎn)的被動(dòng)器件的,而驅(qū)動(dòng)的被動(dòng)器件里,有很大一部分是感性的,如繼電器、馬達(dá)、電磁閥等,這些感性器件在關(guān)斷瞬間會(huì)產(chǎn)生很高的自感電動(dòng)勢(shì)(自感電壓),低的10多伏,高的幾十伏,甚至幾百伏,這么高的電壓很容易把ULN2803達(dá)林頓管打壞,甚至打壞電路中的其它元器件,所以需要在感性器件上并聯(lián)一個(gè)二極管,用來(lái)續(xù)流(就是把那個(gè)自感高壓放掉),保護(hù)IC和其它器件不受破壞,此續(xù)流二極管正極接2803輸出端(即電感器件的一端),負(fù)極接驅(qū)動(dòng)電源(在2803上是10腳,也就是電感器件的另一端)。2803在內(nèi)部設(shè)計(jì)了二極管以后,用戶在使用的時(shí)候不需要外接二極管,在同時(shí)驅(qū)動(dòng)多路器件的時(shí)候可以節(jié)省PCB空間,節(jié)約成本、方便走線。ULN28038個(gè)NPN達(dá)林頓晶體管,連接在陣列非常適合邏輯接口電平數(shù)字電路(例如TTL,CMOS或PMOS上/NMOS)和較高的電流/電壓,如電燈,電磁閥,繼電器,打印錘或其他類似的負(fù)載。該ULN2803是專為符合標(biāo)準(zhǔn)TTL,而制造ULN2804適合6至15V的高級(jí)別CMOS或PMOS上。該電路為反向輸出型,即輸入低電平電壓,輸出端才能導(dǎo)通工作。管腳圖如下頁(yè)圖(圖3.5):圖3.5引腳圖說(shuō)明:1-8引腳:輸入端11-18引腳:輸出端9引腳:地端10(COM)引腳:電源+COM腳的作用是當(dāng)你使用ULN2803(2003)來(lái)驅(qū)動(dòng)繼電器時(shí),可以將COM腳接到繼電器的VCC端,利用ULN2803(2003)內(nèi)部的反向二極管作保護(hù)繼電器,消除繼電器閉合時(shí)產(chǎn)生的感應(yīng)電壓。COM端主要有兩種用途:(可懸空)1試驗(yàn)用接地:假如它的輸出端都接發(fā)光二極管,那么,只要將COM端接地,則所有的發(fā)光二極管都將亮起,否則,可能是二極管壞或其它什么地方壞了。這對(duì)檢修是很有利的。2保護(hù)用接電源正:假如這個(gè)器件是接繼電器或針式打印頭,因?yàn)殡姼械淖饔?,?huì)在開(kāi)關(guān)過(guò)程中產(chǎn)生低于地電位和高于電源電位的反電動(dòng)勢(shì),這樣,很容易擊穿器件。為了防止這種現(xiàn)象的發(fā)生,可將COM端接到電源正,來(lái)削減沖擊電壓低到二極管壓降加電源電壓的幅度可以使得內(nèi)部的三極管受到最小的正電壓沖擊。至于達(dá)林頓關(guān)斷時(shí)產(chǎn)生的負(fù)電壓我們不必管,因?yàn)槠骷?nèi)部就有二極管并接到地的.專門用來(lái)削減沖擊電壓至電源地減去一個(gè)二極管正向壓降可以使得內(nèi)部的三極管受到最小的反偏電壓沖擊。UNL2803內(nèi)部電路圖如下圖(圖3.6):圖正極驅(qū)動(dòng)芯片圖3.7八進(jìn)制3態(tài)非反轉(zhuǎn)透明鎖存器74HC573高性能硅門COM器件SL74HC573跟LS/AL573的管腳一樣。器件的SL74HC573跟LS/AL573的管腳一樣。器件的輸入是和標(biāo)準(zhǔn)CMOS輸出兼容的,加上拉電阻,他們能和LS/ALSTTL輸出兼容。上面的這個(gè)是74HC573的封裝圖,讓芯片的那個(gè)半圓形缺口朝上,從左上角開(kāi)始逆時(shí)針數(shù),分別為1到20號(hào)引腳。其中1號(hào)和10號(hào)引腳接5V直流電源(以下簡(jiǎn)稱DC)的負(fù)極,就是圖中的GND(表示接地端,接負(fù)極就行);11號(hào)引腳接到STC單片機(jī)的P2口,一共8個(gè)573芯片,對(duì)應(yīng)接到P2的0-7口(這個(gè)在買的單片機(jī)最小系統(tǒng)上有標(biāo)識(shí));20號(hào)引腳接到5VDC的正極;2號(hào)引腳到9號(hào)引腳接到單片機(jī)的P0^1-P0^7;12號(hào)引腳到19號(hào)引腳接到一排8個(gè)LED的束。3.3顯示電路設(shè)計(jì)3.3.1各層電路設(shè)計(jì)圖3.8顯示電路部分是有8層8×8的LED面組成的,每一層都是由一個(gè)鎖存器鎖存端控制,每一層的其他地方連接基本相同,上圖(圖3.8)給出的是一層的顯示電路設(shè)計(jì)圖。其中LED上的標(biāo)識(shí)代表的是所要連接的鎖存器,和對(duì)應(yīng)的引腳連接。LED負(fù)極的標(biāo)識(shí)代表的是所要連接的ULN2803對(duì)應(yīng)引腳。3.3.2LED地址對(duì)照表該設(shè)計(jì)的LED地址表示方法示例:“P0.0P2.0”表示“第1列第1行”,“P0.1P2.1”表示“第2列第2行”,依此類推。具體如下頁(yè)表(表3.1,表3.2):表3.1:列1面列2面列3面列4面列5面列6面列7面列8面前行1P0.0P2.0P0.1P2.0P0.2P2.0P0.3P2.0P0.4P2.0P0.5P2.0P0.6P2.0P0.7P2.0行2P0.0P2.1P0.1P2.1P0.2P2.1P0.3P2.1P0.4P2.1P0.5P2.1P0.6P2.1P0.7P2.1行3P0.0P2.2P0.1P2.2P0.2P2.2P0.3P2.2P0.4P2.2P0.5P2.2P0.6P2.2P0.7P2.2行4P0.0P2.3P0.1P2.3P0.2P2.3P0.3P2.3P0.4P2.3P0.5P2.3P0.6P2.3P0.7P2.3行5P0.0P2.4P0.1P2.4P0.2P2.4P0.3P2.4P0.4P2.4P0.5P2.4P0.6P2.4P0.7P2.4行6P0.0P2.5P0.1P2.5P0.2P2.5P0.3P2.5P0.4P2.5P0.5P2.5P0.6P2.5P0.7P2.5行7P0.0P2.6P0.1P2.6P0.2P2.6P0.3P2.6P0.4P2.6P0.5P2.6P0.6P2.6P0.7P2.6后行8P0.0P2.7P0.1P2.7P0.2P2.7P0.3P2.7P0.4P2.7P0.5P2.7P0.6P2.7P0.7P2.7表3.2層地址:層縱向8層高位在下低電平有效P3.0P3.1P3.2P3.3P3.4P3.5P3.6P3.7視角說(shuō)明,如下圖圖3.9:圖3.9按照上圖視角,垂直紙面向里依次是行1,行2,行3,行4,行5,行6,行7,行8。3.4實(shí)物效果圖硬件焊接的最終實(shí)物效果圖如下,控制部分(圖3.10),顯示部分(圖3.11):圖3.10圖3.11
4、軟件設(shè)計(jì)4.1自定義頭文件Keil軟件是目前最流行開(kāi)發(fā)MCS-51系列單片機(jī)的軟件,這從近年來(lái)各仿真機(jī)廠商紛紛宣布全面支持Keil即可看出。Keil提供了包括C編譯器、宏匯編、連接器、庫(kù)管理和一個(gè)功能強(qiáng)大的仿真調(diào)試器等在內(nèi)的完整開(kāi)發(fā)方案,通過(guò)一個(gè)集成開(kāi)發(fā)環(huán)境(uVision)將這些部份組合在一起。運(yùn)行Keil軟件需要Pentium或以上的CPU,16MB或更多RAM、20M以上空閑的硬盤空間、WIN98、NT、WIN2000、WINXP等操作系統(tǒng)。掌握這一軟件的使用對(duì)于使用51系列單片機(jī)的愛(ài)好者來(lái)說(shuō)是十分必要的,如果你使用C語(yǔ)言編程,那么Keil幾乎就是你的不二之選。但是Keil里沒(méi)有STC12C5A60S2的芯片頭文件,需要在編寫(xiě)程序時(shí)自己添加頭文件,實(shí)例如下:<60S2.h>//頭文件名字可自行命名sfrACC=0xE0;//Accumulator0000,0000sfrB=0xF0;//BRegister0000,0000sfrPSW=0xD0;//ProgramStatusWordCYACF0RS1RS0OVF1P0000,0000//sbitCY=PSW^7;sbitAC=PSW^6;sbitF0=PSW^5;sbitRS1=PSW^4;sbitRS0=PSW^3;sbitOV=PSW^2;sbitP=PSW^0;//sfrSP=0x81;//StackPointer0000,0111sfrDPL=0x82;//DataPointerLowByte0000,0000sfrDPH=0x83;//DataPointerHighByte//新一代1T8051系列單片機(jī)中斷特殊功能寄存器//有的中斷控制、中斷標(biāo)志位散布在其它特殊功能寄存器中,這些位在位地址中定義//新一代1T8051系列單片機(jī)I/O口特殊功能寄存器sfr P2M0 = 0x96;sfr P2M1 = 0x95;sfr P3 = 0xB0;//8bitPort3P3.7P3.6P3.5P3.4P3.3P3.2P3.1P3.01111,1111sfr P3M0 = 0xB2;sfr P3M1 = 0xB1; sfr P4 = 0xC0;//8bitPort4P4.7P4.6P4.5P4.4P4.3P4.2P4.1P4.01111,1111sfr P4M0 = 0xB4;sfr P4M1 =0xB3;sfr P4SW = 0xBB;//Port-4switch//新一代1T8051系列單片機(jī)定時(shí)器特殊功能寄存器sfrTCON=0x88;//T0/T1ControlTF1TR1TF0TR0IE1IT1IE0IT00000,0000//sbitTF1=TCON^7;sbitTR1=TCON^6;sbitTF0=TCON^5;sbitTR0=TCON^4;sbitIE1=TCON^3;sbitIT1=TCON^2;sbitIE0=TCON^1;sbitIT0=TCON^0;//sfrTMOD=0x89;//T0/T1ModesGATE1C/T1M1_1M1_0GATE0C/T0M0_1M0_00000,0000sfrTL0=0x8A;//T0LowByte0000,0000sfrTH0=0x8C;sfrTL1=0x8B;//T1LowBytesfrTH1=0x8D;//T1HighByte還要注意的一點(diǎn)是:在程序編譯的時(shí)候一定要記得輸出.hex文件,因?yàn)镾TC—ISP.exe只有.hex文件才能下進(jìn)單片機(jī)里去。生成.hex文件的界面說(shuō)明:圖4.1按照上圖中所示的步驟,先在“Project”中選擇“OptionsforTarget“Target1””,在之后出現(xiàn)的界面中,點(diǎn)擊“Output”選項(xiàng),就會(huì)出現(xiàn)上圖有半部分的界面。選中“CreateHEXFile”選項(xiàng),點(diǎn)擊“OK”,之后再編譯一下程序,在工程里就會(huì)自動(dòng)生成.hex文件了。4.2電腦端的ISP控制軟件圖4.2Step1/步驟1:選擇你所使用的單片機(jī)型號(hào),如STC12C5A60X等Step2/步驟2:打開(kāi)文件,要燒錄用戶程序,必須調(diào)入用戶的程序代碼(*.bin,*.hex)Step3/步驟3:選擇串行口,你所使用的電腦串口,如串行口1--COM1,串行口2--COM2,...有些新式筆記本電腦沒(méi)有RS-232串行口,可買一條USB-RS232轉(zhuǎn)接器,人民幣50元左右。有些USB-RS232轉(zhuǎn)接器,不能兼容,可讓宏晶幫你購(gòu)買經(jīng)過(guò)測(cè)試的轉(zhuǎn)換器。Step4/步驟4:選擇下次冷啟動(dòng)后,時(shí)鐘源為“內(nèi)部R/C振蕩器”還是“外部晶體或時(shí)鐘”(STC12系列單片機(jī)只有內(nèi)部R/C振蕩時(shí)鐘)Step5/步驟5:選擇“Download/下載”按鈕下載用戶的程序進(jìn)單片機(jī)內(nèi)部,可重復(fù)執(zhí)行Step5/步驟5,也可選擇“Re-Download/重復(fù)下載”按鈕下載時(shí)注意看提示,主要看是否要給單片機(jī)上電或復(fù)位,下載速度比一般通用編程器快。一定要先選擇“Download/下載”按鈕,然后再給單片機(jī)上電復(fù)位(先徹底斷電),而不要先上電,先上電,檢測(cè)不到合法的下載命令流,單片機(jī)就直接跑用戶程序了。4.3程序流程圖我們所做的光立方,如圖2.2,有三個(gè)獨(dú)立按鍵,分別是P4.4,P4.5,P4.6,其中P4.4是控制音頻顯示,P4.5控制動(dòng)畫(huà)顯示,P4.6控制夜燈模式。3個(gè)按鍵分別控制三種不同的圖像顯示模式。動(dòng)畫(huà)顯示部分支持用戶自定義圖形。當(dāng)工作的單片機(jī)檢測(cè)到P4.4按鍵按下時(shí),可以同步音頻顯示;當(dāng)檢測(cè)到P4.5按鍵按下時(shí),可以顯示內(nèi)置的動(dòng)畫(huà);當(dāng)檢測(cè)到P4.6按鍵按下時(shí),顯示夜燈模式。程序流程圖如下頁(yè)(圖4.3):圖4.34.4LED顯示核心思想該設(shè)計(jì)光立方的LED顯示最關(guān)鍵的就是定時(shí)器初值的設(shè)定。定時(shí)器一旦啟動(dòng),它便會(huì)在原來(lái)的數(shù)值上加1計(jì)數(shù),若在程序開(kāi)始時(shí),我們沒(méi)有設(shè)置TH0和TL0,他們默認(rèn)值都是0,假設(shè)時(shí)鐘頻率是12MHz,12個(gè)時(shí)鐘周期為一個(gè)機(jī)器周期,那么此時(shí)機(jī)器周期就是1us,計(jì)滿TH0和TL0就需要-1個(gè)數(shù),再來(lái)一個(gè)脈沖計(jì)數(shù)器溢出,隨即向CPU申請(qǐng)中斷。因此溢出一次共需65535us,約等于65.5ms如果我們要定時(shí)50ms的話,那么需要先給TH0和TL0裝一個(gè)初值,在這個(gè)初值的基礎(chǔ)上計(jì)50000個(gè)數(shù)后,定時(shí)器溢出,此時(shí)剛好就是50ms中斷一次,當(dāng)需定時(shí)1s時(shí),我們寫(xiě)程序是當(dāng)產(chǎn)生20次20ms的定時(shí)器中斷后便認(rèn)為是1s,這樣便可精確控制時(shí)間了。一般延時(shí)程序分為兩種寫(xiě)法:粗略延時(shí)和精確延時(shí)。如果想用不太嚴(yán)格的延時(shí)的話,程序一般可這樣書(shū)寫(xiě):#include<reg52.h>#defineuintunsignedintvoiddelay(uintz){inta,i,j;for(a=z;a>0;a--)for(i=1000;i>0;i--)for(b=110;b<0;b--);} 其中z代表你想延長(zhǎng)的時(shí)間,單位為秒。精確的延時(shí)程序一般需要用到中斷,模塊話書(shū)寫(xiě)如下:#include<reg52.h>unsignedcharnum;VoidT0_time()interrupt1{TH0=(65535-45872)/256; //重裝初值TL0=(65535-45872)%256;num++; //num每加1次判斷一次是否到20次If(num==20) //如果到了20次,說(shuō)明1秒時(shí)間到{ num=0; //然后把num清零重新再計(jì)20次led1=~led1;} //讓發(fā)光二極管狀態(tài)取反}其中,在定時(shí)器初始化時(shí)需要先選擇工作方式,之后才能賦初值。針對(duì)晶振為11.0592定時(shí)50ms的初值是45872。使用哪一種延時(shí)可根據(jù)需要而定,本設(shè)計(jì)中兩種延時(shí)程序均有應(yīng)用到。4.5顯示部分測(cè)試結(jié)果由于Proteus軟件里沒(méi)有該設(shè)計(jì)所用的單片機(jī),且測(cè)試程序大于51單片機(jī)的8K內(nèi)存。所以本設(shè)計(jì)在測(cè)試時(shí),是用已有的單片機(jī)上的8位數(shù)碼管進(jìn)行測(cè)試的。由于測(cè)試硬件的限制,只能仿真一層的部分。結(jié)果如下圖(圖4.5):圖4.5
5、硬件焊接與調(diào)試5.1本設(shè)計(jì)所需材料5.1.1LED燈LED燈珠,最好選擇長(zhǎng)腳5mm,霧狀(乳狀)藍(lán)色的燈珠(如下頁(yè)圖2.1),效果更好。記住,長(zhǎng)腳的,不要短腳的3mm的也可以,當(dāng)然也能自己換喜歡的顏色,個(gè)人推薦藍(lán)色。制作光立方至少需要512個(gè),建議買550個(gè),價(jià)格在70-90元一包(含郵費(fèi)),店家一般不會(huì)散賣的。這樣的燈我是在淘寶網(wǎng)上購(gòu)買的。圖74HC573芯片74HC573鎖存器,至少8個(gè),記得要1-2元左右的,太便宜的可能是用過(guò)返新的,IC芯片都是一分錢一分貨,便宜的全是舊的,別老想著貪便宜。(建議最好買十個(gè),多買兩個(gè)以備特殊情況。)5.1.3自制雙聲道音頻插頭一般的耳機(jī)都分左聲道和右聲道,從外面看來(lái)是兩根接線,分別接右耳機(jī)和左耳機(jī)??梢哉乙粋€(gè)廢舊的耳機(jī),把耳機(jī)線剝開(kāi),你會(huì)看到每條黑線中都有兩條線,其中有一條是地線。下面是找到地線的方法:把撥開(kāi)的耳機(jī)線先用火燒掉線上面的絕緣漆,然后選任一聲道,把兩條線分別接一個(gè)LED的正負(fù)極,如果LED亮了,接LED的負(fù)極的那根線就是地線。最后把兩個(gè)聲道的負(fù)極街道一起,與三根杜邦線相連接,自制的雙聲道音頻插頭就做好了。如下頁(yè)圖(圖5.2):圖其他材料由于以上兩中材料選材好壞對(duì)最終成品影響較大,所以特別提醒注意,以下是其他材料清單:材料名稱數(shù)量備注ULN28032至少1個(gè)IC座(20P)12至少9個(gè)焊接線1卷推薦WIREWRAPPINGWIRE排阻(8J)1也可以不用單排針(20P)1040P的也可雙排彎排針(40P)2接排線和固定面板需要杜邦線(40根)2組最好要質(zhì)量好的單片機(jī)(STC12C5A60S2)1單片機(jī)最小系統(tǒng)1最好支持USB下載程序的萬(wàn)能板(12*18)2最好用質(zhì)量好的綠油板萬(wàn)能板(18*30)2制作LED焊接模板焊錫1卷最好選優(yōu)質(zhì)錫萬(wàn)用表(數(shù)字式)1不是必購(gòu)品,可借用電烙鐵1非必購(gòu)品,可借用尖嘴鉗1非必購(gòu)品,可借用鑷子1非必購(gòu)品,可借用插針(軍品鍍金)200固定LED使用下載線(USB轉(zhuǎn)串口)1依最小系統(tǒng)版而定電源線(USB轉(zhuǎn)ISP口)1依最小系統(tǒng)版而定普通按鍵4耳機(jī)轉(zhuǎn)接口1單口轉(zhuǎn)雙口的5.2光立方LED燈焊接方法及步驟①LED應(yīng)是折成下面圖的樣子然后檢測(cè)LED燈是否是壞的,壞的就不要啦。LED燈的長(zhǎng)腳的是正極,用萬(wàn)用表的負(fù)極,短一點(diǎn)的是負(fù)的引腳。用萬(wàn)用表的正極,再把萬(wàn)用表打在測(cè)二極管通斷的檔上,如果燈亮了就說(shuō)明是好的。②用18*30的萬(wàn)用板制作光立方焊接模板,以便達(dá)到最好的焊接效果。制作方法如下圖5.3所示。圖5.3焊接模板這個(gè)模板整體應(yīng)該是8*8的排針矩陣,便于固定LED。這就是我們使用方形LED的原因。當(dāng)然LED的引腳折線方法也以此圖為模板。排針的距離以5到7個(gè)孔為宜。依照該模板焊接焊接依次8層8*8LED立方體面。焊接結(jié)果如下頁(yè)圖(圖5.4): 圖5.4③接下來(lái)用502膠水,把兩塊兒18*12的萬(wàn)用板貼在一起,依照LED模板的引腳焊接距離在組合好的萬(wàn)用板上焊上64個(gè)插針陣列,如下頁(yè)局部圖(圖5.5):圖5.5之所以要兩個(gè)板子連在一起是因?yàn)榫W(wǎng)上各個(gè)店家都沒(méi)有賣18*30的優(yōu)質(zhì)綠油板。不過(guò)插針焊接比較麻煩,每焊一個(gè)插針都需要調(diào)整一次。有網(wǎng)友有一個(gè)比較簡(jiǎn)單但是略微影響美觀的方法,用長(zhǎng)的排座代替插針。個(gè)人建議,如果想美觀一些的話,還是麻煩一點(diǎn)使用插針。④當(dāng)然側(cè)面也需要有同樣的插針焊接以便是最終效果較好。如圖(圖2.8)是最終光立方效果圖(圖5.6):圖5.6這樣,復(fù)雜的電路藏于萬(wàn)用板底側(cè),使得用戶從正面觀看時(shí),美感十足。背面電路圖如下頁(yè)圖(圖5.7):圖5.75.3調(diào)試中的問(wèn)題和解決方法問(wèn)題一:最初測(cè)試不成功,LED燈亮的時(shí)候有串亮現(xiàn)象(即本應(yīng)該亮的LED沒(méi)有亮,不應(yīng)該亮的卻亮了)。解決辦法:用萬(wàn)用表測(cè)試了一下串亮的LED,發(fā)現(xiàn)有一個(gè)LED燒壞了造成部分電路短路。換好LED之后再次測(cè)試,LED工作順利,問(wèn)題解決。問(wèn)題二:換上一個(gè)使LED全亮的程序,發(fā)現(xiàn)只有個(gè)別的燈亮,其他的都不亮。解決辦法:最初以為是程序的問(wèn)題,仔細(xì)檢查一下程序還是沒(méi)錯(cuò)。后來(lái)試了試換了一個(gè)單片機(jī)最小系統(tǒng),連好接線,發(fā)現(xiàn)光立方可以正常工作了。原來(lái)是單片機(jī)最小系統(tǒng)的P3口有問(wèn)題。之后只好換一個(gè)單片機(jī)最小系統(tǒng)。問(wèn)題三:圖形變換程序?qū)懭雴纹瑱C(jī)之后,有一排本該亮的燈沒(méi)有亮。解決辦法:再次查看程序,沒(méi)有錯(cuò)誤。仔細(xì)檢查后發(fā)現(xiàn)有一個(gè)焊點(diǎn)斷開(kāi)了。焊接好以后再次測(cè)試,一切順利。然后又仔細(xì)檢查了其他層的LED,把虛焊的點(diǎn)都銜接好了。問(wèn)題四:最終程序?qū)懭雴纹瑱C(jī)以后,本應(yīng)8層都亮的,卻發(fā)現(xiàn)光立方只有一層會(huì)亮。解決辦法:全面檢測(cè)了一下其他燈珠,發(fā)現(xiàn)沒(méi)有問(wèn)題,調(diào)整了一下每層的接線順序,還是只有一層亮。最后不小心把ULN2803的接地端拔掉了,重新接上后發(fā)現(xiàn)8層都可以亮了。5.4調(diào)試結(jié)果下頁(yè)是調(diào)試結(jié)果:圖形變換的靜態(tài)圖(圖5.8):圖5.8 總結(jié)其實(shí)在很早之前就知道光立方著中東西,只是在許多地方找到的資料不是制作方式太復(fù)雜,就是電路設(shè)計(jì)難懂,制作精美的光立方也往往價(jià)格不菲。而本設(shè)計(jì)旨在設(shè)計(jì)出一種制作簡(jiǎn)單、低花費(fèi)、高質(zhì)量的光立方。經(jīng)過(guò)查閱大量的相關(guān)資料,最終設(shè)計(jì)出了以STC125A60S2單片機(jī)為核心的控制電路,并用常用鎖存器74HC573和8路非門ULN2803設(shè)計(jì)了光立方驅(qū)動(dòng)電路。最初焊接光立方8×8的面時(shí),每個(gè)LED引腳的連接都是很困難的。在這個(gè)過(guò)程中,我想到了一個(gè)制作模板,并最終加快了顯示部分的焊接速度和焊接質(zhì)量。每焊好一層LED,都要仔細(xì)測(cè)試是否有虛焊或者短接,花了三天時(shí)間才把8層LED焊好。之后在焊接128個(gè)(地面和側(cè)面各64個(gè))插針時(shí),由于每個(gè)插針在焊接前難以固定,所以一手拿鑷子一手拿烙鐵,先用焊錫固定插針,然后再把插針調(diào)整得筆直。每一排,每一列還要最終調(diào)整得排列整齊。這個(gè)過(guò)程也很辛苦。有網(wǎng)友用的是排插,但是那樣會(huì)影響到最終的美觀。所以,為了保證最終的效果,還是選擇努力焊好了插針。在焊接驅(qū)動(dòng)電路時(shí),底板的每個(gè)插針又要重新動(dòng)一次以便與控制引腳連接。很慶幸自己在焊接驅(qū)動(dòng)電路時(shí),使用了IC插座。在后來(lái)的電路檢測(cè)中,避免了硬件的拆卸和重裝,省去了不少麻煩。最后,為了是圖形變換豐滿美觀,編寫(xiě)了上千行的程序,內(nèi)置11種圖形變換模塊。完美的完成了既經(jīng)濟(jì)又美觀,功能強(qiáng)大的光立方設(shè)計(jì)!
致謝在此論文撰寫(xiě)過(guò)程中,要特別感謝我的導(dǎo)師李端老師的指導(dǎo)與督促,同時(shí)感謝她的諒解與包容。沒(méi)有李老師的幫助也就沒(méi)有今天的這篇論文。求學(xué)歷程是艱苦的,但又是快樂(lè)的。通過(guò)大量閱讀資料,我拓寬了自己的知識(shí)面,并懂得將所學(xué)知識(shí)融會(huì)貫通到實(shí)踐中去。在獲得知識(shí)的同時(shí),我也認(rèn)識(shí)到了自己還需要學(xué)習(xí)的東西很多,理論需要很好的結(jié)合實(shí)踐,全面分析并解決問(wèn)題的能力有待提高。另外,此次畢業(yè)設(shè)計(jì)還獲得了各位同學(xué)和老師的大力支持。在此,我衷心感謝各位老師和同學(xué)。在未來(lái)的工作和學(xué)習(xí)中,我將以更好的成績(jī)來(lái)回報(bào)各位同學(xué)和老師,同時(shí),在畢業(yè)設(shè)計(jì)過(guò)程中,同宿舍的舍友和同組的同學(xué)給了我很多的幫助,我非常的感謝他們給我的幫助。謝謝你們!還要感謝我的輔導(dǎo)員王老師,謝謝他在這四年的時(shí)間中為我們?nèi)嗨龅囊磺?,他不求回?bào),無(wú)私奉獻(xiàn)的精神很讓我感動(dòng),再次向他表示由衷的感謝。在這四年的時(shí)光中結(jié)識(shí)的各位生活和學(xué)習(xí)上的摯友讓我得到了人生最大的一筆財(cái)富。在此,也對(duì)他們表示衷心感謝。本文參考了大量的文獻(xiàn)資料,并且也得到了眾多網(wǎng)友的熱心幫助,在此,向各學(xué)術(shù)界的前輩們致敬,向網(wǎng)絡(luò)上那些無(wú)私分享資料的朋友表示衷心的感謝!
參考文獻(xiàn)[1]郭天祥,新概念51單片機(jī)C語(yǔ)言教程[M],北京,電子工業(yè)出版社,2009.46-79[2]徐平,官微宏,3D8LED搭接指南[M],/view/8ba47c85bceb19e8b8f6ba70.html[3]aGuegu,官微宏,3D8串口數(shù)據(jù)通訊協(xié)議v1.5[M],/view/548b12e3551810a6f524868b.html[4]阮永松,打造音樂(lè)頻譜時(shí)鐘,無(wú)線電[J],2012-6(總第597期),44-47[5]劉興釗,數(shù)字信號(hào)處理[M],北京,電子工業(yè)出版社,2010.53-127[6]姚永平等,STC12C5A60S2系列單片機(jī)器件手冊(cè)[M],www.STCMCU.com[7]IvorHorton,C語(yǔ)言入門經(jīng)典(,楊浩譯)[M],北京,清華出版社,2008.64-115[8]張毅剛,基于Proteus的單片機(jī)課程的基礎(chǔ)實(shí)驗(yàn)與課程設(shè)計(jì)[M],北京,人民郵電出版社,2012.32-99[9]江世明,基于Proteus的單片機(jī)應(yīng)用技術(shù)[M],北京,電子工業(yè)出版社,2009.52-108[10]周潤(rùn)景,張麗娜,劉印群,PROTEUS入門實(shí)用教程[M],北京,機(jī)械工業(yè)出版社,2007.34-86[11]姚永平等,STC單片機(jī)編譯/仿真工具說(shuō)明書(shū)[M],www.STCMCU.com[12]張孝虎,51單片機(jī)DIY音樂(lè)頻譜顯示[M],/list.php?fid-871.htm[13]金炯泰,如何使用KEIL8051C編譯器(金奎煥,李允俊,任正權(quán)譯)北京,北京航空航天大學(xué)出版社,2002.31-105[14]王為青,程國(guó)鋼,單片機(jī)KeilCx51應(yīng)用開(kāi)發(fā)技術(shù),北京,人民郵電出版社,2007.56-98
附錄#include<REG52.H>#include<intrins.h>#defineucharunsignedchar#defineuintunsignedintuchardisplay[8][8];/*rank:A,1,2,3,4,I,心,U*/ucharcodetable_cha[8][8]={0x51,0x51,0x51,0x4a,0x4a,0x4a,0x44,0x44,0x18,0x1c,0x18,0x18,0x18,0x18,0x18,0x3c,0x3c,0x66,0x66,0x30,0x18,0xc,0x6,0xf6,0x3c,0x66,0x60,0x38,0x60,0x60,0x66,0x3c,0x30,0x38,0x3c,0x3e,0x36,0x7e,0x30,0x30,0x3c,0x3c,0x18,0x18,0x18,0x18,0x3c,0x3c,0x66,0xff,0xff,0xff,0x7e,0x3c,0x18,0x18,0x66,0x66,0x66,0x66,0x66,0x66,0x7e,0x3c};/*the"ideasoft"*/ucharcodetable_id[40]={0x81,0xff,0x81,0x00,0xff,0x81,0x81,0x7e,0x00,0xff,0x89,0x89,0x00,0xf8,0x27,0x27,0xf8,0x00,0x8f,0x89,0x89,0xf9,0x00,0xff,0x81,0x81,0xff,0x00,0xff,0x09,0x09,0x09,0x01,0x0,0x01,0x01,0xff,0x01,0x01,0x00};/*railway*/ucharcodedat[128]={0x0,0x20,0x40,0x60,0x80,0xa0,0xc0,0xe0,0xe4,0xe8,0xec,0xf0,0xf4,0xf8,0xfc,0xdc,0xbc,0x9c,0x7c,0x5c,0x3c,0x1c,0x18,0x14,0x10,0xc,0x8,0x4,0x25,0x45,0x65,0x85,0xa5,0xc5,0xc9,0xcd,0xd1,0xd5,0xd9,0xb9,0x99,0x79,0x59,0x39,0x35,0x31,0x2d,0x29,0x4a,0x6a,0x8a,0xaa,0xae,0xb2,0xb6,0x96,0x76,0x56,0x52,0x4e,0x6f,0x8f,0x93,0x73,0x6f,0x8f,0x93,0x73,0x4a,0x6a,0x8a,0xaa,0xae,0xb2,0xb6,0x96,0x76,0x56,0x52,0x4e,0x25,0x45,0x65,0x85,0xa5,0xc5,0xc9,0xcd,0xd1,0xd5,0xd9,0xb9,0x99,0x79,0x59,0x39,0x35,0x31,0x2d,0x29,0x0,0x20,0x40,0x60,0x80,0xa0,0xc0,0xe0,0xe4,0xe8,0xec,0xf0,0xf4,0xf8,0xfc,0xdc,0xbc,0x9c,0x7c,0x5c,0x3c,0x1c,0x18,0x14,0x10,0xc,0x8,0x4};/*railway2*/ucharcodedat2[28]={0x0,0x20,0x40,0x60,0x80,0xa0,0xc0,0xe0,0xe4,0xe8,0xec,0xf0,0xf4,0xf8,0xfc,0xdc,0xbc,0x9c,0x7c,0x5c,0x3c,0x1c,0x18,0x14,0x10,0xc,0x8,0x4};/*railway3*/ucharcodedat3[24]={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x16,0x26,0x36,0x46,0x56,0x66,0x65,0x64,0x63,0x62,0x61,0x60,0x50,0x40,0x30,0x20,0x10};/*3pchar*/ucharcodetable_3p[3][8]={0xff,0x89,0xf5,0x93,0x93,0xf5,0x89,0xff,0x0e,0x1f,0x3f,0x7e,0x7e,0x3f,0x1f,0x0e,0x18,0x3c,0x7e,0xff,0x18,0x18,0x18,0x18};/*initializtionThatistoinitializetheprogram.Itiswritetosetthetimerinc52mcu.Sotheprogramcanrenovatetheled_3d_cubeinfixedtimeusetheinterruptfunction.*/voidsinter(){IE=0x82;TCON=0x01;TH0=0xc0;TL0=0;TR0=1;}voiddelay5us(void)//誤差-0.026765046296usSTC1T22.1184Mhz{unsignedchara,b;for(b=7;b>0;b--)for(a=2;a>0;a--);}voiddelay(uinti){while(i--){delay5us();}//12t的mcu注釋這個(gè)延時(shí)即可}/*Tojudgethenumbit*/ucharjudgebit(ucharnum,ucharb){charn;num=num&(1<<b);if(num)n=1;elsen=0;returnn;}/*Tofigureouttheroundnumber*/ucharabs(uchara){ucharb;b=a/10;a=a-b*10;if(a>=5)b++;returnb;}/*Tofigureouttheabsolutevalue*/ucharabss(chara){if(a<0)a=-a;returna;}/*Thefunctioncancomparatthecharacter.Andremovethebigonetotheback.*/voidmax(uchar*a,uchar*b){uchart;if((*a)>(*b)){t=(*a);(*a)=(*b);(*b)=t;}}/*Thefunctionistofigureoutthemaxnumberandreturnit.*/ucharmaxt(uchara,ucharb,ucharc){if(a<b)a=b;if(a<c)a=c;returna;}voidclear(charle){uchari,j;for(j=0;j<8;j++){for(i=0;i<8;i++)display[j][i]=le;}}voidtrailler(uintspeed){chari,j;for(i=6;i>=-3;i--){if(i>=0){for(j=0;j<8;j++)display[j][i]=display[j][i+1];}if(i<4){for(j=0;j<8;j++)display[j][i+4]=0;}delay(speed);}}voidpoint(ucharx,uchary,ucharz,ucharle){ucharch1,ch0;ch1=1<<x;ch0=~ch1;if(le)display[z][y]=display[z][y]|ch1;elsedisplay[z][y]=display[z][y]&ch0;}voidtype(ucharcha,uchary){ucharxx;for(xx=0;xx<8;xx++){display[xx][y]=table_cha[cha][xx];}}/*Thefirstvariableisthedistancefromthemidpoint.Thesecondisthelayer.thethirdistheflashspeedofthetimebetweeneachtwopoint.Theforthistheenableio,itcontrolsweatherdraworclaen.*/voidcirp(charcpp,uchardir,ucharle){uchara,b,c,cp;if((cpp<128)&(cpp>=0)){if(dir)cp=127-cpp;elsecp=cpp;a=(dat[cp]>>5)&0x07;b=(dat[cp]>>2)&0x07;c=dat[cp]&0x03;if(cpp>63)c=7-c;point(a,b,c,le);}}voidline(ucharx1,uchary1,ucharz1,ucharx2,uchary2,ucharz2,ucharle){chart,a,b,c,a1,b1,c1,i;a1=x2-x1;b1=y2-y1;c1=z2-z1;t=maxt(abss(a1),abss(b1),abss(c1));a=x1*10;b=y1*10;c=z1*10;a1=a1*10/t;b1=b1*10/t;c1=c1*10/t;for(i=0;i<t;i++){point(abs(a),abs(b),abs(c),le);a+=a1;b+=b1;c+=c1;}point(x2,y2,z2,le);}voidbox(ucharx1,uchary1,ucharz1,ucharx2,uchary2,ucharz2,ucharfill,ucharle){uchari,j,t=0;max(&x1,&x2);max(&y1,&y2);max(&z1,&z2);for(i=x1;i<=x2;i++)t|=1<<i;if(!le)t=~t;if(fill){if(le){for(i=z1;i<=z2;i++){for(j=y1;j<=y2;j++)display[j][i]|=t;}}else{for(i=z1;i<=z2;i++){for(j=y1;j<=y2;j++)display[j][i]&=t;}}}else{if(le){display[y1][z1]|=t;display[y2][z1]|=t;display[y1][z2]|=t;display[y2][z2]|=t;}else{display[y1][z1]&=t;display[y2][z1]&=t;display[y1][z2]&=t;display[y2][z2]&=t;}t=(0x01<<x1)|(0x01<<x2);if(!le)t=~t;if(le){for(j=z1;j<=z2;j+=(z2-z1)){for(i=y1;i<=y2;i++)display[i][j]|=t;}for(j=y1;j<=y2;j+=(y2-y1)){for(i=z1;i<=z2;i++)display[j][i]|=t;}}else{for(j=z1;j<=z2;j+=(z2-z1)){for(i=y1;i<=y2;i++){display[i][j]&=t;}}for(j=y1;j<=y2;j+=(y2-y1)){for(i=z1;i<=z2;i++){display[j][i]&=t;}}}}}voidbox_apeak_xy(ucharx1,uchary1,ucharz1,ucharx2,uchary2,ucharz2,ucharfill,ucharle){uchari;max(&z1,&z2);if(fill){for(i=z1;i<=z2;i++){line(x1,y1,i,x2,y2,i,le);}}else{line(x1,y1,z1,x2,y2,z1,le);line(x1,y1,z2,x2,y2,z2,le);line(x2,y2,z1,x2,y2,z2,le);line(x1,y1,z1,x1,y1,z2,le);}}voidpoke(ucharn,ucharx,uchary){uchari;for(i=0;i<8;i++){point(x,y,i,judgebit(n,i));}}voidboxtola(chari,ucharn){if((i>=0)&(i<8)){poke(n,0,7-i);}if((i>=8)&(i<16)){poke(n,i-8,0);}if((i>=16)&(i<24)){poke(n,7,i-16);}}voidrolldisplay(uintspeed){ucharj;chari,a;for(i=23;i>-40;i--){for(j=0;j<40;j++){a=i+j;if((a>=0)&(a<24))boxtola(a,table_id[j]);}delay(speed);}}voidroll_apeak_yz(ucharn,uintspeed){uchari;switch(n){case1:for(i=0;i<7;i++){display[i][7]=0;display[7][6-i]=255;delay(speed);};break;case2:for(i=0;i<7;i++){display[7][7-i]=0;display[6-i][0]=255;delay(speed);};break;case3:for(i=0;i<7;i++){display[7-i][0]=0;display[0][i+1]=255;delay(speed);};break;case0:for(i=0;i<7;i++){display[0][i]=0;display[i+1][7]=255;delay(speed);};}}voidroll_apeak_xy(ucharn,uintspeed){uchari;switch(n){case1:for(i=0;i<7;i++){line(0,i,0,0,i,7,0);line(i+1,7,0,i+1,7,7,1);delay(speed);};break;case2:for(i=0;i<7;i++){line(i,7,0,i,7,7,0);line(7,6-i,0,7,6-i,7,1);delay(speed);};break;case3:for(i=0;i<7;i++){line(7,7-i,0,7,7-i,7,0);line(6-i,0,0,6-i,0,7,1);delay(speed);};break;case0:for(i=0;i<7;i++){line(7-i,0,0,7-i,0,7,0);line(0,i+1,0,0,i+1,7,1);delay(speed);};}}voidroll_3_xy(ucharn,uintspeed){uchari;switch(n){case1:for(i=0;i<8;i++){box_apeak_xy(0,i,0,7,7-i,7,1,1);delay(speed);if(i<7)box_apeak_xy(3,3,0,0,i,7,1,0);};break;case2:for(i=0;i<8;i++){box_apeak_xy(7-i,0,0,i,7,7,1,1);delay(speed);if(i<7)box_apeak_xy(3,4,0,i,7,7,1,0);};break;case3:for(i=0;i<8;i++){box_apeak_xy(0,i,0,7,7-i,7,1,1);delay(speed);if(i<7)box_apeak_xy(4,4,0,7,7-i,7,1,0);};break;case0:for(i=0;i<8;i++){box_apeak_xy(7-i,0,0,i,7,7,1,1);delay(speed);if(i<7)box_apeak_xy(4,3,0,7-i,0,7,1,0);};}}voidtrans(ucharz,uintspeed){uchari,j;for(j=0;j<8;j++){for(i=0;i<8;i++){display[z][i]>>=1;}delay(speed);}}voidtranoutchar(ucharc,uintspeed){uchari,j,k,a,i2=0;for(i=0;i<8;i++){if(i<7)box_apeak_xy(i+1,0,0,i+1,7,7,1,1);box_apeak_xy(i2,0,0,i2,7,7,1,0);a=0;i2=i+1;for(j=0;j<=i;j++){a=a|(1<<j);}for(k=0;k<8;k++){display[k][3]|=table_cha[c][k]&a;display[k][4]|=table_cha[c][k]&a;}delay(speed);}}voidtransss(){uchari,j;for(i=0;i<8;i++){for(j=0;j<8;j++)display[i][j]<<=1;}}/*Fromnowon,thefunctionbelowistodisplaytheflash.*/voidflash_1(){clear(0);type(1,0);delay(60000);type(2,0);delay(60000);type(3,0);delay(60000);type(4,0);delay(60000);delay(60000);clear(0);rolldisplay(30000);type(0,7);delay(60000);trailler(6000);delay(60000);}voidflash_2(){uchari;for(i=129;i>0;i--){cirp(i-2,0,1);delay(8000);cirp(i-1,0,0);}delay(8000);for(i=0;i<136;i++){cirp(i,1,1);delay(8000);cirp(i-8,1,0);}delay(8000);for(i=129;i>0;i--){cirp(i-2,0,1);delay(8000);}delay(8000);for(i=0;i<128;i++){cirp(i-8,1,0);delay(8000);}delay(60000);}voidflash_3(){chari;for(i=0;i<8;i++){box_apeak_xy(0,i,0,7,i,7,1,1);delay(20000);if(i<7)box_apeak_xy(0,i,0,7,i,7,1,0);}for(i=7;i>=0;i--){box_apeak_xy(0,i,0,7,i,7,1,1);delay(20000);if(i>0)box_apeak_xy(0,i,0,7,i,7,1,0);}for(i=0;i<8;i++){box_apeak_xy(0,i,0,7,i,7,1,1);delay(20000);if(i<7)box_apeak_xy(0,i,0,7,i,7,1,0);}}voidflash_4(){chari,j,an[8];for(j=7;j<15;j++)an[j-7]=j;for(i=0;i<=16;i++){for(j=0;j<8;j++){if((an[j]<8)&(an[j]>=0))line(0,an[j],j,7,an[j],j,1);}for(j=0;j<8;j++){if(((an[j]+1)<8)&(an[j]>=0))line(0,an[j]+1,j,7,an[j]+1,j,0);}for(j=0;j<8;j++){if(an[j]>0)an[j]--;}delay(15000);}for(j=0;j<8;j++)an[j]=1-j;for(i=0;i<=16;i++){for(j=0;j<8;j++){if((an[j]<8)&(an[j]>=0))line(0,an[j],j,7,an[j],j,1);}for(j=0;j<8;j++){if(((an[j]-1)<7)&(an[j]>0))line(0,an[j]-1,j,7,an[j]-1,j,0);}for(j=0;j<8;j++){if(an[j]<7)an[j]++;}delay(15000);}}voidflash_5(){uinta=15000;//a=delaychari=8,j,an[4];//1for(j=7;j<11;j++)an[j-7]=j;while(i--){for(j=0;j<4;j++){if(an[j]<8)box_apeak_xy(j,an[j],j,7-j,an[j],7-j,0,1);if(an[j]<7)box_apeak_xy(j,an[j]+1,j,7-j,an[j]+1,7-j,0,0);}for(j=0;j<4;j++){if(an[j]>3)an[j]--;}delay(a);}//2i=3;for(j=0;j<4;j++)an[j]=5-j;while(i--){for(j=1;j<4;j++){if(an[j]<4)box_apeak_xy(j,an[j],j,7-j,an[j],7-j,0,1);if(an[j]<3)box_apeak_xy(j,an[j]+1,j,7-j,an[j]+1,7-j,0,0);}for(j=0;j<4;j++){if(an[j]>0)an[j]--;}delay(a);}//3i=3;for(j=1;j<4;j++)an[j]=4-j;while(i--){for(j=1;j<4;j++){if(an[j]>=0)box_apeak_xy(j,an[j],j,7-j,an[j],7-j,0,1);if(an[j]>0)box_apeak_xy(j,an[j]-1,j,7-j,an[j]-1,7-j,0,0);}for(j=1;j<4;j++){if(an[j]<3)an[j]++;}delay(a);}//4i=3;for(j=0;j<4;j++)an[j]=j+1;while(i--){for(j=1;j<4;j++){if(an[j]>3)box_apeak_xy(j,an[j],j,7-j,an[j],7-j,0,1);if(an[j]>3)box_apeak_xy(j,an[j]-1,j,7-j,an[j]-1,7-j,0,0);}for(j=0;j<4;j++)an[j]++;delay(a);}//5i=3;for(j=3;j<6;j++)an[j-2]=j;while(i--){for(j=1;j<4;j++){box_apeak_xy(j,an[j],j,7-j,an[j],7-j,0,1);box_apeak_xy(j,an[j]+1,j,7-j,an[j]+1,7-j,0,0);}for(j=0;j<4;j++){if(an[j]>3)an[j]--;}delay(a);}//6i=3;for(j=0;j<4;j++)an[j]=5-j;while(i--){for(j=1;j<4;j++){if(an[j]<4)box_apeak_xy(j,an[j],j,7-j,an[j],7-j,0,1);if(an[j]<3)box_
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025版船舶設(shè)備維修保養(yǎng)綜合服務(wù)合同3篇
- 2024版河道清渠建設(shè)施工協(xié)議范本一
- 2024甲乙雙方就電子商務(wù)平臺(tái)建設(shè)與運(yùn)營(yíng)之合作協(xié)議
- 九下語(yǔ)文《送東陽(yáng)馬生序》閱讀問(wèn)答題必刷必背(答案版)
- 2024年退役士兵供養(yǎng)合同3篇
- 2024弱電智能化系統(tǒng)集成與調(diào)試服務(wù)合同2篇
- 2024年物流司機(jī)勞務(wù)合同
- ups不間斷電源建設(shè)項(xiàng)目合同(2024年)
- 2024年龍門吊設(shè)備租賃服務(wù)協(xié)議版B版
- 2024年石料供應(yīng)合同模板3篇
- 限期交貨保證書(shū)模板
- 中心靜脈壓的測(cè)量方法及臨床意義
- 07MS101 市政給水管道工程及附屬設(shè)施
- 2024年紀(jì)委監(jiān)委招聘筆試必背試題庫(kù)500題(含答案)
- 店鋪(初級(jí))營(yíng)銷師認(rèn)證考試題庫(kù)附有答案
- 2025年高考語(yǔ)文備考之名著閱讀《鄉(xiāng)土中國(guó)》重要概念解釋一覽表
- 獸藥生產(chǎn)質(zhì)量管理規(guī)范教材教學(xué)課件
- 變、配電室門禁管理制度
- T-SDEPI 043-2024 土壤有機(jī)污染物來(lái)源解析主成分分析法技術(shù)指南
- 小學(xué)體育期末檢測(cè)方案
- 手術(shù)室交接班制度
評(píng)論
0/150
提交評(píng)論