?? ocmj8x10d.asm
字號(hào):
;****************************************************
BUSY EQU P3.0
INT EQU P3.1
CS1 EQU P3.2 ;L有效
CS2 EQU P3.3 ;H有效
RS EQU P3.4 ;L:存取緩存器,H:存取DDRAM
WR EQU P3.5 ;L有效
RD EQU P3.6 ;L有效
RST EQU P3.7 ;L有效
REGNAME EQU 30H
REGDATA EQU 31H
REGDATA1 EQU 32H
LCM_X EQU 33H
LCM_Y EQU 34H
LCM_DATA1 EQU 35H
LCM_DATA2 EQU 36H
COUNT1 EQU 37H
COUNT2 EQU 38H
;****************************************************
ORG 0000H
AJMP MAIN
ORG 0100H
MAIN: NOP
MOV SP,#5FH
LCALL DELAY2 ;延時(shí)120MS等待上電復(fù)位
MOV P3,#0FFH
LCALL LCM_INIT
LCALL LCM_CLR
;****************************************************
LGS1: MOV REGNAME,#10H
MOV REGDATA,#6BH
LCALL REG_WRITE
MOV REGNAME,#00H
MOV REGDATA,#0CDH
LCALL REG_WRITE
MOV DPTR,#TAB1
LCALL CHRT_DISP
LCALL DELAY1
;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
LGS2: MOV REGNAME,#00H
MOV REGDATA,#0C5H
LCALL REG_WRITE
MOV LCM_DATA1,#0CCH
MOV LCM_DATA2,#0CCH
LCALL LAT_DISP
LCALL DELAY1
MOV LCM_DATA1,#33H
MOV LCM_DATA2,#33H
LCALL LAT_DISP
LCALL DELAY1
;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
LGS3: ;MOV REGNAME,#10H
;MOV REGDATA,#7BH
;LCALL REG_WRITE
MOV REGNAME,#00H
MOV REGDATA,#0CDH
LCALL REG_WRITE
MOV DPTR,#TAB2
LCALL CHRT_DISP
LCALL DELAY1
;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
LGS4: MOV REGNAME,#00H
MOV REGDATA,#0C5H
LCALL REG_WRITE
MOV LCM_DATA1,#0CCH
MOV LCM_DATA2,#33H
LCALL LAT_DISP
LCALL DELAY1
;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
LGS5: MOV DPTR,#TAB3
LCALL PHO_DISP
LCALL DELAY1
;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
LJMP LGS1
;****************************************************
LCM_INIT: MOV COUNT1,#00H ;初始化
MOV COUNT2,#27H
LCM_INIT1: MOV DPTR,#INITTAB1
MOV A,COUNT1
MOVC A,@A+DPTR
MOV REGNAME,A
MOV DPTR,#INITTAB2
MOV A,COUNT1
MOVC A,@A+DPTR
MOV REGDATA,A
LCALL REG_WRITE
INC COUNT1
DJNZ COUNT2,LCM_INIT1
RET
;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
LCM_CLR: MOV REGNAME,#0E0H ;清屏
MOV REGDATA,#00H
LCALL REG_WRITE
MOV REGNAME,#0F0H
LCALL REG_READ
MOV A,REGDATA1
ORL A,#08H
MOV REGDATA,A
MOV REGNAME,#0F0H
LCALL REG_WRITE
MOV REGNAME,#00H
MOV REGDATA,#0C5H
LCALL REG_WRITE
MOV LCM_X,#00H
MOV LCM_Y,#00H
LCALL WR_ZB
MOV A,#00H
LCALL DDR_WRITE
RET
;****************************************************
CHRT_DISP: MOV LCM_X,#00H ;全屏顯示中文或字符
MOV LCM_Y,#00H
LCALL WR_ZB
MOV COUNT1,#08H
CHRT_DISP1: MOV COUNT2,#14H
CHRT_DISP2: CLR A
MOVC A,@A+DPTR
LCALL DDR_WRITE
INC DPTR
DJNZ COUNT2,CHRT_DISP2
DJNZ COUNT1,CHRT_DISP1
RET
;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
PHO_DISP: MOV LCM_X,#00H ;全屏顯示圖形
MOV LCM_Y,#00H
LCALL WR_ZB
MOV COUNT1,#80H
PHO_DISP1: MOV COUNT2,#14H
PHO_DISP2: CLR A
MOVC A,@A+DPTR
LCALL DDR_WRITE
INC DPTR
DJNZ COUNT2,PHO_DISP2
DJNZ COUNT1,PHO_DISP1
RET
;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
LAT_DISP: MOV LCM_X,#00H ;全屏顯示點(diǎn)陣
MOV LCM_Y,#00H
LCALL WR_ZB
MOV COUNT1,#20H
LAT_DISP1: MOV COUNT2,#28H
LAT_DISP2: MOV A,LCM_DATA1
LCALL DDR_WRITE
DJNZ COUNT2,LAT_DISP2
MOV COUNT2,#28H
LAT_DISP3: MOV A,LCM_DATA2
LCALL DDR_WRITE
DJNZ COUNT2,LAT_DISP3
DJNZ COUNT1,LAT_DISP1
RET
;****************************************************
WR_ZB: MOV REGNAME,#60H ;定坐標(biāo)
MOV REGDATA,LCM_X
LCALL REG_WRITE
MOV REGNAME,#70H
MOV REGDATA,LCM_Y
LCALL REG_WRITE
RET
;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
REG_WRITE: MOV A,REGNAME ;寫資料到緩存器
LCALL REG_WR
MOV A,REGDATA
LCALL REG_WR
RET
REG_WR: MOV P1,A
CLR CS1
SETB RD
CLR RS
CLR WR
NOP
NOP
SETB WR
SETB RS
SETB CS1
RET
DDR_WRITE: JB BUSY,$ ;寫資料到DDRAM
MOV P1,A
CLR CS1
SETB RD
SETB RS
CLR WR
NOP
NOP
SETB WR
SETB RS
SETB CS1
RET
REG_READ: MOV A,REGNAME ;讀緩存器
LCALL REG_WR
MOV P1,#0FFH
CLR CS1
SETB WR
CLR RS
CLR RD
NOP
MOV A,P1
SETB RD
SETB RS
SETB CS1
MOV REGDATA1,A
RET
;****************************************************
DELAY1: MOV R5,#16H
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -