; LCD SMC1602A顯示模塊 ; *************************************************************************** ;連線圖: *LCM---8031* *LCM---8031* *RS-------- P2.6* ; *DB0----P0.0* *DB4---P0.4* *RW--------P2.5* ; *DB1----P0.1* *DB5---P0.5* *GATE-----P2.7* ; *DB2----P0.2* *DB6---P0.6* *E--------NAND* ; *DB3----P0.3* *DB7---P0.7* *VLCD接200R TO GND* ; ************************************************************************** ;說明: ;入口條件:顯示內(nèi)容的首地址放在R1所指的單元中,如R1=40H,則40H-5FH為顯示緩存 ;影響資源:PSW、A、B、R1、R6、R7 堆棧需求:14字節(jié) RSADDR EQU 4000H RWADDR EQU 2000H CSADDR EQU 8000H RSPIN EQU P2.6 ; SMC1602A的RS RWPIN EQU P2.5 ; SMC1602A的RW EPIN EQU P2.7 ; SMC1602A的E XPOS EQU 30H ;列方向地址指針(用于LCDPOS子程序) YPOS EQU 31H ;行方向地址指針(用于LCDPOS子程序) LCD_FILL: ;LCD顯示模塊的顯示 MOV B,A MOV YPOS,#0 LFL_PB: MOV XPOS,#0 ;整屏顯示A中所代表字符 MOV R6,#16D LFL_PA: MOV A,@R1 INC R1 ;顯示的間接地址 CALL LCDWRITE INC XPOS MOV A,XPOS CJNE A,#16D,LFL_PA INC YPOS MOV A,YPOS CJNE A,#02D,LFL_PB RET LCDPOS: ;設(shè)置第(XPOS,YPOS)個(gè)字符DDRAM地址 PUSH ACC ANL XPOS,#0FH ;X位置范圍(0到15) ANL YPOS,#01H ;Y位置范圍(0到1) MOV A,YPOS ;(XPOS,YPOS)對(duì)應(yīng)DDRAM地址 CJNE A,#00,LPS_LAY ;(第一行)X: 第0----15個(gè)字符 MOV A,XPOS ;DDRAM: 0----0FH JMP LPS_LAX LPS_LAY: MOV A,XPOS ;(第二行)X:第0----15個(gè)字符 ADD A,#40H ; DDRAM: 40----4FH LPS_LAX: ORL A,#80H ;設(shè)置DDRAM地址 CALL LCDWC POP ACC RET LCDWRITE: ;定位寫字符子程序 CALL LCDPOS ;定位顯示地址 CALL LCDWD ;寫字符 RET LCD_RESET: ;初始化程序--LCD顯示模塊的初始化 CALL DELAY5MS ;延時(shí)15MS CALL DELAY5MS CALL DELAY5MS MOV A,#38H ;顯示模式設(shè)置(不檢測忙信號(hào)) CALL LCDWCN ;共三次 CALL DELAY5MS MOV A,#38H CALL LCDWCN CALL DELAY5MS MOV A,#38H CALL LCDWCN MOV A,#38H ;顯示模式設(shè)置(以后均檢測忙信號(hào)) CALL LCDWC MOV A,#08H ;顯示關(guān)閉 CALL LCDWC MOV A,#01H ;顯示清屏 CALL LCDWC MOV A,#06H ;顯示光標(biāo)移動(dòng)設(shè)置 CALL LCDWC MOV A,#0CH ;顯示開及光標(biāo)設(shè)置 CALL LCDWC RET LCDWC: ;送控制字子程序(檢測忙信號(hào)) CALL WAITIDLE LCDWCN: ;送控制字子程序(不檢測忙信號(hào)) MOV DPTR,#CSADDR ;CS=1 RS=0 RW=0 MOVX @DPTR,A RET LCDWD: ;寫字符子程序 CALL WAITIDLE MOV DPTR,#CSADDR+RSADDR ;CS=1 RS=1 RW=0 MOVX @DPTR,A RET WAITIDLE: PUSH ACC ;正常讀寫操作之前必須檢測LCD控制器狀態(tài) MOV DPTR,#CSADDR+RWADDR ;CS=1 RS=0 RW=1 WTD_PA: MOVX A,@DPTR ;DB7: 0 LCD控制器空閑
JB ACC.7,WTD_PA ; DB7:1 LCD控制器忙 POP ACC RET DELAY5MS: MOV R1,#25 ;延時(shí)子程序(5MS) DL5_PA: MOV R2,#100 DJNZ R2,$ DJNZ R1,DL5_PA RET |
|