完整的word格式的光立方課設論文下載:
光立方.doc
(11.27 MB, 下載次數: 77)
2016-5-15 12:18 上傳
點擊文件名下載附件
光立方
下面是課設內容預覽:
總分=實物*50%+課程設計報告書*50%。
2.元器件明細表:
3.附圖: 1.整體電路圖:
2.PCB板圖:
3.作品照片:
目錄
第一章 引言.................1
1.1設計要求..................1
第二章 設計方案分析與論證....................2
2.1總體電路分析.....................2
2.2方案論證..................3
第三章 單元電路設計..................5
3.1單片機電路設計.................5
3.2時鐘電路設計.................5
3.3復位電路設計.................6
3.4驅動電路設計.................6
3.5 軟件設計.................8
第四章 實物制作..................10 4.1
前期準備.................10
4.2電路板的制作....................10
第五章 測試結果分析與設計體會.....................12
5.1系統調試與誤差分析..................12
5.2 總結及心得.....................15
參考文獻...................16
附錄.................17
第一章 引言 在當今信息化社會的高速發展過程中,大屏幕顯示已經從公共信息展示等商業應用向消費類多媒體應用滲透。隨著寬帶網絡的發展,數字化的多媒體內容將在信息世界中占據主流,新型的大屏幕顯示設備將代替傳統電視機成為人們享受信息和多媒體內容的中心。與傳統的顯示設備相比,這種未來的巨大需求讓LED大屏幕顯示技術成為眾人目光的焦點。LED顯示屏一般分為圖文顯示屏和視頻顯示屏,均由LED矩陣塊組成。動態圖文顯示屏可與計算機同步顯示漢字、英文文本和圖形;視頻顯示屏采用微型計算機進行控制,圖文、圖像并茂,以實時、同步、清晰的信息傳播方式播放各種信息,還可顯示二維、三維的動畫、錄像、電視、VCD節目以及現場實況轉播。不僅可以用于室內環境裝飾還可以用于室外環境信息傳播,具有投影儀、電視墻、液晶顯示屏無法比擬的優點。而且顯示畫面色彩鮮艷,立體感強,靜如油畫,動如電影,廣泛應用于交通運輸、車站、商場、醫院、賓館、證券市場、工業企業管理等公共場所。 隨著社會經濟的不斷進步,人們對LED顯示器的認識不斷加深,其應用領域越來越廣。目前正朝著更高亮度、更高耐氣候性、更高的發光密度、更高的發光均勻性,可靠性、全色化方向發展。 1.1設計要求 本次設計制作一個8*8*8的三維的發光二極管立方顯示體,能夠通過編寫程序來實現對每一個發光二級管的亮滅控制,從而可以顯示多種多樣的圖案。按照圖文運動的特點又可以分為閃爍、平移、旋轉、縮放等多種顯示模式。產生不同顯示顯示模式的方法,并不意味著一定要重新編寫顯示數據,可以通過一定的算法從原來的顯示數據直接生成。這樣程序書寫就不會過于繁瑣和重復,而且對核心控制器的內存空間要求不高。 借鑒單片機控制LED點陣顯示的原理,通過系統分析,確定該系統該具有哪些功能,有哪些模塊,各個模塊之間是怎樣連接,以及怎樣組合電路是最合理最簡單的,即硬件方案設計。編寫硬件電路的相對應軟件程序部分,利用仿真軟件對程序進行測試修改。電路系統焊接完畢后,測試整個的系統模塊的功能,看各個功能是否能正常運行,并依據實驗結果找出程序中的錯誤,改正這些錯誤至測試成功完成課程設計要求。
第二章 設計方案分析與論證 2.1 總體電路分析 2.1.1總電路工作原理 本設計是用STC125A60S2單片機做控制芯片的,由單片機上的P2口來控制8個鎖存器的鎖存端,以此決定數據的輸入和鎖存。光立方有8層8x8點陣,用8個引腳來當充當各層8x8點陣的“開關”(每層共陰)。再將64個燈陽極連到74hc573的輸出引腳上,每個74hc573控制8列LED。驅動采用了74hc573暫存的方法,來分別把64個燈的亮滅信息存到上面,然后再一起輸出到燈上,74hc573的64個輸出引腳控制前面所述每一個面的64個燈;而每層燈的陰極全連接在一起接入uln2803,由uln2803控制的每一個層燈。通過單片機主控芯片STC12C5A60S2來控制所有燈的亮滅,這樣512個LED每一個都有單獨的位置編碼,燈的亮滅可以自由控制。總體電路原理框圖如(圖2.1):
圖2.1
2.2方案論證 2.2.1電源電路的選擇 方案一:選擇采用5號電池作為3D光立方顯示系統的電源。 優點:移動性強,方便隨時使用。 缺點:該系統耗電量較大,需要長時間不間斷的工作。雖然采用電池供電能夠實現,但是這種方法不斷更換電池,造成了各種使用不便與環保問題。 方案二:采用三端集成穩壓器LM7805作為電源供電穩壓核心。 優點:選用LM7805穩壓器在功率問題上不僅滿足了系統需求,而且安全、方便和可靠。 缺點:電源體積大,移動性不強。 基于以上分析,決定選取LM7805三端穩壓器穩壓電路作為系統供電電源。 2.2.2核心控制芯片的選擇 方案一:單片機 。 優點:單片機擁有很強大的接口性能,集成了CPU、RAM和I/O口等電路,低成本、低電壓和低功耗是單片機的特點,使得單片機的市場非常之大,教學上使用的單片機更是非常多,為了適應各種應用,各種各樣的單片機出現,它們的性能可靠性,編程方便,開發成本低等各種優點都使得在教學,生產、民用、商業化等擁有非常多的市場。 缺點:ROM內存小,運行慢。 方案三:DSP 芯片。 優點: DSP 是數字信號處理器。它主要用于數字信號處理,在擁有非常多數據需要處理的系統下,DSP的能力會被無窮顯現出來,當遇見高密度,運算量非常之大等情況下,DSP非常好處理。相對于一般的單片機,DSP的處理速度會快上2倍以上,在信號處理領域上D SP能夠非常好的勝任工作,在光立方的大顯示數據量,DSP更是顯示它強大的功能。 缺點:需要模數轉換,受采樣頻率的限制,處理頻率范圍有限;數字系統由耗電的有源器件構成,沒有無源設備可靠。 基于以上分析,以上三種核心控制處理芯片都能夠勝任3D光立方顯示器的數據處理與控制,但是基于單片機的成本與技術難度較低,因此在權衡利弊之后決定選用的控制部分核心器件為單片機,單片機型號為STC12C5A60S2。 2.2.3列驅動電路的選擇 方案一:選取串口輸入并口輸出芯片74HC595, 優點:74HC595中擁有8位移位寄存器和一個存儲器,具有三態輸出功能、數據鎖存功能和數據輸出功能,最重要是它具有串行輸入并行輸出的特點。 缺點:但是在3D光立方顯示器,它依舊有不少的延遲時間。 方案二:采用鎖存器74HC573, 優點:74HC573是一種硅門CMOS器件并且帶有鎖存數據和能夠同步輸出數據;通過控制使能端口,來控制鎖存器鎖存數據并且控制數據鎖存保持的時間;當時鐘處于上升沿狀態下,8個74HC573同時正常工作,并且通過16個I/O口并行輸入數據到芯片里,并行傳輸數據時間比串行傳輸數據的延遲時間更加少,滿足設計要求。 綜合以上各方面的分析和比較,決定選取74HC573作為每一列的驅動芯片。 2.2.4層驅動電路選擇 光立方顯示器擁有512個LED,當它們有同時工作時,層面積聚電流隨之增大,所以需要把電流放大,提高驅動能力,驅動整個顯示正常工作。電流不夠而導致的部分LED不亮或出現亮度不夠的問題,會導致顯示信息出錯等問題。整個層面驅動電路的設計在整個系統起到舉足輕重的地位,以下有兩種方案: 方案一:采用5V繼電器來進行控制。 優點:可以使用5V繼電器來充當開關實現控制, 缺點:會加大成本還有電路設計的復雜程度,顯示器的重量也隨之增大。 方案二:采用達林頓管ULN2803作為層面驅動電路芯片。 優點: ULN2803的驅動電流可以達到500mA,能夠驅動層面的LED正常工作。測試結果穩定可靠,可以滿足設計要求。 基于以上分析,決定選取ULN2803達林頓管作為層面電路控制器。
第三章 單元電路設計
3.1單片機電路設計 單片機又稱微處理器,它是在一塊硅片上集成了CPU、ROM、定時器和多種I/O接口電路等電路的集成塊。單片機最小系統包括了單片機芯片、時鐘電路和復位電路。時鐘電路是用于產生STC12C5A60S2單片機正常工作的時鐘頻率,單片機的正常工作是在這種時鐘電路產生的是時鐘頻率信號的控制下,嚴格地按照時序運作。單片機的初始化是由單片機的復位電路控制的。硬件電路滿足復位時序要求,單片機進入從初始化工作狀態。單片機電路圖如(圖3.1)所示。
圖3.1 3.2時鐘電路設計 STC12C5A60S2單片機芯片的內部時鐘提供時鐘頻率方式是因內部設有一個振蕩器,這個振蕩器是由反向放大器構成的,而這個振蕩電路的輸入端與輸出端為別為XTAL1和XTAL2,如果在引腳XTAL1和XTAL2上外接晶振,使用32MHZ晶振率,需要兩個30pF電容值的電容連接,它們可以起到頻率微側的作用。時鐘電路如(圖3.2)所示。
圖3.2 3.3復位電路設計 單片機最小系統的復位電路也是必不可少的,當STC12C5A60S2單片機在 正常運行時,需要復位,也就是重新開始運行程序時,使單片機從初始狀態下重新工作,這個時候就需要復位電路了,所以復位電路也非常重要,單片機從初始值開始運行程序需要復位電路,當程序運行錯誤,或者進入死循環,這個時候也需要復位電路,只需要按下復位按鍵,使得RST引腳為高電平,這個時候STC12C5A60S2單片機就會從死循環跳出從程序初始值開始運行程序,上電復位與手動按鍵控制電平復位方式是最為常用的單片機復位方式,而這個顯示系統選用上電復位控制電平復位的方式。上電復位電平復位電路圖如(圖3.3)所示。
圖3.3 3.4驅動電路設計 3.4.1層驅動電路設計 ULN2803是本設計中的層面片選控制器電路的核心控制芯片。ULN2803是八重的達林頓管,1到8腳是8路輸入,18到11腳是8路輸出,驅動能力為500MA(V,使用時,引腳9接地,用來驅動感性負載,引腳10接負載電源,輸入電平為0V或5V,當輸入5V的電平時候,輸出達林頓飽和;輸入0V時候,輸出達林頓截止。輸出負載加在電源V+和輸出口上,當輸入高電平時候,輸出負載工作。ULN2803的引腳圖如圖3.4所示。
圖3.4 3.4.2列驅動電路設計 74HC573是一個八進制3態非反轉透明鎖存器(三態),是一種高性能硅門 CMOS器件,當使能(OE)為高時,Q 輸出。當鎖存使能端LE為高電平時,這些器件的鎖存對于數據是同步輸出。當鎖存使能變低時,符合建立時間和保持時間的數據會被鎖存。將隨數據(D)輸入而變。當使能為低時,輸出將鎖存在已建立的數據電平上。輸出控制不影響鎖存器的內部工作,即老數據可以保持,甚至當輸出被關閉時。當輸入的數據消失時,在芯片的輸出端,數據仍然保持。列驅動電路圖如圖3.5所示。
圖3.5 3.5 軟件設計 3.5.1主程序設計 光立方顯示器的軟件系統設計是通過模塊化的設計思路來進行程序的設計與開發的,整個程序設計采用的是C語言編程的方法。第一先進行顯示系統的實現功能的分析考慮,整個系統要實現的功能是能夠進行靜態顯示、動態顯示、模式轉換和上位機控制。通過按鍵控制程序,可以選擇不同的模式來進行顯示。通過打開上位機串口,能夠實現PC機控制光立方顯示。主程序的工作流程如圖3.6所示。
圖3.6 3.5.2顯示模塊的程序設計 光立方顯示器的顯示部分采用顯示機制是掃描的顯示方法,因為采用的是掃描機制,所以選擇單片機的數據從由低位到高位依次從數據輸入端口輸入,接著從鎖存器輸出端口輸出數據與鎖存器數據控制端口控制輸出顯示。光立方顯示程序流程圖如圖3.5.1所示。首先單片機把想顯示的圖案轉換為在相應在光立方上顯示的點的數據,在把顯示圖案的數據從單片機P0口輸出到相應的鎖存器,鎖存器接收這些數據,并通過控制端口,選擇輸出數據還是鎖存數據,接著又把下一組的數據依次送到片選的鎖存器進行輸出顯示,當所以的數據被正常輸出并顯示后,顯示程序退出,等待下一次的顯示數據到來。因為有8個鎖存器,有64引腳控制列的數據顯示,通過對應的控制端口的控制片選,由一個ULN2803控制每一層的數據顯示,形成了各種各樣的顯示效果。顯示模塊的程序設計如圖3.7所示。
圖3.7 第四章 實物制作 4.1 前期準備 提前了解8x8x8光立方的相關資料并學習和掌握相關的知識,掌握相關知識后對8x8x8光立方進行仿真,如果仿真不成功就找出問題并解決,如果仿真成功就進行下一步,仿真成功后把所需的元器件清單列出來并購買回來。 4.2電路板的制作 在前期工作都完成后,就進行電路板的制作。我這里用的是Altium Dsigner6.9軟件進行電路板的前期制作,在Altium Dsigner6.9把所有元器件都列出來,按照仿真成功的電路圖進行繪制,繪制成功后轉到pcb中進行排版,因為電路圖有點難度需要跳線。最終的pcb電路圖如圖4.2所示。
圖4.1
Pcb圖完成后就進行腐板,腐好的電路板如圖4.2所示。 圖4.2 接下來就進行焊接元器件。
第五章 測試結果分析與設計體會
5.1系統調試與誤差分析 5.1.1系統調試 電路測試:對焊接的每一個發光二極管進行必要的檢測,一個發光二極管的顯示故障導致的問題可能是程序或者是硬件,所以一開始就需要進行必要的發光二極管的檢測。方法:使用數字式萬用電表的紅表筆接二極管的正極,黑表筆姐二極管的負極,觀察二極管的發光情況。接下來對照電路圖與實際的電路板上的線路連線正常情況。比如說,各個點的焊接情況,線路的連通情況,電容的正負極,電源的供電極性等,在所有檢查完畢后在進行下一步通電檢測。通電檢測電路,通電后,把數字式萬用電表調到電壓檔,測量接入電源的電壓是否正常,如果不正常則立刻斷開電源,如果有元器件發燙等情況應立刻斷開電源并檢測各個點,看哪里出現短路情況,排除各種故障。 5.1.2測試結果與分析 模式一:
模式二:
模式三:
模式四:
模式五:
經調試可見在調試過程中發光二極管亮度有問題,3D顯示效果不是很明顯,后來經過觀察發現LED亮度有問題可能是限流電阻用的過大了,也可能是購買這種LED不適合在白天顯示。3D效果不明顯不原因可能是發光二極管在焊接過程中是焊得不是很好,出現了個別松動現象,不亮等元器件本身已經損壞問題,導致后面測試時顯示的畫面不是很立體。還有一問題就是在制板過程中由于沒有考慮周全導致在后期階段的操作出現了困難。 5.2 總結及心得 通過了這次的設計與制作,鞏固了自己對所學的知識和理論,對計算機應用系統有了大概的了解,并且掌握了基本的單片機軟件和硬件的開發方法,能夠提升對實際的單片機軟件和硬件開發的能力。同時,加強了我對實際遇到問題的分析能力和解決能力。系統的性能指標和運行的穩定性更是我關注的重點,以系統的穩定性和精確性為主的原則,采用了各種的優化方法,基本完成了設計規定的指標和要求,而且對于某些指標進行了功能擴展與優化。在制作課程設計過程中還要非常感謝我身邊的同學,有了他們的幫助我才得以這么順利的完成了我的設計,同時我也從他們的幫我的過程中學到了很多知識。 參考文獻 [1] 張瑞玲.單片機原理與應用[M].西北工業大學出版社,2010,12 [2] 康華光.電子技術基礎(數字部分)[M].高等教育出版社,2014,1 [3] 陳海宴.51單片機原理及應用—基于Keil C與Proteus[M].北京航空航天大學出版社,2013.3 [4] 譚浩強.C語言設計[M].清華大學出版社,2010,7 [5] 郭天祥.新概念51單片機C語言教程[M].北京,電子工業出版社,2009,46-79. [6] 姚永平等,STC12C5A60S2系列單片機器件手冊[M]. [7] 張毅剛.基于proteus單片機課程的基礎實驗與課程設計[M].北京,人民郵電出版社,2012.32-99 [8] 阮永松.打造音樂頻譜時鐘.無線電[J].2012-6(第597期),44-47
附錄
1.主要程序
- #include
- #include
- #define uchar unsigned char
- #define uint unsigned int
- uchar display[8][8];/*rank:A,1,2,3,4,I,心,U*/
- void sinter()
- {
- IE=0x82;
- TCON=0x01;
- TH0=0xc0;
- TL0=0;
- TR0=1;}
- void delay5us(void) //誤差 -0.026765046296us STC 1T 22.1184Mhz
- {
- unsigned char a,b;
- for(b=7;b>0;b--)
- for(a=2;a>0;a--);
- }
- void delay(uint i)
- {
- while (i--){
- delay5us();}//12t的mcu 注釋這個延時即可
- }/*To judge the num bit*/
- uchar judgebit(uchar num,uchar b)
- {
- char n;
- num=num&(1<<b);
- if (num)
- n=1;
- else
- n=0;
- return n;
- }
- /*To figure out the round number*/
- uchar abs(uchar a)
- {
- uchar b;
- b=a/10;
- a=a-b*10;
- if (a>=5)
- b++;
- return b;
- }
- /*To figure out the absolute value*/
- uchar abss(char a)
- {
- if (a<0)
- a=-a;
- return a;
-
- }
-
- /*The function can comparat the character.
- And remove the big one to the back.*/
- void max(uchar *a,uchar *b)
- {
- uchar t;
- if ((*a)>(*b))
- {
- t=(*a);
- (*a)=(*b);
- (*b)=t; }
- }
- /*The function is to figure out the max number and return it.*/
- uchar maxt(uchar a,uchar b,uchar c)
- {
- if (a<b)
- a=b;
- if (a<c)
- a=c;
- return a;
- }
- void trans(uchar z,uint speed)
- {
- uchar i,j;
- for (j=0;j<8;j++)
- {
- for (i=0;i<8;i++)
- {
- display[z][i]>>=1;
- }
- delay(speed);
- }}
- void print() interrupt 1
-
- {
-
- uchar i;
-
- static uchar layer=0;
-
- P1=0;
-
- for (i=0;i<8;i++)
-
- {
-
- P2=1<<i;
-
- delay(3);
-
- P0=display[layer][i];
-
- delay(3);
-
- }
-
- P1=1<<layer;
-
- if (layer<7)
-
- layer++;
-
- else
-
- layer=0;
-
- TH0=0xc0;
-
- TL0=0;
-
- }
-
復制代碼
|