📄 320240text5.asm
字号:
CLR C
SUBB A, #55
JC KEY2_OK
MOV A, 30H
CLR C
SUBB A, #200
JC WAIT_UP
AJMP KEY1_OK
KEY1_OK:
POP DPH
POP DPL
CLR LED1
SETB 00H ;
/*POP 41H
POP 40H
MOV A, 40H
ADD A, #0BEH
MOV 40H, A
MOV DPL, A
MOV A, 41H
ADDC A, #25H ;第一到第六幅画面数据区的首地址之间的差是25BE
MOV 41H, A
MOV DPH, A
CLR A
MOVC A, @A+DPTR
CJNE A, #42H, START1 ;
AJMP NEXT_SCREEN*/
;START1: LJMP START
LJMP NEXT_SCREEN
KEY2_OK:
POP DPH
POP DPL
CLR LED2
CLR 00H ;
/*POP 41H
POP 40H
MOV A, 40H
CLR C
SUBB A, #0BEH
MOV 40H, A
MOV DPL, A
MOV A, 41H
SUBB A, #25H
MOV 41H, A
MOV DPH, A
CLR A
MOVC A, @A+DPTR
CJNE A, #42H, START1
AJMP NEXT_SCREEN
*/
LJMP NEXT_SCREEN
;************************************************
DEL_20MS:
MOV R7, #30
DL2:
MOV R6, #200
DL1:
NOP
NOP
NOP
DJNZ R6, DL1
DJNZ R7, DL2
RET
;************************************************
GET_ADR:
PUSH DPL
PUSH DPH
MOV A, Y_V
MOV B, #40 ;320=40×8,每一行40 个地址单元
MUL AB
MOV DPL, A
MOV DPH, B
MOV A, XH_V
MOV B, #32 ;高位×256 为它的实际值,32=256÷8
MUL AB
ADD A, DPL
MOV DPL, A
MOV A, DPH
ADDC A, B
MOV DPH, A
MOV A, X_V
MOV B, #8
DIV AB
MOV TEMP, B
ADD A, DPL
MOV X_V, A ;此时X_V 中存的已经是低位地址
MOV TEMP3, A
MOV A, DPH
ADDC A, #0
MOV XH_V, A ;存高位地址
MOV TEMP4, A
MOV DPTR, #COM
MOV A, #46H ;光标地址归设置
MOVX @DPTR, A
MOV DPTR, #DAT
MOV A, X_V
MOVX @DPTR, A
MOV A, XH_V
MOVX @DPTR, A
MOV DPTR, #COM
MOV A, #42H ;开始写数据
MOVX @DPTR, A
POP DPH
POP DPL
RET
;************************************************
DISP_KEY: ;键显示
LCALL GET_ADR
MOV R7, #32 ;32 行
N_LINE:
MOV R6, #4
N_BWR:
MOV A, #00H ;4×8=32 列
MOVC A, @A+DPTR
INC DPTR
PUSH DPL
PUSH DPH
MOV DPTR, #DAT
MOVX @DPTR, A
POP DPH
POP DPL
DJNZ R6, N_BWR ;至此写完32×32 地址的一行
PUSH DPL
PUSH DPH
MOV A, TEMP3
ADD A, #40 ;转到下一行起始地址
MOV TEMP3, A
MOV X_V, A
MOV A, TEMP4
ADDC A, #0 ;
MOV XH_V, A
MOV TEMP4, A
MOV DPTR, #COM
MOV A, #46H ;重新载入地址
MOVX @DPTR, A
MOV DPTR, #DAT
MOV A, X_V
MOVX @DPTR, A
MOV A, XH_V
MOVX @DPTR, A
MOV DPTR, #COM ;写入数据
MOV A, #42H
MOVX @DPTR, A
POP DPH
POP DPL
DJNZ R7, N_LINE
RET
;************************************************
;************************************************
DISP_HZ: ;汉字显示
LCALL GET_ADR
MOV R7, #16 ;16 行
N_LINE2:
MOV R6, #2
N_BWR2:
MOV A, #00H ;2×8=16 列
MOVC A, @A+DPTR
INC DPTR
PUSH DPL
PUSH DPH
MOV DPTR, #DAT
MOVX @DPTR, A
POP DPH
POP DPL
DJNZ R6, N_BWR2 ;至此写完16×16地址的一行
PUSH DPL
PUSH DPH
MOV A, TEMP3
ADD A, #40 ;转到下一行起始地址
MOV TEMP3, A
MOV X_V, A
MOV A, TEMP4
ADDC A, #0 ;
MOV XH_V, A
MOV TEMP4, A
MOV DPTR, #COM
MOV A, #46H ;重新载入地址
MOVX @DPTR, A
MOV DPTR, #DAT
MOV A, X_V
MOVX @DPTR, A
MOV A, XH_V
MOVX @DPTR, A
MOV DPTR, #COM ;写入数据
MOV A, #42H
MOVX @DPTR, A
POP DPH
POP DPL
DJNZ R7, N_LINE2
RET
ST_ADD:
PUSH DPL
PUSH DPH
MOV DPTR, #COM ;命令地址
MOV A, #46H ;光标地址设置为0
MOVX @DPTR, A
MOV DPTR, #DAT ;数据地址
MOV A, #0
MOVX @DPTR, A
MOV A, #0
MOVX @DPTR, A
MOV DPTR, #COM ;命令地址
MOV A, #42H ;开始写数据
MOVX @DPTR, A
POP DPH
POP DPL
RET
;************************************************
SCREEN: ;全屏幕显示
;MOV DPL, 40H
;MOV DPH, 41H
LCALL ST_ADD
MOV R6, #240
READ2:
MOV R7, #40
READ1:
MOV A, #01H
MOVC A, @A+DPTR
INC DPTR
PUSH DPL
PUSH DPH
MOV DPTR, #DAT
MOV A,#0FFH
MOVX @DPTR, A
POP DPH
POP DPL
DJNZ R7, READ1
DJNZ R6, READ2
RET
;************************************************
DEL: MOV R7, #20
DD1: MOV R6, #100D
DD2: MOV R5, #200D
DD3: NOP
NOP
NOP
DJNZ R5, DD3
DJNZ R6, DD2
DJNZ R7, DD1
RET
;*****************************************
DEL_K:
MOV R7, #20
D_D1: MOV R6, #100D
D_D2: MOV R5, #200D
D_D3:
JNB P1.5, $
NOP
NOP
DJNZ R5, D_D3
DJNZ R6, D_D2
DJNZ R7, D_D1
RET
;****************************************
INTI:
INTI_LCD:
MOV DPTR, #COM
MOV A, #40H ;初始化设置
MOVX @DPTR, A
MOV DPTR, #DAT
MOV A, #30H ;参数1,无边界,单屏,内部CGROM+CGRAM1(8×8 地点阵)
MOVX @DPTR, A
MOV A, #87H ;参数2,WF 每一帧翻转一次,字体宽度为8
MOVX @DPTR, A
MOV A, #07H ;参数3,字体高度为8
MOVX @DPTR, A
MOV A, #39D ;参数4,40 字节,对应320SEG
MOVX @DPTR, A
MOV A, #44H ;参数5,驱动频率的时间常数为68 ;;
MOVX @DPTR, A
MOV A, #239D ;参数6,扫描驱动的帧参数,扫描240 行
MOVX @DPTR, A
MOV A, #40D ;参数7,8,一个显示行分配40 个字节存储单元
MOVX @DPTR, A
MOV A, #0
MOVX @DPTR, A
MOV DPTR, #COM
MOV A, #44H ;显示域设置
MOVX @DPTR, A
MOV DPTR, #DAT
MOV A, #SD1L ;参数1,送入显示1 区地址低8 位
MOVX @DPTR, A
MOV A, #SD1H ;参数2,送入显示1 区地址高8 位
MOVX @DPTR, A
MOV A, #240D ;参数3,显示1 区所控制显示屏上的行数为240 行
MOVX @DPTR, A
MOV A, #SD2L ;参数4,送入显示2 区地址低8 位
MOVX @DPTR, A
MOV A, #SD2H ;参数5,送入显示2 区地址高8 位
MOVX @DPTR, A
MOV A, #240D ;参数6,显示2 区所控制显示屏上的行数为240 行
MOVX @DPTR, A
MOV A, #SD3L ;参数7,送入显示3 区地址高8 位
MOVX @DPTR, A
MOV A, #SD3H ;参数8,送入显示3 区地址高8 位
MOVX @DPTR, A
MOV DPTR, #COM
MOV A, #5AH ;点位移设置
MOVX @DPTR, A
MOV DPTR, #DAT
MOV A, #0
MOVX @DPTR, A
MOV DPTR, #COM
MOV A, #4CH ;光标形状设置
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -