|
以下是4個16×16點陣LED電子顯示屏的源程序,分別采用匯編及C語言編寫,C程序在Keil 51環(huán)境下調試。
(1)匯編源程序
;********************************
;4字16×16點陣電F屏字符顯示器*
;* AT89C52 12 MHz晶振 *
;*******************************
;顯示字用查表法,不占內存,用4個16×16共陽LED點陣顯示
;效果:向上滾動顯示字,每次4個,重復循環(huán)
;R2:行掃描地址(00H~0FH)。
;R3:滾動顯示時控制移動速度,也可控制靜止顯示的時間
;*******中斷入口程序*********
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 ;清標志,00H為l幀掃描結束標志
MOV A,#0FFH ;端口初始化
MOV P1, A
MOV P2, A
MOV P3, A
MOV P0,A
CLR Pl.6 ;串行寄存器輸入/輸出端控制位
MOV TMOD, #01H ;使用T0作16位定時器,行掃描用
MOV TH0, #0FCH ;1ms初值(12 MHz)
MOV TL0, #18H
MOV SCON, #00H ;串口0方式傳送顯示字節(jié)
MOV IE, #82H ;T0中斷允許,總中斷允許
MOV SP, #70H
LCALL DIS1 ;顯示準備,黑屏,1.5 s
MAIN: MOV DPTR,#TAB
LCALL MOVDISP ;逐排顯示,每次4字)
MOV DPTR,#TAB
LCALL MOVDISP1 ;滾動顯示,每排4字)
AJMP MAIN
;***************4字逐排顯示子程序*******
;每次4字移入移出顯示方式,入口時定義好DPTR值
MOVDISP:MOV R1,#6 ;顯示6排字,每排4字(R1=排數(shù))
DISLOOP: MOV R3,#100 ;每排顯示時間為16 ms×100=1.6 s
DISMOV: MOV R2,#00H ;第0行開始
SETB TR0 ;開掃描(每次l幀)
WAITMOV:JBC 00H,DISMOV1 ;標志為1,掃描l幀結束(16 ms為1幀,每行1 ms)
AJMP WAITMOV
DISMOV1:DJNZ R3,DISMOV ;1幀重復顯示(控制顯示時間)
MOV A,#128 ;顯示字指針移1排(每排4字×32= 128字)
ADD A, DPL
MOV DPL, A
MOV A,#0
ADDC A, DPH
MOV DPH,A
DEC R1 ;R1為0,顯示完
MOV A,R1
JZ MOVOUT
AJMP DISLOOP
MOVOUT:RET ;移動顯示結束
;********************4字滾動顯示子程序*****************
;每排4字向上移出顯示方式,入口時定義好DPTR值
MOVDISP1:MOV R1,#255 ;向上移動顯示6排字,每排4字(R1=排數(shù)×16)
DISLOOP1: MOV R3,#10 ;移動速度為16 ms×10= 0.16 s
DISMOV2: MOV R2,#00H :第0行開始
SETB TR0 ;開掃描(每次1幀)
WAITMOV1: JBC 00H,DISMOV3;標志為1掃描1幀結束(16 ms為1幀,每行1 ms)
AJMP WAITMOV1
DISMOV3: DJNZ R3,DISMOV2 ;1幀重復顯示(控制移動速度)
INC DPTR ;顯示字指針移1行(2字節(jié)位置)
INC DPTR
DEC R1 ;R1為0,顯示完
MOV A,R1
JZ MOVOUT1
AJMP DISLOOP1
MOVOUT1: RET ;移動顯示結束
|
-
-
LED點陣16X64源程序.rar
2020-5-7 15:35 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
548.95 KB, 下載次數(shù): 7, 下載積分: 黑幣 -5
|