單片機動態(tài)掃描接口及程序設(shè)計
MOV A,#DISPBUFF ;顯示緩沖區(qū)首地址
ADD A,Counter
MOV R0,A
MOV A,@R0 ;根據(jù)計數(shù)器的值取對應(yīng)的顯示緩沖區(qū)的值
MOV DPTR,#DISPTAB ;字形表首地址
MOVC A,@A+DPTR ;取字形碼
MOV P0,A ;將字形碼送P0位(段口)
MOV A,Counter ;取計數(shù)器的值
JZ DISPFIRST ;如果是0則顯示第一位
CLR SECOND ;不然顯示第二位
AJMP DISPNEXT
DISPFIRST:
CLR FIRST ;顯示第一位
DISPNEXT:
INC Counter ;計數(shù)器加1
MOV A,Counter
DEC A ;如果計數(shù)器計到2,則讓它回0
DEC A
JZ RSTCOUNT
AJMP DISPEXIT
RSTCOUNT:
MOV Counter,#0 ;計數(shù)器的值只能是0或1
DISPEXIT:
POP PSW
POP ACC
RETI
DELAY: ;延時130毫秒
PUSH PSW
SETB RS0
MOV R7,#255
D1: MOV R6,#255
D2: NOP
NOP
NOP
NOP
DJNZ R6,D2
DJNZ R7,D1
POP PSW
RET
DISPTAB:DB 28H,7EH,0a4H,64H,72H,61H,21H,7CH,20H,60H
END
從上面的單片機程序能看出,動態(tài)顯示和靜態(tài)顯示相比,程序稍有點復雜,不過,這是值得的。這個程序有一定的通用性,只要改變端口的值及計數(shù)器的值就能顯示更多位數(shù)了。
評論