2019-1-9 22:01 上傳
點(diǎn)擊文件名下載附件
仿真+代碼
由于實(shí)訓(xùn)的時(shí)候要求用的是單面板的,所以PCB是單面布線的,排PCB的時(shí)候沒有考慮到插針的位置,所以飛線很多.PCB的話建議自己再畫一下,多加幾個(gè)插針。電路就比較沒有那么復(fù)雜.
電子創(chuàng)新實(shí)訓(xùn)報(bào)告
學(xué) 院 電子信息科學(xué)學(xué)院
實(shí) 訓(xùn) 題 目 基于單片機(jī)的光立方
專 業(yè) 名 稱 電子信息工程
班 級(jí)
學(xué) 號(hào)
學(xué) 生 姓 名
指 導(dǎo) 教 師
目錄
任 務(wù) 書... 2
實(shí)訓(xùn)應(yīng)達(dá)到的目的:... 2
二、實(shí)訓(xùn)任務(wù)和基本要求... 2
摘要:... 3
1、光立方的制作... 3
1.1 光立方的概述... 3
1.2 LED燈的選用... 4
1.3 光立方的焊接... 4
2、模塊設(shè)計(jì)... 6
2.1 主控模塊... 7
2.1.1晶振電路... 7
2.1.2復(fù)位電路... 7
2.1.3主控電路圖... 8
2.2驅(qū)動(dòng)模塊... 9
2.2.1 ULN2803芯片... 9
2.2.274HC573芯片... 9
2.3 顯示模塊... 11
2.4 電路原理圖... 13
2.5電路仿真... 13
2.6電路實(shí)物圖... 15
3.軟件開發(fā)... 16
3.1光立方的動(dòng)態(tài)顯示... 16
4.電路的焊接與調(diào)試... 16
4.1LED燈二維平面點(diǎn)陣的搭建... 16
4.2LED面到體的搭建... 17
5.元器件清單... 18
6.結(jié)束語... 19
7.參考文獻(xiàn)... 20
電子創(chuàng)新實(shí)訓(xùn)
基于單片機(jī)的光立方
摘要:3D光立方是由長(zhǎng)寬高均8顆LED燈組成,即總共512顆LED點(diǎn)陣構(gòu)成的三維立方體。本光立方的搭建方式是引導(dǎo)出8 個(gè)層引出線,這些引出線將作為各個(gè)點(diǎn)陣層面的“開關(guān)”,再將64個(gè)LED燈的正極連在一起,之后再連接到這個(gè)引出線上,總共引出72根線。本設(shè)計(jì)是采用延時(shí)控制的方式,由C51編寫的控制程序燒錄到單片機(jī)中,通過單片機(jī)來控制LED燈的亮滅情況,使整個(gè)光立方能夠展現(xiàn)五花八門的動(dòng)態(tài)造型。
本設(shè)計(jì)采用的是STC89C51RD+單片機(jī)芯片實(shí)現(xiàn)的實(shí)現(xiàn)8*8*8的光立方的動(dòng)態(tài)顯示。
1、光立方的制作
1.1 光立方的概述
我們通過平時(shí)常見的LCD1602、LCD12864 和LED 點(diǎn)陣屏等的學(xué)習(xí),懂得了2D 平面圖形的設(shè)計(jì)、生成和編程,這一過程會(huì)讓我們受到啟發(fā),在光立方的制作當(dāng)中,把我們的2D思維提升到3D 的思維方式。3D 圖形的編程也是很巧妙的事情,并不只是簡(jiǎn)單地把幾個(gè)2D 的圖形疊加起來這么簡(jiǎn)單。設(shè)計(jì)3D 圖形,需要有新的思維方式,發(fā)現(xiàn)三維空間中點(diǎn)、線、面、體的算法規(guī)律。在程序中運(yùn)用循環(huán)、判斷語句、參數(shù)邏輯運(yùn)算等方法,用最
少的語句達(dá)到最佳的顯示效果。一改以往的平面顯示效果,采用全新的立體顯示,展示3D的超炫表現(xiàn)力,讓人享受各種視覺上的沖擊,迎合3D顯示時(shí)代的到來。
光立方為一個(gè)立體LED點(diǎn)陣。本項(xiàng)目制作并實(shí)現(xiàn)了一個(gè)8*8*8的光立方,較之平時(shí)常見的LED點(diǎn)陣屏,其擁有獨(dú)特的特點(diǎn):
1、8*8*8的LED陣列立體顯示器;
2、連貫的圖形顯示效果,渾然一體,一氣呵成;
3、超炫的立體動(dòng)態(tài)顯示,多種顯示樣式;
1.2 LED燈的選用LED發(fā)光體的體積越小,光立方整體的通透性就越好,也就是說后排的LED就越不容易被前排的LED擋住;而另一方面,發(fā)光體越大,越容易看到光點(diǎn),例如使用直徑更大的LED或是使用霧面而非光面的LED。這二者是有一定的相互矛盾的關(guān)系。此外還要注意LED光點(diǎn)的可視角度,霧面LED要比光面LED要大,而草帽頭LED的可視角度又比普通窄體的LED要大。另外,一樣可以根據(jù)擺放位置,角度,將LED的朝向進(jìn)行改變,以獲得更好的觀感。
本項(xiàng)目使用的LED為臺(tái)灣產(chǎn)的3MM、圓頭、藍(lán)色、霧狀散光LED,其最大電流為20mA,電壓范圍3.0-3.5V,波長(zhǎng)460-465nm,亮度,1000mcd,發(fā)光角度120度,正極的引腳長(zhǎng)度為27mm,負(fù)極的為25mm。實(shí)物圖如圖1.1所示:
1.3 光立方的焊接首先,為了保持整體的通透性、立體感,3D8光立方?jīng)]有設(shè)計(jì)額外的LED支架,所有搭接直接使用LED自身的管腳,我們先將512個(gè)LED的正引腳彎折,且正負(fù)引腳的夾角一定是90°,彎折后的LED燈如圖1.2所示:
其次,我們可以把它分為8個(gè)層,每層含8*8個(gè)LED燈,每一層的LED陣列都要求排列整齊,互相看齊,將彎曲的LED一個(gè)個(gè)進(jìn)行排列焊接,每一層焊接的效果如圖所示:
最后,要進(jìn)行LED燈立體矩陣的搭建。LED搭接過程比較繁瑣,我們需要8 層的LED陣,列內(nèi)共陰,層內(nèi)共陽。焊接直接在LED管腳上進(jìn)行。為使光立方外形的美觀,每一層的LED陣列都要求排列整齊,互相看齊,完整的光立方如圖所示:
我們只要控制這64個(gè)燈使其能夠自由變換,然后再通過控制每個(gè)層依次點(diǎn)亮即可,由于我們眼睛的視覺暫留(大概50ms至200ms),使我們感覺看到的東西是同時(shí)亮的,這樣我們就看到了一個(gè)完整的個(gè)體。
2、模塊設(shè)計(jì)
本系統(tǒng)主要是由以下四個(gè)模塊組成的,分為:主控模塊、驅(qū)動(dòng)模塊、顯示模塊。主控模塊:以高性能的STC89C51RD+單片機(jī)為控制核心。驅(qū)動(dòng)模塊:由鎖存器74HC573和驅(qū)動(dòng)器ULN2803兩個(gè)硬件構(gòu)成。顯示模塊:利用512個(gè)LED燈組成8*8*8的立方體結(jié)構(gòu)。
圖1 系統(tǒng)總體的模塊框圖
2.1 主控模塊本項(xiàng)目采用51單片機(jī) 最小系統(tǒng),以高性能的STC89C51RD+單片機(jī)為控制核心。主要特點(diǎn)是:加密性強(qiáng),低功耗,價(jià)格便宜,高速,高可靠、強(qiáng)防靜電,強(qiáng)抗干擾。主要是由于本次設(shè)計(jì)需要寫入的代碼比較多,那么就需要較大的空間的單片機(jī)來實(shí)現(xiàn)。由于STC89C51RD+的RAM會(huì)比較大,其大小為1280
其引腳圖同普通的51單片機(jī)一樣.
2.1.1 晶振電路AT89C51雖然有內(nèi)部振蕩電路,但要形成時(shí)鐘,必須外部附加電路。AT89C51單片機(jī)的時(shí)鐘產(chǎn)生方法有兩種。內(nèi)部時(shí)鐘方式和外部時(shí)鐘方式。晶振是給單片機(jī)提供工作信號(hào)脈沖的這個(gè)脈沖就是單片機(jī)的工作速度 比如 12M晶振單片機(jī)工作速度就是每秒12M 當(dāng)然單片機(jī)的工作頻率是有范圍的不能太大一般24M就不上去了不然不穩(wěn)定。本次設(shè)計(jì)采用的是內(nèi)部時(shí)鐘方式:
如圖二所示:晶振與單片機(jī)的腳XTAL0和腳XTAL1內(nèi)部的振蕩電路便產(chǎn)生自激振蕩。構(gòu)成的振蕩電路中會(huì)產(chǎn)生偕波(也就是不希望存在的其他頻率的波) 這個(gè)波對(duì)電路的影響不大, 但會(huì)降低電路的時(shí)鐘振蕩器的穩(wěn)定性。為了電路的穩(wěn)定性, ATMEL公司只是建議在晶振的兩引腳處接入兩個(gè)10pf-50pf的瓷片電容接地來削減偕波對(duì)電路的穩(wěn)定性的影響所以晶振所配的電容在10pf-50pf之間都可以的沒有什么計(jì)算公式。
因?yàn)橐粋(gè)機(jī)器周期含有6個(gè)狀態(tài)周期,而每個(gè)狀態(tài)周期為2個(gè)振蕩周期,所以一個(gè)機(jī)器周期共有12個(gè)振蕩周期,如果外接石英晶體振蕩器的振蕩頻率為12MHZ,一個(gè)振蕩周期為1/12us,故而一個(gè)機(jī)器周期為1us。如圖3所示為時(shí)鐘電路。
圖3晶振電路
2.1.2 復(fù)位電路在電路圖中,電容的的大小是1uf,電阻的大小是100。所以根據(jù)公式,可以算出電容充電到電源電壓的0.7倍(單片機(jī)的電源是5V,所以充電到0.7倍即為3.5V),需要的時(shí)間是100*1UF=0.0001S。也就是說在電腦啟動(dòng)的0.0001S內(nèi),電容兩端的電壓時(shí)在0~3.5V增加。這個(gè)時(shí)候100電阻兩端的電壓為從5~1.5V減少(串聯(lián)電路各處電壓之和為總電壓)。所以在0.0001S內(nèi),RST引腳所接收到的電壓是5V~1.5V。在5V正常工作的51單片機(jī)中小于1.5V的電壓信號(hào)為低電平信號(hào),而大于1.5V的電壓信號(hào)為高電平信號(hào)。所以在開機(jī)0.0001S內(nèi),單片機(jī)系統(tǒng)自動(dòng)復(fù)位(RST引腳接收到的高電平信號(hào)時(shí)間為0.0001S左右)。
復(fù)位方法有上電自動(dòng)復(fù)位和手動(dòng)復(fù)位兩種,單片機(jī)在時(shí)鐘電路工作以后, 在RESET端持續(xù)給出2個(gè)機(jī)器周期的高電平時(shí)就可以完成復(fù)位操作。例如使用晶振頻率為12MHz時(shí),則復(fù)位信號(hào)持續(xù)時(shí)間應(yīng)不小于2us。本設(shè)計(jì)采用的是自動(dòng)復(fù)位電路。如圖4所示為復(fù)位電路。
圖4 復(fù)位電路
2.1.3 主控電路圖
圖5 主控電路圖
2.2驅(qū)動(dòng)模塊2.2.1 ULN2803芯片我選擇采用ULN2803芯片的理由是因?yàn)楣饬⒎降闹谱魉玫降腖ED燈數(shù)量比較多,要選擇能承受較大電流的芯片,而ULN2803芯片正好符合條件。
ULN2803是八重的達(dá)林頓管,NPN型.1到8腳是8路輸入,18到11腳是8路輸出,驅(qū)動(dòng)能力為500mA(使用時(shí),引腳9接地,用來驅(qū)動(dòng)感性負(fù)載,引腳10接負(fù)載電源,輸入電平為0V或5V,當(dāng)輸入5V的電平時(shí)候,輸出達(dá)林頓飽和,不需要通過標(biāo)準(zhǔn)的邏輯緩沖器處理數(shù)據(jù),它能夠直接處理數(shù)據(jù);輸入0V時(shí)候,輸出達(dá)林頓截止。輸出負(fù)載加在電源V+和輸出口上,當(dāng)輸入高電平時(shí)候,輸出負(fù)載工作。它不但工作電壓高,而且工作電流也大,可以達(dá)到500毫安。通常連接在陣列中,極其適合邏輯接口的電平數(shù)字電路和較高的電流、電壓中。
ULN2803引腳圖如圖6所示:
內(nèi)部原理圖 外部引腳圖
圖6 ULN2803芯片引腳圖
2.2.2 74HC573芯片選擇74HC573芯片驅(qū)動(dòng),它有以下優(yōu)點(diǎn):1.它的輸出不是低電平或者高電平,而是高阻態(tài),并且支持多個(gè)芯片并聯(lián)輸出;2.能夠緩沖控制輸入,有改善使能輸入抗擾度滯后的作用;3.數(shù)據(jù)能夠鎖存,保存數(shù)據(jù);4.具有緩沖數(shù)據(jù)及加強(qiáng)驅(qū)動(dòng)的能力。
74HC573的引腳圖如圖7所示;
圖7 74HC573引腳圖
74HC573芯片的邏輯圖如圖8所示;
圖8 74HC573芯片邏輯
74HC573屬于硅門 CMOS 器件,不僅引腳與LS/AL573相同,并且74HC573的輸出也能與之輸出兼容。74HC573有三態(tài)總線驅(qū)動(dòng)輸出,工作的電壓在兩伏特到六伏特之間,低輸入電流為1.0uA。置數(shù)能夠全并行的存取,緩沖控制輸入,并能使能輸入能夠具有改善抗擾度滯后的作用。假如鎖存的使能端變高了,就表示器件的鎖存相對(duì)而言數(shù)據(jù)是透徹的;假如鎖存的使能端變低了,那么吻合設(shè)立時(shí)間還有維系時(shí)間的數(shù)據(jù)將會(huì)被它鎖存住。74HC573的功能表如下圖所示。
2.3 顯示模塊考慮到外觀及整體形狀的美觀,本設(shè)計(jì)采用LED霧狀藍(lán)方燈,因?yàn)殪F狀燈的亮度比高亮燈的亮度更均勻柔和,所以選擇霧狀燈。
圖8 顯示模塊
2.4 電路原理圖
2.5電路仿真Protues仿真
LED燈與74HC573連接圖
ULN2803接線圖
電路總原理圖
電路總Pcb圖
由于板子不夠大,所以分成兩塊板子來打印,所以中間有兩根飛線沒有辦法在PCB中生成布線
2.6電路實(shí)物圖
實(shí)體整體圖
74HC573實(shí)物接線圖
主控板電路
3.軟件開發(fā)3.1光立方的動(dòng)態(tài)顯示光立方雖然不同于平時(shí)常見的LED點(diǎn)陣屏,但其原理還是一樣的,都是通過對(duì)LED的快速掃描,利用人眼視覺暫留效應(yīng),以達(dá)到動(dòng)態(tài)顯示的效果。只不過設(shè)計(jì)3D 圖形,需要有新的思維方式,發(fā)現(xiàn)三維空間中點(diǎn)、線、
面、體的算法規(guī)律。在程序中運(yùn)用循環(huán)、判斷語句、參數(shù)邏輯運(yùn)算等方法,用最少的語句達(dá)到最佳的顯示效果。
要實(shí)現(xiàn)光立方的動(dòng)態(tài)掃描,那么首先得先點(diǎn)亮一個(gè)燈,然后通過快速依次點(diǎn)亮想顯示圖形的每一個(gè)燈,即可得到動(dòng)態(tài)顯示圖形。
4.電路的焊接與調(diào)試4.1 LED燈二維平面點(diǎn)陣的搭建 搭建LED燈二維平面點(diǎn)陣,首先將LED燈的正負(fù)極彎折好如圖1所示,再把LED燈放入平面模板中,并將各個(gè)燈的負(fù)極焊接在一起。在彎折負(fù)極的時(shí)候,我們將彎曲的地方盡可能靠近燈的根部,這樣可以有效避免在焊接正極之時(shí)造成短路的情況。
圖1 圖2
所有LED燈的正極與正極相連,負(fù)極與負(fù)極相連,管腳之間用焊錫固定住。因?yàn)楹附訒r(shí)烙鐵溫度比較高容易損壞LED燈,所以我們?cè)诤附庸ぷ魍瓿赏曛髮?duì)每個(gè)LED燈都進(jìn)行了第二次測(cè)試,確保每個(gè)燈正常發(fā)光。焊好之后將所有燈從模板上取下,如圖2所示就可完成二維平面點(diǎn)陣了。
4.2 LED面到體的搭建把已經(jīng)焊接好的8個(gè)面一層一層有序的插到底板上,每插一面燈,都用焊錫將燈的正極管腳與底板固定。8個(gè)面焊接結(jié)束后,我們可以用手將8個(gè)燈面微調(diào),以保證光立方的美觀。
然后用9根鍍錫鋼線,每一層都用一根鍍錫鋼線搭接好,多余的一根鍍錫鋼線搭接在光立方的另一面的頂層,起到一個(gè)穩(wěn)固的作用。確保面與面、層與層之間在同一水平面上,排列整齊,搭建完成后再測(cè)試一次層與層之間連接的LED燈的好壞。搭建完成后的光立方成品如圖3所示。
5.元器件清單
序號(hào)
材料名稱
規(guī)格與型號(hào)
數(shù)量
1
51單片機(jī) 最小系統(tǒng)
40P鎖緊座帶活動(dòng)座電子模塊支持
STC12C5A60S2,STC89C52RC
1
2
單片機(jī)芯片
STC89C51RD+
1
3
74HC573
74HC573N
八路D類鎖存器 直插DIP20 IC
8
4
ULN2803
ULN2803
1
5
IC插座
18P
9
6
下載線
USB轉(zhuǎn)TTL CH340模塊 USB轉(zhuǎn)串口 單片機(jī)下載線 刷機(jī)板 升級(jí)小板
1
7
杜邦線
若干
8
M霧狀藍(lán)色
LED
2*5*7MM霧狀藍(lán)色 2X5X7MM 方形藍(lán)燈 LED發(fā)光二極管 光立方燈珠
512
6.結(jié)束語一、設(shè)計(jì)過程中遇到的問題:
1.代碼問題
① 首先是時(shí)間間隔的計(jì)算,由于用的是C語言來編寫的程序,所以在延時(shí)控制這方面沒有用匯編語言來得精準(zhǔn),所以在設(shè)計(jì)延時(shí)的時(shí)候遇到了比較的問題,延時(shí)的時(shí)間和晶振頻率以及延時(shí)程序中設(shè)置的代碼參數(shù)有關(guān),后來經(jīng)過仿真調(diào)試使得延時(shí)程序得到了解決
② 主要是顯示上的問題,由于本次實(shí)現(xiàn)的燈的變化都是完全由單片機(jī)芯片內(nèi)的代碼完全實(shí)現(xiàn)的,所以需要把想要實(shí)現(xiàn)的圖形都寫進(jìn)代碼里,這里就部分參考了網(wǎng)上設(shè)計(jì)好的圖形的程序。
2.原理圖及仿真問題
① 首先在原理圖上出現(xiàn)的問題是,選擇合適的芯片,經(jīng)過上網(wǎng)查閱資料以及借鑒經(jīng)驗(yàn)貼決定了使用ULN2803和74HC573這兩種芯片來作為驅(qū)動(dòng)。
對(duì)與驅(qū)動(dòng)的問題,還有一個(gè)就是在P0口需要接一個(gè)上拉電阻,這樣驅(qū)動(dòng)才會(huì)足夠不然會(huì)發(fā)現(xiàn)等不夠亮。
② 原本是打算采用STC15F2K60S2這個(gè)芯片來實(shí)現(xiàn)led燈的動(dòng)態(tài)顯示以及音樂頻譜的改變的,但是由于protues這個(gè)軟件沒有STC15F2K60S2這個(gè)芯片可以來實(shí)現(xiàn)仿真,并且在買元器件的時(shí)候沒有買MAX232以及串口轉(zhuǎn)USB線所以最終選擇采用STC89C51RD+來實(shí)現(xiàn)光立方燈的變化。
③ 在protel中繪制pcb的時(shí)候,如果把分開的兩塊板子放在一起的話,自動(dòng)布線會(huì)不成功并且線路會(huì)很密集不好分。為了使線路更好分以及保證線路不斷的情況下我們分成了兩個(gè)電路板來繪制PCB板子。
連接電路與檢測(cè)電路遇到的問題
④ 本次電路的線是很多的,但是由于引出來的插針不夠,所以只能用導(dǎo)線含在背面,這樣增加了工作量。下次在繪制pcb的時(shí)候一定要更加認(rèn)真思考需要引出來的線
在接線的過程中遇到的最多的問題就是焊點(diǎn)虛焊。在保證電源正負(fù)極不接在一起的情況下,我們把程序燒到了芯片中讓電路運(yùn)行。查看那些燈不亮。
在檢查的時(shí)候,發(fā)現(xiàn)有一整排的燈不亮,最后發(fā)現(xiàn)是這排燈接的74hc573的20引腳也就是電源沒有與它連接上
⑤ 在檢查的時(shí)候,還發(fā)現(xiàn)有一些燈是不會(huì)亮的。經(jīng)過檢查線路之后發(fā)現(xiàn)是所有74hc573的1引腳都沒有接到GND上所以導(dǎo)致了功能的選擇上出現(xiàn)了錯(cuò)誤,也就是顯示的效果不理想
⑥ 我們的線路還有一小列的燈會(huì)有時(shí)閃一下,經(jīng)過檢查,線路是沒有問題的,至今還沒有解決
⑦ 關(guān)于下載和電源的問題
1.下載線與光立方的連接線:GND 接 GND5v或者VCC 接 5v或者VCC RXD 接 RXDTXD 接 TXD
2.電源:直接將下載線與光立方連接,轉(zhuǎn)USB
二、本次設(shè)計(jì)的收獲
在本項(xiàng)目的過程中,光立方的制作對(duì)焊接和布局提出了一定要求,其次是FFT的學(xué)習(xí)與應(yīng)用。經(jīng)過本次制作,進(jìn)一步加深了點(diǎn)陣的掃描控制,也學(xué)會(huì)了如何將理論聯(lián)系實(shí)際,把所學(xué)的書本知識(shí)應(yīng)用到實(shí)際運(yùn)用中去。每一次的項(xiàng)目制作,都讓自己有一種新的收獲,這便是經(jīng)驗(yàn)逐步積累的過程。