?? ocmj15x20d.asm
字號:
;****************************************************
RS EQU P3.0 ;L:存取緩存器,H:存取DDRAM
WR EQU P3.1 ;L有效
RD EQU P3.2 ;L有效
CS1 EQU P3.3 ;L有效
CS2 EQU P3.4 ;H有效
BUSY EQU P3.5
INT EQU P3.6
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
COUNT3 EQU 39H
DP_TEMP1 EQU 3AH
DP_TEMP2 EQU 3BH
;****************************************************
ORG 0000H
AJMP MAIN
ORG 0100H
MAIN: NOP
MOV SP,#5FH
LCALL DELAY2 ;延時120MS等待上電復位
MOV P3,#0FFH
LCALL LCM_INIT
LCALL LCM_CLR
;****************************************************
LGS1: MOV REGNAME,#10H
MOV REGDATA,#2BH
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,#3BH
LCALL REG_WRITE
MOV REGNAME,#00H
MOV REGDATA,#0CDH
LCALL REG_WRITE
MOV DPTR,#TAB1
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,#TAB2
MOV DP_TEMP1,DPH
MOV DP_TEMP2,DPL
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,#0FH
CHRT_DISP1: MOV COUNT2,#28H
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 ;全屏顯示3幅(每幅大小為320x80)一樣的圖形
MOV LCM_Y,#00H
LCALL WR_ZB
MOV COUNT3,#03H
PHO_DISP0: MOV COUNT1,#50H
PHO_DISP1: MOV COUNT2,#28H
PHO_DISP2: CLR A
MOVC A,@A+DPTR
LCALL DDR_WRITE
INC DPTR
DJNZ COUNT2,PHO_DISP2
DJNZ COUNT1,PHO_DISP1
MOV DPH,DP_TEMP1
MOV DPL,DP_TEMP2
DJNZ COUNT3,PHO_DISP0
RET
;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
LAT_DISP: MOV LCM_X,#00H ;全屏顯示點陣
MOV LCM_Y,#00H
LCALL WR_ZB
MOV COUNT1,#3CH
LAT_DISP1: MOV COUNT2,#50H
LAT_DISP2: MOV A,LCM_DATA1
LCALL DDR_WRITE
DJNZ COUNT2,LAT_DISP2
MOV COUNT2,#50H
LAT_DISP3: MOV A,LCM_DATA2
LCALL DDR_WRITE
DJNZ COUNT2,LAT_DISP3
DJNZ COUNT1,LAT_DISP1
RET
;****************************************************
WR_ZB: MOV REGNAME,#60H ;定坐標
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
DEL11: MOV R6,#0FFH
DEL12: MOV R7,#0FFH
DEL13: DJNZ R7,DEL13
DJNZ R6,DEL12
DJNZ R5,DEL11
RET
DELAY2: MOV R6,#0EAH
DEL21: MOV R7,#0FFH
DEL22: DJNZ R7,DEL22
DJNZ R6,DEL21
RET
;****************************************************
INITTAB1:
DB 000H,001H,002H,003H,010H,011H,012H,021H,031H,041H,051H,020H,030H,040H,050H,060H
DB 061H,070H,071H,072H,080H,081H,091H,090H,0A0H,0A1H,0A2H,0A3H,0B0H,0B1H,0C0H,0C1H
DB 0C8H,0C9H,0CAH,0D0H,0E0H,0F0H,0F1H
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -