基于单片机的光立方设计
生活随笔
收集整理的這篇文章主要介紹了
基于单片机的光立方设计
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
基于單片機的光立方設計
目 ?錄
摘要 1
Abstract 2
前言 3
第1章 ?緒論 4
第1.1節 開發背景 4
第1.2節 本文所作的工作 4
第2章 ?系統總體方案設計 5
第2.1節 光立方控制原理 5
第2.2節 系統總體硬件方案選擇 6
2.2.1核心控制器 6
2.2.2 電源電路 7
2.2.3 層面控制驅動電路 7
2.2.4 LED燈選型 7
2.2.5編譯器選擇 8
第3章 系統硬件電路設計與實現 9
第3.1節硬件電路設計 9
3.1.1 單片機介紹 9
第3.2節 總控制電路設計 10
3.2.1 復位電路 11
3.2.2 晶振電路 12
3.2.3 供電系統及電源接口設計 13
3.2.4 層控制電路設計 13
3.2.5 行列選擇電路設計 14
3.2.6 程序下載電路設計 14
第3.3節 LED 光立方焊接方法 15
第4章 系統軟件設計 18
第4.1節 軟件編譯流程 18
第4.2節 軟件設計流程 22
第4.3節 顯示程序設計 23
4.3.1 光立方動態顯示原理 23
4.3.2 顯示程序的設計 23
第5章 系統調試與分析 25
第5.1節 硬件調試 25
第5.2節 軟件調試 25
結論 26
參考文獻 27
致 ?謝 28
附錄 光立方實物圖 29
?
摘要
LED光立方是由512個LED燈組成的立方體,其有8行8列8層LED燈構成。光立方使用的主控芯片宏晶科技公司生產的STC89C52單片機,使用ULN2803達林頓管芯片作為LED燈的層驅動電路,使用74HC573鎖存器芯片作為LED燈的列驅動電路。整篇文章介紹了LED光立方的原理,方案選擇、電路設計和軟硬件調試等內容,完整的介紹了整個系統的制作過程。整個系統運行起來,能呈現出一個3D立體的動畫效果,從而顯示出更加豐富多彩的畫面,打破了以前傳統的平面顯示方案,為將來LED燈技術發展提供了方向。
關鍵詞:STC89C52,光立方,LED,ULN2803,74HC573
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
?
Abstract
LED Light Cube is a cube composed of 512 LED lights, which has 8 rows of 8 columns and 8 layers of LED lamp. The main chip used by the optical cube Acer Technology STC89C52 microcontroller, the use of ULN2803 Darlington tube chip as a layer of LED lamp drive circuit, the use of 74HC573 latch chip as a column LED driver circuit. The whole article describes the principle of LED light cube, program selection, circuit design and hardware and software debugging and other content, a complete introduction to the whole system of the production process. The whole system to run up and can show a 3D three-dimensional animation, which shows a more colorful picture, breaking the previous flat-panel display program for the future development of LED light technology provides a direction.
Keywords: ?STC89C52, light cube, LED, ULN2803, 74HC573
?
前言
LED點陣早已融入到我們生活中,走在大街上到處都可以看見顯示各種文字、圖案的LED顯示屏,人們早已看慣了那種平面顯示的廣告了。如何對LED屏進行創新,重新吸引人們的眼球呢?聯想到現在的3D電影,3D電影給人們帶來了視覺上的享受,如身臨其境的感覺。從圖書館和網上查找LED燈的資料,了解到LED燈的技術特點:一是使用壽命長,單個LED燈壽命長達10萬小時,二是節能,LED燈功耗非常低,三是基本沒有電磁輻射。 LED燈還具有比數碼管具有實用、便宜、高亮度等特點,并且做出了LED顯示屏非常耐用。 LED燈具還具有低工作電壓、低功耗、高亮度、長壽命、性能穩定、小型化和抗沖擊等優點。目前,光立方已經用于娛樂室、會議室、家庭、大型音樂會、地標等城市布局和裝飾的地方,也可以用于更廣闊的領域,具有廣闊的應用前景。
第1章 ?緒論
第1.1節 開發背景
在09年10月1日,建國60周年的國慶晚會上,導演像人們展示了美輪美奐的光立方,該光立方由4028顆發光樹組成。其漂亮的造型,優美的表演,給人們留下了深刻的映像。而傳統的LED顯示屏只能顯示寫平面文字和圖案,全國有好多家生產傳統顯示屏的廠家,但是生產的顯示屏都是大同小異,沒有創新。設計將打破傳統的屏幕顯示方法,LED光立方顯示色彩鮮艷,立體感強,可廣泛應用于大型晚會、演唱會、廣告公司、酒店和車站等公共場所,相比于傳統顯示屏,肯定會深受廣大人民群眾的歡迎。
第1.2節 本文所作的工作
本次設計一個由512個LED燈組成的8*8*8光立方,整個設計的電路由六部分組成:電源電路、單片機最小系統電路、程序下載電路、行驅動電路、列驅動電路和顯示電路等。主控芯片選用宏晶科技公司生產的STC89C52單片機,電源芯片采用LM2596-5 DC-DC降壓芯片,列驅動電路采用8個74HC573鎖存器芯片,行驅動電路采用ULN2803達林頓管芯片,顯示電路為512個LED燈組成的8*8*8立方體。設計還包括電路焊接、程序編寫及軟硬件的調試燈工作。
設計的主要內容:
1、選擇每個模塊的設計方案。
2、設計每個模塊的工作電路。
3、焊接電路。
4、編寫程序,實現光立方需要顯示的視覺效果。
第2章 ?系統總體方案設計
第2.1節 光立方控制原理
LED光立方由512個LED燈組成,其每層有8行8列總共64個LED燈,總共有8層。每層的64個LED燈陰極接一起然后與8個74HC573鎖存器芯片的輸出端相連,然后每層陽極接到一起,與UNL2803達林頓管芯片的輸出端相連。
其顯示原理如下,先通過單片機控制ULN2803芯片的某個引腳輸出高電平,控制光立方的第一層,然后用控制74HC573鎖存器芯片來控制哪幾列的燈亮,然后給個5mS的延時,在把ULN2803芯片的另外引腳輸出高電平,然后在來控制74HC573鎖存器芯片。如此快速的切換芯片的高低電平輸出,就達到了動態顯示的效果。其中有個人眼視覺暫留原理,人眼的分辨率是每秒24幀,當我LED燈切換速度足夠快,在人眼看了,那就是一立體的畫面了。
圖一、光立方立體效果圖
?
圖二、光立方面效果圖
本節主要講系統的設計方案論證,從多方面角度對系統所使用的芯片進行分析比較,最后經仔細研究確定使用的器件、編程軟件和電路圖繪制軟件的選擇。
第2.2節 系統總體硬件方案選擇
2.2.1核心控制器
控制器是整個系統的核心部分,其功能控制I/ O輸出高低電平,從而控制LED燈的亮滅,實現各種不同的動畫效果。其常用的電子設計控制芯片有單片機和FPGA。
方案一:單片機
單片機是一種集成電路芯片,內部集成了ROM、RAM、定時器等很多功能,在日常生活中,我們常用的電子產品、家用電器里面都離不開單片機的控制。目前單片機種類眾多,型號有8位單片機,16位單片機,32位單片機和64位單片機。有些單片機上集成了A/D,D/A,LCD驅動,USB驅動、SD卡驅動、函數發生器,PWM波等等功能,而且他們價格高低不同,開發者可以根據項目的需求選擇合適價格和功能的單片機。
方案二:FPGA
FPGA是一種可以編程的硬件芯片,使用Verilog語音能對它進行編程,能夠實現很多硬件的功能。FPGA可以實現硬件并行工作,在實時測量和控制以及高速應用領域具有光明的未來。但是FPGA開發難度大,成本高,LED光立方系統中用FPGA來開發很不劃算。
綜上所述,兩種方案都可以通過編程實現對光立方的控制,但是單片機的技術門檻低,只需要懂C語言就能進行開發,而且單片機開發成本低,一般芯片只需要幾塊錢就能買到,相比FPGA動輒幾百幾千的芯片,其成本可以忽略不計了。現在市場上常用的單片機主要有8位單片機MCS-51、STM8 和STC,16位單片機 MSP430,32位單片機STM32等。目前使用最廣泛的單片機是ATMEL公司的51系列單片機,其產品硬件結構合理,指令系統規范,很多教材都是以51系列單片機作為模板來講解的。綜上所述,該系統使用STC89C52單片機來控制。
2.2.2 電源電路
方案一:LED光立方系統使用LM7805線性穩壓電路給系統供電,先通過適配器把市電降壓輸入到電路,然后在把降壓后的電源輸入到LM7805線性穩壓電路為整個系統供電。LM7805芯片的優點是電路簡單,工作穩定,但是降壓的效率比較低,只有50%左右,發熱量大,考慮到系統功耗會比較大,長時間工作會浪費電能,因此不采用此芯片
方案二:LED光立方系統使用LM2596-5 DC-DC降壓電路給系統供電,先通過適配器把市電降壓輸入到電路,然后在把降壓后的電源輸入到LM2596-5降壓為整個系統供電。LM2596-5的降壓效率為85%,效率高,滿足系統的功耗要求。
綜上所述,選擇LM2596-5降壓芯片加適配器的方式為光立方系統供電。
2.2.3 層面控制驅動電路
方案一:采用八個NPN三極管(型號:S8050),使用三極管來放大電流,雖然這種方法可以達到驅動LED燈層的目的,但是此方法是才有的分立元器件,增加了板子的面積帶來成本的增加,而且布線麻煩,焊接時也容易出錯,穩定性差,因此不采用此方案。
方案二:使用芯片ULN2803,該芯片內部有八個NPN型達林頓管,能驅動大電流設備,可以滿足512個LED燈的功耗。而且用一個芯片替代八個NPN三極管,不僅體積變小了,節約了成本,簡化了電量,還提高了系統的穩定性。
綜上所述,選擇ULN2803芯片來作為層驅動電路。
2.2.4 LED燈選型
方案一:使用草帽型LED燈,但是這種燈光源發散很嚴重,點亮時會影響周圍的LED燈,會降低視覺效果,影響光立方整體顯示的性能。
方案二:使用方形高亮LED燈,這種燈工作電流為2mA至10mA。方形LED燈聚光效果好,即使所有燈全部工作,也不會影響整體顯示效果。
綜上所述,采用方形的LED燈來顯示。
??
圖2-2 左邊為方形LED燈,右邊為草帽型LED燈
2.2.5編譯器選擇
方案一:使用偉福WAVA600編譯器,該編譯器是專門用來編譯匯編程序的軟件,同時該軟件有個配套使用的仿真器,該仿真器可以當做單片機來使用,還可以通過偉福軟件來選擇需要仿真的單片機型號。偉福軟件可以對匯編程序進行單步調試,方便查找程序問題。但是該軟件只能使用匯編來編寫,匯編程序本身就比較復雜難懂,需要熟悉每條指令的含義,對于編寫光立方程序,難度太大了。而且配套的仿真器價格比較貴,一套好的仿真器價格需要1000多,成本太高。
方案二:使用Keil編譯器,Keil是由ARM公司開發的一款單片機編程的軟件,該軟件支持51系列、stm32系列等多種型號單片機,支持多種該軟件支持C語音開發和匯編語音開發,或者C語音和匯編語音混合開發。該軟件能支持單片機軟件仿真和軟硬件在線實調試,但是對于51系列單片機只支持軟件仿真,51系列單片機不支持在線調試。
綜上所述,選擇Keil編譯器來編寫程序,Keil使用方便,功能強大,且C語音可讀性和可移植型都比匯編語音強。
2.2.6電路設計軟件選擇
方案一:使用Multisim軟件來設計電路圖,該軟件是用來進行模擬和數字電路仿真的,可以用來繪制原理圖,但是這款軟件的功能是偏仿真使用的,對繪制電路圖的功能不是很強大。
方案二:使用Altium Designer軟件來設計電路圖,該軟件不僅可以制作原理圖,設計PCB電路板,而且可以對原理圖電路進行仿真調試,在實際工作中,很多公司都用這款軟件來設計電路,深受廣大電子工程師的喜愛。
綜上所述,使用Altium Designer軟件來設計本系統電路圖。
第3章 系統硬件電路設計與實現
第3.1節硬件電路設計
系整個系統由STC89C52單片機、電源模塊、復位電路、時鐘電路、行驅動電路、列驅動電路和512個LED燈組成,其原理圖如圖3-1所示。
?
圖3-1 系統原理圖?
3.1.1 單片機介紹
STC89C52單片機是宏晶科技公司研發的一款高性能8位單片機。STC89C52單片機使用的是51的內核,它的指令集和I/O口與MSC-51單片機是完全兼容的。
STC89C52系列單片機主要特性如下:
(1)工作電壓:5 V
?(2)用戶應用程序空間(Flash)為8K。
(3)隨機存儲控件(RAM)為512字節。
(4) 有32個通用I/O端口,單片機復位后,所有的I/O口的狀態,是一個準雙向口/弱上拉狀態。P0口為開漏輸出,用作地址擴展總線時,不需要加上拉電阻,用作普通I/O 口使用時,需要加上拉電阻。
(5)單片機總共3個16位定時器/計數器,分別是定時器T0、T1、T2。
單片機STC89C52引腳圖如圖3-2所示:
?
圖3-2 STC89C52引腳圖?
單片機P0口是一個漏極開路的8位雙向I/O口。在作為輸出端口時,每個引腳需要外接一個上拉電阻才能輸出高電平,否則只能輸出高組態,會影響電路正常工作。
P1、P2、P3口是一個帶內部上拉電阻的8位雙向I/O口。
P3口除作為一般I/O口外,還有其他一些復用功能,如表3-1所示。P3口除了具有MSC-51單片機功能外,其P3.0、P3.1口在STC系列單片機里面還具有下載程序的功能。
表3-1 P3口引腳復用功能
第3.2節 總控制電路設計
圖3-3為單片機最小系統原理圖。總控制電路主要由電源電路、復位電路和晶振電路組成。單片機STC89C52加電時,需要進行復位操作,復位后STC89C52的工作環境配置成初始狀態,并從程序的開始進行運行。RST引腳接復位電路,本系統采用12MHz的外部晶振電路。
?
圖3-3 單片機最小系統原理圖
3.2.1 復位電路
STC89C52單片機是高電平復位,至少需要給單片機的復位腳提供24個晶振震蕩周期的時間,單片機才能復位。
單片機常用的復位電路有兩種,一種是手動復位,另一種是上電復位。
上電復位電路是單片機的復位腳接一個1uF電容到電源上,同時接一個10K電阻到地。當系統上電以后,電源給電容充電,電路導通,單片機的復位腳是高電平,單片機復位。然后等電容充滿電后,電容就相當于短路了,單片機的復位腳接地是低電平,單片機就能工作了。
手動復位是在上電復位電路的基礎上再電源和復位腳之間接一個按鍵(也就是在電容上并一個按鍵)。在單片機正常工作時,如果系統需要復位,就把此按鍵按下。這時電容短路,單片機復位腳是高電平,系統復位。等系統復位后,在把按鍵松開,電源和復位腳之間又斷開了,復位腳為低電平,單片機正常工作。
本電路采用的是手動復位電路,其復位電路如圖3-4所示。
?
圖3-4 復位電路原理圖
3.2.2 晶振電路
每個單片機運行都需要一個基準的時鐘源,單片機所有的指令執行時間都是以這時鐘源來決定的,時鐘頻率越高,單片機執行的速度就越快。但是單片機也有個上限時鐘頻率,STC89C52的最快時鐘頻率是40MHz。
單片機的時鐘源我們常稱為晶振,晶振可以分為無源晶振電路和有源晶振電路。有源晶振只需要給晶振提供電源,晶振就能自己起振產生時鐘頻率,然后輸入到單片機的XTAL0腳,單片機就能工作了。無源晶振它本身不能自己起振,需要外接電路才能起振工作。一般是在晶振兩端接兩個20pF的小電容,然后把晶振兩端分別接到單片機的18腳和19腳(即XTAL0和XTAL1兩個引腳),在單片機上電后,晶振與單片機內部的震蕩電路連接到一起,晶振電路就能夠起振,單片機就能正常工作。
本電路采用的是無源晶振,使用一個12MHz的晶振加兩個20pF的電容,接到單片機的XTAL0和XTAL1兩個引腳上,晶振電路如圖3-5所示。
?
? ? ?圖3-5 復位電路原理圖
3.2.3 供電系統及電源接口設計
本系統供電方式使用12V的電源適配器,先把市電降到12V,然后通過DC-DC降壓芯片,把12V電源降壓成5V電源。5V電源一方面用來給單片機最小系統供電,另外一方面給ULN2803達林頓管、74HC573鎖存器芯片供電和LED燈供電,電源電路如圖3-6所示。
?
圖3-6 系統供電原理圖
LM2596-5芯片1號腳如電源輸入端,2號腳為輸出端,3號腳和6好腳接地,4號腳接電源輸出反饋,L1電感為儲能電感,D2二極管為續流二極管,整個電路上電以后,電路中的電容是整流濾波用的,就能把12V電壓將到5V去。
3.2.4 層控制電路設計
UNL2803達林頓管芯片用來控制光立方的層亮滅,單片機的P3.0~P3.7分別接到ULN2803的1~8號腳,ULN的11~18號腳接一個限流電阻后接到光立方的沒一層共陽引腳上。如果單片機的P3口輸出低電平時,ULN2803芯片內部的達林頓管截止,OUT腳輸出低電平。如果單片機的P3口輸出高電平是,ULN2803芯片內部的達林頓管導通,輸出高電平,然后驅動LED燈亮。UNL2803層驅動如圖3-7所示。
?
圖3-7 ULN層驅動原理圖
3.2.5 行列選擇電路設計
電路采用8個74HC573鎖存器芯片來控制LED每層哪些行列的燈亮滅。單片機的P1.0~P1.7口分別與8個74HC573鎖存器芯片的每個使能端口相連,用來控制選擇對應的74HC573工作,然后單片機的P0.0~P0.7口與每個74HC573鎖存器芯片D0~D7腳相連,74HC573的O0~O7與LED每層的行列相連。74HC573原理如圖3-8所示。電路設計時,在每個74HC573芯片的電源和地之間,都加了一個陶瓷電容,用了濾除電源里面的高頻干擾,增加芯片的穩定性。
?
圖3-8 行列控制原理圖
3.2.6 程序下載電路設計
STC系列的單片機都是采用單片機的P3.0和P3.1兩個接口來下載程序到單片機的,因此把STC89C52單片機的兩個引腳引出來,然后在與串口模塊相連,注意串口模塊與下載接口相連時,接線順序是模塊電源與接口電源相連,模塊地與接口地相連,模塊的RX與接口的TX相連,模塊的TX與接口的RX相連。其程序下載電路如圖3-9所示。
?
圖3-9 程序下載電路原理圖
第4章 LED 光立方焊接
第4.1節 LED 彎曲方法?
LED光立方在焊接時,為了整體的美觀性,使用LED燈的引腳來進行搭接,也就是直接把LED燈引腳首尾焊接到一起,而不用額外的器件來做支架。
為了方便焊接和整體的美觀性,將所有LED燈的陰極用鉗子彎曲90度,如圖3-10所示。
圖4-1 LED燈彎曲效果圖
第4.2節 LED 線焊接方法?
找塊泡沫板,在上面畫出面積大小為15*15cm的區域,在這區域里面孔均勻的打8*8總共64個點,在根據LED的大小來打孔。然后把用鉗子弄好的LED燈放八個一排,插入到打好的孔內,在把8個LED燈的陽極焊接到一起,如此重復焊接,總共需要焊64條LED燈。8個LED燈焊接效果如圖3-11所示。
圖4-2 ?LED一排效果圖
第4.3節 LED 面焊接方法?
把焊接好的LED燈燈條擺在桌子上,來進行LED陰極的焊接,控制好LED直接的距離。如此重復焊接,總共需要焊8個LED層面,一層LED的焊接圖如圖3-12所示。
圖4-3 ?LED一層效果圖
第4.4節 LED 立方體焊接方法?
先在洞洞板上完成單片機、電源、ULN2803和74HC573芯片的焊接,然后在焊接LED燈的固定腳,固定腳直接的間距要跟前面泡沫板設計的間距一樣,否則LED燈是插不上去的。
然后將所有焊好的LED燈層面垂直的插入到洞洞板上,把每一層的陽極陰極焊到一起,在通過8跟導線把每層的陽極接到板子的ULN2803輸出陰極上,由面到體的效果圖如圖3-13。
圖4-4 ?LED立方體效果圖
第5章 系統軟件設計
第4.1節 軟件編譯流程
1、本次設計使用的編程軟件是ARM公司開發的Keil uVision4。先從網上下載Keil軟件,在對其進行破解,如果不對軟件進行破解,軟件會對代碼的大小進行限制,當代碼超出限制范圍,程序就會報錯,因此需要先對其破解后在使用。
?
圖4-1 ?keil軟件破解
2、軟件破解后,先點擊軟件上方的Project,然后在點擊new 按鈕,就會彈出圖4-2所示界面,把工程放到一個文件夾里面,并設置一個名字。
?
圖4-2 ?新建工程界面
3、工程建好以后,軟件會彈出圖4-3所示界面,用來選擇單片機型號,本設計采用的是STC89C52單片機,它的資源跟AT89C52單片機型號是差不多的,在這里選擇AT89C52單片機即可。
?
圖4-3 ?選擇單片機型號界面
4、在單片機型號選好以后,我們就可以來寫程序了,先要新建一個后綴為“.c”的文件,我們所有的程序都是在這個文件里面編寫的。點擊軟件左上角的新建文件按鈕,然后點擊保存按鈕,把該文件保存到剛才建立的工程里面,文件名寫為“main.c”。
?
圖4-4 ?新建main.c文件
5、文件建好以后,點軟件左邊圖4-5所示地方,把剛才新建的“main.c”文件添加到工程中去。
?
圖4-5 ?添加main.c文件到工程
6、一切準備就緒后,就可以寫程序了,在程序寫好以后,點擊軟件上的編譯按鈕,軟件就會對程序自動進行編譯,同時會把編譯的結果顯示在軟件的下方。當編譯出錯,就根據編譯的錯誤提示來進行程序修改,知道程序完全編譯通過為止。
?
圖4-6 ?新建main.c文件
7、程序在編譯完成后,點擊軟件Target Option按鈕。再點擊Output按鈕,把Create HEX File給勾選上,這個地方是讓軟件把程序編譯后的結果生成為.Hex文件,這個文件就是我們需要的程序文件,通過燒寫工具把這個文件燒入單片機里面,單片機就能運行了。
?
圖4-7 ?新建main.c文件
8、在編譯好程序后,把串口模塊一端接到單片機的程序下載口,另一端接到電腦上,然后打開STC-ISP軟件,按下圖4-8進行配置,然后就可以把程序下載到單片機里面了。
?
圖4-8 程序燒寫軟件
第4.2節 軟件設計流程
單片機程序運行的流程如下,首先是對系統進行初始化,主要是對T0定時器的初始化,T0定時器主要是用來給系統定時使用的。然后是對光立方初始化,主要是對控制ULN2803芯片和74HC573鎖存器芯片的I/O口進行初始化,然后對跟顯示相關的數組進行賦值。燈初始化完成以后,單片機就會進入死循環,不斷的切換顯示的圖片和動畫效果。主程序的流程圖如圖4-9所示。
?
圖4-9 主程序流程圖
第4.3節 顯示程序設計
4.3.1 光立方動態顯示原理
單片機每次只能給一層上面的一個74HC573鎖存器寫數據,而整個系統由8個鎖存器和8層,要想讓人眼看到一個立體畫面,就需要單片機給74HC573寫完數據后,延時段時間,馬上給下一個74HC573寫入數據,如此重復,而且速度要快,才能看到一個立體的畫面。
4.3.2 顯示程序的設計
? ? ??
?圖4-10 LED動態顯示流程圖
顯示動畫,首先要把要顯示的74HC573鎖存器的片選選中,然后把數據輸出到P0,74HC573鎖存器就是把數據顯示出來,然后單片機選中下一個74HC573鎖存器的片選,在把新的數據輸出到P0口,如此操作,直到把所有要顯示的數據都輸出到P0口,就顯示完成了。
第5章 系統調試與分析
第5.1節 硬件調試
5.1.1 LED燈測試
? LED燈在焊接過程中很容易別烙鐵的靜電焊壞,為了防止烙鐵的靜電干擾,在焊接過程中,需要把烙鐵頭接地。同時為了確保每個LED燈都是好的,把每8個LED燈焊成一條,然后用萬用表測試燈是不是好的,如果有LED燈不亮,就用烙鐵焊下來,重新換個新燈。
5.1.2 在整個系統焊接完成以后,不要急于上電,以免短路燒壞芯片。要先檢查板子看有沒有短路、短路、虛焊的地方。在檢查確認沒有問題后,在上電試下。
第5.2節 軟件調試
在硬件全部焊接完成以后,就按照第4章寫的方法來把代碼燒寫到STC89C52中。先編寫程序,把所有ULN2803輸出高電平,然后把所有的74HC573鎖存器輸出低電平,讓所有的LED燈都亮 ,來測試檢測電路和所有的燈是不是正常的。
1、測試中發現燈都沒有亮,檢查程序,發現程序里面定義的引腳和電路中使用的引腳不一樣,在修改引腳定義后,所有燈能正常亮了。
2、在程序編寫好后,測試動畫效果,發現有兩層燈是同時亮的,檢查后發現原來是ULN2803芯片有兩個腳短路了,在把他們重新焊接以后,測試就正常了。
結論
經過一個多月的設計,終于是把整個光立方系統完成了,整個制作過程中遇到困難多的數不勝數,其中的汗水與快樂只有自己能體會。當看著自己親手做的第一個作品,心里還是挺自豪的。
此次設計,把我在課堂上所學到的單片機知識、C語言知識、模電知識和數據知識都用到了。使我對自己所學的知識有了深刻的理解,鞏固了大學四年所學的知識,為我將來畢業后工作,打下了堅實的基礎。
在選了光立方這個題目后,我是有些茫然的,不知道怎樣開始設計。在老師的指導下,我先從網上搜集資料,看別人是怎樣制作光立方的。先找資料理解光立方的工作原理,在原理理解了后,在自己動手來設計原理圖。但是之前沒有使用過Altium Designer 09這軟件,就在網上找視頻資料,對著視頻來學習怎樣畫原理圖,怎樣設計電路。軟件學好了以后,就找資料來設計原理圖,對有些模塊電路不理解的地方,我是找同學幫忙分析電路。
原理圖設計出來后,就是購買材料,然后焊接電路了。512個LED燈焊起來可不是件容易的事,經常會把LED燈給焊壞,然后需要把它拆了在重新焊,焊燈就花了好長的時間才完成。燈焊好了,就是焊芯片了,那么多的導線,經常是焊著這里斷了那里,就這么一點一點的給焊完了。
硬件搭好以后,就需要寫程序來進行調試了。Keil編程軟件之前也沒有使用過,還是先從學習軟件開始。怎樣建工程,怎樣編譯程序,怎樣解決程序里面的錯誤。還好網上有些好心人分享了他們制作光立方的程序,我把他們的程序下載下來,然后根據自己的引腳來進行修改,調試了幾天,程序就跑通了,光立方可以顯示圖案了。
通過這次的畢業設計,我理解到,光學習理論,不實踐是不行的,只有把理論運用到實踐中,才能發揮出所學知識的價值。
?
參考文獻
[1] ?姜志海,黃玉清,劉連鑫. 單片機原理及應用(第2版)[M]. 電子工業出版社, 2009
[2] ?魏澤鼎. 單片機應用技術與實例[M]. 電子工業出版社, 2005
[3] ?張洪潤,張亞凡. 單片機原理及應用[M]. 清華大學出版社,2005
[4] ?李玉峰. MCS-51系列單片機原理與接口技術[M]. 人民郵電出版社, 2004
[5] ?馬忠梅. 單片機的C語言應用程序設計[M]. 北京航空航天大學出版社, 2007
[6] ?閻石. 數字電子技術基礎(第四版) [M]. ? 高等教育出版社,1998?
[7] ?譚浩強. C語言程序設計(第四版)[M]. 清華大學出版社,2010?
[8] ?谷樹忠.劉文洲.姜航. Altium Designer教程[M].電子工業出版社出版,2012
[9] ?周立功. 單片機實驗與實踐教程[M]. ?北京航空航天大學出版社,2006
[10] 黃智偉. 全國大學生電子設計競賽電路設計[M]. 北京航空航天大學出版社,2011
?
致 ?謝
本次畢業設計的完成是在導師的細心指導以及同學們的幫助下進行的。從最開始的選題、寫任務書、寫開題報告、搜集資料,到最后的論文成形,都是老師一步一步的指導我,花費了周老師大量的時間,在這里我要向周老師表示由衷的感謝。
在完成論文的過程中我還要感謝同學們的對我的支持,是你們在我平時設計中幫助我查找資料,一起探討問題,解決問題,對我寫的內容提出建議,幫助我解決硬件和程序中遇到的問題,讓我能夠如此短的時間內完成系統的設計和焊接和調試。在整個畢業設計制作過程中,我得到了很大的鍛煉和成長,會自己去思考問題、解決問題,這對我以后的工作會有很大幫助,我將受益終身。
附錄 光立方實物圖
圖一、光立方整體實物圖
圖二、光立方工作實物圖
目 ?錄
摘要 1
Abstract 2
前言 3
第1章 ?緒論 4
第1.1節 開發背景 4
第1.2節 本文所作的工作 4
第2章 ?系統總體方案設計 5
第2.1節 光立方控制原理 5
第2.2節 系統總體硬件方案選擇 6
2.2.1核心控制器 6
2.2.2 電源電路 7
2.2.3 層面控制驅動電路 7
2.2.4 LED燈選型 7
2.2.5編譯器選擇 8
第3章 系統硬件電路設計與實現 9
第3.1節硬件電路設計 9
3.1.1 單片機介紹 9
第3.2節 總控制電路設計 10
3.2.1 復位電路 11
3.2.2 晶振電路 12
3.2.3 供電系統及電源接口設計 13
3.2.4 層控制電路設計 13
3.2.5 行列選擇電路設計 14
3.2.6 程序下載電路設計 14
第3.3節 LED 光立方焊接方法 15
第4章 系統軟件設計 18
第4.1節 軟件編譯流程 18
第4.2節 軟件設計流程 22
第4.3節 顯示程序設計 23
4.3.1 光立方動態顯示原理 23
4.3.2 顯示程序的設計 23
第5章 系統調試與分析 25
第5.1節 硬件調試 25
第5.2節 軟件調試 25
結論 26
參考文獻 27
致 ?謝 28
附錄 光立方實物圖 29
?
摘要
LED光立方是由512個LED燈組成的立方體,其有8行8列8層LED燈構成。光立方使用的主控芯片宏晶科技公司生產的STC89C52單片機,使用ULN2803達林頓管芯片作為LED燈的層驅動電路,使用74HC573鎖存器芯片作為LED燈的列驅動電路。整篇文章介紹了LED光立方的原理,方案選擇、電路設計和軟硬件調試等內容,完整的介紹了整個系統的制作過程。整個系統運行起來,能呈現出一個3D立體的動畫效果,從而顯示出更加豐富多彩的畫面,打破了以前傳統的平面顯示方案,為將來LED燈技術發展提供了方向。
關鍵詞:STC89C52,光立方,LED,ULN2803,74HC573
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
?
Abstract
LED Light Cube is a cube composed of 512 LED lights, which has 8 rows of 8 columns and 8 layers of LED lamp. The main chip used by the optical cube Acer Technology STC89C52 microcontroller, the use of ULN2803 Darlington tube chip as a layer of LED lamp drive circuit, the use of 74HC573 latch chip as a column LED driver circuit. The whole article describes the principle of LED light cube, program selection, circuit design and hardware and software debugging and other content, a complete introduction to the whole system of the production process. The whole system to run up and can show a 3D three-dimensional animation, which shows a more colorful picture, breaking the previous flat-panel display program for the future development of LED light technology provides a direction.
Keywords: ?STC89C52, light cube, LED, ULN2803, 74HC573
?
前言
LED點陣早已融入到我們生活中,走在大街上到處都可以看見顯示各種文字、圖案的LED顯示屏,人們早已看慣了那種平面顯示的廣告了。如何對LED屏進行創新,重新吸引人們的眼球呢?聯想到現在的3D電影,3D電影給人們帶來了視覺上的享受,如身臨其境的感覺。從圖書館和網上查找LED燈的資料,了解到LED燈的技術特點:一是使用壽命長,單個LED燈壽命長達10萬小時,二是節能,LED燈功耗非常低,三是基本沒有電磁輻射。 LED燈還具有比數碼管具有實用、便宜、高亮度等特點,并且做出了LED顯示屏非常耐用。 LED燈具還具有低工作電壓、低功耗、高亮度、長壽命、性能穩定、小型化和抗沖擊等優點。目前,光立方已經用于娛樂室、會議室、家庭、大型音樂會、地標等城市布局和裝飾的地方,也可以用于更廣闊的領域,具有廣闊的應用前景。
第1章 ?緒論
第1.1節 開發背景
在09年10月1日,建國60周年的國慶晚會上,導演像人們展示了美輪美奐的光立方,該光立方由4028顆發光樹組成。其漂亮的造型,優美的表演,給人們留下了深刻的映像。而傳統的LED顯示屏只能顯示寫平面文字和圖案,全國有好多家生產傳統顯示屏的廠家,但是生產的顯示屏都是大同小異,沒有創新。設計將打破傳統的屏幕顯示方法,LED光立方顯示色彩鮮艷,立體感強,可廣泛應用于大型晚會、演唱會、廣告公司、酒店和車站等公共場所,相比于傳統顯示屏,肯定會深受廣大人民群眾的歡迎。
第1.2節 本文所作的工作
本次設計一個由512個LED燈組成的8*8*8光立方,整個設計的電路由六部分組成:電源電路、單片機最小系統電路、程序下載電路、行驅動電路、列驅動電路和顯示電路等。主控芯片選用宏晶科技公司生產的STC89C52單片機,電源芯片采用LM2596-5 DC-DC降壓芯片,列驅動電路采用8個74HC573鎖存器芯片,行驅動電路采用ULN2803達林頓管芯片,顯示電路為512個LED燈組成的8*8*8立方體。設計還包括電路焊接、程序編寫及軟硬件的調試燈工作。
設計的主要內容:
1、選擇每個模塊的設計方案。
2、設計每個模塊的工作電路。
3、焊接電路。
4、編寫程序,實現光立方需要顯示的視覺效果。
第2章 ?系統總體方案設計
第2.1節 光立方控制原理
LED光立方由512個LED燈組成,其每層有8行8列總共64個LED燈,總共有8層。每層的64個LED燈陰極接一起然后與8個74HC573鎖存器芯片的輸出端相連,然后每層陽極接到一起,與UNL2803達林頓管芯片的輸出端相連。
其顯示原理如下,先通過單片機控制ULN2803芯片的某個引腳輸出高電平,控制光立方的第一層,然后用控制74HC573鎖存器芯片來控制哪幾列的燈亮,然后給個5mS的延時,在把ULN2803芯片的另外引腳輸出高電平,然后在來控制74HC573鎖存器芯片。如此快速的切換芯片的高低電平輸出,就達到了動態顯示的效果。其中有個人眼視覺暫留原理,人眼的分辨率是每秒24幀,當我LED燈切換速度足夠快,在人眼看了,那就是一立體的畫面了。
圖一、光立方立體效果圖
?
圖二、光立方面效果圖
本節主要講系統的設計方案論證,從多方面角度對系統所使用的芯片進行分析比較,最后經仔細研究確定使用的器件、編程軟件和電路圖繪制軟件的選擇。
第2.2節 系統總體硬件方案選擇
2.2.1核心控制器
控制器是整個系統的核心部分,其功能控制I/ O輸出高低電平,從而控制LED燈的亮滅,實現各種不同的動畫效果。其常用的電子設計控制芯片有單片機和FPGA。
方案一:單片機
單片機是一種集成電路芯片,內部集成了ROM、RAM、定時器等很多功能,在日常生活中,我們常用的電子產品、家用電器里面都離不開單片機的控制。目前單片機種類眾多,型號有8位單片機,16位單片機,32位單片機和64位單片機。有些單片機上集成了A/D,D/A,LCD驅動,USB驅動、SD卡驅動、函數發生器,PWM波等等功能,而且他們價格高低不同,開發者可以根據項目的需求選擇合適價格和功能的單片機。
方案二:FPGA
FPGA是一種可以編程的硬件芯片,使用Verilog語音能對它進行編程,能夠實現很多硬件的功能。FPGA可以實現硬件并行工作,在實時測量和控制以及高速應用領域具有光明的未來。但是FPGA開發難度大,成本高,LED光立方系統中用FPGA來開發很不劃算。
綜上所述,兩種方案都可以通過編程實現對光立方的控制,但是單片機的技術門檻低,只需要懂C語言就能進行開發,而且單片機開發成本低,一般芯片只需要幾塊錢就能買到,相比FPGA動輒幾百幾千的芯片,其成本可以忽略不計了。現在市場上常用的單片機主要有8位單片機MCS-51、STM8 和STC,16位單片機 MSP430,32位單片機STM32等。目前使用最廣泛的單片機是ATMEL公司的51系列單片機,其產品硬件結構合理,指令系統規范,很多教材都是以51系列單片機作為模板來講解的。綜上所述,該系統使用STC89C52單片機來控制。
2.2.2 電源電路
方案一:LED光立方系統使用LM7805線性穩壓電路給系統供電,先通過適配器把市電降壓輸入到電路,然后在把降壓后的電源輸入到LM7805線性穩壓電路為整個系統供電。LM7805芯片的優點是電路簡單,工作穩定,但是降壓的效率比較低,只有50%左右,發熱量大,考慮到系統功耗會比較大,長時間工作會浪費電能,因此不采用此芯片
方案二:LED光立方系統使用LM2596-5 DC-DC降壓電路給系統供電,先通過適配器把市電降壓輸入到電路,然后在把降壓后的電源輸入到LM2596-5降壓為整個系統供電。LM2596-5的降壓效率為85%,效率高,滿足系統的功耗要求。
綜上所述,選擇LM2596-5降壓芯片加適配器的方式為光立方系統供電。
2.2.3 層面控制驅動電路
方案一:采用八個NPN三極管(型號:S8050),使用三極管來放大電流,雖然這種方法可以達到驅動LED燈層的目的,但是此方法是才有的分立元器件,增加了板子的面積帶來成本的增加,而且布線麻煩,焊接時也容易出錯,穩定性差,因此不采用此方案。
方案二:使用芯片ULN2803,該芯片內部有八個NPN型達林頓管,能驅動大電流設備,可以滿足512個LED燈的功耗。而且用一個芯片替代八個NPN三極管,不僅體積變小了,節約了成本,簡化了電量,還提高了系統的穩定性。
綜上所述,選擇ULN2803芯片來作為層驅動電路。
2.2.4 LED燈選型
方案一:使用草帽型LED燈,但是這種燈光源發散很嚴重,點亮時會影響周圍的LED燈,會降低視覺效果,影響光立方整體顯示的性能。
方案二:使用方形高亮LED燈,這種燈工作電流為2mA至10mA。方形LED燈聚光效果好,即使所有燈全部工作,也不會影響整體顯示效果。
綜上所述,采用方形的LED燈來顯示。
??
圖2-2 左邊為方形LED燈,右邊為草帽型LED燈
2.2.5編譯器選擇
方案一:使用偉福WAVA600編譯器,該編譯器是專門用來編譯匯編程序的軟件,同時該軟件有個配套使用的仿真器,該仿真器可以當做單片機來使用,還可以通過偉福軟件來選擇需要仿真的單片機型號。偉福軟件可以對匯編程序進行單步調試,方便查找程序問題。但是該軟件只能使用匯編來編寫,匯編程序本身就比較復雜難懂,需要熟悉每條指令的含義,對于編寫光立方程序,難度太大了。而且配套的仿真器價格比較貴,一套好的仿真器價格需要1000多,成本太高。
方案二:使用Keil編譯器,Keil是由ARM公司開發的一款單片機編程的軟件,該軟件支持51系列、stm32系列等多種型號單片機,支持多種該軟件支持C語音開發和匯編語音開發,或者C語音和匯編語音混合開發。該軟件能支持單片機軟件仿真和軟硬件在線實調試,但是對于51系列單片機只支持軟件仿真,51系列單片機不支持在線調試。
綜上所述,選擇Keil編譯器來編寫程序,Keil使用方便,功能強大,且C語音可讀性和可移植型都比匯編語音強。
2.2.6電路設計軟件選擇
方案一:使用Multisim軟件來設計電路圖,該軟件是用來進行模擬和數字電路仿真的,可以用來繪制原理圖,但是這款軟件的功能是偏仿真使用的,對繪制電路圖的功能不是很強大。
方案二:使用Altium Designer軟件來設計電路圖,該軟件不僅可以制作原理圖,設計PCB電路板,而且可以對原理圖電路進行仿真調試,在實際工作中,很多公司都用這款軟件來設計電路,深受廣大電子工程師的喜愛。
綜上所述,使用Altium Designer軟件來設計本系統電路圖。
第3章 系統硬件電路設計與實現
第3.1節硬件電路設計
系整個系統由STC89C52單片機、電源模塊、復位電路、時鐘電路、行驅動電路、列驅動電路和512個LED燈組成,其原理圖如圖3-1所示。
?
圖3-1 系統原理圖?
3.1.1 單片機介紹
STC89C52單片機是宏晶科技公司研發的一款高性能8位單片機。STC89C52單片機使用的是51的內核,它的指令集和I/O口與MSC-51單片機是完全兼容的。
STC89C52系列單片機主要特性如下:
(1)工作電壓:5 V
?(2)用戶應用程序空間(Flash)為8K。
(3)隨機存儲控件(RAM)為512字節。
(4) 有32個通用I/O端口,單片機復位后,所有的I/O口的狀態,是一個準雙向口/弱上拉狀態。P0口為開漏輸出,用作地址擴展總線時,不需要加上拉電阻,用作普通I/O 口使用時,需要加上拉電阻。
(5)單片機總共3個16位定時器/計數器,分別是定時器T0、T1、T2。
單片機STC89C52引腳圖如圖3-2所示:
?
圖3-2 STC89C52引腳圖?
單片機P0口是一個漏極開路的8位雙向I/O口。在作為輸出端口時,每個引腳需要外接一個上拉電阻才能輸出高電平,否則只能輸出高組態,會影響電路正常工作。
P1、P2、P3口是一個帶內部上拉電阻的8位雙向I/O口。
P3口除作為一般I/O口外,還有其他一些復用功能,如表3-1所示。P3口除了具有MSC-51單片機功能外,其P3.0、P3.1口在STC系列單片機里面還具有下載程序的功能。
表3-1 P3口引腳復用功能
第3.2節 總控制電路設計
圖3-3為單片機最小系統原理圖。總控制電路主要由電源電路、復位電路和晶振電路組成。單片機STC89C52加電時,需要進行復位操作,復位后STC89C52的工作環境配置成初始狀態,并從程序的開始進行運行。RST引腳接復位電路,本系統采用12MHz的外部晶振電路。
?
圖3-3 單片機最小系統原理圖
3.2.1 復位電路
STC89C52單片機是高電平復位,至少需要給單片機的復位腳提供24個晶振震蕩周期的時間,單片機才能復位。
單片機常用的復位電路有兩種,一種是手動復位,另一種是上電復位。
上電復位電路是單片機的復位腳接一個1uF電容到電源上,同時接一個10K電阻到地。當系統上電以后,電源給電容充電,電路導通,單片機的復位腳是高電平,單片機復位。然后等電容充滿電后,電容就相當于短路了,單片機的復位腳接地是低電平,單片機就能工作了。
手動復位是在上電復位電路的基礎上再電源和復位腳之間接一個按鍵(也就是在電容上并一個按鍵)。在單片機正常工作時,如果系統需要復位,就把此按鍵按下。這時電容短路,單片機復位腳是高電平,系統復位。等系統復位后,在把按鍵松開,電源和復位腳之間又斷開了,復位腳為低電平,單片機正常工作。
本電路采用的是手動復位電路,其復位電路如圖3-4所示。
?
圖3-4 復位電路原理圖
3.2.2 晶振電路
每個單片機運行都需要一個基準的時鐘源,單片機所有的指令執行時間都是以這時鐘源來決定的,時鐘頻率越高,單片機執行的速度就越快。但是單片機也有個上限時鐘頻率,STC89C52的最快時鐘頻率是40MHz。
單片機的時鐘源我們常稱為晶振,晶振可以分為無源晶振電路和有源晶振電路。有源晶振只需要給晶振提供電源,晶振就能自己起振產生時鐘頻率,然后輸入到單片機的XTAL0腳,單片機就能工作了。無源晶振它本身不能自己起振,需要外接電路才能起振工作。一般是在晶振兩端接兩個20pF的小電容,然后把晶振兩端分別接到單片機的18腳和19腳(即XTAL0和XTAL1兩個引腳),在單片機上電后,晶振與單片機內部的震蕩電路連接到一起,晶振電路就能夠起振,單片機就能正常工作。
本電路采用的是無源晶振,使用一個12MHz的晶振加兩個20pF的電容,接到單片機的XTAL0和XTAL1兩個引腳上,晶振電路如圖3-5所示。
?
? ? ?圖3-5 復位電路原理圖
3.2.3 供電系統及電源接口設計
本系統供電方式使用12V的電源適配器,先把市電降到12V,然后通過DC-DC降壓芯片,把12V電源降壓成5V電源。5V電源一方面用來給單片機最小系統供電,另外一方面給ULN2803達林頓管、74HC573鎖存器芯片供電和LED燈供電,電源電路如圖3-6所示。
?
圖3-6 系統供電原理圖
LM2596-5芯片1號腳如電源輸入端,2號腳為輸出端,3號腳和6好腳接地,4號腳接電源輸出反饋,L1電感為儲能電感,D2二極管為續流二極管,整個電路上電以后,電路中的電容是整流濾波用的,就能把12V電壓將到5V去。
3.2.4 層控制電路設計
UNL2803達林頓管芯片用來控制光立方的層亮滅,單片機的P3.0~P3.7分別接到ULN2803的1~8號腳,ULN的11~18號腳接一個限流電阻后接到光立方的沒一層共陽引腳上。如果單片機的P3口輸出低電平時,ULN2803芯片內部的達林頓管截止,OUT腳輸出低電平。如果單片機的P3口輸出高電平是,ULN2803芯片內部的達林頓管導通,輸出高電平,然后驅動LED燈亮。UNL2803層驅動如圖3-7所示。
?
圖3-7 ULN層驅動原理圖
3.2.5 行列選擇電路設計
電路采用8個74HC573鎖存器芯片來控制LED每層哪些行列的燈亮滅。單片機的P1.0~P1.7口分別與8個74HC573鎖存器芯片的每個使能端口相連,用來控制選擇對應的74HC573工作,然后單片機的P0.0~P0.7口與每個74HC573鎖存器芯片D0~D7腳相連,74HC573的O0~O7與LED每層的行列相連。74HC573原理如圖3-8所示。電路設計時,在每個74HC573芯片的電源和地之間,都加了一個陶瓷電容,用了濾除電源里面的高頻干擾,增加芯片的穩定性。
?
圖3-8 行列控制原理圖
3.2.6 程序下載電路設計
STC系列的單片機都是采用單片機的P3.0和P3.1兩個接口來下載程序到單片機的,因此把STC89C52單片機的兩個引腳引出來,然后在與串口模塊相連,注意串口模塊與下載接口相連時,接線順序是模塊電源與接口電源相連,模塊地與接口地相連,模塊的RX與接口的TX相連,模塊的TX與接口的RX相連。其程序下載電路如圖3-9所示。
?
圖3-9 程序下載電路原理圖
第4章 LED 光立方焊接
第4.1節 LED 彎曲方法?
LED光立方在焊接時,為了整體的美觀性,使用LED燈的引腳來進行搭接,也就是直接把LED燈引腳首尾焊接到一起,而不用額外的器件來做支架。
為了方便焊接和整體的美觀性,將所有LED燈的陰極用鉗子彎曲90度,如圖3-10所示。
圖4-1 LED燈彎曲效果圖
第4.2節 LED 線焊接方法?
找塊泡沫板,在上面畫出面積大小為15*15cm的區域,在這區域里面孔均勻的打8*8總共64個點,在根據LED的大小來打孔。然后把用鉗子弄好的LED燈放八個一排,插入到打好的孔內,在把8個LED燈的陽極焊接到一起,如此重復焊接,總共需要焊64條LED燈。8個LED燈焊接效果如圖3-11所示。
圖4-2 ?LED一排效果圖
第4.3節 LED 面焊接方法?
把焊接好的LED燈燈條擺在桌子上,來進行LED陰極的焊接,控制好LED直接的距離。如此重復焊接,總共需要焊8個LED層面,一層LED的焊接圖如圖3-12所示。
圖4-3 ?LED一層效果圖
第4.4節 LED 立方體焊接方法?
先在洞洞板上完成單片機、電源、ULN2803和74HC573芯片的焊接,然后在焊接LED燈的固定腳,固定腳直接的間距要跟前面泡沫板設計的間距一樣,否則LED燈是插不上去的。
然后將所有焊好的LED燈層面垂直的插入到洞洞板上,把每一層的陽極陰極焊到一起,在通過8跟導線把每層的陽極接到板子的ULN2803輸出陰極上,由面到體的效果圖如圖3-13。
圖4-4 ?LED立方體效果圖
第5章 系統軟件設計
第4.1節 軟件編譯流程
1、本次設計使用的編程軟件是ARM公司開發的Keil uVision4。先從網上下載Keil軟件,在對其進行破解,如果不對軟件進行破解,軟件會對代碼的大小進行限制,當代碼超出限制范圍,程序就會報錯,因此需要先對其破解后在使用。
?
圖4-1 ?keil軟件破解
2、軟件破解后,先點擊軟件上方的Project,然后在點擊new 按鈕,就會彈出圖4-2所示界面,把工程放到一個文件夾里面,并設置一個名字。
?
圖4-2 ?新建工程界面
3、工程建好以后,軟件會彈出圖4-3所示界面,用來選擇單片機型號,本設計采用的是STC89C52單片機,它的資源跟AT89C52單片機型號是差不多的,在這里選擇AT89C52單片機即可。
?
圖4-3 ?選擇單片機型號界面
4、在單片機型號選好以后,我們就可以來寫程序了,先要新建一個后綴為“.c”的文件,我們所有的程序都是在這個文件里面編寫的。點擊軟件左上角的新建文件按鈕,然后點擊保存按鈕,把該文件保存到剛才建立的工程里面,文件名寫為“main.c”。
?
圖4-4 ?新建main.c文件
5、文件建好以后,點軟件左邊圖4-5所示地方,把剛才新建的“main.c”文件添加到工程中去。
?
圖4-5 ?添加main.c文件到工程
6、一切準備就緒后,就可以寫程序了,在程序寫好以后,點擊軟件上的編譯按鈕,軟件就會對程序自動進行編譯,同時會把編譯的結果顯示在軟件的下方。當編譯出錯,就根據編譯的錯誤提示來進行程序修改,知道程序完全編譯通過為止。
?
圖4-6 ?新建main.c文件
7、程序在編譯完成后,點擊軟件Target Option按鈕。再點擊Output按鈕,把Create HEX File給勾選上,這個地方是讓軟件把程序編譯后的結果生成為.Hex文件,這個文件就是我們需要的程序文件,通過燒寫工具把這個文件燒入單片機里面,單片機就能運行了。
?
圖4-7 ?新建main.c文件
8、在編譯好程序后,把串口模塊一端接到單片機的程序下載口,另一端接到電腦上,然后打開STC-ISP軟件,按下圖4-8進行配置,然后就可以把程序下載到單片機里面了。
?
圖4-8 程序燒寫軟件
第4.2節 軟件設計流程
單片機程序運行的流程如下,首先是對系統進行初始化,主要是對T0定時器的初始化,T0定時器主要是用來給系統定時使用的。然后是對光立方初始化,主要是對控制ULN2803芯片和74HC573鎖存器芯片的I/O口進行初始化,然后對跟顯示相關的數組進行賦值。燈初始化完成以后,單片機就會進入死循環,不斷的切換顯示的圖片和動畫效果。主程序的流程圖如圖4-9所示。
?
圖4-9 主程序流程圖
第4.3節 顯示程序設計
4.3.1 光立方動態顯示原理
單片機每次只能給一層上面的一個74HC573鎖存器寫數據,而整個系統由8個鎖存器和8層,要想讓人眼看到一個立體畫面,就需要單片機給74HC573寫完數據后,延時段時間,馬上給下一個74HC573寫入數據,如此重復,而且速度要快,才能看到一個立體的畫面。
4.3.2 顯示程序的設計
? ? ??
?圖4-10 LED動態顯示流程圖
顯示動畫,首先要把要顯示的74HC573鎖存器的片選選中,然后把數據輸出到P0,74HC573鎖存器就是把數據顯示出來,然后單片機選中下一個74HC573鎖存器的片選,在把新的數據輸出到P0口,如此操作,直到把所有要顯示的數據都輸出到P0口,就顯示完成了。
第5章 系統調試與分析
第5.1節 硬件調試
5.1.1 LED燈測試
? LED燈在焊接過程中很容易別烙鐵的靜電焊壞,為了防止烙鐵的靜電干擾,在焊接過程中,需要把烙鐵頭接地。同時為了確保每個LED燈都是好的,把每8個LED燈焊成一條,然后用萬用表測試燈是不是好的,如果有LED燈不亮,就用烙鐵焊下來,重新換個新燈。
5.1.2 在整個系統焊接完成以后,不要急于上電,以免短路燒壞芯片。要先檢查板子看有沒有短路、短路、虛焊的地方。在檢查確認沒有問題后,在上電試下。
第5.2節 軟件調試
在硬件全部焊接完成以后,就按照第4章寫的方法來把代碼燒寫到STC89C52中。先編寫程序,把所有ULN2803輸出高電平,然后把所有的74HC573鎖存器輸出低電平,讓所有的LED燈都亮 ,來測試檢測電路和所有的燈是不是正常的。
1、測試中發現燈都沒有亮,檢查程序,發現程序里面定義的引腳和電路中使用的引腳不一樣,在修改引腳定義后,所有燈能正常亮了。
2、在程序編寫好后,測試動畫效果,發現有兩層燈是同時亮的,檢查后發現原來是ULN2803芯片有兩個腳短路了,在把他們重新焊接以后,測試就正常了。
結論
經過一個多月的設計,終于是把整個光立方系統完成了,整個制作過程中遇到困難多的數不勝數,其中的汗水與快樂只有自己能體會。當看著自己親手做的第一個作品,心里還是挺自豪的。
此次設計,把我在課堂上所學到的單片機知識、C語言知識、模電知識和數據知識都用到了。使我對自己所學的知識有了深刻的理解,鞏固了大學四年所學的知識,為我將來畢業后工作,打下了堅實的基礎。
在選了光立方這個題目后,我是有些茫然的,不知道怎樣開始設計。在老師的指導下,我先從網上搜集資料,看別人是怎樣制作光立方的。先找資料理解光立方的工作原理,在原理理解了后,在自己動手來設計原理圖。但是之前沒有使用過Altium Designer 09這軟件,就在網上找視頻資料,對著視頻來學習怎樣畫原理圖,怎樣設計電路。軟件學好了以后,就找資料來設計原理圖,對有些模塊電路不理解的地方,我是找同學幫忙分析電路。
原理圖設計出來后,就是購買材料,然后焊接電路了。512個LED燈焊起來可不是件容易的事,經常會把LED燈給焊壞,然后需要把它拆了在重新焊,焊燈就花了好長的時間才完成。燈焊好了,就是焊芯片了,那么多的導線,經常是焊著這里斷了那里,就這么一點一點的給焊完了。
硬件搭好以后,就需要寫程序來進行調試了。Keil編程軟件之前也沒有使用過,還是先從學習軟件開始。怎樣建工程,怎樣編譯程序,怎樣解決程序里面的錯誤。還好網上有些好心人分享了他們制作光立方的程序,我把他們的程序下載下來,然后根據自己的引腳來進行修改,調試了幾天,程序就跑通了,光立方可以顯示圖案了。
通過這次的畢業設計,我理解到,光學習理論,不實踐是不行的,只有把理論運用到實踐中,才能發揮出所學知識的價值。
?
參考文獻
[1] ?姜志海,黃玉清,劉連鑫. 單片機原理及應用(第2版)[M]. 電子工業出版社, 2009
[2] ?魏澤鼎. 單片機應用技術與實例[M]. 電子工業出版社, 2005
[3] ?張洪潤,張亞凡. 單片機原理及應用[M]. 清華大學出版社,2005
[4] ?李玉峰. MCS-51系列單片機原理與接口技術[M]. 人民郵電出版社, 2004
[5] ?馬忠梅. 單片機的C語言應用程序設計[M]. 北京航空航天大學出版社, 2007
[6] ?閻石. 數字電子技術基礎(第四版) [M]. ? 高等教育出版社,1998?
[7] ?譚浩強. C語言程序設計(第四版)[M]. 清華大學出版社,2010?
[8] ?谷樹忠.劉文洲.姜航. Altium Designer教程[M].電子工業出版社出版,2012
[9] ?周立功. 單片機實驗與實踐教程[M]. ?北京航空航天大學出版社,2006
[10] 黃智偉. 全國大學生電子設計競賽電路設計[M]. 北京航空航天大學出版社,2011
?
致 ?謝
本次畢業設計的完成是在導師的細心指導以及同學們的幫助下進行的。從最開始的選題、寫任務書、寫開題報告、搜集資料,到最后的論文成形,都是老師一步一步的指導我,花費了周老師大量的時間,在這里我要向周老師表示由衷的感謝。
在完成論文的過程中我還要感謝同學們的對我的支持,是你們在我平時設計中幫助我查找資料,一起探討問題,解決問題,對我寫的內容提出建議,幫助我解決硬件和程序中遇到的問題,讓我能夠如此短的時間內完成系統的設計和焊接和調試。在整個畢業設計制作過程中,我得到了很大的鍛煉和成長,會自己去思考問題、解決問題,這對我以后的工作會有很大幫助,我將受益終身。
附錄 光立方實物圖
圖一、光立方整體實物圖
圖二、光立方工作實物圖
總結
以上是生活随笔為你收集整理的基于单片机的光立方设计的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 前端学习(2596):后台系统的权限控制
- 下一篇: 工作117:eachat图