?? 19264接口程序.txt
字號:
案例1:
19264接口程序(MCS51總線方式)
;***************************************************************************
;
;* DESCRIPTION:This subroutine shows how to write data to LCD-CONTROLLER *
;***************************************************************************
;連線圖: *LCM---8031* *LCM---8031* *LCM------------8031* *LCM----------8031*
; *DB0---P0.0* *DB4---P0.4* *RS-------------P2.0* *CSA----------P2.2*
; *DB1---P0.1* *DB5---P0.5* *RW-------------P2.3* *CSB----------P2.1*
; *DB2---P0.2* *DB6---P0.6* *E--NAND GATE---P2.7/P3.6/P3.7 *
; *DB3---P0.3* *DB7---P0.7* */RST-----------VDD *
;注:8031的晶振頻率為12MHz *
;***************************************************************************
RWADDR EQU 0800H ;P2.3
CSAADDR EQU 0400H ;P2.2
CSBADDR EQU 0200H ;P2.1
RSADDR EQU 0100H ;P2.0
CSADDR EQU 8000H ;P2.7
XPOS EQU 20H
YPOS EQU 21H
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
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
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
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 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
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
MOV A,YPOS
JNZ LFL_PB
RET
LCDWRITE: ;定位并寫數據子程序
CALL LCDPOS ;內部寫數指針定位
CALL LCDWD ;寫數據
RET
CUSORNEXT:
ANL YPOS,#7
INC XPOS
MOV A,XPOS
CJNE A,#192,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
CJNE A,#64,$+3
JNC LWD_LA1
MOV A,B
CALL LCDWD1
JMP LWD_LAX
LWD_LA1:CJNE A,#128,$+3
JNC LWD_LA2
MOV A,B
CALL LCDWD2
JMP LWD_LAX
LWD_LA2:CJNE A,#192,$+3
JNC LWD_LA3
MOV A,B
CALL LCDWD3
JMP LWD_LAX
LWD_LA3:
LWD_LAX:
RET
LCDPOS:
PUSH ACC
MOV A,YPOS
ANL A,#7
ADD A,#0B8H
MOV B,A
MOV A,XPOS
CJNE A,#64,$+3
JNC LPS_LA1
ANL A,#3FH
ORL A,#40H
CALL LCDWC1
MOV A,B
CALL LCDWC1
JMP LPS_LAX
LPS_LA1:CJNE A,#128,$+3
JNC LPS_LA2
ANL A,#3FH
ORL A,#40H
CALL LCDWC2
MOV A,B
CALL LCDWC2
JMP LPS_LAX
LPS_LA2:CJNE A,#192,$+3
JNC LPS_LA3
ANL A,#3FH
ORL A,#40H
CALL LCDWC3
MOV A,B
CALL LCDWC3
JMP LPS_LAX
LPS_LA3:
LPS_LAX:
POP ACC
RET
LCDRESET: ;LCD控制器復位
MOV A,#3EH ;關LCD顯示
CALL LCDWC1
CALL LCDWC2
CALL LCDWC3
MOV A,#3FH ;打開LCD顯示
CALL LCDWC1
CALL LCDWC2
CALL LCDWC3
MOV A,#0C0H ;設首址
CALL LCDWC1
CALL LCDWC2
CALL LCDWC3
RET
LCDWC1:
PUSH DPL
PUSH DPH
;送片1控制字子程序
CALL WAITIDLE1
MOV DPTR,#CSADDR ;E=1 CSA=0 CSB=0 RS=0 RW=0
MOVX @DPTR,A
POP DPH
POP DPL
RET
LCDWC2: ;送片2控制字子程序
PUSH DPL
PUSH DPH
CALL WAITIDLE2
MOV DPTR,#CSADDR+CSBADDR ;E=1 CSA=0 CSB=1 RS=0 RW=0
MOVX @DPTR,A
POP DPH
POP DPL
RET
LCDWC3: ;送片3控制字子程序
PUSH DPL
PUSH DPH
CALL WAITIDLE3
MOV DPTR,#CSADDR+CSAADDR ;E=1 CSA=1 CSB=0 RS=0 RW=0
MOVX @DPTR,A
POP DPH
POP DPL
RET
LCDWD1: ;片1寫數據子程序
PUSH DPL
PUSH DPH
CALL WAITIDLE1
MOV DPTR,#CSADDR+RSADDR ;E=1 CSA=0 CSB=0 RS=1 RW=0
MOVX @DPTR,A
POP DPH
POP DPL
RET
LCDWD2: ;片2寫數據子程序
PUSH DPL
PUSH DPH
CALL WAITIDLE2
MOV DPTR,#CSADDR+CSBADDR+RSADDR ;E=1 CSA=0 CSB=1 RS=1 RW=0
MOVX @DPTR,A
POP DPH
POP DPL
RET
LCDWD3: ;片3寫數據子程序
PUSH DPL
PUSH DPH
CALL WAITIDLE3
MOV DPTR,#CSADDR+CSAADDR+RSADDR ;E=1 CSA=1 CSB=0 RS=1 RW=0
MOVX @DPTR,A
POP DPH
POP DPL
RET
WAITIDLE1:
PUSH ACC
MOV DPTR,#CSADDR+RWADDR ;E=1 CSA=0 CSB=0 RS=0 RW=1
WT_PA: MOVX A,@DPTR
JB ACC.7,WT_PA
POP ACC
RET
WAITIDLE2:
PUSH ACC
MOV DPTR,#CSADDR+CSBADDR+RWADDR ;E=1 CSA=0 CSB=1 RS=0 RW=1
WT1_PA: MOVX A,@DPTR
JB ACC.7,WT1_PA
POP ACC
RET
WAITIDLE3:
PUSH ACC
MOV DPTR,#CSADDR+CSAADDR+RWADDR ;E=1 CSA=1 CSB=0 RS=0 RW=1
WT2_PA: MOVX A,@DPTR
JB ACC.7,WT2_PA
POP ACC
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
;(d3d0H)(有)(8004)
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)(限)(8005)
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)(公)(8006)
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)(司)(8007)
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
;(d3d0H)(有)(8008)
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)(限)(8009)
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)(公)(800a)
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)(司)(800b)
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, 04H, 80H, 05H, 80H, 06H, 80H, 07H, 80H, 08H, 80H, 09H, 80H, 0aH,80H, 0bH,80H, 00H, 80H, 01H, 80H, 02H, 80H, 03H, 80H, 04H, 80H, 05H, 80H, 06H, 80H, 07H, 80H, 08H, 80H, 09H, 80H, 0aH,80H, 0bH,0ffH
STRING2: DB 80H, 00H, 80H, 01H, 80H, 02H, 80H, 03H, 80H, 04H, 80H, 05H, 80H, 06H, 80H, 07H, 80H, 08H, 80H, 09H, 80H, 0aH,80H, 0bH,80H, 00H, 80H, 01H, 80H, 02H, 80H, 03H, 80H, 04H, 80H, 05H, 80H, 06H, 80H, 07H, 80H, 08H, 80H, 09H, 80H, 0aH,80H, 0bH,0ffH
END
案例2:
19264 接口程序(MCS51模擬方式)僅供參考。
;***************************************************************************
;連線圖:
;*LCM---89C52* *LCM---89C52* *LCM-------89C52* *LCM----------89C52* *
;*DB0---P0.0* *DB4---P0.4* *D/I-------P2.6* *CS1----------P2.4* *
;*DB1---P0.1* *DB5---P0.5* *R/W-------P2.7* *CS2----------P2.5* *
;*DB2---P0.2* *DB6---P0.6* */RST-------VCC* *CS3----------P3.2* *
;*DB3---P0.3* *DB7---P0.7* *E---------P2.3* *
;注:89C52的晶振頻率為12MHz *
;***************************************************************************
;接口引腳定義:
ELCM EQU P2.3
CS1 EQU P2.4
CS2 EQU P2.5
CS3 EQU P3.2
DI EQU P2.6
RW EQU P2.7
DATA_LCM EQU P0
;內存RAM分配
XPOS EQU 30H ;X坐標
YPOS EQU 31H ;Y坐標
;液晶片分區參數
PD1 EQU 40H ;每一個分區寬64點
;主程序開始
ORG 0000H
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -