⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 smc1602a液晶显示器子程序.txt

📁 SMC1602A液晶显示器子程序,SMC1602A液晶显示器子程序 [日期:2008-01-20] 来源:EDA网 作者:郭森 [字体:大 中 小] LCD SMC1602A显示模块
💻 TXT
字号:
SMC1602A液晶显示器子程序
[日期:2008-01-20] 来源:EDA网  作者:佚名 [字体:大 中 小]  

; 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*
; **************************************************************************
;说明:
;入口条件:显示内容的首地址放在R1所指的单元中,如R1=40H,则40H-5FH为显示缓存
;影响资源:PSW、A、B、R1、R6、R7 堆栈需求:14字节
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: ;设置第(XPOS,YPOS)个字符DDRAM地址
PUSH ACC 
ANL XPOS,#0FH ;X位置范围(0到15)
ANL YPOS,#01H ;Y位置范围(0到1)
MOV A,YPOS ;(XPOS,YPOS)对应DDRAM地址
CJNE A,#00,LPS_LAY ;(第一行)X: 第0----15个字符
MOV A,XPOS ;DDRAM: 0----0FH
JMP LPS_LAX 
LPS_LAY: MOV A,XPOS ;(第二行)X:第0----15个字符
ADD A,#40H ; DDRAM: 40----4FH
LPS_LAX: ORL A,#80H ;设置DDRAM地址
CALL LCDWC 
POP ACC 
RET 
LCDWRITE: ;定位写字符子程序
CALL LCDPOS ;定位显示地址
CALL LCDWD ;写字符
RET 
LCD_RESET: ;初始化程序--LCD显示模块的初始化
CALL DELAY5MS ;延时15MS
CALL DELAY5MS 
CALL DELAY5MS 
MOV A,#38H ;显示模式设置(不检测忙信号)
CALL LCDWCN ;共三次
CALL DELAY5MS 
MOV A,#38H 
CALL LCDWCN 
CALL DELAY5MS 
MOV A,#38H 
CALL LCDWCN 
MOV A,#38H ;显示模式设置(以后均检测忙信号)
CALL LCDWC 
MOV A,#08H ;显示关闭
CALL LCDWC 
MOV A,#01H ;显示清屏
CALL LCDWC 
MOV A,#06H ;显示光标移动设置
CALL LCDWC 
MOV A,#0CH ;显示开及光标设置
CALL LCDWC 
RET 
LCDWC: ;送控制字子程序(检测忙信号)
CALL WAITIDLE 
LCDWCN: ;送控制字子程序(不检测忙信号)
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控制器状态
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 ;延时子程序(5MS)
DL5_PA: MOV R2,#100 
DJNZ R2,$ 
DJNZ R1,DL5_PA 
RET

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -