📄 gdlcd.asm
字号:
;/********************************************************************************
;* 描述: LCD1602 滚动显示 *
;* 显示方式: *
;* 1、从左到右逐字显示,闪动二次,清屏。 *
;* 2、再从右到左逐字显示,闪动二次,清屏。 *
;* 3、周期性地重复上述显示方式。 *
;********************************************************************************/
LCD_RS EQU P2.6 //控制端接口
LCD_RW EQU P2.5
LCD_EN EQU P2.7
;*******************************************************************
ORG 0000H
AJMP MAIN
ORG 0030H
;*******************************************************************
MAIN:
MOV SP,#60H
MOV R4,#02H ;设置闪烁次数
ACALL LCD_INIT
MAIN1:
ACALL LCDSET1
MOV DPTR,#CHAR1
ACALL WRITE1 ;显示“WELCOME TO”
MOV A,#0C0H ;显示第二行左边第一位位置
ACALL LCD_CMD
MOV DPTR,#CHAR2 ;显示
ACALL WRITE1
ACALL DELAY4 ;延时
ACALL DELAY4
ACALL SHAN ;闪烁两次
ACALL LCDSET2
MOV DPTR,#CHAR3 ;显示“WELCOME TO”
ACALL WRITE1
MOV A,#0CFH ;显示第二行右边第一位位置
ACALL LCD_CMD
MOV DPTR,#CHAR4 ;显示WWW.PRECHIN.COM
ACALL WRITE1
ACALL DELAY4 ;延时
ACALL DELAY4
ACALL SHAN ;闪烁两次
ACALL MAIN1
;***************************************************************
;LCD初始化设定子程序
;***************************************************************
LCD_INIT:
ACALL DELAY5MS ;延时15MS
ACALL DELAY5MS ;等待LCD电源稳定
ACALL DELAY5MS
MOV A,#38H ;16*2显示,5*7点阵,8位数据
ACALL LCD_CMD_NC ;不进行LCD忙检测
ACALL DELAY5MS
MOV A,#38H ;16*2显示,5*7点阵,8位数据
ACALL LCD_CMD_NC ;不进行LCD忙检测
ACALL DELAY5MS
MOV A,#38H ;16*2显示,5*7点阵,8位数据
ACALL LCD_CMD_NC ;不进行LCD忙检测
ACALL DELAY5MS
MOV A,#08H ;显示关
ACALL LCD_CMD ;进行LCD忙检测
MOV A,#01H ;清除屏幕
ACALL LCD_CMD ;进行LCD忙检测
MOV A,#06H ;移动光标
ACALL LCD_CMD ;进行LCD忙检测
MOV A,#0CH ;显示开,关光标
ACALL LCD_CMD ;进行LCD忙检测
RET
;***************************************************************
;显示位置与移动光标设定
;***************************************************************
LCDSET1:
MOV A,#01H ;清除屏幕
ACALL LCD_CMD
ACALL DELAY5MS
MOV A,#06H ;移动光标(光标加1)
ACALL LCD_CMD
ACALL DELAY5MS
MOV A,#80H ;显示第一行左边第一位位置
ACALL LCD_CMD
ACALL DELAY5MS
RET
LCDSET2:
MOV A,#01H ;清除屏幕
ACALL LCD_CMD
ACALL DELAY5MS
MOV A,#04H ;移动光标(光标减1)
ACALL LCD_CMD
ACALL DELAY5MS
MOV A,#8FH ;显示第一行右边第一位位置
ACALL LCD_CMD
ACALL DELAY5MS
RET
;***************************************************************
;写指令数据到LCD
;RS=L,RW=L,D0-D7=指令码,E=高脉冲
;***************************************************************
LCD_CMD:
ACALL CHECKBUSY
LCD_CMD_NC:
CLR LCD_RS
CLR LCD_RW
MOV P0,A
SETB LCD_EN
NOP
NOP
NOP
NOP
CLR LCD_EN
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -