KS0108 at89c51 12864显示屏程序 24MHz
;请根据实际使用端口更改端口定义
E EQU P2.4
RW EQU P2.3
DI EQU P2.2
CSA EQU P2.0
CSB EQU P2.1
LCDDATA EQU P0
DATA1 EQU 30H
DATA2 EQU 31H
ORG 00H
AJMP MAIN
ORG 100H
MAIN: MOV P2,#0FFH
MOV A,#0C0H
ACALL OUTIL
ACALL OUTIR
MOV A,#3FH
ACALL OUTIL
ACALL OUTIR
MOV DPTR,#LDATA1
ACALL DISPLAY
ACALL DELAY
LJMP MAIN
DISPLAY:
MOV R1,#64
MOV R2,#0B8H
DISP: MOV A,R2
ACALL OUTIL
MOV A,#40H
ACALL OUTIL
MOV A,#0C0H
ACALL OUTIL
DISP1: CLR A
MOV C A,@A+DPTR
ACALL OUTDL
INC DPTR
DJNZ R1,DISP1
MOV A,R2
ACALL OUTIR
MOV A,#040H
ACALL OUTIR
MOV A,#0C0H
ACALL OUTIR
MOV R1,#64
DISP2: CLR A
MOV C A,@A+DPTR
ACALL OUTDR
INC DPTR
DJNZ R1,DISP2
MOV R1,#64
INC R2
CJNE R2,#0C0H,DISP
RET
OUTIL: CLR CSB
SETB CSA
CALL BUSY
CLR DI
CALL WRDATA
RET
OUTIR: SETB CSB
CLR CSA
CALL BUSY
CLR DI
CALL WRDATA
RET
OUTDL: CLR CSB
SETB CSA
CALL BUSY
SETB DI
CALL WRDATA
RET
OUTDR: CLR CSA
SETB CSB
CALL BUSY
SETB DI
CALL WRDATA
RET
WRDATA: MOV LCDDATA,A
CLR RW
SETB E
NOP
NOP
CLR E
NOP
RET
BUSY: MOV LCDDATA,#0FFH
CLR DI
SETB RW
SETB E
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
JB LCDDATA,$
NOP
NOP
CLR E
NOP
NOP
NOP
NOP
RET
DEL1: MOV r6,#0a0h
MOV R5,#02EH
DEL: DJNZ R5,$
DJNZ r6,DEL
RET
DELAY: MOV R4,#12H
ACALL DEL1
KEY2: ACALL DEL1
DJNZ R4,KEY2
RET
LDATA1:
DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,010H,010H,0F8H,000H,000H,000H,000H
上一篇:12864显示屏4*4键盘实验