基於AT89S52單片機的通用動態掃描顯示接口的設計
機械與電子
作者:朱偉
【摘 要】本文表述了一種用於單片機的通用動態掃描顯示接口的設計過程,其采用AT89S52 單片機和外圍部件組成。文章介紹了通用動態掃描顯示接口的工作原理,並對各部分功能的實現給出了主要程序代碼。實踐結果表明該設計具有切換快、顯示清晰、不閃爍,成本低及可靠性高等優點 ,具有良好的應用前景。
【關鍵詞】AT89S52 單片機;動態掃描;顯示接口
0 引言
AT89S52是一種低功耗、高性能CMOS 8位微控製器,其性能及特點如下:與MCS-51係列單片機產品兼容;片內有4K(8K)可在線重複編程的快速閃存可擦寫存儲器(Flash Memory);存儲器可循環寫入/擦寫 10000次以上;存儲器數據保存時間為10年以上;寬工作電壓範圍,VCC可為2.7V~6.5V;全靜態工作:可從0Hz~24MHz;程序存儲器具有三級加密保護;128個字節(256字節)的內部RAM;32條可編程I/O口線;三個16位定時器/計數器;中斷結構具有5級(6級)中斷源和兩個優先級;可編程全雙工串行通訊;空閑維持低功耗和掉電狀態保護存儲數據;具有JTAG接口,可方便地在線編程或在係統編程,因此有必要為AT89S52 單片機設計通用動態掃描顯示接口。
1 顯示接口總體設計
1.1 動態掃描顯示接口硬件的設計
動態掃描顯示接口是單片機中應用最為廣泛的一種顯示方式之一。其接口電路是把所有顯示器的8個筆劃段a-h同名端連在一起,而每一個顯示器的公共極COM是各自獨立地受I/O線控製。CPU向字段輸出口送出字形碼時,所有顯示器接收到相同的字形碼,但究竟是那個顯示器亮,則取決於COM端,而這一端是由I/O控製的,所以我們就可以自行決定何時顯示哪一位了。而所謂動態掃描就是指我們采用分時的方法,輪流控製各個顯示器的COM端,使各個顯示器輪流點亮。在輪流點亮掃描過程中,每位顯示器的點亮時間是極為短暫的(約1ms),但由於人的視覺暫留現象及發光二極管的餘輝效應,盡管實際上各位顯示器並非同時點亮,但隻要掃描的速度足夠快,給人的印象就是一組穩定的顯示數據,不會有閃爍感。由89S52的P0口能灌入較大的電流,所以我們采用共陽的數碼管,並且不用限流電阻,而隻是用兩隻1N4004進行降壓後給數碼管供電,這裏僅用了兩隻,實際上還可以擴充。它們的公共端則由PNP型三極管8550控製,顯然,如果8550導通,則相應的數碼管就可以亮,而如果8550截止,則對應的數碼管就不可能亮,8550是由P2.7,P2.6控製的。這樣我們就可以通過控製P27、P26達到控製某個數碼管亮或滅的目的。
1.2 動態掃描顯示接口軟件的程序設計
軟件設計的程序流程是:關閉顯示器→取得顯示緩衝區首地址→加計數值→查字型碼送段口→判斷計數器是否為零?→不為零顯示第二位,為零顯示第一位→計數器加一→計數器是否為二?→不是返回,是則計數器清零→返回。下麵的這個程序代碼,就是用於七段數碼管顯示0和1。
FIRST EQU P2.7;第一位數碼管的位控製,SECOND EQU P2.6;第二位數碼管的位控製,DISPBUFF EQU 5AH ;顯示緩衝區為5AH和5BH,ORG 0000H,AJMP START,ORG 30H,START:MOV SP,#5FH ;設置堆棧,MOV P1,#0FFH,MOV P0,#0FFH,MOV P2,#0FFH ;初始,所顯示器,LED滅,MOV DISPBUFF,#0 ;第一位顯示0,MOV DISPBUFF+1,#1 ;第二握顯示1,LOOP:LCALL DISP ;調用顯示程序,AJMP LOOP;主程序到此結束。DISP:,PUSH ACC ;ACC入棧,PUSH PSW ;PSW入棧,MOV A,DISPBUFF ;取第一個待顯示數,MOV DPTR,#DISPTAB ;字形表首地址,MOVC A,@A+DPTR ;取字形碼,MOV P0,A ;將字形碼送P0位(段口),CLR FIRST ;開第一位顯示器位口,LCALL DELAY ;延時1毫秒,SETB FIRST ;關閉第一位顯示器(開始準備第二位的數據),MOV A,DISPBUFF+1;取顯示緩衝區的第二位,MOV DPTR,#DISPTAB,MOVC A,@A+DPTR,MOV P0,A ;將第二個字形碼送P0口,CLR SECOND ;開第二位顯示器,LCALL DELAY ;延時,SETB SECOND ;關第二位顯示,POP PSW,POP ACC,RET,DELAY;延時1毫秒,PUSH PSW,SETB RS0,MOV R7,#50,D1: MOV R6,#10,D2: DJNZ R6,$,DJNZ R7,D1,POP PSW,RET,DISPTAB:DB 28H,7EH,0a4H,64H,72H,61H,21H,7CH,20H,60H ,END,