引 言 LED點陣顯示屏作為一種新興的顯示器件,是由多個獨立的LED發光二極管封裝而成. LED點陣顯示屏可以顯示數字或符號, 通常用來顯示時間、速度、系統狀態等。 本設計是4個16×16點陣LED電子顯示屏的設計。整機以美國ATMEL公司生產的40腳單片機AT89C51為核心,介紹了以它為控制系統的LED點陣電子顯示屏的動態設計和開發過程。通過該芯片控制一個行驅動器74LS154和八個列驅動器74HC595來驅動顯示屏顯示。該電子顯示屏可以顯示各種文字或單色圖像,全屏能顯示4個漢字,采用16塊8 x 8點陣LED顯示模塊來組成4個16x16點陣顯示模式。顯示采用動態顯示,使得圖形或文字能夠實現靜止、移入移出等多種顯示方式。文中詳細介紹了LED點陣顯示的硬件設計思路、硬件電路各個部分的功能及原理、相應軟件的程序設計,以及使用說明等。 目 錄
第一章 16*16點陣LED電子顯示屏設計功能要求設計一個能顯示4個16*16點陣圖文LED顯示屏,要求能顯示圖形或文字,顯示圖形或文字應穩定、清晰,圖形或文字顯示有靜止、左移或右移等顯示方式。 從理論上說,不論顯示圖形還是文字,只要控制與組成這些圖形或文字的各個點所在的位置相對應的LED器件發光,就可以得到我們想要的顯示結果,這種同時控制各個發光點亮滅的方法稱為靜態驅動顯示方式。16x16的點陣共有256個發光二極管,顯然單片機沒有這么多的端口,如果我采用鎖存器來擴展端口,按8位的鎖存器來計算,16x16的點陣需要256/8=32個鎖存器。這個數字很龐大,因為我們僅僅是16x16的點陣,在實際應用中的顯示屏往往要大得多,這樣在鎖存器上花的成本將是一個很龐大的數字。因此在實際應用中的顯示屏幾乎都不采用這種設計,而采用另外一種稱為動態掃描的顯示方法。 動態掃描的意思簡單地說就是逐行輪流點亮,這樣掃描驅動電路就可以實現多行(比如16行)的同名列共用一套驅動器。具體就16x16的點陣來說,把所有同1行的發光管的陽極連在一起,把所有同1列的發光管的陰極連在一起(共陽極的接法),先送出對應第一行發光管亮滅的數據并鎖存,然后選通第1行使其燃亮一定時間,然后熄滅;再送出第二行的數據并鎖存,然后選通第2行使其燃亮相同的時間,然后熄滅;以此類推,第16行之后,又重新燃亮第1行,反復輪回。當這樣輪回的速度足夠快(每秒24次以上),由于人眼的視覺暫留現象,就能夠看到顯示屏上穩定的圖形了。
第二章16*16點陣LED電子顯示屏的設計方案2.1 顯示模塊方案論證四個8×8的點陣構成一個16×16的點陣。行和列的交叉處有一個LED,共由256個LED構成,如果LED的陽極與行相連,而陰極與列相連,那么只要給該LED對應的行以高電平,列以低電平,那么對應的LED就發光。 2.2 數據傳輸方案論證采用掃描方式進行顯示時,每行有一個行驅動器,各行的同名列共用一個行驅動器。顯示數據通常儲存在單片機的儲存器中,按8位一個字節的形式順序排放。顯示時,要把一行中各列的數據都傳送到相應列的驅動器上去,這就存在一個顯示數據傳輸的問題。從控制電路到列驅動器的數據傳輸可以采用并行方式或串行方式。顯然,采用并行方式時,從控制電路到列驅動器的線路數量大,相應的硬件file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtml1/01/clip_image001.giffile:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtml1/01/clip_image003.jpg數目多。當列數很多時,并列傳輸的方案是不可取的。 采用串行傳輸的方法,控制電路可以只用一根信號線,將列數據一位一位傳往列驅動器,在硬件方面無疑是十分經濟的。但是,串行傳輸過程較長,數據按順序一位一位地輸出給列驅動器,只有當一行的各列數據都以傳輸到位之后,這一行的各列才能并行地進行顯示。這樣,對于一行的顯示過程就可以分解成列數據準備(傳輸)和列數據顯示兩部分。對于串行傳輸方式來說,列數據準備時間可能相當長,在行掃描周期確定的情況下留給行顯示的時間就太少了,以致影響到LED的亮度。 解決串行傳輸中列數據準備和列數據顯示的時間矛盾問題,可以采用重疊處理的方法。即在顯示本行各列數據的同時,傳送下一列數據。為了達到重疊處理的目的,列數據的顯示就需要具有所存功能。經過上述分析,就可以歸納出列驅動器電路應具有的功能。對于列數據準備來說,它應能實現串入并處的移位功能;對于列數據顯示來說,應具有并行鎖存的功能。這樣,本行已準備好的數據打入并行鎖存器進行顯示時,串并移位寄存器就可以準備下一行的列數據,而不會影響本行的顯示。圖2-2為顯示屏電路實現的結構框圖。 file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtml1/01/clip_image004.jpg 圖2-2 顯示屏電路結構框圖 第三章16*16點陣LED電子顯示屏軟硬件的設計3.1 單片機系統及外圍電路高的刷新頻率,時期顯示更穩定。單片機的串口與列驅動器相連,用來顯示數據。P1口低4位與行驅動器相連,送出行選信號;P1.5~P1.7口則用來發送控制信號。P0口和P2口空著,在有必要的時候可以擴展系統的ROM和RAM。16×16點陣顯示屏的硬件原理圖如圖3-1。 file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtml1/01/clip_image006.jpg 圖3-1 16x16的點陣顯示屏的硬件原理圖3.2 行驅動器由于4點陣顯示器有16行,為充分利用單片機的接口,本電路中加入了一個4-16線譯碼器74LS154,其輸入是一個16進制碼,解碼輸出為低態掃描信號,單片機P1口第四位輸出的行號經4/6線譯碼器74LS154譯碼器后生產16條行選通訊信號線,再經過驅動器驅動對應的線。一條行線上要帶動16列*4的LED器件5mA電流計算,128個LED同時發光時,需要640mA的電流,選用三極管8550作為驅動管可滿足要求。 3.3 列驅動器列驅動電路由集成電路74HC595構成。它具有一個8位串入并出的移位寄存器和一個8位輸出鎖存器的結構,而且移位寄存器和輸出鎖存器的控制是各自獨立的,可以實現在顯示本行列數據的同時,傳送下一行的列數據,既達到重疊處理的目的。如圖3-3是集成電路74HC595的結構圖。 file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtml1/01/clip_image007.gif 圖3-3 74HC595結構圖將8片74HC595進行級連,可共用一個移位時鐘SCK及數據鎖存信號RCK。這樣,當第一行需要顯示的數據經過8x8=64個SCK時鐘后便可將其全 部移入74HC595中,此時還將產生一個數據鎖存信號RCK將數據鎖存在74HC595中,并在使能信號G的作用下,使串入數據并行輸出,從而使與各輸出位對應的場驅動管處于放大或截止狀態;同時由行掃描控制電路產生信號使第一行掃描管導通,相當于第一行LED的正端都接高,顯然,第一行LED管的亮滅就取決于74HC595中的鎖存信號;此外,在第一行LED管點亮的同時,再在74HC595中移入第二行需要顯示的數據,隨后將其鎖存,同時由行掃描控制電路將第一行掃描管關閉而接通第二行,使第二行LED管點亮,以此類推,當第十六行掃描過后再回到第一行,這樣,只要掃描速度足夠高,就可形成一幅完整的文字或圖像。
第四章16*16點陣LED電子顯示屏系統程序設計顯示屏軟件的主要功能是向屏體提供顯示數據,并產生各種控制信號,使屏幕按設計的要求顯示。根據軟件分層次設計的原理,可以把顯示屏的軟件系統分為兩層;第一層是底層的顯示驅動程序,第二層是上層的系統應用程序。顯示驅動程序負責向屏體送顯示數據,并負責產生行掃描信號和其他控制信號,配合完成LED顯示屏的掃描顯示工作。顯示驅動器程序由定時T0中斷程序實現。系統應用程序完成系統環境設置(初始化)、顯示效果處理等工作,由主程序來實現。 從有利于實現較復雜的算法(顯示效果處理)和有利于程序結構化考慮,顯示屏程序適宜采用C語言編寫。 4.1 顯示驅動程序顯示驅動程序在進入中斷后首先要對定時器T0重新賦初值,以保證顯示屏刷新率的穩定,1/16掃描顯示屏的刷新率(幀頻)計算公式如下: 刷頻率(幀頻)=file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtml1/01/clip_image009.gif×file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtml1/01/clip_image011.gif溢出率=file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtml1/01/clip_image009.gif×file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtml1/01/clip_image014.gif (4-1) 其中f位晶振頻率,t為定時器T0初值(工作在16位定時器模式)。 然后顯示驅動程序查詢當前燃亮的行號,從顯示緩存區內讀取下一行的顯示數據,并通過串口發送給移位寄存器。為消除在切換行顯示數據的時候產生拖尾現象,驅動程序先要關閉顯示屏,即消隱,等顯示數據打入輸出鎖存器并鎖存,然后再輸出新的行號,重新打開顯示。圖4-1為顯示驅動程序流程圖。
| | file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtml1/01/clip_image015.gif |
圖4-1 顯示驅動程序流程圖4.2 系統主程序本文設計的系統軟件能使系統在目測條件下LED顯示屏各點亮度均勻、充足,可顯示圖形和文字,顯示圖形和文字應穩定、清晰無串擾。圖形或文字顯示有靜止、移入移出等顯示方式。 系統主程序開始以后,首先是對系統環境初始化,包括設置串口、定時器、中斷和端口;然后以“卷簾出”效果顯示圖形,停留約3s;接著向上滾動顯示“上天下地”這4個漢字及一個圖形,然后以“卷簾入”效果隱去圖形。由于單片機沒有停機指令,所以可以設置系統程序不斷的循環執行上述顯示效果。 單元顯示屏可以接收來自控制器(主控制電路板)或上一級顯示單元模塊傳輸下來的數據信息和命令信息,并可將這些數據信息和命令信息不經任何變化地再傳送到下一級顯示模塊單元中,因此顯示板可擴展至更多的顯示單元,用于顯示更多的顯示內容。圖4-2系統主程序流程圖。 file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtml1/01/clip_image016.gif file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtml1/01/clip_image017.gif
圖4-2 系統主程序流程圖
4.3 單片機匯編程序 ORG 0000H LJMP START ORG 0003H RETI ORG 000BH LJMP INTT0 ORG 0013H RETI ORG 001BH RETI ORG 0023H RETI ORG 002BH RETI START: MOV 20H,#00H MOV A,#0FFH MOV P1,A MOV P2,A MOV P3,A MOV P0,A CLR P1.6 MOV TMOD,#01H MOV TH0,#0FCH MOV TL0,#18H MOV SCON,#00H MOV IE,#82H MOV SP,#70H LCALL DIS1 MAIN: MOV DPTR,#TAB LCALL MOVDISP MOV DPTR,#TAB LCALL MOVDISP1 AJMP MAIN MOVDISP:MOV R1,#6 DISLOOP:MOV R3,#100 DISMOV:MOV R2,#00H SETB TR0 WAITMOV:JBC 00H,DISMOV1 AJMP WAITMOV DISMOV1:DJNZ R3,DISMOV MOV A,#128 ADD A,DPL MOV DPL,A MOV A,#0 ADDC A,DPH MOV DPH,A DEC R1 MOV A,R1 JZ MOVOUT AJMP DISLOOP MOVOUT:RET MOVDISP1:MOV R1,#255 DISLOOP1:MOV R3,#10 DISMOV2:MOV R2,#00H SETB TR0 WAITMOV1:JBC 00H,DISMOV3 AJMP WAITMOV1 DISMOV3:DJNZ R3,DISMOV2 INC DPTR INC DPTR DEC R1 MOV A,R1 JZ MOVOUT1 AJMP DISLOOP1 MOVOUT1:RET DIS1: MOV R3,#5AH DIS11: MOV R2,#00H MOV DPTR,#TAB SETB TR0 WAIT11:JBC 00H,DIS111 AJMP WAIT11 DIS111: DJNZ R3,DIS11 RET INTT0: PUSH ACC MOV TH0,#0FCH MOV TL0,#18H MOV A,#97 ADD A,DPL MOV DPL,A MOV A,#0 ADDC A,DPH MOV DPH,A MOV A,#0 MOVC A,@A+DPTR MOV SBUF,A WAIT: JBC TI,GO AJMP WAIT GO: MOV A,DPL SUBB A,#1 MOV DPL,A MOV A,DPH SUBB A,#0 MOV DPH,A MOV A,#0 MOVC A,@A+DPTR MOV SBUF,A WAIT1: JBC TI,GO1 AJMP WAIT1 GO1: MOV R0,#03H MLOOP:MOV A,DPL SUBB A,#31 MOV DPL,A MOV A,DPH SUBB A,#0 MOV DPH,A MOV A,#0 MOVC A,@A+DPTR MOV SBUF,A WAIT2: JBC TI,GO2 AJMP WAIT2 GO2: MOV A,DPL SUBB A,#1 MOV DPL,A MOV A,DPH SUBB A,#0 MOV DPH,A MOV A,#0 MOVC A,@A+DPTR MOV SBUF,A WAIT3: JBC TI,GO3 AJMP WAIT3 GO3: DJNZ R0,MLOOP SETB P1.7 NOP SETB P1.6 NOP NOP CLR P1.6 MOV A,R2 ORL A,#0F0H MOV R2,A MOV A,P1 ORL A,#0FH ANL A,R2 MOV P1,A CLR P1.7 INC R2 INC DPTR INC DPTR MOV A,R2 ANL A,#0FH JNZ GO4 SETB 00H MOV A,DPL SUBB A,#32 MOV DPL,A MOV A,DPH SUBB A,#0 MOV DPH,A CLR TR0 GO4: POP ACC RETI TAB:DB FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF DB FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF DB FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF DB FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF DB FDFF,FDFF,FDFF,FDFF,FDFF,FDFF,FC07,FDFF,FDFF,FDFF,FDFF,FDFF,FDFF,FDFF,FDFF,0000 DB 0000,FDFF,FDFF,FDFF,FDFF,FDFF,0000,FDFF,FDFF,FDFF,FBFF,F78F,EFBF,DFDF,BFEF,7FF0 DB 0000,FDFF,FDFF,FDFF,FDFF,F8FF,FDBF,FDDF,FDCF,FDF8,FDFB,FDFF,FDFF,FDFF,FDFF,FFFF DB EFF7,EFF7,EFB7,EFB7,EFB7,EE00,EFB6,01B6,EFB6,EFB6,EBB4,E7BF,EFBF,DFBF,BFBE,7F80 END
第五章 總結本文設計的是4個16*16的LED圖文顯示屏,能夠在目測的條件下LED顯示屏各點亮度均勻、充足,可顯示圖形和文字,顯示圖形和文字穩定、清晰無串擾。圖形或文字顯示有靜止、移入移出等顯示方式。本系統具有硬件少,結構簡單,容易實現,性能穩定可靠,成本低等優點。雖然本設計只使用了一塊16*16LED點陣,電路簡單,但是已經包涵了LED顯示屏基本原理個基本程序。 在此次設計中通過查閱大量的相關資料,詳細了解LED的發光原理和LED顯示屏的原理,了解了LED的現狀,清楚的了解LED顯示屏與其他顯示屏相比較的那些優點,明確了研究目標。遺憾的是由于軟件自身的缺陷原因無法完成設計的仿真試驗,無法直觀看到程序的可行性,對于程序中存在的問題無法直接暴露出來。 通過這次課程設計,重新學習并進一步復習了89C51:熟練掌握word軟件的使用。進一步提高了自己在實際設計過程中研究問題、發現問題、解決問題的能力但從中也發現自己存在一些不足之處:對知識的積累還不夠,有些問題自己不能夠獨立解決,對實驗操作還要進一步熟練,只有這樣才能讓自己在在不斷的學習中提高自己。
參考文獻[1] 郭建江.單片機技術與應用.東南大學出版社. [2] 諸昌鈐 編著 :《LED顯示屏系統原理及工程技術》.成都:電子科技大學出版社 [3] 張志良 主編 :《單片機原理及控制技術》.北京:機械工業出版社,2005 [4] 李光飛 編著 :《單片機課程設計實例指導》.北京:北京航空航天出版社, [5] 吳金戍,沈慶陽,郭庭吉編著.8051單片機實踐與應用.北京:清華大學出版社. [6] 馬忠梅,單片機外圍電路設計 —北京:北京航空航天大學出版社 2005 [7] 胡漢才,單片機原理與接口技術[M] 北京:清華大學出版社,1995,6
|