|
|
|
|
|
| |
| 12864接口程序(MCS51总线方式) |
| 连线图: *LCM---8031* *LCM---8031* *LCM------------8031* *LCM----------8031* ; *DB0---P0.0* *DB4---P0.4* *RS-------------P2.0* *CS1----------P2.2* ; *DB1---P0.1* *DB5---P0.5* *RW-------------P2.3* *CS2----------P2.1* ; *DB2---P0.2* *DB6---P0.6* *E--------------NAND ; *DB3---P0.3* *DB7---P0.7* */RST-----------VDD (详见说明书) ;注:8031的晶振频率为12MHz ;************************************************************************** XPOS EQU 20H ;列方向地址指针(用于LCDPOS子程序) YPOS EQU 21H ;行方向地址指针(用于LCDPOS子程序) RWADDR EQU 0800H ;P2.3 CS1ADDR EQU 0400H ;P2.2 CS2ADDR EQU 0200H ;P2.1 RSADDR EQU 0100H ;P2.0 CSADDR EQU 8000H ;P2.7 ORG 0000H JMP START START: MOV SP,#60H MAIN: CALL LCDRESET MOV A,#55H CALL LCDFILL MOV DPTR,#STRING1 CALL PUTSTR CALL PUTSTR JMP MAIN GETSTRCHAR: GSC_PA: CLR A MOVC A,@A+DPTR INC DPTR MOV B,A INC A CLR C JZ GSC_LAX CLR A MOVC A,@A+DPTR INC DPTR SETB C GSC_LAX: RET PUTSTR: CALL LCDRESET 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 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 DELAY: MOV R6,#2 DLY_PA: MOV R5,#0 DLY_PB: MOV R4,#0 DJNZ R4,$ DJNZ R5,DLY_PB DJNZ R6,DLY_PA RET LCDFILL: ;LCD整屏显示A的内容 MOV R7,A MOV YPOS,#0 LFL_PB: MOV XPOS,#0 LFL_PA: MOV A,R7 CALL LCDWRITE ;定位并写数据 INC XPOS MOV A,XPOS CJNE A,#128,LFL_PA ;XPOS<128则循环(128列) INC YPOS MOV A,YPOS CJNE A,#8,LFL_PB ;YPOS<8则循环(8页) MOV XPOS,#0 MOV YPOS,#0 RET LCDWRITE: ;定位并写数据子程序 CALL LCDPOS ;内部写数指针定位 CALL LCDWD ;写数据 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 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 INC YPOS PAC_LAX: DJNZ R7,PAC_PA RET CUSORNEXT: ANL YPOS,#7 INC XPOS MOV A,XPOS JNB ACC.7,CNT_LAX MOV XPOS,#0 INC YPOS MOV A,YPOS ANL A,#0F8H JZ CNT_LAX MOV YPOS,#0 CNT_LAX: 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 ;设显示起始行 CALL LCDWC1 CALL LCDWC2 RET LCDWC1: ;送片1控制字子程序 PUSH DPH PUSH DPL CALL WAITIDLE1 MOV DPTR,#CSADDR+CS1ADDR ;E=1 CS1=1 RS=0 MOVX @DPTR,A POP DPL POP DPH RET LCDWC2: ;送片2控制字子程序 PUSH DPH PUSH DPL CALL WAITIDLE2 MOV DPTR,#CSADDR+CS2ADDR ;E=1 CS1=1 RS=0 MOVX @DPTR,A POP DPL POP DPH RET LCDWD1: ;片1写数据子程序 PUSH DPH PUSH DPL CALL WAITIDLE1 MOV DPTR,#CSADDR+CS1ADDR+RSADDR ;E=1 CS1=1 RS=1 MOVX @DPTR,A POP DPL POP DPH RET LCDWD2: ;片2写数据子程序 PUSH DPH PUSH DPL CALL WAITIDLE2 MOV DPTR,#CSADDR+CS2ADDR+RSADDR ;E=1 CS2=1 RS=1 MOVX @DPTR,A POP DPL POP DPH RET LCDRD1: ;片1读数据子程序 PUSH DPH PUSH DPL CALL WAITIDLE1 MOV DPTR,#CSADDR+CS1ADDR+RSADDR+RWADDR ;E=1 CS1=1 RS=1 MOVX A,@DPTR POP DPL POP DPH RET LCDRD2: ;片2读数据子程序 PUSH DPH PUSH DPL CALL WAITIDLE2 MOV DPTR,#CSADDR+CS2ADDR+RSADDR+RWADDR ;E=1 CS2=1 RS=1 MOVX A,@DPTR POP DPL POP DPH RET WAITIDLE1: PUSH DPH PUSH DPL PUSH ACC MOV DPTR,#CSADDR+CS1ADDR+RWADDR ;E=1 CS2=1 RS=1 WT1_PA: MOVX A,@DPTR JB ACC.7,WT1_PA POP ACC POP DPL POP DPH RET WAITIDLE2: PUSH DPH PUSH DPL PUSH ACC MOV DPTR,#CSADDR+CS2ADDR+RWADDR ;E=1 CS2=1 RS=1 WT2_PA: MOVX A,@DPTR JB ACC.7,WT2_PA POP ACC POP DPL POP DPH RET DELAY400MS: MOV R0,#20 ;延时子程序(400MS) DL4_PA: MOV R1,#100 DL4_PB: MOV R2,#100 DJNZ R2,$ DJNZ R1,DL4_PB DJNZ R0,DL4_PA RET HZKDOT: ;(d3d0H)(有)(8000) DB 04H, 04H, 04H, 02H, 04H, 01H, 84H, 00H DB 0e4H,0ffH, 3cH, 09H, 27H, 09H, 24H, 09H DB 24H, 09H, 24H, 49H, 24H, 89H,0f4H, 7fH DB 24H, 00H, 06H, 00H, 04H, 00H, 00H, 00H ;(cfdeH)(限)(8001) DB 00H, 00H,0feH,0ffH, 02H, 08H, 22H, 10H DB 0daH, 08H, 06H, 07H, 00H, 00H,0feH,0ffH DB 92H, 42H, 92H, 24H, 92H, 08H, 92H, 14H DB 0ffH, 22H, 02H, 61H, 00H, 20H, 00H, 00H ;(b9abH)(公)(8002) DB 00H, 01H, 00H, 01H, 80H, 00H, 40H, 30H DB 30H, 28H, 0cH, 24H, 00H, 23H,0c0H, 20H DB 06H, 20H, 18H, 28H, 20H, 30H, 40H, 60H DB 80H, 00H, 80H, 01H, 80H, 00H, 00H, 00H ;(cbbeH)(司)(8003) DB 10H, 00H, 10H, 00H, 92H, 3fH, 92H, 10H DB 92H, 10H, 92H, 10H, 92H, 10H, 92H, 10H DB 0d2H, 3fH, 9aH, 00H, 12H, 40H, 02H, 80H DB 0ffH, 7fH, 02H, 00H, 00H, 00H, 00H, 00H STRING1: DB 80H, 00H, 80H, 01H, 80H, 02H, 80H, 03H,80H, 00H, 80H, 01H, 80H, 02H, 80H, 03H,80H, 00H, 80H, 01H, 80H, 02H, 80H, 03H,80H, 00H, 80H, 01H, 80H, 02H, 80H, 03H,80H, 00H, 80H, 01H, 80H, 02H, 80H, 03H,80H, 00H, 80H, 01H, 80H, 02H, 80H, 03H,0ffH STRING2: DB 80H, 00H, 80H, 01H, 80H, 02H, 80H, 03H,80H, 00H, 80H, 01H, 80H, 02H, 80H, 03H,80H, 00H, 80H, 01H, 80H, 02H, 80H, 03H,80H, 00H, 80H, 01H, 80H, 02H, 80H, 03H,80H, 00H, 80H, 01H, 80H, 02H, 80H, 03H,80H, 00H, 80H, 01H, 80H, 02H, 80H, 03H,0ffH END | | | 更新时间:2007-6-1 11:33:37 |  |
|
|
|
|
|
|