📄 lcd_zf.asm
字号:
;实验一、LCD 字符显示实验
;文件名称:LCD_ZF.ASM
;在第一行显示"0,1,2,3... 16个字符"
NAME LCD_ZF
$NOLIST
$INCLUDE(LJD_2008.INC)
$INCLUDE(LCD.INC)
$LIST
;
;
;
; ORG 0000H
AJMP BEGIN
ORG 0030H
BEGIN: MOV SP,#60H
;-------------------------------------------------
;设定行号 第一行: 00H-07H
; 第二行: 10H-17H
; 第三行: 08H-0FH
; 第四行: 18H-1FH
;-------------------------------------------------
MOV ADDR1,#00H
LCALL INITIAL_GLCD ;调用初始化程序
LCALL DCHAR ;调用字符显示子程序
SJMP $
;显示字符8X16 字符子程序
DCHAR: MOV ADDR, ADDR1 ; 设定行号
MOV DATA1,#30H ; display 0,1,2,3....
MOV N,#1
DCH0: MOV B,#16
DCH1: MOV A,ADDR ;set DDRAM address
ORL A,#80H
LCALL COMMAND_GLCD ;送命令
DCH2: MOV A,DATA1
LCALL WRITE_GLCD ;送数据
INC DATA1
DJNZ B,DCH2
DJNZ N,DCH0
RET
;---------------------------------------------------------
;点阵式 LCD(128X64)模块显示实验
;以下是公共的程序:
;----------------------------------------------------------
;执行 LCD 初始化工作
INITIAL_GLCD:
PUSH ACC
MOV A,#30H ;功能设定
CALL COMMAND_GLCD
MOV A,#30H ;功能设定
CALL COMMAND_GLCD
MOV A,#30H ;功能设定
CALL COMMAND_GLCD
MOV A,#06H ;显示器控制:游标不显示;但是字会闪烁
CALL COMMAND_GLCD
MOV A,#01H ;清除显示器
CALL COMMAND_GLCD
MOV A,#0CH ;进入模式设定
CALL COMMAND_GLCD
POP ACC
RET
;---------------------------------------------------------------
;检查LCD 忙碌标志
CHKBUSY_GLCD:
PUSH DPH
PUSH DPL
PUSH ACC
MOV DPTR,#R_B_GLCD
CHK$: MOVX A,@DPTR
JB ACC.7,CHK$ ;判别是不是忙?
POP ACC
POP DPL
POP DPH
RET
;---------------------------------------------------------------
;写命令到 GLCD
COMMAND_GLCD:
PUSH DPH
PUSH DPL
CALL CHKBUSY_GLCD ;判别是不是忙?
MOV DPTR,#W_C_GLCD
MOVX @DPTR,A ;写入命令
POP DPL
POP DPH
RET
;---------------------------------------------------------------
;写资料到 GLCD
WRITE_GLCD:
PUSH DPH
PUSH DPL
CALL CHKBUSY_GLCD ;判别是不是忙?
MOV DPTR,#W_D_GLCD ;写入数据
MOVX @DPTR,A
POP DPL
POP DPH
RET
;--------------------------------------------------------------------
;清除 LCD 的显示幕
CLEAR_GLCD:
PUSH ACC
MOV A,#01H ;清除显示器
CALL COMMAND_GLCD
POP ACC
RET
;--------------------------------------------------------------------
;将 ACC 内容,以十六进制值显示
HEX_LCD:
PUSH DPH
PUSH DPL
PUSH ACC
PUSH ACC
SWAP A ;高低四位元交换
ANL A,#0FH ;留下低四位元
MOV DPTR,#ASCII_CODE ;DPTR 指到 ASCII_CODE
MOVC A,@A+DPTR ;取得 ASCII 码
CALL WRITE_GLCD ;写到 LCD
POP ACC
ANL A,#0FH ;留下低四位元
MOVC A,@A+DPTR ;取得 ASCII 码
CALL WRITE_GLCD ;写到 LCD
POP ACC
POP DPL
POP DPH
RET
ASCII_CODE: DB '0123456789ABCDEF'
;--------------------------------------------
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -