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

📄 lcd_zf.asm

📁 基于89s51的一通用平台
💻 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 + -