📄 yzx.txt
字号:
RDADD EQU 8200H
WRDAT EQU 8100H
WRINS EQU 8000H
DAT EQU 30H
COM EQU 31H
XPOS EQU 32H
YPOS EQU 33H
ORG 0000H
LJMP MAIN
ORG 0050H
;读忙
READ_BUSY:
MOV DPTR,#RDADD
MOVX A,@DPTR
JB ACC.7,READ_BUSY
RET
;写指令
;参数: COM:要写入的指令
WRITE_INS:
LCALL READ_BUSY
MOV A,COM
MOV DPTR,#WRINS
MOVX @DPTR,A
RET
;写数据
;参数: DAT:要写入的数据
WRITE_DATA:
LCALL READ_BUSY
MOV A,DAT
MOV DPTR,#WRDAT
MOVX @DPTR,A
RET
;初始化LCD
LCD_INIT:
MOV COM,#0C0H ;设置起始行
CLR P1.6
LCALL WRITE_INS
SETB P1.6
LCALL WRITE_INS
MOV COM,#3FH ;开显示
CLR P1.6
LCALL WRITE_INS
SETB P1.6
LCALL WRITE_INS
;清屏,向所有的显示RAM里全部写零
CLEAR_LCD:
MOV R7,#0B8H ;设置页
MOV DAT,#0
CLEAR2: MOV COM,#40H
clr p1.6
LCALL WRITE_INS
setb p1.6
LCALL WRITE_INS
MOV COM,R7
clr p1.6
LCALL WRITE_INS
setb p1.6
LCALL WRITE_INS
MOV R6,#64
CLEAR1: clr p1.6
LCALL WRITE_DATA
setb p1.6
LCALL WRITE_DATA
DJNZ R6,CLEAR1
INC R7
CJNE R7,#0C0H,CLEAR2
RET
;写N个汉字
;参数: DPTR :放入要显示的汉字所在代码空间的地址
; XPOS,YPOS:要显示的字符的起始位置(X<64,Y<8)
; R5 :要显示的字的个数(R5<4)
WRITE_CHINESE0: ;在左屏写汉字
MOV R7,#0
W_CH02: PUSH DPL
PUSH DPH
MOV COM,XPOS
CLR P1.6
LCALL WRITE_INS
MOV COM,YPOS
CLR P1.6
LCALL WRITE_INS
POP DPH
POP DPL
MOV R6,#16
W_CH01: MOV A,#0
MOVC A,@A+DPTR
PUSH DPL
PUSH DPH
MOV DAT,A
CLR P1.6
LCALL WRITE_DATA
POP DPH
POP DPL
INC DPTR
INC R7
DJNZ R6,W_CH01 ;写完半个字
INC YPOS
CJNE R7,#32,W_CH02 ;写完一个字
DEC YPOS
DEC YPOS
MOV A,XPOS
ADD A,#16
MOV XPOS,A
DJNZ R5,WRITE_CHINESE0 ;是否写完所有的字
RET
WRITE_CHINESE1: ;在右屏写汉字
MOV R7,#0
W_CH12: PUSH DPL
PUSH DPH
MOV COM,XPOS
SETB P1.6
LCALL WRITE_INS
MOV COM,YPOS
SETB P1.6
LCALL WRITE_INS
POP DPH
POP DPL
MOV R6,#16
W_CH11: MOV A,#0
MOVC A,@A+DPTR
PUSH DPL
PUSH DPH
MOV DAT,A
SETB P1.6
LCALL WRITE_DATA
POP DPH
POP DPL
INC DPTR
INC R7
DJNZ R6,W_CH11 ;写完半个字
INC YPOS
CJNE R7,#32,W_CH12 ;写完一个字
DEC YPOS
DEC YPOS
MOV A,XPOS
ADD A,#16
MOV XPOS,A
DJNZ R5,WRITE_CHINESE1 ;是否写完所有的字
RET
DELAY: MOV R3,#0
DL1: MOV R4,#0
DJNZ R4,$
DJNZ R3,DL1
RET
MAIN:
LCALL LCD_INIT
RDKEY: MOV A,P1
ORL A,#0C0H
PUSH ACC
CPL A
JZ RDKEY
POP ACC
JNB ACC.0,QINGP
JNB ACC.1,HYGL
;JNB ACC.2,QINGP
JNB ACC.3,GUNDONG
JNB ACC.4,WSMN
;JNB ACC.5,QINGP
JMP RDKEY
QINGP:
LCALL LCD_INIT
JMP RDKEY
HYGL:
MOV XPOS,#40H
MOV YPOS,#0B8H
MOV DPTR,#CH_TAB0
MOV R5,#3
LCALL WRITE_CHINESE0
JMP RDKEY
GUNDONG:
MOV R7,#0FFH
MOV R5,#0C0H
MOV R6,#64
G1: MOV COM,R7
CLR P1.6
LCALL WRITE_INS
MOV COM,R5
SETB P1.6
LCALL WRITE_INS
INC R5
DEC R7
LCALL DELAY
DJNZ R6,G1
JMP RDKEY
WSMN:
MOV XPOS,#40H
MOV YPOS,#0BCH
MOV DPTR,#CH_TAB1
MOV R5,#3
LCALL WRITE_CHINESE0
MOV XPOS,#40H
MOV YPOS,#0BCH
MOV DPTR,#CH_TAB2
MOV R5,#3
LCALL WRITE_CHINESE1
JMP RDKEY
CH_TAB0:;-- 文字: 杨 --
;-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --
DB 08H,08H,0C8H,0FFH,48H,88H,0AH,42H,62H,0D2H,4AH,0C6H,42H,0C0H,00H,00H
DB 04H,03H,00H,0FFH,00H,01H,08H,24H,13H,08H,06H,41H,80H,7FH,00H,00H
;-- 文字: 志 --
;-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --
DB 00H,08H,48H,48H,48H,48H,48H,7FH,48H,48H,48H,48H,48H,48H,08H,00H
DB 20H,1CH,00H,00H,3EH,40H,40H,41H,4EH,44H,40H,70H,22H,1CH,08H,00H
;-- 文字: 兴 --
;-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --
DB 00H,82H,8CH,0B8H,90H,82H,8CH,0B8H,90H,80H,0C0H,0B0H,9EH,84H,80H,00H
DB 40H,20H,10H,18H,0EH,04H,00H,00H,00H,02H,04H,18H,70H,20H,00H,00H
CH_TAB1:;-- 文字: 二 --
;-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --
DB 00H,00H,04H,04H,04H,04H,04H,04H,04H,04H,04H,06H,04H,00H,00H,00H
DB 00H,10H,10H,10H,10H,10H,10H,10H,10H,10H,10H,10H,10H,18H,10H,00H
;-- 文字: 班 --
;-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --
DB 42H,42H,0FEH,42H,42H,0E0H,00H,0FFH,00H,42H,42H,0FEH,42H,42H,42H,00H
DB 10H,10H,0FH,88H,49H,20H,18H,07H,20H,20H,20H,3FH,20H,20H,20H,00H
;-- 文字: --
;-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --
DB 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H
;-- 文字: --
;-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --
DB 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H
CH_TAB2:;-- 文字: 3 --
;-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --
DB 00H,30H,08H,88H,88H,48H,30H,00H,00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,18H,20H,20H,20H,11H,0EH,00H,00H,00H,00H,00H,00H,00H,00H,00H
;-- 文字: 5 --
;-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --
DB 00H,0F8H,08H,88H,88H,08H,08H,00H,00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,19H,21H,20H,20H,11H,0EH,00H,00H,00H,00H,00H,00H,00H,00H,00H
;-- 文字: 号 --
;-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --
DB 40H,40H,40H,5FH,0D1H,51H,51H,51H,51H,51H,51H,5FH,40H,40H,40H,00H
DB 00H,00H,00H,02H,07H,02H,02H,22H,42H,82H,42H,3EH,00H,00H,00H,00H
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -