2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩21頁未讀, 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

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

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

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

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

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

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

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

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

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

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

11、端c。當給發光二極管陽極引出端r1加高電平,陰極引出端c1加低電平時,左上角的二極管被點亮因此,對于行和列的電平進行掃描控制時,可以達到顯示不同字符的目的。</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所示,當采用單片機進行控制時,連接點陣顯示器的共陽極r端需經驅動三極管9012與單片機的P2口相連,而共陰極c端需經限流電阻與單片機的P0口相連。在編程控制時,將

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

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

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

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

18、顯示器控制系統的硬件設計</p><p>  3.1 硬件系統的總體設計</p><p>  根據設計要求與設計方案,硬件電路的設計框圖如圖3-1所示。硬件電路結構由8個部分組成:時鐘電路、復位電路、按鍵接口電路、電源電路、點陣顯示陽極驅動電路、點陣顯示陰極驅動電路和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位定時器/計數器·  6個中斷源 · 可編程串行通道

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

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

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

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

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

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

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

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

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

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

30、框圖。</p><p>  圖 4-1 軟件設計框圖</p><p>  字符編碼:8×8點陣可以看成是從上至下8個字節,每個字節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 主程序設計</b></p><p>  主程序首先設置并啟動T0中斷,然后調用初始化程序,為后面程序

32、要用到的數據調入,并清零一些用到的數據單元,然后載入★,●,心形圖,進行掃描。圖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 ;設定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 ;設定每行掃描時間</p><p>  MOV TL0,#3CH ;設定每

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

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

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

41、 00H 00H;第二個字型的編碼為00H 1CH 22H 41H 41H 22H 1CH 00H,也就是把第一個字型編碼中,第1行顯示數據,變為第8行顯示數據、第2行顯示數據,變為第1行顯示數據、第3行顯示數據,變為第2行顯示數據、第4行顯示數據,變為第3行顯示數據······依次類推。</p><p>  當第一個字型掃描完成后,就

42、進行這樣的調整動作,以產生第二個字型的編碼。同樣的,當第二個字型掃描完成后,就進行這樣的調整動作,以產生第三個字型的編碼。這個調整動作是將8個編碼根據順序填入存儲器,調整存儲器地址的程序流程圖如圖4-3所示。</p><p>  圖 4-3 動態顯示流程圖</p><p>  動態顯示子程序如下:</p><p>  MOV R2,#8

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

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

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

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

47、狀態數據</p><p><b>  NOP</b></p><p>  MOV P0,A ;將狀態數據送入P0口,控制LED陣列</p><p>  SJMP LOOP ;繼續循環</p><p><b>  END</b></p>

48、<p>  4.3.3 延時程序設計</p><p>  延時程序在單片機編程中使用非常廣泛,也很重要,在本設計的程序中用到了延時子程序。已知晶振12MHZ,所以機器周期為1μs,但執行一次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 中斷程序設計</p><p>  顯示程序在進入中斷后首先要對定時器T0重新賦初值,以保證顯示屏刷新率的穩定。根據設計要求

51、,設定掃描時間為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 ;關閉TIMER0</p><p>  PUSH A ;儲存ACC</p><p>  SETB RS0 ;切換到RB1</p><p>  MOV COLUMN,#0 ;關閉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 ;設定每行掃描時間</p><p>  MOV TL0,#3CH ;設定每行掃描時間</p><p>  SETB TR0 ;啟動TIMER0</p><p&

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

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

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

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

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

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

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

64、泰·智能儀器原理及應用·電子工業出版社,2004年2月</p><p>  [6] 范力旻·單片機原理及應用技術·電子工業出版社,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 ;設定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 ;設定每行掃描時間</p><p>  MOV TL0,#3CH ;設定每行掃描時間</p><p>  SETB TR0 ;啟動TIMER0</p><p&g

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

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

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

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

75、<p>  DJNZ R2,L_1 ;跳至L_1形成一個循環</p><p>  INC DPTR ;下一筆數據</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 ;關閉TIMER0</p><p>  PUSH A ;儲存ACC</p><p>  SETB RS0 ;切換到

78、RB1</p><p>  MOV COLUMN,#0 ;關閉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 ;設定每行掃描時間</p><p>  MOV TL0,#3CH

82、 ;設定每行掃描時間</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. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論