基于STC51單片機(jī)光立方設(shè)計(jì)與實(shí)現(xiàn)(共32頁)_第1頁
基于STC51單片機(jī)光立方設(shè)計(jì)與實(shí)現(xiàn)(共32頁)_第2頁
基于STC51單片機(jī)光立方設(shè)計(jì)與實(shí)現(xiàn)(共32頁)_第3頁
基于STC51單片機(jī)光立方設(shè)計(jì)與實(shí)現(xiàn)(共32頁)_第4頁
基于STC51單片機(jī)光立方設(shè)計(jì)與實(shí)現(xiàn)(共32頁)_第5頁
已閱讀5頁,還剩27頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上畢業(yè)論文(設(shè)計(jì))  題目: 基于STC51單片機(jī)的光立方設(shè)計(jì)與實(shí)現(xiàn) 姓 名 : 黃健 學(xué) 號(hào) : 層 次 : 本科 專 業(yè) : 軟件工程 班 級(jí) : 12級(jí)(13)班 指導(dǎo)教師: 紀(jì)寵興 專心-專注-專業(yè)獨(dú)創(chuàng)性聲明 一、本論文是本人獨(dú)立完成; 二、本論文沒有任何抄襲行為; 3、 若有不實(shí),一經(jīng)查出,請(qǐng)答辯委員會(huì)取消本人答辯資格。 承諾人(簽名): 年 月 日 摘要 本設(shè)計(jì)使用51系列的單片機(jī)STC15F2K60S2作為整個(gè)設(shè)計(jì)的控制,每層的64個(gè)LED通過層共陰的形式連接起來。每束的8個(gè)LED通過共陽的形式連接起來。使用74HC593控制各束LED

2、的陽極,使用ULN2803控制各層的陰極。組成一個(gè)由512個(gè)LED、規(guī)格為8*8*8的立方體。同時(shí)介紹了STC15F2K60S2、74HC573、ULN2803的使用方法及選用原因。同時(shí)介紹了在調(diào)試過程中,遇到的軟、硬件方面的問題以及解決方法。對(duì)光立方的原理進(jìn)行了詳細(xì)的闡述,并詳細(xì)的介紹了光立方在應(yīng)用方面的意義。關(guān)鍵詞 光立方;74HC593;STC15F2K60S2;ULN2803;LEDSummary This design uses 51 series microcontrollers STC15F2K60S2 as the control of the entire design, f

3、orm each of 64 LED by connecting the common cathode layer. Each bundle of eight LED connected through common anode form. Use 74HC593 control each beam LED anode, cathode layers using ULN2803 control. Composition consisting 512 LED, specifications for the cube 8 * 8 * 8. Also introduced STC15F2K60S2,

4、74HC573, ULN2803 to use and selection reasons. Also introduced the problem in the debugging process, encountered software and hardware and solutions. Light cube principle set forth in detail, and describes in detail the significance of light cube applications.Keywords light cube;74HC593;STC15F2K60S2

5、;ULN2803;LED目 錄1 前言1.1研究的背景在高速的信息、商業(yè)發(fā)展過程中,LED點(diǎn)陣廣告顯示器得到了廣泛的應(yīng)用,LED點(diǎn)陣顯示屏已逐步取代傳統(tǒng)的大尺寸紙質(zhì)廣告,在大街小巷常見的LED點(diǎn)陣顯示屏都得益于LED燈的發(fā)明。通過學(xué)習(xí)模擬電路了解到我們常說的LED就是發(fā)光二極管,發(fā)光二極管必須在一定的電壓和電流區(qū)間才能點(diǎn)亮,而且不同的發(fā)光二極管所需電壓和電流也不相同。通過對(duì)單片機(jī)、數(shù)字電路的學(xué)習(xí),懂得了單片機(jī)的擁有處理功能強(qiáng)、速度快、低電壓、低功耗等優(yōu)點(diǎn)。在點(diǎn)陣顯示課程的學(xué)習(xí)中,懂得把LED燈通過共陰或共陰的接法,再通過動(dòng)態(tài)掃描、靜態(tài)掃描就可以把LED燈點(diǎn)亮,且使用動(dòng)態(tài)掃描的方式,有節(jié)省I/O

6、口的優(yōu)點(diǎn)。在學(xué)習(xí)過程中得知?jiǎng)討B(tài)掃描是常用的LED顯示方法。使用動(dòng)態(tài)掃描,需要有驅(qū)動(dòng)器對(duì)LED燈進(jìn)行控制,而LED燈有需要在特定的電壓、電流區(qū)間才能點(diǎn)亮。LED燈有著高亮度、低功耗的有點(diǎn)。由LED點(diǎn)陣組成的顯示屏可以顯示各種想要的文字、圖案。但常見的LED點(diǎn)陣顯示屏都是平面顯示屏,平面顯示屏有一個(gè)明顯的不足:無立體感。1.2研究的意義本設(shè)計(jì)提出使用LED燈構(gòu)成8*8*8光立方顯示屏。本設(shè)不僅擁有顯示文字、圖案的功能,增加了立體顯示的功能。本光立方的設(shè)計(jì)克服了平面LED點(diǎn)陣顯示屏的缺點(diǎn),及立體和動(dòng)態(tài)于一體,動(dòng)態(tài)、立體的顯示方式更能吸引眼球,本設(shè)計(jì)應(yīng)用于商業(yè)廣告時(shí),可以得到更好的宣傳效果。特別是廠商

7、在產(chǎn)品推廣的時(shí)候,需要使用多張圖片對(duì)一個(gè)產(chǎn)品的結(jié)構(gòu)進(jìn)行展示,然而這種展示方式,不僅耗費(fèi)版面,而且只展示了特定的部位。使用光立方顯示屏,可以把產(chǎn)品以立體的方式展現(xiàn)給消費(fèi)者,消費(fèi)者可從不同的角度對(duì)產(chǎn)品進(jìn)行觀察,使得消費(fèi)者對(duì)產(chǎn)品外形有具體的認(rèn)識(shí)。1.3研究內(nèi)容和結(jié)構(gòu)本設(shè)計(jì)主要研究基于STC51單片機(jī)的光立方設(shè)計(jì)與實(shí)現(xiàn)。主要研究內(nèi)容如下:根據(jù)自己的要求提出并做出總體設(shè)計(jì)方案。研究三維點(diǎn)陣Led的硬件電路設(shè)計(jì),包括:電源電路、串口電路、8*8*8 LED光立方驅(qū)動(dòng)電路、顯示模塊電路等設(shè)計(jì)。研究光立方顯示的軟件設(shè)計(jì),包括:顯示程序、延時(shí)程序、串口通信等設(shè)計(jì)。對(duì)硬件電路、軟件程序進(jìn)行調(diào)試,并解決出現(xiàn)的問題。

8、控制模塊的設(shè)計(jì):控制電路部分包括STC單片機(jī)和電源電路,串口電路等。STC單片機(jī)具數(shù)據(jù)處理功能強(qiáng),運(yùn)算速度快的有點(diǎn),適合運(yùn)行光立方控制程序。通過RXD、TXD口與PC機(jī)通信,即可下載控制程序。本文的結(jié)構(gòu)安排如下:第2章:詳細(xì)敘述本系統(tǒng)的工作原理以及結(jié)構(gòu)特點(diǎn),對(duì)不同方案的分析和選擇,詳細(xì)介紹各個(gè)模塊。第3章:對(duì)硬件電路的布局進(jìn)行設(shè)計(jì),并說明各部分的主要作用。詳細(xì)敘述所選用芯片的引腳分布、引腳功能、以及對(duì)引腳的使用進(jìn)行規(guī)劃。敘述整個(gè)光立方系統(tǒng)焊接搭建的過程以及過程中應(yīng)該注意的問題。第4章:主要介紹了軟件設(shè)計(jì)的思路,以及軟件所要實(shí)現(xiàn)的功能。第5章:主要敘述整個(gè)光立方在后期調(diào)試中遇到的軟、硬件問題,以

9、及尋找問題、解決問題的方法。第6章:主要敘述在本次畢業(yè)設(shè)計(jì)中的收獲。2 總體設(shè)計(jì)2.1 系統(tǒng)的設(shè)計(jì)方案及工作原理光立方的總體設(shè)計(jì)方案包括了硬件設(shè)計(jì)和程序設(shè)計(jì)。硬件主要分為三個(gè)模塊:控制模塊,驅(qū)動(dòng)模塊,顯示模塊。其中,控制模塊使用單片機(jī)作為控制核心。借鑒點(diǎn)陣顯示的原理,使用層驅(qū)動(dòng)、行驅(qū)動(dòng),控制光立方的各個(gè)發(fā)光二極管的亮滅亮滅。顯示模塊由512個(gè)發(fā)光二極管組成。通過控制模塊控制驅(qū)動(dòng)模塊,驅(qū)動(dòng)模塊控制顯示模塊,顯示模塊動(dòng)態(tài)掃描顯示的方式達(dá)到控制顯示的目的。系統(tǒng)結(jié)構(gòu)圖如圖2-1所示。圖2-12.2 各模塊元件選擇對(duì)控制模塊、驅(qū)動(dòng)模塊、顯示模塊元件進(jìn)行分析和選。2.2.1 控制模塊元件的選擇控制模塊的元

10、件有兩個(gè)選擇方案。方案一:選用ATMEL公司的AT89S52單片機(jī),其片內(nèi)有8 KB Flash儲(chǔ)存器,為12T單片機(jī)。方案二:選用STC公司的STC15F2K60S2,擁有60 KB Flash 程序儲(chǔ)存器,內(nèi)部集成高精度R/C時(shí)鐘,為1T單片機(jī)。方立方顯示程序的數(shù)據(jù)量大,8KB的儲(chǔ)存空間將對(duì)顯示圖案的樣式帶來限制,且光立方采用動(dòng)態(tài)掃描的方式顯示,對(duì)單片機(jī)的數(shù)據(jù)處理速度有較高要求。因此本設(shè)計(jì)選擇采用STC15F2K60S2單片機(jī)作為控制模塊的核心元件。選用此單片機(jī)可以免去外部時(shí)鐘電路,可達(dá)到精簡電路、節(jié)省成本的目的。2.2.2 驅(qū)動(dòng)模塊元件的選擇由于本設(shè)計(jì)采用分別控制LED陰極、陽極的方法達(dá)

11、到控制LED的目的。此次需對(duì)陽極驅(qū)動(dòng)模塊以及陰極驅(qū)動(dòng)模塊使用的元件進(jìn)行選擇。其中陰極的驅(qū)動(dòng)模塊選用的元件有兩個(gè)方案:方案一:選用8個(gè)8050 NPN三極管,該三極管集電極所能承受的最大電流為500(mA)。方案二:選用1片ULN2803。由8個(gè)NPN達(dá)林頓晶體管構(gòu)成,輸出電流為500(mA)。若選用8個(gè)NPN三極管將造成零件的增加,使電路變得復(fù)雜,基于電路簡潔的考慮,本設(shè)計(jì)選用1個(gè)UNL2803作為陰極的驅(qū)動(dòng)模塊。陽極的驅(qū)動(dòng)模塊選8片擁有8路3態(tài)輸出的74HC573。2.2.3 顯示模塊元件的選擇顯示模塊元件有兩個(gè)選擇方案:方案一:選用藍(lán)色圓頭LED,規(guī)格為5(mm)。方案二:選用方形霧狀藍(lán)色

12、LED,規(guī)格為2*5*7(mm)。由LED燈構(gòu)成的顯示模塊,需要考慮亮度、聚光性、視覺效果等方面的因素。方形霧狀藍(lán)色LED具有高亮度,聚光的優(yōu)點(diǎn)。因此,本方案選用方案二作為顯示模塊的元件。3 硬件電路設(shè)計(jì)與實(shí)現(xiàn)3.1 硬件電路布局設(shè)計(jì)使用的元件確定以后,需對(duì)元件的布局進(jìn)行設(shè)計(jì)。在確定布局后,通過焊接的方式把相關(guān)線路焊接起來。硬件布局如圖3-1所示。圖3-13.2 控制模塊電路的設(shè)計(jì)本設(shè)計(jì)使用的STC15F2K60S2單片機(jī),內(nèi)置高精度的R/C時(shí)鐘和復(fù)位電路。因此控制模塊的不需要外部時(shí)鐘電路和外部復(fù)位電路,只需電源電路、串口選擇電路。其中電源電路為整個(gè)設(shè)計(jì)提供電源。串口選擇電路為系統(tǒng)運(yùn)行時(shí),是否

13、能通過串口控制光立方提供選擇。在控制模塊電路的設(shè)計(jì)中,需對(duì)單片機(jī)引腳的使用進(jìn)行規(guī)劃,并對(duì)電源電路、串口選擇電路進(jìn)行規(guī)劃。3.2.1 單片機(jī)的說明及引腳規(guī)劃在對(duì)控制模塊進(jìn)行焊接之前,需對(duì)單片機(jī)引腳的使用進(jìn)行規(guī)劃。在本設(shè)計(jì)中使用的STC15F2K60S2單片機(jī)可通過設(shè)置PxM0、PxM1的值,把任意I/0口的模式設(shè)置為強(qiáng)推挽模式或準(zhǔn)雙向模式或開漏模式或高阻高阻。本設(shè)計(jì)中,使用的I/O口模式為準(zhǔn)雙向,由于各個(gè)I/O口的模式都可以設(shè)置為準(zhǔn)雙向模式,因此P0口不需連接上拉電阻。引腳P0連接驅(qū)動(dòng)模塊中74HC573的輸入引腳,P2引腳連接各個(gè)74HC573的LE鎖存使能引腳。P1引腳連接ULN2803的輸

14、入端。P41引腳連接串口通信選擇的按鍵,P42引腳連接串口通信選擇指示燈。3.2.2 電源電路的設(shè)計(jì)使用手機(jī)充電器(5V,1A)作為系統(tǒng)電源。在VCC與GND之間加入一個(gè)47F電解電容和一個(gè)0.1F的瓷片電容,可去除電源噪聲,降低對(duì)系統(tǒng)的影響,從而系統(tǒng)的抗干擾能力得到提高。為了能方便地觀察到電源電路的閉合,加入一個(gè)由藍(lán)色霧狀LED作為電源指示燈,加入一個(gè)100的電阻進(jìn)行壓降,使得LED工作時(shí)的電壓為3.2V,起到防止LED擊穿的作用。電源電路的電路圖如圖3-2所示。圖3-23.2.3 串口選擇電路的設(shè)計(jì)在本設(shè)計(jì)中,有內(nèi)置光立方顯示數(shù)據(jù)和串口傳輸光立方傳輸顯示數(shù)據(jù)兩種方式控制光立方的顯示。在通過

15、串口傳輸數(shù)據(jù)時(shí),為了確保內(nèi)置顯示數(shù)據(jù)不再顯示,以及保證串口中斷為開。因此需要設(shè)置串口選擇按鍵,以供選擇是否通過串口傳輸光立方顯示數(shù)據(jù)。串口選擇按鍵的兩個(gè)接口分別連接在單片機(jī)的P4.1口和GND。同時(shí)添加一個(gè)串口開指示燈,在串口中斷為開時(shí),指示燈亮。指示燈為藍(lán)色發(fā)光二極管,陽極接在VCC,陰極接在單片機(jī)的P4.2口,由于VCC的電壓為5V,因此需并串聯(lián)一個(gè)100電阻,以保障發(fā)光二極管的穩(wěn)定運(yùn)行。電路圖如圖3-3所示。圖3-33.2.4 程序下載及串口通信電路的設(shè)計(jì)本設(shè)計(jì)使用的是STC的單片機(jī),可使用STC公司提供的stc-isp軟件把程序下載到單片機(jī)。在進(jìn)行程序下載和串口通信時(shí)。需使用到單片機(jī)的

16、Txd、Rxd、GND接口。因此這三個(gè)接口需用排針引出,以方便程序下載和串口通信時(shí)使用。本設(shè)計(jì)中,使用PL2033下載線進(jìn)行程序下載和串口通信。3.3 驅(qū)動(dòng)模塊電路的設(shè)計(jì)驅(qū)動(dòng)模塊電路使用了ULN2803和74HC573兩種元件。驅(qū)動(dòng)模塊分為層驅(qū)動(dòng)、行驅(qū)動(dòng)。把光立方的每一層的陰極連接在一起,此稱為層共陰接法,再把每一層的陰極接到,層驅(qū)動(dòng)模塊的輸出端口。使用ULN2803作為層驅(qū)動(dòng),若要選通某一層,只需通過ULN2803的輸入引腳控制與該層相連的ULN2803輸出口為低電平,即可選通該層。把光立方的每層中同行同列的發(fā)光二極管的陽極連接在一起組成一束LED,即每一束發(fā)光二極管共陽,再把各束連接到行驅(qū)

17、動(dòng)模塊。使用8個(gè)74HC573作為行驅(qū)動(dòng)模塊,通過74HC573控制光立方各層中相同的行。由于光立方各束是共陽的,且同一行的各束連接在同一個(gè)74HC573的不同輸出口中,當(dāng)74HC573輸出高電平時(shí),與之相連的束的陽極都為高電平,再通過層選通的方式,就可控制各個(gè)LED的亮滅。通過這樣的控制方式,即可達(dá)到控制各個(gè)LED及驅(qū)動(dòng)LED的目的。3.3.1 ULN2803的說明及引腳規(guī)劃ULN2803共有18個(gè)引腳,其中1至8引腳為輸入端,11-18引腳為輸出端,9引腳接為接地端,10引腳接VCC。輸出擊穿電壓為50(V) ,輸出電流為 500(mA)。ULN2803的1B至8B引腳(即輸入引腳)接單片

18、機(jī)的P1.0至P1.7引腳,1C至8C引腳(即輸出引腳)接光立方的1層至8層,9引腳接GND,由于本設(shè)計(jì)為非驅(qū)動(dòng)感性負(fù)載,10引腳不接VCC,如圖3-4所示。圖3-43.3.2 74HC573的說明及引腳規(guī)劃本設(shè)計(jì)使用的74HC573是擁有八路輸出的透明鎖存器,共有20個(gè)引腳,其中D0至D7引腳為輸入引腳,Q1至Q7引腳為輸出引腳,OE引腳為使能端,低電平時(shí),74HC573輸出數(shù)據(jù),LE引腳為鎖存控制端,VCC引腳接電源VCC。在本設(shè)計(jì)中,共使用8個(gè)74HC573,各個(gè)74HC573的D0至D7引腳接單片機(jī)的P0.0至P0.7引腳,輸出引腳Q0至Q7依次接光立方的同一行中的1至8束,第一個(gè)至第

19、八個(gè)74HC573的LE引腳依次接到單片機(jī)的P2.0至P2.7引腳,所有的74HC573的OE引腳連接至GND,所有的74HC573 的VCC引腳接至電源VCC,詳細(xì)的布線如圖3-5所示。圖3-53.4 顯示模塊電路的設(shè)計(jì)本設(shè)計(jì)的顯示模塊由發(fā)光二極管和電阻構(gòu)成。使用8*8*8的方案作為本設(shè)計(jì)的顯示模塊,即顯示模塊一共八層,每層由64顆發(fā)光二極管構(gòu)成。每一層的發(fā)光二極管的陰極連在一起,各層中同行同列的發(fā)光二極管的陽極連在一起組成束。由于本設(shè)計(jì)選用的是藍(lán)色霧狀發(fā)光二極管,規(guī)格為規(guī)格為2*5*7(mm),IF:20(mA),VF:3.0-3.2(V)。由于本設(shè)計(jì)使用5V電源供電,為了保證LED的正常

20、工作,需添加一個(gè)電阻進(jìn)行壓降,根據(jù)串聯(lián)分壓不分流的原理,根據(jù)歐姆定律R=U/I,可得出1.8(v)/20(mA)=90(),根據(jù)此計(jì)算結(jié)果,本設(shè)計(jì)中,在每束LED的陽極串聯(lián)一個(gè)100電阻。圖 3-6LED的連接方式如圖3-6所示,黃色線表示同一層的LED的陰極連在一起組成層共陰,紅色線表示各層中,同行同列的LED的陽極連在一起組成束共陽。3.5 光立方搭建方法硬件布局及各模塊電路設(shè)計(jì)好后,需要進(jìn)行硬件電路的搭建,本設(shè)計(jì)中,使用18*30(CM)波纖噴錫萬用板作為焊接板,在此板上根據(jù)硬件布局及各模塊電路進(jìn)行光立方的搭建。3.5.1 彎折LED的引腳顯示模塊一共使用了512顆LED。搭建的第一步是

21、對(duì)LED的引腳進(jìn)行彎折,以方便下一步的焊接。為了整個(gè)顯示模塊更加美觀,各個(gè)LED彎折的的角度、長度必須保持一致,為了達(dá)到這一要求,本設(shè)計(jì)進(jìn)行引腳彎折時(shí),使用自制的夾具對(duì)引腳進(jìn)行彎折。自制夾具由如圖3-7所示,由六個(gè)排針構(gòu)成,使用尖嘴鉗把第三行的兩個(gè)排針向右稍微彎曲,這樣做的目的是,在彎曲LED引腳時(shí),可使LED陽極引腳頭處向外微折,方便焊接。圖3-7LED引腳的彎折過程如圖3-8所示。LED的長引腳為陽極,把陽極引腳朝下,插在第二、第三行的排針上,把陽極引腳往右彎曲與陰極引腳垂直。完成后取下LED,接著把LED陽極引腳朝下并插在第一行和第二行的排針上,把陽極引腳向下彎曲,與陰極引腳平行,此時(shí),

22、完成了陽極引腳的彎曲,此時(shí)可觀察到,陽極引腳的頭微向外彎曲。接著把陰極引腳向右彎曲與陽極引腳彎曲,這樣就完成了一顆LED的引腳彎曲。圖3-83.5.2 光立方的焊接首先焊接光立方顯示模塊,光立方顯示模塊由512顆LED和64個(gè)100電阻構(gòu)成。由于LED容易被靜電擊穿,因此,在焊接的過程中,要保證電烙鐵良好接地,且焊接時(shí),溫度不可過高。先焊接出8個(gè)面,再通過八個(gè)面組成一個(gè)一個(gè)立方體。為了每個(gè)面焊接的美觀,需使用雙排針和萬用完焊接成一個(gè)模具,以保證各個(gè)面的一致性。焊接模具如圖3-9所示。圖3-9在焊接的過程中,為了方便焊接,先豎著排LED,然后使用電烙鐵把陽極引腳連接起來。接著在右邊繼續(xù)豎著擺放一

23、排LED,擺放好后焊接陽極引腳,陽極引腳焊接完成后,把第二排陰極引腳與第一排的陰極引腳一一對(duì)應(yīng)地焊接起來。如圖3-10所示。圖3-10本設(shè)計(jì)的顯示模塊共使用了512顆LED,并使用電烙鐵進(jìn)行焊接,而LED燈容易被靜電擊穿以及不耐高溫。因此,在進(jìn)行完每一板LED焊接后,需使用萬用表的二極管檔位對(duì)LED進(jìn)行測試,把損壞的LED及時(shí)更換,確保所有LED完好后再接入萬用板,這樣可以保證顯示模塊的整齊美觀。3.5.3 元器件的焊接本設(shè)計(jì)使用的STC15F2K60S2單片機(jī)、74HC573、ULN2803分別為DIP40、DIP20、DIP18封裝,若直接把元件焊接到萬用板上,元件有可能因?yàn)楹附訙囟冗^高而

24、損壞,且直接焊接到萬用板,也不利于日后元件損壞時(shí)的更換。因此本設(shè)計(jì)選擇把DIP-40腳IC插座、DIP-20腳IC插座、DIP-10腳IC插座,根據(jù)硬件布局圖焊接在萬用板上。整個(gè)光立方焊接完成后,再把相應(yīng)元件插到IC座中。本設(shè)計(jì)使用的 DC005電源插座共有3個(gè)引腳,自鎖開關(guān)共有6個(gè)引腳、輕觸開關(guān)共有4各引腳,在焊接前需確定所使用的引腳。各個(gè)元器件引腳之間的連接,采用跳線進(jìn)行連接,在焊接跳線時(shí),需使用剪刀先把跳線兩頭的絕緣層,并在裸露的導(dǎo)線上添加焊錫,這樣可以輕易地把跳線焊接到元件引腳上。ULN2803輸出引腳與光立方層之間的導(dǎo)線由于會(huì)裸露在顯示模塊上,因此,ULN2803輸出引腳與光立方層之

25、間的導(dǎo)線選用細(xì)漆包線,這樣可以使光立方更加美觀。由于使用的不是免刮漆包線,因此在焊接漆包線時(shí),需把漆包線兩頭的絕緣漆使用小刀刮掉。在萬用板上焊接顯示模塊時(shí),先在萬用板上焊接好上下左右間距為的圓孔母座,以方便把把焊接好的LED插入。在焊接完圓孔母座時(shí),在各個(gè)圓孔母座的旁邊焊接一個(gè)100的電阻,電阻的一端與圓孔母座相連,另一端則與相應(yīng)的74HC573輸出口相連。4 軟件設(shè)計(jì)軟件是光立方系統(tǒng)必不可少的一部分,本設(shè)計(jì)使用keil C51進(jìn)行光立方運(yùn)行程序的編寫,在編程語言方面,可以選擇匯編語言或C語言。由于C語言有著簡潔靈活、移植性好、編譯簡單、執(zhí)行效率高、循環(huán)的使用方便等優(yōu)點(diǎn),因此本設(shè)計(jì)選用C語言作

26、為編程語言。本設(shè)計(jì)的軟件設(shè)計(jì)核心是顯示程序,顯示程序中使用的數(shù)據(jù),可來自于串口接收,以及程序內(nèi)置的顯示數(shù)據(jù)。4.1顯示程序的設(shè)計(jì)光立方的顯示是參考了點(diǎn)陣動(dòng)態(tài)掃描顯示的方式,即光立方顯示時(shí),從第一層顯示至第八層,各層是從第一行到第八行逐行顯示。利用人眼的余暉效應(yīng),光立方可產(chǎn)生動(dòng)態(tài)畫面的效果。顯示程序定義一個(gè)八行八列的二維數(shù)組存儲(chǔ)待顯示數(shù)據(jù),這樣的優(yōu)點(diǎn)是二維數(shù)組的行對(duì)應(yīng)著光立方的層,二維數(shù)組的列對(duì)應(yīng)著光立方的行。由于采用的是動(dòng)態(tài)掃描的方式顯示,且使用了8個(gè)74HC573控制一層的LED,在編寫程序是,只需把顯示數(shù)組中一行的八個(gè)顯示數(shù)據(jù)分別傳遞到74HC573中,73HC573對(duì)數(shù)據(jù)進(jìn)行鎖存,當(dāng)一層

27、的顯示數(shù)據(jù)保存完成后,打開與該層相應(yīng)的ULN2803輸出端口,即可顯示該層。為了保證各層LED顯示亮度一致,需要使得各層的顯示時(shí)間一致,而單片機(jī)提供了定時(shí)器中斷的功能,因此,把顯示程序放在定時(shí)器中斷處理函數(shù)中,即可達(dá)到每層顯示時(shí)間一致的目的。代碼如下:void timer0_isr(void) interrupt 1CENG=0;CKPD(); for (i=0;i<8;i+)HANG=(0x01<<i);/行選擇DATA=displaylayi;/列賦值HANG=0;CENG=(0x01<<lay);lay+;if(lay>7) /完成八層掃描,重新回到第

28、一層進(jìn)行掃描lay=0;4.2 光立方的顯示數(shù)據(jù)光立方顯示的數(shù)據(jù)的來源可分為程序內(nèi)置顯示數(shù)據(jù)和串口接收顯示數(shù)據(jù)。4.2.1 內(nèi)置顯示數(shù)據(jù)光立方顯示的每一幀使用一個(gè)八行八列的二維數(shù)組保存,因此,光立方開機(jī)自動(dòng)顯示的畫面,只需用二維數(shù)組保存好每一個(gè)畫面的數(shù)據(jù),即可把顯示的數(shù)據(jù)內(nèi)置到單片機(jī)中。在顯示內(nèi)置數(shù)組是,只需把顯示數(shù)據(jù)賦值給顯示程序中的待顯示數(shù)組,即可達(dá)到顯示內(nèi)置顯示數(shù)據(jù)的目的。在顯示數(shù)據(jù)賦值完成后,添加一個(gè)延時(shí)程序,即可控制下一個(gè)顯示數(shù)據(jù)傳值到待顯示數(shù)組的時(shí)間間隔,通過這樣的控制方式,即可控制光立方顯示動(dòng)態(tài)畫面或者靜態(tài)畫面。若顯示靜態(tài)畫面延時(shí)長,動(dòng)態(tài)畫面延時(shí)短。本設(shè)計(jì)存儲(chǔ)內(nèi)置的顯示數(shù)據(jù)時(shí),字

29、符數(shù)據(jù)用二維數(shù)組存儲(chǔ),二維數(shù)組的Y軸代表第幾個(gè)字符數(shù)組。而動(dòng)畫數(shù)據(jù)用三維數(shù)組存儲(chǔ),三維數(shù)組的Z軸代表第幾個(gè)畫面。內(nèi)置數(shù)據(jù)顯示代碼如下:/字母/for(zzj=0;zzj<6;zzj+)if(ES=0)for(yyj=0;yyj<8;yyj+)for(xxj=3;xxj<5;xxj+)/光立方的第三、四層顯示字符。displayyyjxxj=ZMzzjyyj; /依次存入顯示數(shù)組;Delay250ms();/動(dòng)畫/for(zzj=0;zzj<30;zzj+)if(ES=0)for(yyj=0;yyj<8;yyj+)for(xxj=0;xxj<8;xxj+)di

30、splayyyjxxj=cubezzjyyjxxj; /依次存入顯示數(shù)組;Delay100ms();if (zzj=29) /一輪顯示完成,清除待顯示數(shù)組for(qy=0;qy<8;qy+)for(qx=0;qx<8;qx+)displayqyqx=0;4.2.2 串口接收顯示數(shù)據(jù)利用單片機(jī)提供的串口通信功能,可實(shí)現(xiàn)光立方與上位機(jī)實(shí)時(shí)通信。由于使用了單片機(jī)的串口通信功能,因此需進(jìn)行初始化設(shè)置,本設(shè)計(jì)中,進(jìn)行串口通信時(shí)使用的是串口1,且定時(shí)器1作為波特率發(fā)生器。上位機(jī)傳輸顯示數(shù)據(jù)時(shí),傳輸?shù)氖鞘M(jìn)制的數(shù)據(jù),通過串口中斷處理函數(shù),把上位機(jī)傳來的顯示數(shù)據(jù)賦值給待顯示數(shù)組,顯示完成后需把串

31、口接收標(biāo)志RI置0。通過串口通信即可達(dá)到實(shí)時(shí)控制光立方顯示的圖案,而不僅限于內(nèi)置的顯示數(shù)據(jù)。串口接收顯示數(shù)據(jù)代碼如下:void rxd() interrupt 4 /串口中斷 RI=0;rxcnt+;if(rxcnt>=2) /串口第一個(gè)數(shù)據(jù)為顯示命令不接收temp=SBUF;/接收串口數(shù)據(jù)displayyyxx=temp; /依次存入顯示數(shù)組xx+;if(xx>=8)xx=0;yy+;if(yy>=8)yy=0;if(rxcnt>=65)rxcnt=0;4.2.3 顯示數(shù)據(jù)來源的選擇上文中提到,光立方可顯示內(nèi)置的數(shù)據(jù),和串口接收的數(shù)據(jù),那么單片機(jī)必須判斷顯示內(nèi)置數(shù)據(jù)還

32、是串口接收的數(shù)據(jù),因此,在軟件設(shè)計(jì)中,需添加一個(gè)內(nèi)置數(shù)據(jù)顯示與串口接收數(shù)據(jù)顯示的判斷函數(shù)。由于單片機(jī)接收到串口數(shù)據(jù)時(shí),會(huì)判斷串口中斷是否為開,若為開時(shí),即進(jìn)入串口中斷函數(shù)。而本設(shè)計(jì)中,顯示串口接收數(shù)據(jù)時(shí),正是通過串口中斷處理函數(shù),把串口接收的數(shù)據(jù)賦值給待顯示數(shù)組,因此可通過外部按鍵設(shè)置串口中斷的開與關(guān),即可達(dá)到顯示數(shù)據(jù)來源的選擇。本設(shè)計(jì)中,有一個(gè)串口選擇功能的輕觸開關(guān),其一端連接單片機(jī)的P4.1引腳,一端連接GND。單片機(jī)只需通過判斷該引腳的狀態(tài),即可判斷是否改變顯示數(shù)據(jù)的來源。即若P4.1的引腳為低電平時(shí),則串口中斷標(biāo)志位ES取反,即可達(dá)到顯示數(shù)據(jù)來源的選擇。本設(shè)計(jì)中,單片機(jī)開機(jī)時(shí),串口中斷

33、為關(guān),把對(duì)P4.1引腳狀態(tài)的判斷放在定時(shí)器中斷函數(shù)中,即每進(jìn)行一次線束數(shù)據(jù)掃描時(shí),就對(duì)P4.1引腳的狀態(tài)進(jìn)行判斷。若P4.1的引腳為低電平,即顯示數(shù)據(jù)的來源發(fā)生改變,若變成來自于串口接收的數(shù)據(jù),需對(duì)計(jì)數(shù)串口接收數(shù)據(jù)個(gè)數(shù)的變量以及用于控制數(shù)據(jù)存儲(chǔ)位置的行、列變量進(jìn)行置零,以保證光立方的正常顯示,并且置P4.2引腳為0即低電平,串口指示燈點(diǎn)亮,提示光立方顯示的數(shù)據(jù)來自于串口。若改變?yōu)閬碜詢?nèi)置的數(shù)據(jù),需對(duì)待顯示數(shù)組內(nèi)的數(shù)據(jù)進(jìn)行置零,消除對(duì)顯示內(nèi)置數(shù)據(jù)時(shí)的影響,同時(shí)P4.2引腳置1,串口指示燈滅。代碼如下:void CKPD()if(AJ=0)/串口選擇按鍵判斷Delay250ms();ES=(ES)

34、;if(ES=1)AJD=0; /串口指示燈xx=0;yy=0;rxcnt=0;elseuchar qx,qy;AJD=1;for(qy=0;qy<8;qy+) /清空待顯示數(shù)組for(qx=0;qx<8;qx+)displayqyqx=0;4.3 顯示數(shù)據(jù)的獲取光立方的顯示就如點(diǎn)陣顯示一樣,通過控制每個(gè)LED的亮滅,得到一個(gè)預(yù)想的畫面。而控制LED的亮滅是通過顯示數(shù)據(jù)來控制的。上文中已經(jīng)提到,本設(shè)計(jì)使用八行八列的二維數(shù)組存儲(chǔ)顯示數(shù)據(jù),顯示數(shù)據(jù)的行對(duì)應(yīng)著層,列對(duì)應(yīng)著光立方相應(yīng)層的行。各行通過74HC573控制,當(dāng)輸出為1時(shí),LED點(diǎn)亮。因此可通過預(yù)想得到的圖案,計(jì)算出相應(yīng)的十六進(jìn)制

35、數(shù)值,并發(fā)在二維數(shù)組中相應(yīng)的行列中。如點(diǎn)亮第第一層第一行第一個(gè)LED時(shí),只需把顯示數(shù)組的第一行第一列賦值為0x01即可。還可以使用8*8點(diǎn)陣取模軟件,對(duì)光立方的每一層取模。5 測試和問題分析在整個(gè)光立方制作完成后,需進(jìn)行光立方的運(yùn)行進(jìn)行測試。以下是在測試過程中發(fā)現(xiàn)的問題及問題的解決方法: 1、使用串口控制光立方時(shí),通過上位機(jī)控制光立方全亮,光立方有一束不亮。解決方法:使用萬用表測量該束所連接的74HC573輸出引腳的電壓,發(fā)現(xiàn)電壓為5V,電壓正常。同時(shí)發(fā)現(xiàn)與該引腳連接的導(dǎo)線脫落了,從新焊接該導(dǎo)線,問題得以解決。2、使用串口控制光立方時(shí),發(fā)現(xiàn)光立方有時(shí)閃爍,且顯示的畫面與預(yù)期不相符。解決方法:懷疑是傳輸顯示數(shù)據(jù)時(shí)出現(xiàn)了問題,檢查串口線與單片機(jī)連接,發(fā)現(xiàn)光立方系統(tǒng)中,GND

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論