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

📄 test1.asm

📁 《单片机应用系统开发实例详解》 光盘 程序
💻 ASM
📖 第 1 页 / 共 3 页
字号:
; 由厂家提供的 MGLS12032模块LCD演示程序,文件名TEST1.asm
; E1 A15=0 & A14=0 ; E2 A15=0 & A14=1 ; R/W A9 ; RS A8 .
CWADD1   DATA     8000H           ;写指令代码地址(E1)
CRADD1   DATA     8200H           ;读状态字地址(E1)
DWADD1   DATA     8100H           ;写显示数据地址(E1)
DRADD1   DATA     8300H           ;读显示数据地址 (E1)
CWADD2   DATA     4000H           ;写指令代码地址 (E2)
CRADD2   DATA     4200H           ;读状态字地址 (E2)
DWADD2   DATA     4100H           ;写显示数据地址 (E2)
DRADD2   DATA     4300H           ;读显示数据地址 (E2)
;;;

; 间接控制方式信号定义,根据用户平台接口修改
        RS       EQU     P3.2            ; 寄存器选择信号
;        R/W     EQU     P3.3            ; 读/ 写选择信号
        E1       EQU     P3.4            ; 使能信号1
        E2       EQU     P3.5            ; 使能信号2
      DATBUS     EQU	   P1		           ; 数据总线
; 程序参数定义,根据用户选择的LCM型号修改
;        PARA1   EQU     32H             ; 模块参数 MGLS10032
;------------------
        PARA1   EQU     3CH             ; 模块参数 MGLS12032
;       PARA1   EQU     3DH             ; 模块参数 MGLS12232
; 程序变量定义,根据用户平台提供的内部资源修改
        COM     EQU     50H             ; 指令码寄存器
        DAT1    EQU     51H             ; 数据寄存器
        O_XL    EQU     52H             ; 列地址(0~77H)
        O_YL    EQU     53H		; 在显示字符时定义为页地址 D1,D0: 页地址
					                    ; 并且          D7: 字符体 D7=0为6x8点阵
					                    ;	                   D7=1为8x8点阵
					                    ; 在绘点显示时定义为行地址(0-31)
                              ; 其中          D7:为点标志 "1"为置点
					                    ;			     "0"为清点
        CODE    EQU     55H		; 字符代码
        COUNT1  EQU     56H		; 计数器1
;************************************************************************
    ORG	0000H
		AJMP	MAIN
		ORG	0030H
MAIN:	MOV	SP,#60H
		ANL	P3,#0C3H
		LCALL	INT		    ; 初始化字程序
		LCALL	CLEAR		  ; 清显示RAM子程序
;		LJMP	DISTEXT		; 西文显示程序段
		LCALL	DISCHA		; 汉字显示程序段
;		LJMP	DRAW		  ; 绘点程序段
;		LJMP	S_UP		  ; 上滚动程序段
		LJMP	S_DOWN		; 下滚动程序段
		SJMP  $
;=========== 西文显示演示程序段 ========================
       DISTEXT: MOV     O_YL,#03H       ; 6x8点阵字体, 第4页
                MOV     O_XL,#04H       ; 起始列为第4列
                MOV     CODE,#34H       ; 字符代码
                LCALL   CW_PR
                MOV     O_YL,#03H
                MOV     O_XL,#0CH
                MOV     CODE,#45H
                LCALL   CW_PR
                MOV     O_YL,#03H
                MOV     O_XL,#14H
                MOV     CODE,#4CH
                LCALL   CW_PR
                MOV     O_YL,#03H
                MOV     O_XL,#1CH
                MOV     CODE,#1AH
                LCALL   CW_PR
                MOV     R7,#00H
                MOV     R6,#28H
         LOOP:  MOV     A,R7
                MOV     DPTR,#TAB1
                MOVC    A,@A+DPTR
                MOV     CODE,A
                MOV     O_YL,#83H       ; 8X8点阵字体, 第4页
                MOV     O_XL,R6
                LCALL   CW_PR
                INC     R7
                MOV     A,#06H
                ADD     A,R6
                MOV     R6,A
                CJNE    R7,#08H,LOOP
                SJMP    $
        TAB1:   DB 16H,12H,17H,18H,10H,19H,19H,14H
;=============== 中文演示显示程序段 =======================
        DISCHA: MOV     O_YL,#00H
                MOV     O_XL,#10H
                MOV     CODE,#00H
                LCALL   CCW_PR
                MOV     O_YL,#00H
                MOV     O_XL,#20H
                MOV     CODE,#01H
                LCALL   CCW_PR
                MOV     O_YL,#00H
                MOV     O_XL,#30H
                MOV     CODE,#02H
                LCALL   CCW_PR
                MOV     O_YL,#00H
                MOV     O_XL,#40H
                MOV     CODE,#03H
                LCALL   CCW_PR
                RET
                SJMP    $
;==============================================================
; 中文字符库
CCTAB:  DB 082H,08AH,092H,0B2H,002H,0A7H,092H,05EH;蓬90 = 00H
        DB 02AH,0AFH,02AH,05AH,04AH,083H,082H,000H
        DB 000H,080H,040H,03FH,041H,090H,095H,095H
        DB 095H,0FFH,095H,095H,095H,0D0H,040H,000H
        DB 080H,064H,024H,024H,03FH,024H,0A6H,064H;勃90 = 01H
        DB 020H,020H,0FFH,020H,020H,0F0H,020H,000H
        DB 000H,008H,049H,089H,07DH,00BH,089H,040H
        DB 030H,00EH,041H,080H,040H,03FH,000H,000H
        DB 040H,042H,044H,0CCH,000H,020H,022H,0E2H;远90 = 02H
        DB 022H,022H,0E2H,023H,032H,020H,000H,000H
        DB 000H,040H,020H,01FH,020H,050H,04CH,043H
        DB 040H,040H,047H,048H,048H,06EH,020H,000H
        DB 020H,020H,020H,020H,020H,020H,0A0H,07FH;大90 = 03H
        DB 0A0H,020H,020H,020H,020H,030H,020H,000H
        DB 000H,040H,040H,020H,010H,00CH,003H,000H
        DB 001H,006H,008H,010H,020H,060H,020H,000H
;=============== 绘点演示程序段 =================
         DRAW:  MOV     R6,#00H         ; 绘点
                MOV     R7,#80H
        LOOP1:  MOV     O_XL,R6       ; 列地址设置
                MOV     O_YL,R7       ; 行地址设置
                LCALL   W_DOT
                INC     R6
                INC     R7
                CJNE    R7,#0A0H,LOOP1
        LOOP2:  DEC     R7
                MOV     O_XL,R6       ; 列地址设置
                MOV     O_YL,R7       ; 行地址设置
                LCALL   W_DOT
                INC     R6
                CJNE    R7,#80H,LOOP2
        LOOP3:  MOV     O_XL,R6       ; 列地址设置
                MOV     O_YL,R7       ; 行地址设置
                LCALL   W_DOT
                INC     R6
                INC     R7
                CJNE    R7,#0A0H,LOOP3
                LCALL	DELAY
                LCALL	DELAY
;----------------------------------------------------
                MOV     R6,#00H       ; 消点
                MOV     R7,#00H
        LOOP4:  MOV     O_XL,R6       ; 列地址设置
                MOV     O_YL,R7       ; 行地址设置
                LCALL   W_DOT
                INC     R6
                INC     R7
                CJNE    R7,#020H,LOOP4
        LOOP5:  DEC     R7
                MOV     O_XL,R6       ; 列地址设置
                MOV     O_YL,R7       ; 行地址设置
                LCALL   W_DOT
                INC     R6
                CJNE    R7,#00H,LOOP5
        LOOP6:  MOV     O_XL,R6       ; 列地址设置
                MOV     O_YL,R7       ; 行地址设置
                LCALL   W_DOT
                INC     R6
                INC     R7
                CJNE    R7,#20H,LOOP6
                SJMP    $
;=============== 滚动演示程序段 ======================
         S_UP:  MOV     R7,#00H         ; 向上滚动程序
        S_UP1:  MOV     A,#0C0H         ; 显示起始行设置代码
                ORL     A,R7
                MOV     COM,A
                LCALL   PR1
                LCALL   PR4
                LCALL   DELAY           ; 调延时子程序
                INC     R7
                CJNE    R7,#20H,S_UP1
                SJMP    $
;------------------------------------------------------------
       S_DOWN:  MOV     R7,#1FH         ; 向下滚动程序
                MOV     COM,#0C0H       ; 显示起始行设置代码
                LCALL   PR1
                LCALL   PR4
                LCALL   DELAY
      S_DOWN1:  MOV     A,#0C0H         ; 显示起始行设置代码
                ORL     A,R7
                MOV     COM,A
                LCALL   PR1
                LCALL   PR4
                LCALL   DELAY           ; 调延时子程序
                DJNZ    R7,S_DOWN1
		            SJMP	$
;---------------------------------------
        DELAY:  MOV     R6,#00H        ; 延时子程序
                MOV     R5,#00H
        DELAY1: NOP
                DJNZ    R5,DELAY1
                DJNZ    R6,DELAY1
                RET
;***************************************************
; 直接驱动子程序由6个子程序组成:
;     1. 写指令代码子程序(左屏E1)PR0
;     2. 写显示数据子程序(左屏E1)PR1
;     3. 读显示数据子程序(左屏E1)PR2
;     4. 写指令代码子程序(右屏E2)PR3
;     5. 写显示数据子程序(右屏E2)PR4
;     6. 读显示数据子程序(右屏E2)PR5
; 占用内部寄存器:A,COM,DAT1
; 占用系统接口资源: CWADD1,CRADD1,DWADD1,DRADD1,CWADD2,CRADD2,DWADD2,DRADD2
; 程序输入变量:COM 或 DAT1
;------------写指令子程序(E1)-------------------------
        PR1:    PUSH    DPL
                PUSH    DPH
                MOV     DPTR,#CRADD1    ; 设置读状态字地址
        PR11:   MOVX    A,@DPTR         ; 读状态字
                JB      ACC.7,PR11      ; 判"忙"标志为"0"否, 否再读
                MOV     DPTR,#CWADD1    ; 设置写指令代码地址
                MOV     A,COM           ; 取指令代码
                MOVX    @DPTR,A         ; 写指令代码
                POP     DPH

⌨️ 快捷键说明

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