📄 源程序.txt
字号:
MASTERI EQU 200H ;左液晶的地址口
MASTERD EQU 202H ;左液晶的数据口
SLAVEI EQU 210H ;右液晶的地址口
SLAVED EQU 212H ;右液晶的数据口
LCDON EQU 0AFH ;点亮LCD
LCDOFF EQU 0AEH ;灭LCD
STATICOFF EQU 0A4H
STARTLINE EQU 0C0H ;0~31
STARTCOL EQU 00H ;0~79
STARTPAGE EQU 0B8H ;0~3
READMODIOFF EQU 0EEH
DUTY EQU 0A9H
Z8279 EQU 239h
D8279 EQU 238H
CODE SEGMENT
ASSUME CS:CODE,DS:CODE,SS:CODE
START:
PUSH CS
POP DS
CALL INITLCD ;初始化LCD
CALL CLEARLCD ;清LCD
CAll DB0
JMP START
DB0: PUSH CS
POP DS
NOP
MOV CX,90
DB0_XUNHUAN:
PUSH CX
SUB CL,45
MOV X,CL
MOV SI,4000H ;临时存放液晶地址口的变量
MOV DI,4100H ;临时存放液晶数据口的变量
CALL INITLCD ;初始化LCD
CALL CLEARLCD ;清LCD
LEA BX,CCTAB0 ;置显示常数表起始位置
MOV [SI],MASTERI ;写左液晶
MOV [DI],MASTERD
MOV AH,STARTCOL ;置起始列
ADD AH,X
CMP AH,STARTCOL-16
JGE DB0_2
MOV AH,STARTCOL-16
DB0_2:
MOV CH,STARTPAGE ;置起始页
CALL WRITEHZ ;写“新”字
MOV AH,STARTCOL+16
ADD AH,X
CMP AH,STARTCOL-16
JGE DB0_3
MOV AH,STARTCOL-16
DB0_3:
MOV CH,STARTPAGE
CALL WRITEHZ ;写“年”字
MOV AH,STARTCOL+30
ADD AH,X
CMP AH,STARTCOL-16
JGE DB0_4
MOV AH,STARTCOL-16
DB0_4:
MOV CH,STARTPAGE
CALL WRITEHZ ;写“快”字
MOV AH,STARTCOL+46
ADD AH,X
CMP AH,STARTCOL-16
JGE DB0_5
MOV AH,STARTCOL-16
DB0_5:
MOV CH,STARTPAGE
CALL WRITEHZ ;写“乐”字
MOV CX,04FFFH
LOOP $
MOV DX,Z8279
IN AL,DX
AND AL,0FH
;JNZ DB0_EXIT
POP CX
CMP CX,0
JNE DB0_1
MOV CX,90
DB0_1:
DEC CX
JMP DB0_XUNHUAN
;完成
INITLCD PROC NEAR ;初始化LCD子程序
MOV DX,MASTERI
MOV AL,LCDON
OUT DX,AL
MOV AL,STARTLINE
OUT DX,AL
MOV AL,STARTPAGE
OUT DX,AL
MOV DX,SLAVEI
MOV AL,LCDON
OUT DX,AL
MOV AL,STARTLINE
OUT DX,AL
MOV AL,STARTPAGE
OUT DX,AL
RET
INITLCD ENDP
CLEARLCD PROC NEAR ;清零子程序
MOV CH,02H ;分别清除左右液晶
WRITE_M_S:
CALL WRITELCDCMD1
MOV BL,00 ;分0-3页写
WRITEPAGE:
CALL WRITELCDCMD2
MOV BH,00 ;分61列写
WRITELINE:
MOV AL,STARTCOL
CALL WRITELCDDATA
INC BH
CMP BH,61
JLE WRITELINE
INC BL
CMP BL,04
JL WRITEPAGE
DEC CH
CMP CH,0
JNE WRITE_M_S
RET
CLEARLCD ENDP
WRITELCDCMD1 PROC NEAR
CMP CH,01
JNE MASTER1
MOV DX,SLAVEI
CALL AA
JMP EXIT1
MASTER1:
MOV DX,MASTERI
CALL AA
EXIT1: RET
WRITELCDCMD1 ENDP
AA PROC NEAR
MOV AL,STARTPAGE
OUT DX,AL
MOV AL,STARTLINE
OUT DX,AL
RET
AA ENDP
WRITELCDCMD2 PROC NEAR
CMP BL,00
JNE LL1
MOV AL,STARTPAGE
OUT DX,AL
JMP EXIT2
LL1:
CMP BL,01
JNE LL2
MOV AL,0B9H
OUT DX,AL
JMP EXIT2
LL2:
CMP BL,02
JNE LL3
MOV AL,0BAH
OUT DX,AL
JMP EXIT2
LL3:
MOV AL,0BBH
OUT DX,AL
EXIT2:
RET
WRITELCDCMD2 ENDP
WRITELCDDATA PROC NEAR
ADD AL,BH
OUT DX,AL
INC DX
INC DX
MOV AL,00
OUT DX,AL
DEC DX
DEC DX
RET
WRITELCDDATA ENDP
WRITEHZ PROC NEAR ;写16*16点阵汉字子程序
MOV DX,[SI]
MOV AL,AH
OUT DX,AL
MOV AL,CH
OUT DX,AL
MOV CL,16
CALL TEMP
MOV AL,AH
OUT DX,AL
INC CH
MOV AL,CH
OUT DX,AL
MOV CL,16
CALL TEMP
RET
WRITEHZ ENDP
TEMP PROC NEAR
T_S: MOV AL,0
XLAT
PUSH DX
CALL DISP
POP DX
INC BX
DEC CL
CMP CL,0
JNE T_S
RET
TEMP ENDP
DISP PROC NEAR ;延时
MOV DX,[DI]
OUT DX,AL
RET
DISP ENDP
CCTAB0:
DB 028H,024H,022H,021H,026H,038H,004H,018H,0F0H,017H,010H,010H,014H,018H,010H,000H;新
DB 004H,008H,032H,0C2H,0C2H,034H,004H,008H,030H,0C0H,060H,018H,00CH,006H,004H,000H
DB 000H,000H,03FH,020H,024H,024H,03FH,0A5H,065H,025H,03FH,024H,024H,024H,020H,000H;年
DB 001H,006H,0F8H,001H,001H,042H,062H,054H,048H,048H,054H,064H,042H,003H,002H,000H
DB 002H,004H,00FH,038H,0E2H,052H,012H,012H,012H,0FFH,012H,012H,032H,016H,002H,000H;快
DB 000H,000H,0FFH,000H,002H,022H,022H,022H,022H,0FEH,022H,022H,062H,026H,002H,000H
DB 020H,020H,022H,022H,022H,0FAH,023H,022H,022H,022H,0FAH,022H,023H,020H,020H,000H;乐
DB 000H,000H,000H,000H,000H,000H,0FFH,000H,000H,000H,010H,008H,0F0H,000H,000H,000H
X DB 0
Y DB 0
Z DB 0
CODE ENDS
END START
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -