8×8點陣led數(shù)碼圖形顯示的課程設(shè)計_第1頁
已閱讀1頁,還剩21頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p>  8×8點陣LED數(shù)碼圖形顯示器的課程設(shè)計</p><p>  第一章 總體方案設(shè)計</p><p><b>  1.1總體設(shè)計要求</b></p><p>  本系統(tǒng)采用單片機AT89C51為LED顯示屏的控制核心,制造一種簡單的8×8顯示屏,能夠在目測條件下LED顯示屏各點亮度均勻、充足,可顯示圖形和

2、文字,顯示圖形和文字穩(wěn)定、清晰無串?dāng)_,圖形或文字顯示有靜止、移入移出等顯示方式。本系統(tǒng)具有硬件少,結(jié)構(gòu)簡單,容易實現(xiàn),性能穩(wěn)定可靠,成本低等特點。</p><p>  根據(jù)設(shè)計要求,初步確定設(shè)計方案如下:</p><p>  1. 選擇AT89C51單片機(晶振頻率為f=12MHZ)作為整個系統(tǒng)的核心器件,對整個系統(tǒng)進行總體控制,發(fā)送并時時處理系統(tǒng)信息。</p><p&

3、gt;  2.通過編程顯示數(shù)字:“★,●,心形圖”。</p><p>  3.動態(tài)顯示,即跑馬燈文字幕,每0.25秒左移一次。 </p><p>  4. 掃描信號連接到單片機的P0口,顯示信號連接到單片機的P2口。</p><p>  5.點陣的點亮過程有程序控制,由驅(qū)動電路完成,點陣采用單色顯示,其中驅(qū)動電路采共陰型高態(tài)掃描、高態(tài)顯示信號的驅(qū)動電路。</p

4、><p><b>  1.2系統(tǒng)框圖</b></p><p>  本文設(shè)計行、列驅(qū)動電路,顯示屏電路,運用單片機的智能化,系統(tǒng)的將每個功能電路模塊連接在一起,總體結(jié)構(gòu)設(shè)計如下圖1-1所示:</p><p>  圖 1-1 系統(tǒng)框圖</p><p>  第二章 系統(tǒng)硬件電路的設(shè)計</p><p>  

5、本系統(tǒng)的硬件電路是由單片機最小系統(tǒng)、動態(tài)顯示驅(qū)動電路兩部分組成。其中,單片機最小系統(tǒng)包括電源電路、復(fù)位電路和晶振電路構(gòu)成;顯示部分使用共陰型高臺掃描、高態(tài)顯示信號驅(qū)動電路,完成“跑馬燈”文字幕效果。</p><p>  2.1 單片機最小系統(tǒng)設(shè)計</p><p>  2.1.1 單片機的時鐘電路</p><p>  AT89C51單片機內(nèi)部的振蕩電路是一個高增益反向

6、放大器,引線X1和X2分別是放大器的輸入端和輸出端。單片機內(nèi)部雖然有振蕩電路,但要形成時鐘,外部還需附加電路。AT89C51的時鐘產(chǎn)生方式有兩種:內(nèi)部時鐘電方式和外部時鐘方式。由于外部時鐘方式用于多片單片機組成的系統(tǒng)中,所以此處選用內(nèi)部時鐘方式。</p><p>  內(nèi)部時鐘方式:利用其內(nèi)部的振蕩電路在X1和X2引線上外接定時元件,內(nèi)部振蕩電路產(chǎn)生自激振蕩。最常用的是在 X1和X2之間接晶體振蕩器與電路構(gòu)成穩(wěn)定的

7、自激振蕩器,如圖2-1電路所示為單片機最常用的時鐘振蕩電路的接法,其中晶振可選用振蕩頻率為12MHz的石英晶體,電容器一般選擇30PF左右。</p><p>  圖2-1使用片內(nèi)振蕩電路的時鐘電路</p><p>  2.1.2 單片機的復(fù)位電路</p><p>  本設(shè)計中AT89C51是采用上電自動復(fù)位和按鍵復(fù)位兩種方式。最簡單的復(fù)位電路如圖2-2所示。上電瞬間

8、,RC電路充電,RST引線端出現(xiàn)正脈沖,只要RST端保持10ms以上的高電平,就能使單片機有效地復(fù)位。其中R1和R2分別選擇200Ω和2KΩ的電阻,電容器一般選擇22μF。</p><p>  圖2-2 AT89C51的復(fù)位電路</p><p>  2.1.3 AT89C51的最小應(yīng)用系統(tǒng)</p><p>  AT89C51是片內(nèi)有程序存儲器的單片機,要構(gòu)成最小應(yīng)用

9、系統(tǒng)時只要將單片機接上外部的晶體或時鐘電路和復(fù)位電路即可,如圖2-3所示。這樣構(gòu)成的最小系統(tǒng)簡單可靠,其特點是沒有外部擴展,有可供用戶使用的大量的I∕O線。</p><p>  圖2-3 AT89C51單片機構(gòu)成的最小系統(tǒng)</p><p>  2.2 顯示器及接口設(shè)計</p><p>  2.2.1 8×8點陣LED顯示器的組成原理及控制方式</p&

10、gt;<p>  本次設(shè)計中采用8×8點陣LED顯示器,簡稱LED點陣板或LED矩陣板。它是以發(fā)光二極管為像素,按照行與列的順序排列起來,用集成工藝制成的顯示器件。有單色和雙色之分,這種顯示器有共陽極接法和共陰極接法兩種,設(shè)計中用到的是共陽極的顯示器。共陽極接法的原理圖如圖2-4所示,圖中畫出了8×8點陣的二極管。每一行發(fā)光二極管的陽極接在一起,有一個引出端r,每一列發(fā)光二極管的陰極接在一起,有一個引出

11、端c。當(dāng)給發(fā)光二極管陽極引出端r1加高電平,陰極引出端c1加低電平時,左上角的二極管被點亮因此,對于行和列的電平進行掃描控制時,可以達(dá)到顯示不同字符的目的。</p><p>  圖2-4 8×8點陣LED顯示器組成原理圖</p><p>  (1).“★”在8X8LED點陣上顯示圖如下圖所示</p><p>  12H,14H,3CH,48H,3CH,1

12、4H,12H,00H</p><p>  (2).“●”在8X8LED點陣上顯示圖如下圖所示</p><p>  00H,00H,38H,44H,44H,44H,38H,00H</p><p>  (3).心形圖在8X8LED點陣上顯示圖如下圖所示</p><p>  30H,48H,44H,22H,44H,48H,30H,00H</p

13、><p>  圖2-5 8×8點陣LED引腳的排列圖</p><p>  2.2.2 8×8點陣LED顯示器與單片機的接口</p><p>  8×8點陣LED的引腳圖如圖2-5所示,當(dāng)采用單片機進行控制時,連接點陣顯示器的共陽極r端需經(jīng)驅(qū)動三極管9012與單片機的P2口相連,而共陰極c端需經(jīng)限流電阻與單片機的P0口相連。在編程控制時,將

14、8×8點陣LED顯示分成行和列兩部分,字符數(shù)據(jù)從P0口輸出,掃描控制字從P2口輸出,每一列由一個字節(jié)的數(shù)據(jù)組成,數(shù)據(jù)可一次送入,然后掃描一行,顯示一個字需要掃描8次。</p><p>  2.2.3 驅(qū)動電路的設(shè)計</p><p>  顯示器驅(qū)動是一個非常重要的問題,如果驅(qū)動能力差,顯示器亮度就低;而驅(qū)動器長期在超負(fù)荷下運行則很容易損壞。</p><p>

15、  如果是靜態(tài)顯示,則LED驅(qū)動器的選擇較為簡單,只要驅(qū)動器的驅(qū)動能力與顯示器工作電流相匹配即可。而且只須考慮段的驅(qū)動,因為,共陽極接+5V,而共陰極接地,所以位的驅(qū)動無須考慮。</p><p>  動態(tài)顯示則不然,由于一位數(shù)據(jù)的顯示是由段和位選信號共同配合完成的,因此,必須同時考慮段和位的驅(qū)動能力,而且段的驅(qū)動能力決定位的驅(qū)動能力。</p><p>  理論分析表明,同樣的驅(qū)動器,當(dāng)其驅(qū)

16、動靜態(tài)顯示器時,其亮度為驅(qū)動動態(tài)顯示器的n倍,n近似為顯示位數(shù)。所以要使動態(tài)顯示器達(dá)到靜態(tài)顯示器的亮度,必須將驅(qū)動器能力提高n倍。</p><p>  本設(shè)計中,因為采用了8×8點陣LED顯示器,用AT89C51單片機進行控制,因此它很適宜于按掃描方式動態(tài)顯示多個字符數(shù)據(jù),所以我們只選用了8個PNP型三極管作為驅(qū)動顯示器的電路。如圖2-6所示,因AT89C51單片機的I∕O口有20mA的吸入電流,正因為

17、這一特點,使的本設(shè)計中的驅(qū)動電路部分大大簡化,不用附加專門的驅(qū)動電路即可正常工作。</p><p>  圖2-6 顯示驅(qū)動電路</p><p>  2.3電源電路的設(shè)計</p><p>  電源電路采用普通集成穩(wěn)壓電路,在本設(shè)計中,由于考慮到成本問題,這部分電路就以輸出+5V的穩(wěn)壓電源代替。</p><p>  第三章. 8×8點陣

18、顯示器控制系統(tǒng)的硬件設(shè)計</p><p>  3.1 硬件系統(tǒng)的總體設(shè)計</p><p>  根據(jù)設(shè)計要求與設(shè)計方案,硬件電路的設(shè)計框圖如圖3-1所示。硬件電路結(jié)構(gòu)由8個部分組成:時鐘電路、復(fù)位電路、按鍵接口電路、電源電路、點陣顯示陽極驅(qū)動電路、點陣顯示陰極驅(qū)動電路和8×8點陣顯示電路。</p><p>  圖3-1 8×8點陣顯示器組成原理框圖

19、</p><p>  3.2 單片機AT89C51芯片的性能及功能的分析</p><p>  3.2.1 AT89C51的主要特性: </p><p>  · 32條可編程I/O線 · 兩個16位定時器/計數(shù)器·  6個中斷源 · 可編程串行通道

20、· 低功耗的閑置和掉電模式· 片內(nèi)振蕩器和時鐘電路</p><p>  3.2.2 AT89C51管腳說明:</p><p> ?、賄CC:供電電壓。 GND:接地。②P0口:P0口為一個8位漏級開路雙向I/O口,每腳可吸收8TTL門電流。當(dāng)P1口的管腳第一次寫1時,被定義為高阻輸入。P0能夠用于外部程序數(shù)據(jù)存儲器,它可以被定義為數(shù)據(jù)/地址的第八位。在FIA

21、SH編程時,P0 口作為原碼輸入口,當(dāng)FIASH進行校驗時,P0輸出原碼,此時P0外部必須被拉高。</p><p>  ③ P1口:P1口是一個內(nèi)部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。P1口管腳寫入1后,被內(nèi)部上拉為高,可用作輸入,P1口被外部下拉為低電平時,將輸出電流,這是由于內(nèi)部上拉的緣故。在FLASH編程和校驗時,P1口作為第八位地址接收。</p>

22、<p> ?、?#160;P2口:P2口為一個內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個TTL門電流,當(dāng)P2口被寫“1”時,其管腳被內(nèi)部上拉電阻拉高,且作為輸入。并因此作為輸入時,P2口的管腳被外部拉低,將輸出電流。這是由于內(nèi)部上拉的緣故。P2口當(dāng)用于外部程序存儲器或16位地址外部數(shù)據(jù)存儲器進行存取時,P2口輸出地址的高八位。在給出地址“1”時,它利用內(nèi)部上拉優(yōu)勢,當(dāng)對外部八位地址數(shù)據(jù)存儲器進行讀寫時,P2口

23、輸出其特殊功能寄存器的內(nèi)容。P2口在FLASH編程和校驗時接收高八位地址信號和控制信號。</p><p>  ⑤P3口:P3口管腳是8個帶內(nèi)部上拉電阻的雙向I/O口,可接收輸出4個TTL門電流。當(dāng)P3口寫入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流(ILL)這是由于上拉的緣故。</p><p>  ⑥RST:復(fù)位輸入。當(dāng)振蕩器復(fù)位器件時,

24、要保持RST腳兩個機器周期的高電平時間。⑦ALE/PROG:當(dāng)訪問外部存儲器時,地址鎖存允許的輸出電平用于鎖存地址的地位字節(jié)。在FLASH編程期間,此引腳用于輸入編程脈沖。在平時,ALE端以不變的頻率周期輸出正脈沖信號,此頻率為振蕩器頻率的1/6。因此它可用作對外部輸出的脈沖或用于定時目的。然而要注意的是:每當(dāng)用作外部數(shù)據(jù)存儲器時,將跳過一個ALE脈沖。如想禁止ALE的輸出可在SFR8EH地址上置0。此時, ALE只有在執(zhí)行MOVX,

25、MOVC指令是ALE才起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)ALE禁止,置位無效。</p><p>  ⑧ /PSEN:外部程序存儲器的選通信號。在由外部程序存儲器取指期間,每個機器周期兩次/PSEN有效。但在訪問外部數(shù)據(jù)存儲器時,這兩次有效的/PSEN信號將不出現(xiàn)。⑨ /EA/VPP:當(dāng)/EA保持低電平時,則在此期間外部程序存儲器(0000H-FFFFH),不管是否有內(nèi)部程序存儲

26、器。注意加密方式1時,/EA將內(nèi)部鎖定為RESET;當(dāng)/EA端保持高電平時,此間內(nèi)部程序存儲器。在FLASH編程期間,此引腳也用于施加12V編程電源(VPP)。⑩XTAL1:反向振蕩放大器的輸入及內(nèi)部時鐘工作電路的輸入。 XTAL2:來自反向振蕩器的輸出。</p><p>  3.3 具體電路及功能分析</p><p>  3.3.1 顯示電路</p><p>  

27、本設(shè)計采用雙色8×8點陣模塊顯示,但是在設(shè)計中我們只用單色顯示,我們通過改變限流電阻的阻值的大小來改變顯示字符的亮度。</p><p>  3.3.2 電源電路</p><p>  電源電路采用普通的三端集成穩(wěn)壓電源。為整個系統(tǒng)提供+5V的電壓。</p><p>  3.3.3 電路原理圖 </p><p>  圖3-2 電路原理

28、圖</p><p>  3.4.硬件系統(tǒng)連線 (1).把“單片機系統(tǒng)”區(qū)域中的P1端口用8芯排芯連接到“點陣模塊”區(qū)域中的“DR1-DR8”端口上;(2).把“單片機系統(tǒng)”區(qū)域中的P3端口用8芯排芯連接到“點陣模塊”區(qū)域中的“DC1-DC8”端口上;(3).把“單片機系統(tǒng)”區(qū)域中的P2.0/A8端子用導(dǎo)線連接到“獨立式鍵盤”區(qū)域中的SP1端子上;</p><p>  第四章 系統(tǒng)軟件

29、電路的設(shè)計</p><p>  4.1 軟件設(shè)計思想</p><p>  主程序先進行設(shè)置中斷,并啟動,再進行鍵盤掃描載入★,●,心形圖,然后判斷一組字型是否掃描完,按不同情況進行循環(huán)調(diào)用子程序。進入子程序后,首先設(shè)置相應(yīng)的程序,反復(fù)調(diào)用顯示子程序,并在顯示過程中反復(fù)調(diào)用鍵盤掃描子程序進行延時,判斷是否退出相應(yīng)的方式顯示子程序。設(shè)計過程中,能很好得提高按鍵響應(yīng)速度。如圖4-1所示為軟件系統(tǒng)

30、框圖。</p><p>  圖 4-1 軟件設(shè)計框圖</p><p>  字符編碼:8×8點陣可以看成是從上至下8個字節(jié),每個字節(jié)8位,因為該點陣為共陰型點陣,因此若該燈亮,則該位為“1”;該燈不亮,則該位為“0”。所以★,●,心形圖的編碼為,從上至下:</p><p>  “★”: 12H,14H,3CH,48H,3CH,14H,12H,00H<

31、/p><p>  “●”: 00H,00H,38H,44H,44H,44H,38H,00H</p><p>  “心形圖”: 30H,48H,44H,22H,44H,48H,30H,00H</p><p><b>  4.2 主程序設(shè)計</b></p><p>  主程序首先設(shè)置并啟動T0中斷,然后調(diào)用初始化程序,為后面程序

32、要用到的數(shù)據(jù)調(diào)入,并清零一些用到的數(shù)據(jù)單元,然后載入★,●,心形圖,進行掃描。圖4-2為主程序流程圖。 </p><p>  圖 4-2 主程序流程圖</p><p><b>  主程序如下:</b></p><p>  COLUMN REG P0 ;行</p><p>

33、;  ROW REG P2 ;列</p><p>  SCANCODE EQU 10000000B ;掃描碼</p><p>  SPEED EQU 1 ;0.25s延遲</p><p>  S_TIME E

34、QU -2500 ;2.5ms掃描時間</p><p>  ORG 0000H ;程序從0000H地址開始</p><p>  JMP MAIN ;跳至MAIN</p><p>  ORG 000BH ;TIMER0中斷

35、向量</p><p>  JMP TIMER0 ;跳至TIMER0中斷子程序</p><p>  MAIN: MOV IE,#82H ;設(shè)定TIMER0中斷</p><p>  MOV TOMD,#01H ;使用T0定時器,方式1</p><p

36、>  MOV SP,#60H ;移開堆棧指針</p><p>  SETB RS0 ;切換到RB1</p><p>  MOV R1,#20H ;顯示存儲起始地址</p><p>  MOV R2,#8 ;掃描8行</

37、p><p>  MOV R3,#SCANCODE ;載入掃描碼</p><p>  CLR RS0 ;切換回RB0</p><p>  MOV TH0,#0F6H ;設(shè)定每行掃描時間</p><p>  MOV TL0,#3CH ;設(shè)定每

38、行掃描時間</p><p>  SETB TR0 ;啟動TIMER0</p><p>  LOOP: MOV DPTR,#TABLE ;將數(shù)據(jù)指針指向TABLE地址</p><p>  MOV R4,#4 ;4組字型 </p><p>

39、  SJMP $ ;等待中斷或其他</p><p><b>  4.3 子程序設(shè)計</b></p><p>  子程序中包括動態(tài)顯示程序、按鍵程序、延時程序和中斷程序四種,下面依次詳細(xì)介紹。</p><p>  4.3.1 動態(tài)顯示程序設(shè)計</p><p>  本系統(tǒng)中采用左移動

40、態(tài)顯示方式。對于8×8LED陣列,其左移就是顯示4個不同的字型。首先掃描第一個字型,同樣是8行、8次掃描,8次顯示;完成第一個字型后,再掃描第二個字型;完成第二個字型后,再掃描第三個字型······依次類推,即可產(chǎn)生“★,●,心形圖”左移的感覺。</p><p>  假如第一個字型的編碼為00H 00H 36H 49H 49H 36H

41、 00H 00H;第二個字型的編碼為00H 1CH 22H 41H 41H 22H 1CH 00H,也就是把第一個字型編碼中,第1行顯示數(shù)據(jù),變?yōu)榈?行顯示數(shù)據(jù)、第2行顯示數(shù)據(jù),變?yōu)榈?行顯示數(shù)據(jù)、第3行顯示數(shù)據(jù),變?yōu)榈?行顯示數(shù)據(jù)、第4行顯示數(shù)據(jù),變?yōu)榈?行顯示數(shù)據(jù)······依次類推。</p><p>  當(dāng)?shù)谝粋€字型掃描完成后,就

42、進行這樣的調(diào)整動作,以產(chǎn)生第二個字型的編碼。同樣的,當(dāng)?shù)诙€字型掃描完成后,就進行這樣的調(diào)整動作,以產(chǎn)生第三個字型的編碼。這個調(diào)整動作是將8個編碼根據(jù)順序填入存儲器,調(diào)整存儲器地址的程序流程圖如圖4-3所示。</p><p>  圖 4-3 動態(tài)顯示流程圖</p><p>  動態(tài)顯示子程序如下:</p><p>  MOV R2,#8

43、 ;轉(zhuǎn)移次數(shù)</p><p>  MOV R0,#20H ;R0內(nèi)置目的存儲器地址</p><p>  MOV R1,#21H ;R1內(nèi)置來源存儲器地址</p><p>  MOV 28H,@R0 ;先將第一行內(nèi)容搬至28H地址</p><p>  MOVE_L: MOV

44、A,@R1 ;將來源存儲器內(nèi)容搬至ACC</p><p>  MOV @R0,A ;將ACC內(nèi)容搬至目的存儲器</p><p>  INC R0 ;下一個目的地址</p><p>  INC R1 ;下一個來源地址</p><p&

45、gt;  DJNZ R2,MOVE_L ;跳至MOVE_L,執(zhí)行8次</p><p>  RET ;返回</p><p>  4.3.2 按鍵程序設(shè)計</p><p>  系統(tǒng)中采用獨立式非編碼鍵盤,在P1口接一個按鍵,P0端口分別控制8×8LED陣列。當(dāng)有鍵按下時,對應(yīng)的LED亮;反之則滅。如圖4

46、-4所示為按鍵控制流程圖。</p><p><b>  按鍵子程序如下:</b></p><p>  ORG 0000H</p><p>  START: MOV P1,#0FFH ;置P1口為輸入狀態(tài)</p><p>  LOOP: MOV A,P1 ;讀入P1口

47、狀態(tài)數(shù)據(jù)</p><p><b>  NOP</b></p><p>  MOV P0,A ;將狀態(tài)數(shù)據(jù)送入P0口,控制LED陣列</p><p>  SJMP LOOP ;繼續(xù)循環(huán)</p><p><b>  END</b></p>

48、<p>  4.3.3 延時程序設(shè)計</p><p>  延時程序在單片機編程中使用非常廣泛,也很重要,在本設(shè)計的程序中用到了延時子程序。已知晶振12MHZ,所以機器周期為1μs,但執(zhí)行一次DJZN操作為2μs,則延時時間是(1×200×250)次×2μs/次=100000μs=100ms。延時流程圖如圖4-5所示。 </p><p>  圖 4-5

49、 延時流程圖</p><p><b>  程序如下:</b></p><p>  DELAY: MOV R7,#1</p><p>  D1: MOV R6,#200</p><p>  D2: MOV R5,#250</p><p>  DJNZ R

50、5,$</p><p>  DJNZ R6,D2</p><p>  DJNZ R7,D1</p><p><b>  RET</b></p><p>  4.3.4 中斷程序設(shè)計</p><p>  顯示程序在進入中斷后首先要對定時器T0重新賦初值,以保證顯示屏刷新率的穩(wěn)定。根據(jù)設(shè)計要求

51、,設(shè)定掃描時間為2.5ms,那么定時器T0定時2.5ms,則定時初值計算公式為:</p><p>  定時時間t×時鐘頻率/12</p><p>  中斷流程圖如圖4-6所示。</p><p>  圖4-6 中斷流程圖</p><p><b>  中斷子程序如下:</b></p><p&g

52、t;  TIMER0: CLR TR0 ;關(guān)閉TIMER0</p><p>  PUSH A ;儲存ACC</p><p>  SETB RS0 ;切換到RB1</p><p>  MOV COLUMN,#0 ;關(guān)閉LED陣列&

53、lt;/p><p>  MOV A,@R1 ;取出顯示信號</p><p>  ;使用共陽極式LED陣列,則加入下一列指令</p><p><b>  CPL A</b></p><p>  MOV ROW,A ;輸出顯示信號</p><

54、;p>  MOV A,R3 ;載入掃描碼</p><p>  MOV COLUMN,A ;輸出掃描碼(顯示一行)</p><p>  RR A ;下一個掃描碼</p><p>  MOV R3,A ;儲存下一個掃描碼&l

55、t;/p><p>  INC R1 ;下一個顯示信號</p><p>  DJNZ R2,NEXT_C ;未超過8行則跳至NEXT_C</p><p>  MOV R2,#8 ;重新開始掃描</p><p>  MOV R1,#20H

56、 ;從第一行開始掃描</p><p>  NEXY_C: MOV TH0,#F6H ;設(shè)定每行掃描時間</p><p>  MOV TL0,#3CH ;設(shè)定每行掃描時間</p><p>  SETB TR0 ;啟動TIMER0</p><p&

57、gt;  CLR RS0 ;切換回RB0</p><p>  POP A ;取回ACC</p><p><b>  RETI</b></p><p>  第五章 調(diào)試及性能分析</p><p><b>  5.1 軟件調(diào)試<

58、/b></p><p>  軟件調(diào)試主要是利用計算機仿真針對程序中可能存在的錯誤進行檢測,直到得到正確的顯示結(jié)果。按照程序流程圖在KEIL C51軟件中編寫好程序,在此軟件中檢測編寫好的程序是否有誤語法錯誤。此次軟件調(diào)試參考前面的子程序,選擇動態(tài)顯示程序和延時程序進行調(diào)試,并觀察其結(jié)果,如圖5-1、5-2所示。</p><p>  圖 5-1 動態(tài)顯示程序調(diào)試結(jié)果</p>

59、;<p>  圖 5-2 延時程序調(diào)試結(jié)果</p><p><b>  5.2 性能分析</b></p><p>  此次系統(tǒng)設(shè)計結(jié)果較好,LED顯示屏能很好的顯示信息。這個方案設(shè)計的8x8的點陣LED圖文顯示屏,電路簡單,成本較低,且較容易擴展成更大的顯示屏;顯示屏各點亮度均勻、充足;顯示圖形或文字穩(wěn)定、清晰無串?dāng)_;可用靜止、移入移出等多種顯示方式顯

60、示圖形或文字。</p><p><b>  總結(jié)</b></p><p>  通過此次論文設(shè)計,讓我學(xué)到了許多知道的和不知道的,都有提高,在單片機的選擇、顯示屏的組合還有各種器件的選用有了一個明確的認(rèn)識,程序設(shè)計上清晰地思路,理論在實踐方面的運用能力有巨大的提高。在實踐以前,由于對單片機有一定的興趣,我通過課外學(xué)習(xí)已經(jīng)接觸了很多概念以及設(shè)計方式,但不專業(yè)。但是通過這次

61、深層次的學(xué)習(xí)、設(shè)計我有了一定的實踐經(jīng)驗和理論基礎(chǔ),也讓我可以進行更深的研究學(xué)習(xí),在設(shè)計思路上,通過查閱資料了解了許多方法,認(rèn)識到形式的多樣性,模仿優(yōu)秀作品是每個設(shè)計師必走之路,但是做設(shè)計必須要有自己的思想,人也要有自己的鮮明個性,久了就成了自己的風(fēng)格,風(fēng)格的養(yǎng)成與一個人的藝術(shù)素養(yǎng)和個人修養(yǎng)有直接關(guān)系。</p><p>  要拓展自己的知識面,使自己的知識系統(tǒng)化知識需要接觸社會的方方面面,光有書本知識是遠(yuǎn)遠(yuǎn)不夠的。

62、要求自己在以后的學(xué)習(xí)中多想,多讀,多學(xué)。要求自己的寫作水平一定要過硬。經(jīng)驗的提高,讓我今后在設(shè)計時更加方便、快捷,也為畢業(yè)后的就業(yè)提供了保障。 </p><p><b>  參考文獻(xiàn)</b></p><p>  [1]張曉峰,高斌·電氣自動化實驗教程·國防工業(yè)出版社,2010年3月 </p><p>  [2] 樓然苗,李光

63、飛·51系列單片機設(shè)計實例·北航出版社,2005年1月</p><p>  [3] 王幸之,鐘愛琴,王雷,王閃·AT89系列單片機原理與接口技術(shù)·北京航空航天大學(xué)出版社,2004年5月</p><p>  [4] 朱定華·單片機原理及接口技術(shù)·電子工業(yè)出版社,2001年4月</p><p>  [5] 趙茂

64、泰·智能儀器原理及應(yīng)用·電子工業(yè)出版社,2004年2月</p><p>  [6] 范力旻·單片機原理及應(yīng)用技術(shù)·電子工業(yè)出版社,2009年1月</p><p><b>  附錄</b></p><p><b>  1.1 元件清單</b></p><p>&

65、lt;b>  1.2 程序清單</b></p><p>  COLUMN REG P0 ;行</p><p>  ROW REG P2 ;列</p><p>  SCANCODE EQU 10000000B

66、 ;掃描碼</p><p>  SPEED EQU 1 ;0.25s延遲</p><p>  S_TIME EQU -2500 ;2ms掃描時間</p><p>  ORG 0000H ;程序從0000H地址開

67、始</p><p>  JMP START ;跳至START</p><p>  ORG 000BH ;TIMER0中斷向量</p><p>  JMP TIMER0 ;跳至TIMER0中斷子程序</p><p>  START

68、: MOV IE,#82H ;設(shè)定TIMER0中斷</p><p>  MOV TOMD,#01H ;使用T0定時器,方式1</p><p>  MOV SP,#60H ;移開堆棧指針</p><p>  SETB RS0

69、 ;切換到RB1</p><p>  MOV R1,#20H ;顯示存儲起始地址</p><p>  MOV R2,#8 ;掃描8行</p><p>  MOV R3,#SCANCODE ;載入掃描碼</p><p>  CLR RS0

70、 ;切換回RB0</p><p>  MOV TH0,#0F6H ;設(shè)定每行掃描時間</p><p>  MOV TL0,#3CH ;設(shè)定每行掃描時間</p><p>  SETB TR0 ;啟動TIMER0</p><p&g

71、t;  LOOP: MOV DPTR,#TABLE ;將數(shù)據(jù)指針指向TABLE地址</p><p>  MOV R4,#4 ;4組字型 </p><p>  NEXT: MOV R2,#8 ;加載數(shù)據(jù)數(shù)量</p><p>  MOV R0,

72、#20H ;儲存存儲器起始地址</p><p>  CALL LOADING ;加載一個字型</p><p>  CALL DELAY ;延時</p><p>  DJNZ R4,NEXT ;跳至NEXT形成一個循環(huán)</p><

73、;p>  JMP LOOP ;跳至LOOP形成一個循環(huán)</p><p>  LOADING: MOV R3,#0 ;間距</p><p>  L_1: MOV A,R3 ;將間距放入ACC</p><p>  MOVC A

74、,@A+DPTR ;讀入數(shù)據(jù)</p><p>  MOV @R0,A ;將數(shù)據(jù)存入存儲器</p><p>  INC R3 ;指向下一個讀取地址</p><p>  INC R0 ;指向下一個儲存地址</p>

75、<p>  DJNZ R2,L_1 ;跳至L_1形成一個循環(huán)</p><p>  INC DPTR ;下一筆數(shù)據(jù)</p><p><b>  RET</b></p><p>  DELAY: MOV R7,#1

76、 </p><p>  D1: MOV R6,#200</p><p>  D2: MOV R5,#250</p><p>  DJNZ R5,$</p><p>  DJNZ R6,D2</p><p>  DJNZ R7,D1</p><

77、;p><b>  RET</b></p><p>  TIMER0: CLR TR0 ;關(guān)閉TIMER0</p><p>  PUSH A ;儲存ACC</p><p>  SETB RS0 ;切換到

78、RB1</p><p>  MOV COLUMN,#0 ;關(guān)閉LED陣列</p><p>  MOV A,@R1 ;取出顯示信號</p><p> ??;使用共陽極式LED陣列,則加入下一列指令</p><p><b>  CPL A</b></p

79、><p>  MOV ROW,A ;輸出顯示信號</p><p>  MOV A,R3 ;載入掃描碼</p><p>  MOV COLUMN,A ;輸出掃描碼(顯示一行)</p><p>  RR A

80、 ;下一個掃描碼</p><p>  MOV R3,A ;儲存下一個掃描碼</p><p>  INC R1 ;下一個顯示信號</p><p>  DJNZ R2,NEXT_C ;未超過8行則跳至NEXT_C</p>&l

81、t;p>  MOV R2,#8 ;重新開始掃描</p><p>  MOV R1,#20H ;從第一行開始掃描</p><p>  NEXY_C: MOV TH0,#F6H ;設(shè)定每行掃描時間</p><p>  MOV TL0,#3CH

82、 ;設(shè)定每行掃描時間</p><p>  SETB TR0 ;啟動TIMER0</p><p>  CLR RS0 ;切換回RB0</p><p>  POP A ;取回ACC</p><

83、p><b>  RETI</b></p><p>  TAB:          DB 0FEH,0FDH,0FBH,0F7H,0EFH,0DFH,0BFH,07FH GRAPH:    DB 12H,14H,3CH,48H,3CH,14H,12H,00H &

84、#160;             DB 00H,00H,38H,44H,44H,44H,38H,00H               DB 30H,48H,44H,22

溫馨提示

  • 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)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論