call WordDISL lea si,yu32_4 mov al,4 mov ah,0 call WordDISR lea si,yu32_5 mov al,4 mov ah,16 call WordDISR lea si,yu32_6 mov al,4 mov ah,32 call WordDISR ret yu32 endp
;显示“机械装备正常”子程序
yu41 proc lea si,yu41_1 mov al,6 mov ah,16 call WordDISL lea si,yu41_2 mov al,6 mov ah,32 call WordDISL lea si,yu41_3 mov al,6 mov ah,48 call WordDISL lea si,yu41_4 mov al,6 mov ah,0 call WordDISR lea si,yu41_5 mov al,6 mov ah,16 call WordDISR lea si,yu41_6 mov al,6 mov ah,32
call WordDISR ret yu41 endp
;显示“机械装备异常”子程序
yu42 proc lea si,yu42_1 mov al,6 mov ah,16 call WordDISL lea si,yu42_2 mov al,6 mov ah,32 call WordDISL lea si,yu42_3 mov al,6 mov ah,48 call WordDISL lea si,yu42_4 mov al,6 mov ah,0 call WordDISR lea si,yu42_5 mov al,6 mov ah,16 call WordDISR lea si,yu42_6 mov al,6 mov ah,32 call WordDISR ret yu42 endp
;液晶初始化
LCD_INIT PROC NEAR
MOV AL,3EH
CALL WRComL MOV AL,FirstLine CALL WRComL MOV AL,3EH
CALL WRComR
MOV
AL,FirstLine
;初始化左半屏,关显示
;写指令子程序 ;设置起始显示行,第0行;初始化右半屏,关显示
;写指令子程序 ;设置起始显示行,第0行
CALL CALL MOV CALL MOV CALL RET
WRComR
LCDClear ;清屏 AL,3FH AL,3FH
;开显示 ;开显示
WRComL WRComR
LCD_INIT ENDP
;清屏
LCDClear PROC
NEAR
;清左半屏
MOV AL,0 ;起始行,第0行 MOV AH, 0 ;起始列,第0列
MOV CALL CALL LOOP
CX,64
LCDClearL1:PUSH AX
SETXYL ;设置起始显示行列地址
AL,0
WRDATAL LCDClearL2
LCDClearL2:MOV
POP AX INC AX
CMP AL,8 JNZ LCDClearL1 MOV MOV MOV CALL CALL LOOP
;清右半屏
AL,0 ;起始行,第0行 AH,0 ;起始列,第0列 PUSH CX,64
AX
LCDClearR1:
SETXYR ;设置起始显示行列地址 XOR AL,AL WRDATAR LCDClearR2
LCDClearR2:
POP AX INC AL CMP AL,8;共8行 JNZ LCDClearR1 RET
LCDClear ENDP
;显示字体,显示一个数据要占用X行两行位置
;左半屏显示一个字节/字:AL-起始显示行序数X(0-7);AH-起始显示列序数
Y(0-63) ;SI-显示字数据首地址 ByteDisL PROC
MOV CALL RET
NEAR
CX,8 ;显示8个字节数据,用于显示一个英文/号 DispL
NEAR
ByteDisL ENDP WordDisL PROC
MOV CALL RET
CX,16 ;显示16字节数据,用于显示一个汉字 DispL
NEAR
WordDisL ENDP DispL
PROC PUSH PUSH CALL CALL
AX CX
SETXYL ;设置起始显示行列地址 DisplayL ;显示上半行数据
POP CX POP AX INC AL CALL CALL RET
SETXYL ;设置起始显示行列地址 DisplayL ;显示下半行数据
DispL ENDP
;右半屏显示一个字节/字:AL-起始显示行序数X(0-7);AH-起始显示列序数Y(0-63) ;SI-显示字数据首地址 ByteDisR PROC ENAR
MOV CALL RET
CX,8 ;显示8个字节数据,用于显示一个英文/符号 DispR
NEAR
ByteDisR ENDP WordDisR PROC
MOV CALL RET
CX,16 ;显示16字节数据,用于显示一个汉字 DispR
NEAR
WordDisR ENDP DispR
PROC PUSH PUSH CALL CALL
AX CX
SETXYR ;设置起始显示行列地址 DisplayR ;显示上半行数据
POP CX POP AX INC AL CALL CALL RET
SETXYR ;设置起始显示行列地址 DisplayR ;显示下半行数据
DispR ENDP
;显示图形
;显示左半屏一行图形,AL-X起始行序数(0-7),AH-Y起始列地址序数(0-63)
LineDisL PROC
MOV CALL CALL RET
NEAR
CX,64
SETXYL ;设置起始显示行列 DisplayL ;显示数据
LineDisL ENDP LineDisR PROC
MOV CALL CALL RET
;显示右半屏一行图形,AL-X起始行地址序数(0-7),AH-Y起始列地址序数(0-63)
NEAR
CX,64
SETXYR ;设置起始显示行列 DisplayR ;显示数据
LineDisR ENDP
;基本控制
;显示左半屏数据,R7-显示数据个数
DisplayL PROC
LODSB CALL LOOP RET
NEAR
WRDataL ;写左半屏数据 DisplayL
DisplayL ENDP DisplayR PROC
LODSB CALL LOOP RET
NEAR
;显示右半屏数据,R7-显示数据个数
WRDataR ;写左半屏数据 DisplayR
DisplayR ENDP SETXYL PROC
;设置左半屏起始显示行列地址,AL-X起始行序数(0-7),AH-Y起始列序数(0-63)
NEAR
OR AL,X ;行地址=行序数+行基址