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

📄 lcd.asm

📁 用PROTEUS仿真LCD-LM032L的汇编程序。
💻 ASM
字号:
; LCD Display Driver Demo.
; Timing code assumes 6MHz Clock
;
;***********************************************
;指定LCD地址 LCD Registers addresses
;LCD_CMD_WR	equ 0					;写命令寄存器
;LCD_DATA_WR	equ	1				;写数据寄存器
;LCD_BUSY_RD	equ	2				;读忙标志及RAM地址
;LCD_DATA_RD	equ	3				;读RAM数据

;指定LCD命令 LCD Commands
;LCD_CLS		equ	1         ;清屏
;LCD_HOME	equ	2						;光标归位
;LCD_SETMODE	equ	4				;输入模式
;LCD_SETVISIBLE	equ	8			;显示致能、禁能
;LCD_SHIFT	equ	16				;显示、光标移位
;LCD_SETFUNCTION	equ	32	;功能设定
;LCD_SETCGADDR	equ	64		;字符器RAM地址设定
;LCD_SETDDADDR	equ	128		;显示数据存储器RAM地址设定
        ORG     00H
        AJMP    MAIN
        ORG     30H
;主程序
MAIN:
        MOV     SP,#5FH		;栈指针
        ACALL   INIT			;LCD初始化
        ACALL   FIRST			;第一行显示位置
        MOV     DPTR,#TABLE1;取要显示字符
        ACALL   DISPLAY		;显示          
        ACALL   SECOND		;第二行显示位置
        MOV     DPTR,#TABLE2;取要显示字符
        ACALL   DISPLAY		;显示
        JMP     main			;返回
;初始化子程序
INIT:
        ACALL   DELAY;
        
        MOV     A,#39H		;复位数据
        ACALL   WRCOM			;写命令寄存器
        MOV     A,#39H		;设定数据长度为8位
        ACALL   WRCOM			;写命令寄存器
;
        MOV     A,#08H		;设定LCD不显示光标,不闪烁字符
        ACALL   WRCOM			;写命令寄存器
;
        MOV     A,#01H		;清屏
        ACALL   WRCOM			;
;
        MOV     A,#06H		;设定输入模式
        ACALL   WRCOM			;
;
        MOV     A,#0CH		;显示致能,不显示光标
        ACALL   WRCOM			;
        RET
;显示子程序
DISPLAY:
        MOV     R1,#00H		;取第一个字符
NEXT:
        MOV     A,R1			;
        MOVC    A,@A+DPTR	;
        CJNE    A,#23H,DSP;判断是否显示完全部字符(“#”对应代码是0010 0011B=23H)
        RET
DSP:
        ACALL   WRDATA		;显示
        INC     R1				;下一字符
        AJMP    NEXT			;
FIRST:
        MOV     A,#10000000B;第一行显示位置
        ACALL   WRCOM			;
        RET
;
SECOND:
        MOV     A,#11000000B;第一行显示位置
        ACALL   WRCOM;
        RET
;写命令寄存器
WRCOM:
        ACALL   BUSY;
        MOV     P2,#11111000B;
        NOP
        SETB    P2.2;
        MOV     P0,A;
        NOP
        CLR     P2.2;
        CALL   DELAY
        RET
;写数据寄存器
WRDATA:
        ACALL   BUSY;
        MOV     P2,#11111001B;
        NOP
        SETB    P2.2;
        MOV     P0,A;
        NOP
        CLR     P2.2;
        CALL   DELAY
        RET
;忙判断
BUSY:
        PUSH    ACC;
WAIT:
        MOV     P2,#11111010B;
        NOP
        SETB    P2.2;
        MOV     A,P0;
        JB      ACC.7,WAIT;
        CLR     P2.2;
        POP     ACC
        RET
;延时
DELAY:
        MOV     R6,#80H
DL1:    MOV     R7,#80H
        DJNZ    R7,$
        DJNZ    R6,DL1
        RET
;显示字符
TABLE1:  DB      "  ABCDEFG  HIGKLMN  ";
        DB      "#";
TABLE2:  DB      "  OPQ RST  UVW XYZ  ";
        DB      "#"
        END

⌨️ 快捷键说明

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