📄 hg1286419.asm
字号:
;This source file is for 128*64 graphic liquid crystal module
;controler: ST7565s
; X EQU 32H
; Y EQU 33H
DATA1 EQU 35H
DATA2 EQU 36H
TIME0 EQU 37H
TIME1 EQU 38H
TEMP EQU 31H
TEMP1 EQU 30H
TEMP2 EQU 39H
BUFF EQU 3AH
;老合板口设置
CD BIT P3.1 ; RS, COMMAND/DATA SELECTION
WR1 BIT P3.2 ; R/W, H: READ L: WRITE
E BIT P3.3 ; ENABLE
RSTB BIT P3.4 ; RESET
ORG 0000H
LJMP BBEGIN
ORG 0040H
NOP
BBEGIN: MOV SP,#40H
NOP
NOP
SETB RSTB
LCALL DELAY50
LCALL DELAY50
CLR RSTB
LCALL DELAY50
LCALL DELAY50
SETB RSTB ;Reset the LCM
BINITIAL: LCALL DELAY50
MOV A,#0E2H ;RESET
LCALL BWRCTRL
LCALL DELAY50
MOV A,#084H ;duty set
LCALL BWRCTRL
MOV A,#07H ;1/64duty
LCALL BWRCTRL
MOV A,#082H ;CL frequency set
LCALL BWRCTRL
MOV A,#03H ;1/4 fosc
LCALL BWRCTRL
MOV A,#085H ;LCD BIAS: 1/9
LCALL BWRCTRL
MOV A,#0AH ;LCD BIAS: 1/9
LCALL BWRCTRL
MOV A,#0A0H ;SET ADC
LCALL BWRCTRL
MOV A,#0C0H ;SET SHL
LCALL BWRCTRL
MOV A,#0A6H ;REVESE OFF
LCALL BWRCTRL
MOV A,#26H ; 1+RB/RA
LCALL BWRCTRL
MOV A,#81H ;perhaps it should be #80.set contrast control register
LCALL BWRCTRL
MOV A,#0Fh ;registor result=30
LCALL BWRCTRL
LCALL DELAY50
MOV A,#0A4H ;ENTIRE MODE OFF, POWER SAVE MODE RELEASE
LCALL BWRCTRL
MOV A,#2FH ;power control register
LCALL BWRCTRL
LCALL DELAY50
MOV A,#0AFH ;display on
LCALL BWRCTRL
BDISALL:
MOV DATA1, #0FFH
MOV DATA2, #0FFH
LCALL DISPFRAM
LCALL DELAY1S
LCALL DELAY1S
LCALL BCLRRAM
LCALL DELAY1S
LCALL DELAY1S
MOV DATA1, #0FFH
MOV DATA2, #0H
LCALL DISPFRAM
LCALL DELAY1S
LCALL DELAY1S
MOV DATA1, #0H
MOV DATA2, #0FFH
LCALL DISPFRAM
LCALL DELAY1S
LCALL DELAY1S
MOV DATA1, #055H
MOV DATA2, #055H
LCALL DISPFRAM
LCALL DELAY1S
LCALL DELAY1S
MOV DATA1, #0aaH
MOV DATA2, #0aaH
LCALL DISPFRAM
LCALL DELAY1S
LCALL DELAY1S
MOV DATA1, #055H
MOV DATA2, #0aaH
LCALL DISPFRAM
LCALL DELAY1S
LCALL DELAY1S
MOV DATA1, #0aaH
MOV DATA2, #055H
LCALL DISPFRAM
LCALL DELAY1S
LCALL DELAY1S
LCALL BCLRRAM
MOV DPTR,#TAB1
LCALL DISPFRAM1
LCALL DELAY1S
LCALL DELAY1S
LCALL DELAY1S
LCALL DELAY1S
LCALL BCLRRAM
MOV DPTR,#TAB2
LCALL DISPFRAM1
LCALL DELAY1S
LCALL DELAY1S
LCALL DELAY1S
LCALL DELAY1S
LCALL BCLRRAM
MOV DPTR,#TAB3
LCALL DISPFRAM1
LCALL DELAY1S
LCALL DELAY1S
LCALL DELAY1S
LCALL DELAY1S
LCALL BCLRRAM
LJMP BDISALL
;------------------------
BCLRRAM: MOV DATA1,#00H
MOV DATA2,#00H
lcall DISPFRAM
RET;-------------------
;
DISPFRAM1:
MOV A,#40H
LCALL BWRCTRL ;显示一幅图案
MOV R6,DPH
MOV R7,DPL
MOV R4,#00H ;R4: 页地址
MOV R0,#00H ;
WLOOOP:
MOV A,R4
ORL A,#0B0H
LCALL BWRCTRL ;设定页地址
MOV A,#10H
LCALL BWRCTRL ;设定列地址
MOV A,#00H
LCALL BWRCTRL ;设定列地址
NOP
MOV DPL,R7
MOV DPH,R6
MOV A,R4
JZ WRPAGEE1 ;如果是第零页,跳转,由开始写
MOV R0,A
ADDREE: INC DPTR
DJNZ R0,ADDREE ;根据页地址,确定从哪里开始取数据
WRPAGEE1: LCALL WRPAGEE
INC R4 ;页地址加1。
CJNE R4,#8,WLOOOP ; 循环,写8个页面
RET
WRPAGEE: MOV R3,#128 ;写128列,一个页面
WLOOOP1: NOP
NOP
PUSH ACC
MOV A,#00
MOVC A,@A+DPTR
PUSH DPH
PUSH DPL
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
LCALL BWRDATA
POP DPL
POP DPH
POP ACC
NOP
NOP
LCALL JIA8
DJNZ R3,WLOOOP1
;
RET
;
JIA8: MOV R5, #8 ;数据地址增加页面数个
JIA: INC DPTR
DJNZ R5,JIA
RET
NOP
NOP;------------------
DISPFRAM:
MOV A,#40H
LCALL BWRCTRL
MOV R4,#00H ;R4: 页地址
WLOOP2: MOV R1,#128 ; 128列
MOV A,R4
ORL A,#0B0H
LCALL BWRCTRL ;设定页地址
MOV A,#10H
LCALL BWRCTRL ;设定列地址
MOV A,#00H
LCALL BWRCTRL ;设定列地址
WLOOP:
MOV A, DATA1
LCALL BWRDATA
MOV A, DATA2
LCALL BWRDATA
DJNZ R1, WLOOP
MOV A,R4
INC A
MOV R4, A
CJNE A, #8, WLOOP2
RET
;write a control byte in register a
BWRCTRL:
CLR E
CLR CD
NOP
CLR WR1
NOP
MOV p1,A
NOP
SETB E
NOP
NOP
NOP
NOP
CLR E
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -