?? 6液晶滾動顯示.asm
字號:
;***本顯示用于LCD1602
;********89C51引腳定義********
RS BIT P3.6
R_W BIT P2.5
E BIT P2.6
DB0_DB7 EQU P0
;*******程序開始********
ORG 0000H
LJMP MAIN
;*******主程序*******
ORG 0030H
MAIN: MOV SP,#70H
MOV R0,#00H
LCALL INITIAL
AGAIN: LCALL CLS
MOV A,#10000000B
ORL A,R0
CJNE A,#10001111B,NEXT1
MOV R0,#00H
SJMP AGAIN
NEXT1: LCALL WRITE_COM
MOV DPTR,#LINE1
LCALL DISP
MOV A,#11000000B
ORL A,R0
CJNE A,#11001111B,NEXT2
MOV R0,#00H
SJMP AGAIN
NEXT2: LCALL WRITE_COM
MOV DPTR,#LINE2
LCALL DISP
INC R0
MOV R1,#255
DEL_LOOP: LCALL DEL
DJNZ R1, DEL_LOOP
LJMP AGAIN
;****** 啟動LCM子程序******
INITIAL:MOV A,#00111000B
LCALL WRITE_COM
MOV A,#00001110B
LCALL WRITE_COM
MOV A,#00000110B
LCALL WRITE_COM
RET
;*******查詢忙碌標志信號子程序********
CHECK_BUSY: PUSH ACC
BUSY_LOOP: CLR E
SETB R_W
CLR RS
SETB E
MOV A, DB0_DB7
CLR E
JB ACC.7,BUSY_LOOP
POP ACC
LCALL DEL
RET
;****** 寫指令到LCM子程序*******
WRITE_COM: LCALL CHECK_BUSY
CLR E
CLR RS
CLR R_W
SETB E
MOV DB0_DB7,A
CLR E
RET
;****** 寫數據到LCM子程序******
WRITE_DATA: LCALL CHECK_BUSY
CLR E
SETB RS
CLR R_W
SETB E
MOV DB0_DB7,A
CLR E
RET
;*******清除LCM子程序*******
CLS: MOV A,#00000001B
LCALL WRITE_COM
RET
;****延時子程序****
DEL: MOV R6,#5
L1: MOV R7,#248
DJNZ R7,$
DJNZ R6,L1
RET
;*******顯示字符串到LCM子程序********
DISP: PUSH ACC
DISP_LOOP: CLR A
MOVC A,@A+DPTR
JZ END_DISP
LCALL WRITE_DATA
INC DPTR
SJMP DISP_LOOP
END_DISP: POP ACC
RET
;*****LCM第一、二行顯示字符串*****
LINE1: DB "China ",00H
LINE2: DB "I Love you!! ",00H
END
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -