MOVC A,@A+DPTR INC DPTR SETB C GSC_LAX: RET PUTSTR:
CALL DELAY
CALL GETSTRCHAR PUSH DPL PUSH DPH JNC PSR_LAX JNB B.7,PSR_LBY ;CHINESE:
CALL HZKPOS
CALL PUTCHARDOT CALL PUTCHARDOT JMP PSR_LBX PSR_LBY: ;ENGLISH:
CALL HZKPOS
CALL PUTCHARDOT PSR_LBX: POP DPH POP DPL JMP PUTSTR
PSR_LAX:POP DPH POP DPL RET
PUTCHARDOT: MOV R7,#8 PAC_PA: CLR A
MOVC A,@A+DPTR CALL LCDWRITE INC YPOS INC DPTR CLR A
MOVC A,@A+DPTR CALL LCDWRITE DEC YPOS INC DPTR
CALL CUSORNEXT MOV A,XPOS JNZ PAC_LAX
36
INC YPOS PAC_LAX:
DJNZ R7,PAC_PA RET HZKPOS: MOV R2,#5 HTP_PA: CLR C RLC A XCH A,B RLC A XCH A,B
DJNZ R2,HTP_PA
MOV DPTR,#HZKDOT ADD A,DPL MOV DPL,A MOV A,B ADDC A,DPH MOV DPH,A RET
LCDFILL: ;LCD整屏显示A的内容 MOV R7,A MOV YPOS,#0 LFL_PB: MOV XPOS,#0 LFL_PA: MOV A,R7
CALL LCDWRITE ;定位并写数据 CALL CUSORNEXT MOV A,XPOS
JNZ LFL_PA ;XPOS<128则循环(128列) MOV A,YPOS
JNZ LFL_PB ;YPOS<8则循环(8页) RET
LCDWRITE: ;定位并写数据子程序 CALL LCDPOS ;内部写数指针定位 CALL LCDWD ;写数据 RET CUSORNEXT: ANL YPOS,#7 INC XPOS MOV A,XPOS
JNB ACC.7,CNT_LAX MOV XPOS,#0 INC YPOS MOV A,YPOS
37
ANL A,#0F8H JZ CNT_LAX MOV YPOS,#0 CNT_LAX: RET
LCDPOS: ;内部写数指针定位子程序 PUSH ACC MOV A,XPOS
JB ACC.6,LPS_LAY
MOV A,YPOS ;XPOS列方向小于64则对CS1操作 ANL A,#07H ADD A,#0B8H
CALL LCDWC1 ;设页码 MOV A,XPOS ANL A,#3FH ORL A,#40H
CALL LCDWC1 ;设列码 JMP LPS_LAX
LPS_LAY:MOV A,YPOS ;XPOS列方向大于等于64则对CS2操作 ANL A,#07H ADD A,#0B8H
CALL LCDWC2 ;设页码 MOV A,XPOS ANL A,#3FH ORL A,#40H
CALL LCDWC2 ;设列码 LPS_LAX:POP ACC RET
LCDWD: ;送数据子程序 MOV B,A MOV A,XPOS
JB ACC.6,LWD_LAY
MOV A,B ;XPOS列方向小于64则对CS1操作 CALL LCDWD1 JMP LWD_LAX
LWD_LAY:MOV A,B ;XPOS列方向大于等于64则对CS2操作 CALL LCDWD2 LWD_LAX: RET
LCDRESET: ;LCD控制器复位 MOV A,#3FH ;打开LCD显示 CALL LCDWC1 CALL LCDWC2
MOV A,#0C0H ;设显示起始行
38
CALL LCDWC1 CALL LCDWC2 RET
LCDWC1: ;送片1控制字子程序 CALL WAITIDLE1 MOV P0,A
CLR RSPIN ;RS=0 RW=0 CS1=1 E=高脉冲 CLR RWPIN SETB CS1PIN SETB NOP
CLR CLR RET
LCDWC2: CALL MOV CLR CLR SETB SETB NOP
CLR CLR RET
LCDWD1: CALL MOV SETB CLR SETB SETB NOP
CLR CLR RET
LCDWD2: CALL MOV SETB CLR SETB SETB NOP
EPIN EPIN CS1PIN WAITIDLE2 P0,A
RSPIN RWPIN CS2PIN EPIN EPIN CS2PIN WAITIDLE1 P0,A
RSPIN RWPIN CS1PIN EPIN EPIN CS1PIN WAITIDLE2 P0,A ;,
RSPIN RWPIN CS2PIN EPIN ;送片2控制字子程序 ;RS=0 RW=0 CS2=1 E=高脉冲 ;片1写数据子程序 ;RS=1 RW=0 CS1=1 E=高脉冲 ;片2写数据子程序 ;RS=1 RW=0 CS2=1 E=高脉冲 39
CLR EPIN CLR CS2PIN RET
LCDRD1: ;片1读数据子程序 CALL WAITIDLE1 MOV P0,#0FFH
SETB RSPIN ;RS=1 RW=1 CS1=1 E=高电平 SETB RWPIN SETB CS1PIN SETB NOP
MOV CLR CLR RET
LCDRD2: CALL MOV SETB SETB SETB SETB NOP
MOV CLR CLR RET WAITIDLE1:
MOV CLR SETB SETB SETB WT1_PA: NOP
JB CLR CLR RET WAITIDLE2:
CLR SETB SETB SETB WT2_PA: NOP
EPIN A,P1 EPIN CS1PIN WAITIDLE2 P0,#0FFH
RSPIN RWPIN CS2PIN EPIN A,P0 EPIN CS2PIN P0,#0FFH
RSPIN RWPIN CS1PIN EPIN P0.7,WT1_PA EPIN CS1PIN RSPIN RWPIN CS2PIN EPIN ;片2读数据子程序 ;RS=1 RW=1 CS1=2 E=高电平 ;RS=0 RW=1 CS1=1 E=高电平 ;RS=0 RW=1 CS2=1 E=高电平 40