畢業(yè)設(shè)計---基于單片機的led顯示屏設(shè)計_第1頁
已閱讀1頁,還剩24頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p>  畢 業(yè) 論 文 (設(shè) 計)</p><p>  題 目 基于單片機的LED顯示屏設(shè)計</p><p>  英文題目 The design based on monolithic integrated circuit LED display monitor </p><p>  院 系

2、 電子工程學(xué)院 </p><p>  專 業(yè) 電子信息工程 </p><p>  基于單片機的LED顯示屏設(shè)計</p><p><b>  摘 要</b></p><p>  隨著微電子技術(shù)、自動化技術(shù)、計算機技術(shù)的迅速發(fā)展,生產(chǎn)工藝的更新及新材料的應(yīng)用,LED顯示屏以其

3、色彩鮮艷,動態(tài)范圍廣,亮度高,壽命長,工作性能穩(wěn)定而日漸成為顯示媒體中的佼佼者,廣泛應(yīng)用于廣告、證券、信息傳播、新聞發(fā)布等方面,是目前國際上極為先進的顯示媒體。LED顯示屏是一種新型的圖文信息傳播媒體,用于顯示文字、圖形、圖像、動畫、行情、視頻、錄像信號等各種信息的LED器件陣列組成的顯示屏幕。它主要由控制系統(tǒng)和顯示屏兩部分組成。顯示屏又主要由若干個LED顯示驅(qū)動模塊拼接而成。因此,顯示驅(qū)動模塊的設(shè)計與制造,對整個LED大屏顯示起著至關(guān)

4、重要的影響和作用。</p><p>  [關(guān)鍵詞] 單片機, LED顯示屏, 滾動</p><p><b>  Abstract</b></p><p>  Along with micro electron technology, automated technology, computer technology rapid developm

5、ent, production craft renewal and new material application, LED display monitor by its color bright, dynamite range broad, brightness high, life long, the operating performance is stable and becomes the outstanding perso

6、n in the demonstration media day after day, is widely applied to advertisement, negotiable securities, information dissemination, news issue, is on the present international extremely ad</p><p>  [Keyword] M

7、onolithic integrated circuit, LED display monitor, Rolls</p><p><b>  目 錄</b></p><p><b>  目 錄1</b></p><p><b>  前 言2</b></p><p&

8、gt;  第一章 總體設(shè)計3</p><p>  1.1 系統(tǒng)設(shè)計方案論證3</p><p>  1.2 工作原理及其實現(xiàn)功能4</p><p>  1.3 本章小結(jié)4</p><p>  第二章 硬件設(shè)計5</p><p>  2.1 硬件概述5</p><p>  2.2 硬件接

9、口電路圖8</p><p>  2.3 本章小結(jié)8</p><p>  第三章 軟件設(shè)計9</p><p>  3.1 軟件設(shè)計分析9</p><p>  3.2 程序設(shè)計及流程圖9</p><p>  3.3 漢字顯示的基本原理11</p><p>  3.4 系統(tǒng)部分程序設(shè)計1

10、2</p><p>  3.5 本章小結(jié)12</p><p>  附錄1 控制源程序13</p><p>  附錄2 系統(tǒng)電路圖18</p><p><b>  結(jié)束語19</b></p><p><b>  參考文獻20</b></p><p&

11、gt;<b>  致 謝21</b></p><p><b>  前 言</b></p><p>  課題背景、意義與目的</p><p>  發(fā)光二極管(LED)是一種光電器件。早在1907年開始,人們就發(fā)現(xiàn)某些半導(dǎo)體材料制成的二極管在正向?qū)〞r有發(fā)光的物理現(xiàn)象,但生產(chǎn)出有一定發(fā)光效率的紅光LED已是1969年了

12、。到今天,LED已生產(chǎn)了30多年,回顧過去,它已茁壯成長。各種類型的LED、利用LED作二次開發(fā)的產(chǎn)品及與LED配套的產(chǎn)品發(fā)展迅速,新產(chǎn)品不斷上市,已發(fā)展成不少新型產(chǎn)業(yè)。</p><p>  LED(Light Emitting Diode)是利用精密封裝及光學(xué)設(shè)計技術(shù)將發(fā)光二極管封裝于透明封裝材料中(LEDLamp,俗稱發(fā)光二極管)并與周遭惡劣環(huán)境隔絕。與傳統(tǒng)的白熾燈相比,LED能經(jīng)受得住高溫、高濕等惡劣環(huán)境的

13、考驗。除此之外,LED由一些長度僅為幾毫米的零部件組成,卻直接將電能轉(zhuǎn)化為光能。同時,LED更適用于光電技術(shù),因為白熾燈需要消耗大量能量方能達到溫度要求,而LED更亮、更快、更有效、更可靠、顏色更純正地達到目標(biāo)。 LED光源動感發(fā)光字可廣泛應(yīng)用在建筑景觀、賓館酒店、超市百貨商場、政府亮化工程、建筑工程、商業(yè)空間、機場、地鐵、醫(yī)院、外觀發(fā)光體。高架、高樓、公路、橋梁、地標(biāo)、標(biāo)志建筑發(fā)光源;廣告立體發(fā)光字、標(biāo)志、標(biāo)識、指示光源;為投

14、資業(yè)主及建筑師、設(shè)計師、泛光照明工程業(yè)者、施工工程師等專業(yè)人員提供了建筑藝術(shù)視覺動感彩光照明的全方位技術(shù)問題解決方案。LED光源動感發(fā)光字以其絢麗斑斕的色彩、生動逼真的形態(tài)、耀眼奪目的照明,極大地提升了企業(yè)形象,彰現(xiàn)企事業(yè)實力。同時,也可為夜間城市的購物中心招徠顧客、文化娛樂中心吸引游客營造氣氛,增添情趣。</p><p><b>  第一章 總體設(shè)計</b></p><

15、;p>  本章從設(shè)計的目的及意義考慮,通過分別對基于CPLD控制顯示和基于單片機控制顯示的說明,分析兩種方案的優(yōu)點與缺點,進行對比,然后確定本系統(tǒng)所采用的設(shè)計方案,從而實現(xiàn)設(shè)計要求。</p><p>  1.1 系統(tǒng)設(shè)計方案論證</p><p>  1.1.1 基于CPLD控制的顯示模塊</p><p>  在電子設(shè)計技術(shù)中CPLD有多方面的優(yōu)勢:在系統(tǒng)編

16、程,時延特性可預(yù)測,引腳鎖定能力強等。使得用CPLD實現(xiàn)控制器的系統(tǒng)具有設(shè)計快速,調(diào)試方便,噪聲低,語音回放效果好,PCB板面積小等多方面的優(yōu)點。</p><p>  用CPLD設(shè)計行場掃描時序的方法,這種設(shè)計方法稍作改動便可產(chǎn)生任意行場掃描時序。這種方法對AMLCD控制電路板的尺寸要求高,要求盡可能減少所設(shè)計電路板的尺寸。設(shè)計行場掃描時序,一般有兩種方式:查找表方式和編程邏輯方式。查找表方式主要由存儲芯片構(gòu)成,

17、如SRAM、EPROM、PORM等。使用時,先根據(jù)所要產(chǎn)生的時序在存儲單元寫入相應(yīng)的數(shù)值,查表時再從表內(nèi)讀出時應(yīng)存儲單元的數(shù)值,以形成掃描時序。掃描時序查找表分為行掃描時序查找表和場掃描時序查找表。用查找表形成時序的方法存在體積大、計算繁瑣的缺點。但其實現(xiàn)起來較為復(fù)雜,開發(fā)周期較長。</p><p>  1.1.2 基于單片機控制的顯示模塊</p><p>  單片機是將中央處理器、隨機

18、存儲器、只讀存儲器、定時器芯片和一些輸入/輸出接口電路集成在一個芯片上的微控制器。而對于一個典型的單片機系統(tǒng)而言,主要由單片機、晶振和復(fù)位電路、輸入控制電路、輸出顯示電路以及外圍功能器件組成。</p><p>  對于單片機微控制器具有以下特點:</p><p>  (1)可靠性良好:單片機是按照工業(yè)控制要求所設(shè)計的,其抗工業(yè)噪聲干擾優(yōu)于一般的CPU,程序指令及常數(shù)數(shù)據(jù)都燒寫在ROM內(nèi),其

19、許多信號通道均在同一個芯片內(nèi),因此可靠性高。</p><p>  (2)易擴充:單片機具有一般微電腦所必需的器件,如三態(tài)雙向總線,并行及串行的輸入/輸出引腳,可以擴充為各種規(guī)模的微電腦系統(tǒng)。</p><p>  四個8*8的 LED點陣組成16*16點陣顯示屏,由AT89s52單片機控制逐列移位掃描,這將給后面的軟件編程帶來了方便。經(jīng)過對兩種方案的闡述,對比,最后決定采用單片機來實現(xiàn)LED

20、顯示漢字[1]。</p><p>  1.2 工作原理及其實現(xiàn)功能</p><p>  1.2.1 工作原理</p><p>  本課題通過對單片機編程,用AT89s52將74HC595、電阻、三極管分別與LED點陣模塊連接在一起。由于我們是用面包板來實現(xiàn)我們的顯示內(nèi)容,為了以后的操作方便,所以我們將生成的HEX文件事先輸入AT89s52里,通過對電源開關(guān)的控制

21、,最終經(jīng)單片機將預(yù)先設(shè)置好的內(nèi)容顯示在LED點陣的顯示屏上[2]。其結(jié)構(gòu)圖如1-1所示:</p><p>  圖 1-1 漢字顯示系統(tǒng)的結(jié)構(gòu)圖</p><p>  1.2.2 主要功能</p><p>  首先點陣屏幕顯示漢字“呂”,以速度為2,逐列左移,依次顯示漢字“品”、 “感”、 “謝”、 “指”、 “導(dǎo)”、 “老”、 “師”、 “陪”、 “養(yǎng)”、 “!”,

22、而我們眼睛能看到的效果為滾動顯示:“xx感謝指導(dǎo)老師培養(yǎng)!”。</p><p><b>  1.3 本章小結(jié)</b></p><p>  通常一個設(shè)計都會有很多可以實現(xiàn)的方案,那么要確定一個設(shè)計方案就必然存在一些客觀依據(jù),作為選擇標(biāo)準(zhǔn)。本章具體介紹了基于CPLD和基于單片機來控制顯示器兩種方案,并最后選擇采用單片機來控制顯示器設(shè)計方案。其次介紹了本系統(tǒng)的總體設(shè)計及工

23、作原理。</p><p><b>  第二章 硬件設(shè)計</b></p><p>  本章主要從硬件方面來討論此課題,在硬件設(shè)計上采用電阻和三極管構(gòu)成反相器驅(qū)動顯示模塊行驅(qū)動,采用兩塊74HC595芯片級聯(lián),驅(qū)動顯示模塊列,通過硬件的焊接,實現(xiàn)設(shè)計目的。</p><p><b>  2.1 硬件概述</b></p&

24、gt;<p>  2.1.1 AT89s52單片機</p><p>  AT89s52是一種低功耗、高性能CMOS微控制器,與工業(yè)80C51 產(chǎn)品指令和引腳完全兼容。片上Flash允許程序存儲器在系統(tǒng)可編程,亦適于常規(guī)編程器。在單芯片上,擁有靈巧的8 位CPU 和在系統(tǒng)可編程Flash,使得AT89s52為眾多嵌入式控制應(yīng)用系統(tǒng)提供高靈活、有效的解決方案[3]。</p><p&

25、gt;  2.1.2 電源和時鐘模塊</p><p>  單片機是一種超大規(guī)模集成電路,在該集成電路內(nèi)有成千上萬個晶體管或場效應(yīng)管,因此,要單片機正常運行,就必須為其提供能量,即為片內(nèi)的晶體管或場效應(yīng)管供給電源,使其能工作在相應(yīng)的狀態(tài)。單片機需要一個5V電源,電源電路需要在單片機的Vcc與地之間接一電容。而且,此電容應(yīng)緊靠單片機安裝,以濾除電源的紋波,并使AT89s52和相鄰元件不受噪聲干擾。這里要強調(diào)的是,不

26、論電源如何“純凈”,均必須安裝此電容[4]。</p><p>  與任何微處理器一樣,AT89s52的運作是有節(jié)奏的,因此,就需要一個節(jié)拍發(fā)生器——時鐘,以控制CPU的運行速度,步進執(zhí)行各種操作。AT89s52 單片機有一個用于構(gòu)成內(nèi)部振蕩器的反相放大器,XTAL1和XTAL2分別是放大器的輸入、輸出端。石英晶體和陶瓷諧振器都可以用來一起構(gòu)成自激振蕩器,如圖2-1所示:</p><p> 

27、 圖 2-1 時鐘電路圖</p><p>  2.1.3 復(fù)位電路</p><p>  復(fù)位操作主要是把PC初始化為0000H,使單片機從程序存儲器的0000H單元開始執(zhí)行程序。復(fù)位電路采用手動復(fù)位,在Vcc和RST端接一容量,其兩端并接一個輕觸按鈕構(gòu)成復(fù)位電路。手動的好處在于能避免死機時關(guān)機復(fù)位。其復(fù)位過程為:當(dāng)按下按鍵后,Vcc和RST端接通,RST引腳處在高電平,而且按鍵動作一般是

28、數(shù)十毫秒,大于兩個機器周期的時間,能夠安全的復(fù)位[5]。</p><p>  2.1.4 74HC595芯片在本設(shè)計中的應(yīng)用</p><p>  74HC595是帶鎖存輸出的8位移位寄存器,其中SI是串行數(shù)據(jù)的輸入端;Vcc、GND分別為電源和地;RCK是存儲寄存器的輸入時鐘,SCK是移位寄存器的輸入時鐘,/SCLR是移位寄存器的輸入清除,Q’H是串入數(shù)據(jù)的輸出,G是對輸入數(shù)據(jù)的輸出使能

29、控制,QA~QH串入數(shù)據(jù)的并行輸出端。從SI口輸入的數(shù)據(jù)在移位寄存器的SCK腳上升沿的作用下輸入到74HC595中,在RCK腳的上升沿作用下將輸入的數(shù)據(jù)鎖存在74HC595中,當(dāng)/G為低電平時,數(shù)據(jù)并行輸出 [6]。</p><p>  74HC595芯片是串行輸入并行輸出的8位移位寄存器。移位寄存器是由D觸發(fā)器構(gòu)成的。例如:由4個D觸發(fā)器構(gòu)成的移位寄存器,在4個時鐘周期內(nèi)輸入二進制數(shù)依次為1011,而移位寄存器

30、的初始狀態(tài)為Q0Q1Q2Q3=0000,那么在脈沖的作用下,移位寄存器輸出的數(shù)值依次為1000、0100、1010、1101。經(jīng)過4個CP信號以后,串行輸入的4位代碼全部移入了移位寄存器中,同時在4個觸發(fā)器的輸出端得到了并行輸出的代碼[7]。</p><p>  在本設(shè)計中,16*16點陣顯示屏有16列,所以需要16個D觸發(fā)器構(gòu)成的移位寄存器,通過兩片74HC595芯片的級聯(lián)構(gòu)成控制16列的移位寄存器,數(shù)據(jù)從SI

31、口送入74HC595芯片, 在每個SCK的上升沿,SI口上的數(shù)據(jù)移入寄存器, 在SCK的第9個上升沿, 數(shù)據(jù)開始從Q’H移出。把第一個74HC595的Q’H和第二個74HC595的SI相接,數(shù)據(jù)即移入第二個74HC595中,把數(shù)據(jù)全部送完后, 給RCK一個上升沿, 寄存器中的數(shù)據(jù)即置入鎖存器,此時如果/G為低電平, 數(shù)據(jù)從并口QA~QH輸出, 把QA~QH與LED點陣的16列相接。如果點亮第一列LED點陣,通過單片機控制輸出16行數(shù)據(jù)為

32、高電平,此列數(shù)據(jù)為低電平,另外15列數(shù)據(jù)為高電平LED,就可以實現(xiàn)顯示了[8]。</p><p>  2.1.5 電阻和三極管構(gòu)成反相器</p><p>  圖2-2與圖2-3為等效電路圖,能實現(xiàn)同樣的功能,在電路里的作用相同。</p><p>  圖 2-2 電阻與三極管圖 圖 2-3 反相器圖</p>

33、<p>  2.1.6 LED點陣</p><p>  點陣顯示器有單色和雙色兩類,可顯示紅,黃,綠,橙等。LED點陣有4*4、4*8、5*7、5*8、8*8、16*16、24*24、40*40等多種;根據(jù)像素的數(shù)目分為單基色,雙基色、三基色等,根據(jù)像素顏色的不同所顯示的文字、圖象等內(nèi)容的顏色也不同,單基色點陣只能顯示固定色彩如紅、綠、黃等單色,雙基色和三基色點陣顯示內(nèi)容的顏色由像素內(nèi)不同顏色發(fā)光

34、二極管點亮組合方式?jīng)Q定,如紅綠都亮?xí)r可顯示黃色,如果按照脈沖方式控制二極管的點亮?xí)r間,則可實現(xiàn)256或更高級灰度顯示,即可實現(xiàn)真彩色顯示[9]。</p><p>  8*8LED點陣顯示的內(nèi)部電路結(jié)構(gòu)如圖2-4所示:</p><p>  圖 2-4 點陣內(nèi)部電路圖</p><p>  系統(tǒng)LED點陣的特點:只要其對應(yīng)的X、Y軸順向偏壓,即可使LED發(fā)亮。</p

35、><p>  2.2 硬件接口電路圖</p><p>  圖 2-5 硬件接口電路圖</p><p><b>  2.3 本章小結(jié)</b></p><p>  本課題基于單片機的漢字顯示屏設(shè)計,硬件部分分別介紹了AT89s52單片機的簡單功能、時鐘電路模塊、復(fù)位電路模塊、74HC595芯片的應(yīng)用、反相器的等效電路和LED點

36、陣的顯示原理[10]。</p><p>  以AT89s52單片機為核心,用時鐘控制CPU的運行速度,步進執(zhí)行各種操作。由于74HC595芯片具有鎖存功能并且數(shù)據(jù)是串行輸入并行輸出,所以通過兩塊74HC595芯片的級聯(lián)驅(qū)動16*16點陣的16列。通過電阻和三極管連接構(gòu)成反相器驅(qū)動16*16點陣的16行。對于本設(shè)計來說,由于線路非常密集,所以硬件的焊接是一個復(fù)雜的過程,對線路的連接要十分仔細。</p>

37、<p><b>  第三章 軟件設(shè)計</b></p><p>  動態(tài)顯示的效果是由一幅幅不同內(nèi)容的屏幕畫面組成的,因此在軟件設(shè)計上,只要按一定的時間間隔改變顯示緩沖區(qū)的內(nèi)容,如左移則使顯示緩沖區(qū)的點陣數(shù)據(jù)左移一列,即可實現(xiàn)動態(tài)移位的效果。</p><p>  3.1 軟件設(shè)計分析</p><p>  3.1.1 漢字左移顯示

38、的實現(xiàn)</p><p>  在顯示屏幕比較小的情況下,為了能顯示更多的內(nèi)容,普遍采用的方法是移位顯示,移位顯示廣泛應(yīng)用于條型顯示屏,它的特點是可以顯示的內(nèi)容比屏幕大、顯示效果良好、編程簡單等。原理是,在單片機AT89s52數(shù)據(jù)存貯區(qū)里開辟64個字節(jié)的顯示緩沖區(qū)(分為兩個顯存),一個用以保存當(dāng)前要顯示的內(nèi)容,另一個用以數(shù)據(jù)處理。那么怎么實現(xiàn)加入一列的數(shù)據(jù)呢?其實就是,通過74HC595芯片對顯示緩沖區(qū)進行列選,實現(xiàn)

39、漢字向左滾動的效果。一行有16位數(shù)據(jù)要處理,所以我們要設(shè)一個16次循環(huán),如此循環(huán)16次后,便處理完了一行的數(shù)據(jù),而每個字又有16行,所以我們再16次循環(huán)里再設(shè)一個16次的外循環(huán),如此循環(huán)16次后,整屏的數(shù)據(jù)都處理完了。此時,CPU又對另一個顯存作數(shù)據(jù)處理了,處理完后再交換顯示。這樣便可以實現(xiàn)動態(tài)左移的效果了[11]。</p><p>  3.2 程序設(shè)計及流程圖  </p><p>

40、  3.2.1 顯示驅(qū)動程序及設(shè)計</p><p>  顯示驅(qū)動程序查詢當(dāng)前點亮的列號,從顯示緩存區(qū)內(nèi)讀取下一列的數(shù)據(jù),并通過串口發(fā)送給寄存器。為消除在切換列顯示數(shù)據(jù)時產(chǎn)生拖尾現(xiàn)象,驅(qū)動程序先要關(guān)閉顯示屏,即消隱,等顯示數(shù)據(jù)輸入鎖存器并鎖存,然后再輸入新的列號,重新打開顯示[12]。</p><p>  3.2.2 系統(tǒng)主流程及設(shè)計</p><p>  系統(tǒng)主程

41、序首先對系統(tǒng)環(huán)境初始化,包括設(shè)置串口、端口。然后取對應(yīng)編號的漢字調(diào)入內(nèi)存,進行行與列的掃描,如果列數(shù)〈16,開始掃描第一行,然后讀取第一行字型,通過行與列的偏壓點亮對應(yīng)行,延遲,然后掃描第二行,直到最后一行,然后對第二列掃描,如此循環(huán)。系統(tǒng)主流程圖,如圖3-1所示:</p><p>  圖 3-1 系統(tǒng)流程圖</p><p>  3.3 漢字顯示的基本原理</p><

42、p>  3.3.1 漢字代碼</p><p>  顯示漢字的代碼是由一組高、低電平組成的數(shù)據(jù),在設(shè)計中需要顯示一個“養(yǎng)”字,經(jīng)過代碼轉(zhuǎn)換器,輸入“養(yǎng)”字,生成的代碼為:</p><p>  {0x10,0x04,0x20,0x12,0xFC,0x3F,0x80,0x00,0xF8,0x1F,0x80,0x20,0xFE,0x7F,0xC0,0x02,0x60,0x04,0x30,0

43、x18,0x2C,0x74,0x23,0x24,0x10,0x04,0x10,0x04,0x08,0x04,0x04,0x04}[13]</p><p>  其對應(yīng)的高低電平為:(對應(yīng)的字型如圖3-2所示) </p><p>  0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0</p><

44、p>  0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0</p><p>  0 0 1 1 1 1 1 1 1 1 1 1 1 1 0 0</p><p>  0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0</p><p>  0 0 0 1 1 1 1 1 1 1 1 1 1 0 0 0</p><p>

45、;  0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0</p><p>  0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0</p><p>  0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0</p><p>  0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 0</p><p>  0

46、 0 0 0 1 1 0 0 0 0 0 1 1 0 0 0</p><p>  0 0 1 1 0 1 0 0 0 0 1 0 1 1 1 0</p><p>  1 1 0 0 0 1 0 0 0 0 1 0 0 1 0 0 圖 3-2 漢字字型</p><p>  0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0&

47、lt;/p><p>  0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0</p><p>  0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0</p><p>  0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0</p><p>  這一組高、低電平組成“養(yǎng)”字的字型,點陣顯示屏所顯示的一個漢字,高電平為

48、點亮的LED,低電平為不發(fā)光的LED。第一列只有一個LED點亮,由AT89s52單片機給74HC595芯片發(fā)送的數(shù)據(jù)為0111111111111111選擇第一列,然后由AT89s52單片機從P0口和P2口對點陣顯示屏逐行掃描給第十二行輸出高電平,由于行、列產(chǎn)生偏壓,所以第一列、第十二行的LED點亮。然后,由AT89s52單片機給74HC595芯片發(fā)送的數(shù)據(jù)為1011111111111111選擇第二列,第二列有兩個LED點亮分別是第七行和

49、第十二行,點亮的原理都一樣,依次類推,一個靜態(tài)的漢字就顯示在點陣顯示屏上,然后通過程序?qū)⒌谝涣凶笠埔晃?,從緩存中將下一個漢字字型的第一列送入點陣顯示屏的最后一列,要顯示一組漢字,就是將所有漢字代碼存入緩存然后通過左移程序,最終將漢字在點陣顯示屏上顯示。通過C語言的For語句就可以實現(xiàn)循環(huán)的功能[14]。</p><p>  3.4 系統(tǒng)部分程序設(shè)計</p><p>  3.4.1 行、

50、列掃描程序</p><p><b>  while(1)</b></p><p>  {while(col<16)</p><p>  {for(i=0;i<SPEED;i++)</p><p>  {for(disrow=0;disrow<16;disrow++)</p><p&g

51、t;<b>  {</b></p><p>  LCLK=0; //LCLK用上升沿送出列數(shù)據(jù)到點陣</p><p>  loadoneline();</p><p>  sendoneline();</p><p>  PHangSao1=PHangSao1Tab[disrow]; //P2為行掃描</p

52、><p>  PHangSao2=PHangSao2Tab[disrow]; //P0為行掃描</p><p><b>  LCLK=1;</b></p><p>  delay(light);</p><p><b>  }</b></p><p><b>  }&

53、lt;/b></p><p><b>  col++; </b></p><p><b>  }</b></p><p>  col=0 [15] ;</p><p><b>  3.5 本章小結(jié)</b></p><p>  由于顯示緩沖區(qū)的所有

54、數(shù)據(jù)左移一列需要一定的時間,不可能在兩次中斷間隔時間內(nèi)實現(xiàn)這一處理過程,為此需要設(shè)置兩個顯示緩沖區(qū),一個用于保存當(dāng)前屏幕顯示的數(shù)據(jù),另一個用于對當(dāng)前數(shù)據(jù)的處理。到達換屏?xí)r間間隔后,切換當(dāng)前顯示緩沖區(qū)到數(shù)據(jù)已處理的顯示緩沖區(qū),然后對另一顯示緩沖區(qū)進行數(shù)據(jù)處理。只要其對應(yīng)的行、列軸順向偏壓,即可使LED發(fā)光。每個LED的點亮?xí)r間是極為短暫的,由于人的視覺暫留現(xiàn)象及發(fā)光二極管的余輝效應(yīng),盡管實際上每個點并非同時點亮,有的發(fā)光二極管已經(jīng)不發(fā)光,

55、但是只要掃描速度足夠快,給人的印象就是一組穩(wěn)定的顯示數(shù)據(jù),不會有閃爍感。所以在程序設(shè)計中,行與列的掃描是實現(xiàn)漢字顯示效果的重點。</p><p>  附錄1 控制源程序</p><p>  #include "reg51.H"</p><p>  #define SPEED 2 </p><p>  #define

56、 light 150 </p><p>  #define ZISHU 11</p><p>  #define PHangSao1 P2</p><p>  #define PHangSao2 P0</p><p>  //sbit OE=P1^5; </p><p>  sbit LCLK=P3^2;

57、 </p><p>  UCHAR col,disrow; </p><p>  UCHAR code Welcom[];</p><p>  UCHARcode PHangSao1Tab[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff};&

58、lt;/p><p>  UCHARcode PHangSao2Tab[]={0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};</p><p>  UCHAR BUFF[10];</p><p>  data UCHAR DisplayBuffer[64]

59、;</p><p>  void loadoneline(void);</p><p>  void delay(UCHAR t);</p><p>  void sendoneline(void);</p><p>  void AddWord(UCHAR SerialNum);</p><p>  UCHAR

60、 LeftMove1List(UCHAR h1,UCHAR h2)</p><p><b>  {</b></p><p>  UCHAR temp;</p><p>  UCHAR tempcol;</p><p>  tempcol=col&0x08;</p><p>  temp=(

61、(h1>>tempcol)|(h2<<(8-tempcol)));</p><p>  return ~temp;</p><p><b>  }</b></p><p>  /*******************************************************/</p><

62、p>  void main(void)</p><p><b>  {</b></p><p><b>  UCHAR i;</b></p><p>  UCHAR SerialNumber;//</p><p>  SerialNumber=1;</p><p>&l

63、t;b>  col=0;</b></p><p>  for(i=0;i<=63;i++)</p><p>  DisplayBuffer[i]=Welcom[i];</p><p><b>  while(1)</b></p><p>  {while(col<16)</p>

64、;<p>  {for(i=0;i<SPEED;i++)</p><p>  {for(disrow=0;disrow<16;disrow++)</p><p><b>  {</b></p><p>  LCLK=0; </p><p>  loadoneline();</p>

65、;<p>  sendoneline();</p><p>  PHangSao1=PHangSao1Tab[disrow]; PHangSao2=PHangSao2Tab[disrow]; </p><p><b>  LCLK=1;</b></p><p>  delay(light);</p><

66、;p><b>  }</b></p><p><b>  }</b></p><p><b>  col++; </b></p><p><b>  }</b></p><p><b>  col=0;</b></p>

67、;<p>  for (i=0;i<32;i++)</p><p>  DisplayBuffer[i]=DisplayBuffer[i+32];</p><p>  if((++SerialNumber)==ZISHU)</p><p>  SerialNumber=0;</p><p>  AddWord(Serial

68、Number);</p><p><b>  }</b></p><p><b>  }</b></p><p>  /****************把字模移入數(shù)組的子函數(shù)********************/</p><p>  void loadoneline(void)</p>

69、;<p><b>  {UCHAR s;</b></p><p>  for(s=0;s<3;s++) </p><p><b>  {</b></p><p>  BUFF[(s<<1)]=DisplayBuffer[(s<<5

70、)+(disrow<<1)];</p><p>  BUFF[(s<<1)+1]=DisplayBuffer[1+(s<<5)+(disrow<<1)];</p><p><b>  }</b></p><p><b>  }</b></p><p>

71、  /*******************發(fā)送一行的子函數(shù)************************/</p><p>  void sendoneline(void)</p><p><b>  {char s;</b></p><p>  UCHAR inc;</p><p>  inc=col>>

72、;3; </p><p>  for(s=0+inc;s<=1+inc;s++) </p><p><b>  {</b></p><p>  SBUF=LeftMove1List(BUFF[s],BUFF[s+1]);</p><p>  while(!TI);TI=0;</

73、p><p><b>  }</b></p><p><b>  }</b></p><p>  /*******************************************************/</p><p>  void delay(UCHAR t)</p><p

74、><b>  { </b></p><p>  //UCHAR i;</p><p><b>  UCHAR j;</b></p><p>  for(j=0;j<t;j++)</p><p>  // for (i=0;i<20;i++)</p><p>

75、;<b>  ;</b></p><p><b>  }</b></p><p>  void Addword(UCHAR SerialNum)</p><p>  {UCHAR j,k;</p><p>  j=SerialNum;</p><p>  for (k=32;

76、k<64;k++)</p><p><b>  {</b></p><p>  DisplayBuffer[k]=Welcom[32*j+k-32];</p><p><b>  }</b></p><p><b>  }</b></p><p>

77、  unsigned char code Welcom[]=</p><p><b>  {</b></p><p>  /*------------------------------------------------------------------------------</p><p>  ---------------------

78、---------------------------------------------------------*/</p><p>  0xF8,0x0F,0x08,0x08,0x08,0x08,0x08,0x08,0xF8,0x0F,0x08,0x08,0x00,0x00,0x00,0x00,</p><p>  0xFC,0x1F,0x04,0x10,0x04,0x10,0x04,

79、0x10,0x04,0x10,0xFC,0x1F,0x04,0x10,0x00,0x00,</p><p>  0x00,0x00,0xF0,0x0F,0x10,0x08,0x10,0x08,0x10,0x08,0xF0,0x0F,0x10,0x08,0x00,0x00,</p><p>  0x7E,0x3F,0x42,0x21,0x42,0x21,0x42,0x21,0x42,0x21

80、,0x7E,0x3F,0x42,0x21,0x00,0x00,</p><p>  0x00,0x0A,0x00,0x12,0xFC,0x3F,0x04,0x02,0xFC,0x12,0x04,0x12,0xF4,0x0C,0x94,0x04,</p><p>  0xF2,0x4C,0x02,0x52,0x01,0x60,0x90,0x10,0x14,0x21,0x14,0x68,0xE

81、6,0x0F,0x00,0x00,</p><p>  0x80,0x10,0x42,0x10,0xEC,0x11,0x24,0x11,0xE0,0x7F,0x20,0x11,0xE7,0x13,0x24,0x15,</p><p>  0xF4,0x15,0x84,0x11,0x44,0x11,0x54,0x11,0x2C,0x11,0x14,0x11,0x48,0x15,0x80,0x

82、08,</p><p>  0x88,0x00,0x88,0x1C,0x88,0x03,0x88,0x20,0xBF,0x20,0x88,0x3F,0x28,0x00,0x98,0x3F,</p><p>  0x8C,0x20,0x8B,0x20,0x88,0x3F,0x88,0x20,0x88,0x20,0x88,0x20,0x8A,0x3F,0x04,0x00,</p>

83、<p>  0x00,0x00,0xF8,0x0F,0x08,0x08,0xF8,0x0F,0x08,0x20,0x08,0x20,0xF0,0x3F,0x00,0x04,</p><p>  0x00,0x04,0xFF,0x7F,0x10,0x04,0x20,0x04,0x60,0x04,0x20,0x04,0x00,0x05,0x00,0x02,</p><p>  0x

84、40,0x00,0x40,0x10,0xFE,0x3F,0x40,0x10,0x40,0x08,0x40,0x04,0xFF,0x7F,0x80,0x01,</p><p>  0x40,0x00,0x30,0x0C,0x2C,0x03,0xE3,0x00,0x20,0x20,0x20,0x20,0xC0,0x3F,0x00,0x00,</p><p>  0x10,0x00,0xD0,0

85、x7F,0x12,0x04,0x12,0x04,0xD2,0x7F,0x52,0x44,0x52,0x44,0x52,0x44,</p><p>  0x52,0x44,0x4A,0x44,0x4A,0x54,0x48,0x24,0x04,0x04,0x02,0x04,0x01,0x04,0x00,0x04,</p><p>  0x08,0x02,0x08,0x04,0xC8,0x7F,

86、0x08,0x00,0xBF,0x10,0x08,0x33,0x08,0x09,0xC8,0x7F,</p><p>  0x08,0x00,0x88,0x3F,0xB8,0x20,0x87,0x20,0x82,0x20,0x80,0x3F,0x80,0x20,0x00,0x00,</p><p>  0x10,0x04,0x20,0x12,0xFC,0x3F,0x80,0x00,0xF8

87、,0x1F,0x80,0x20,0xFE,0x7F,0xC0,0x02,</p><p>  0x60,0x04,0x30,0x18,0x2C,0x74,0x23,0x24,0x10,0x04,0x10,0x04,0x08,0x04,0x04,0x04,</p><p>  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x18,0x00,0x1

88、8,0x00,0x10,0x00,0x10,</p><p>  0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x00</p><p><b>  };</b></p><p>  附錄2 系統(tǒng)電路圖</p><p&g

89、t;<b>  結(jié)束語</b></p><p>  本課題主要是基于C語言編程,通用性強,移植方便,在實際中取得了較好的效果,漢字顯示清晰穩(wěn)定。通過對LED點陣模塊進行逐行掃描控制,最終實現(xiàn)顯示人們預(yù)先想顯示的內(nèi)容。LED顯示屏是由四塊8*8的LED點陣構(gòu)成的16*16點陣顯示屏,在字模轉(zhuǎn)換中能實現(xiàn)數(shù)字,英文,漢字及圖形的顯示。通過兩片74HC595芯片的級聯(lián)對16*16點陣顯示屏列的控制,

90、通過單片機AT89s52的P0口和P2口連接16個9012三極管對16*16點陣顯示屏行的控制,實現(xiàn)漢字向左滾動的顯示效果。</p><p>  利用AT89s52單片機控制技術(shù)控制LED點陣的顯示,再結(jié)合單片機的程序作線路布置,即硬件設(shè)計。通過系統(tǒng)分析,確定該系統(tǒng)具有哪些功能,有哪些模塊,各個模塊之間是怎樣聯(lián)系的,以及怎樣組合的。 確定所須的元器件,然后通過電路圖進行連接。集合程序調(diào)試,調(diào)試整個的系統(tǒng)模塊的功能

91、,看各個功能是否能正常運行,并找出程序中的錯誤,改正這些錯誤。最終能在LED點陣顯示屏上顯示所要的漢字。</p><p>  通過這次的畢業(yè)設(shè)計,使我對單片機有了更深的認(rèn)識,從理論和實踐上都得到了很大的提高。另外,豐富了自己的知識面,學(xué)到了以前沒能學(xué)懂的東西,具體了解了怎樣去完成一個電路的設(shè)計:從流程圖、電路圖、焊接電路板、檢查電路板、仿真到燒程序一整套步驟。從畢業(yè)設(shè)計中,學(xué)到了單片機AT89s52的內(nèi)部結(jié)構(gòu)及其

92、工作原理,鞏固了C語言的使用能力。</p><p>  完成這次畢業(yè)設(shè)計過程中,也有一些不足之處,程序上的問題主要出現(xiàn)在控制漢字左移的部分,開始的時候左移的效果不好,看到顯示的漢字有一些閃爍,經(jīng)過測試,發(fā)現(xiàn)問題是延時時間部分,我最終還是將問題解決了。由于缺少對硬件的焊接經(jīng)驗,動手的機會很少,所以在開始焊接時,把幾條導(dǎo)線連接錯誤導(dǎo)致一片芯片燒毀。這些寶貴的經(jīng)驗對我以后的發(fā)展是很有幫助的,這段寶貴的經(jīng)歷是我成長的基石

93、。</p><p><b>  參考文獻</b></p><p>  [1] 吳金戎.8051單片機實踐與應(yīng)用.清華大學(xué)出版社,2002.266-330</p><p>  [2] 樓然苗.51系列單片機設(shè)計實例.北京航空航天大學(xué)出版社,2002.63-84</p><p>  [3] 付家才.單片機控制工程實踐技術(shù).化

94、學(xué)工業(yè)出版社,2004.55-92 </p><p>  [4] 何立民.單片機應(yīng)用技術(shù)選編.北京航空航天大學(xué)出版社,2001.135-164 </p><p>  [5] 李芷.微機原理與接口技術(shù).電子工業(yè)出版社,2002.164-187</p><p>  [6] 劉瑞新.單片機原理與應(yīng)用教程.機械工業(yè)出版社,2003.135-165 </p>&

95、lt;p>  [7] 韓雁.單片機原理及應(yīng)用教程.電子工業(yè)出版社,2003.195-203 </p><p>  [8] 黃博俊.單片機8051實務(wù)與應(yīng)用.中國水利水電出版社,2001.102-135</p><p>  [9] 周堅.單片機輕松入門.北京航空航天大學(xué)出版社,2004.125 -133 </p><p>  [10] 李興飛.單片機課程設(shè)計實例

96、指導(dǎo).北京航空航天大學(xué)出版社,2004.139-153</p><p>  [11] 李朝青.單片機原理與接口技術(shù).北京航空航天大學(xué)出版社,1999.140-178</p><p>  [12] 陳明熒.8051單片機基礎(chǔ)教程.科學(xué)出版社,2003.1-96</p><p>  [13] 陳明熒.8051單片機課程設(shè)計實訓(xùn)教程.清華大學(xué)出版社,2004.20-76&

97、lt;/p><p>  [14] 朱定華.單片機接口技術(shù)與學(xué)習(xí)指導(dǎo).電子工業(yè)出版社,2001.143-176</p><p>  [15] 朱定華.戴汝平.單片微機原理與運用.清華大學(xué)出版社.北方交通大學(xué)出版社,2002.19-41</p><p><b>  致 謝</b></p><p>  四年的本科學(xué)習(xí)生涯即將結(jié)束

98、,在本人做畢業(yè)設(shè)計中,得到了我的導(dǎo)師石俊的悉心指導(dǎo)和無私幫助。他嚴(yán)謹(jǐn)?shù)闹螌W(xué)態(tài)度和謙和的為人給我留下了深刻的印象。</p><p>  在我的課題調(diào)研和設(shè)計階段,雖然xx老師公務(wù)繁忙,教學(xué)任務(wù)重。依然對我的設(shè)計工作悉心指導(dǎo),對我的開題方向和研究內(nèi)容做了大量的工作。在課題實施階段,感謝實驗室的xx老師對我的幫助。同時還要感謝系實驗室在畢業(yè)設(shè)計期間提供給我優(yōu)越的實驗條件。</p><p>  我

99、要感謝課題組的各位同學(xué),在畢業(yè)設(shè)計的短短3個月里,正是你們的幫助,才使課題得以順利完成,在此也真誠的感謝你們。我要深深地感謝我的家人,正是他們含辛茹苦地把我養(yǎng)育成人,在生活和學(xué)習(xí)上給予我無盡的愛、理解和支持,才使我時刻充滿信心和勇氣,克服成長路上的種種困難,順利的完成大學(xué)學(xué)習(xí)。還有許許多多給予我學(xué)業(yè)上鼓勵和幫助的師長、朋友,在此無法一一列舉,在此也表示忠心地感謝!</p><p>  大學(xué)生活的結(jié)束,也是我人生新

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論