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

📄 eyelcd9.asm

📁 《单片机应用系统开发实例详解》 光盘 程序
💻 ASM
📖 第 1 页 / 共 2 页
字号:
; 由厂家提供的MGLS240128T模块LCD演示程序,文件名eyelcd9.asm
; 直接访问方式地址定义,根据用户平台接口修改
        CWADD1  EQU     08100H          ; 指令通道
        DWADD1  EQU     08000H          ; 数据通道
; 间接控制方式信号定义,根据用户平台接口修改
;       RS  EQU P3.2                    ; 寄存器选择信号
;     	WR	EQU	P3.3		                ; 写操作信号
;	      RD	EQU	P3.4	                  ; 读操作信号
;	   DATBUS	EQU	P1		                  ; 数据总线
; 程序参数定义,根据用户选择的LCM型号修改
;       PARA1    EQU     20H            ; MGLS128128,DMF5002
;---------------------------
        PARA1    EQU     28H            ; MGLS160128,240128T
;       PARA1    EQU     40H            ; MGLS12864T,24064
; 程序变量定义,根据用户平台提供的内部资源修改
        COM     EQU     50H             ; 指令码寄存器
        DAT1    EQU     51H             ; 数据寄存器
       	DAT2	  EQU	    52H		          ; 数据寄存器2
        O_XL    EQU     53H             ; 列地址(0~77H)
        O_YL    EQU     54H		          ; 行地址,在文本方式下以字符行为单位。
					                              ; 在图形方式下以点行为单位。
					                              ; 在绘点显示时定义为行地址(0-127)
                          		          ; D7为点标志 "1"为置点,"0"为清点
        CODE1   EQU     55H	          	; 字符代码
        ATTR    EQU     57H             ; 字符属性码(低4位有效)
        COUNT1  EQU     56H		          ; 计数器1

                ORG	0000H
                AJMP	MAIN
                ORG	0030H
        MAIN:   MOV	SP,#0DFH
	            	CLR EA
                LCALL   INT
;初始化完成后, 开文本和图形显示. 此时调整对比度电压, 显示屏上将因显示RAM
;上电时的随机数据而显示出随机的图形和字符. 以此可以验证接口电路和驱动程序的正确性.
                LCALL	CLEAR
; =========建立CGRAM子程序(地址设定在代码为80H起处) =============
                MOV     COUNT1,#08H
                LCALL   CGRAM
           ;		LJMP	DCGRAM
                LJMP	DISCHA
           ;		LJMP	DISTEXT
                SJMP  $
; 建立CGRAM子程序
;     内部调用子程序:PR1
;     程序调用入口:CGRAM
;     连接字库:CGTAB
;     占用内部资源:COUNT1,A,DPTR
;     程序调用变量:COUNT1
        CGRAM:  MOV     DAT1,#03H       ; 设置CGRAM偏置地址
                MOV     DAT2,#00H
                MOV     COM,#22H
                LCALL   PR1
                MOV     DAT1,#00H       ; 设置RAM地址指针
                MOV     DAT2,#1CH
                MOV     COM,#24H
                LCALL   PR1
                MOV     COM,#0B0H       ; 设置自动写方式
                LCALL   PR12
                MOV     A,COUNT1        ; 计算写入的字节数
                MOV     B,#08H
                MUL     AB
                MOV     COUNT1,A        ; 计算器低8位数据
                INC     B               ; 计算器高8位数据
                MOV     DPTR,#CGTAB     ; 取字符库首地址
                PUSH    DPH             ; 存字符库指针
                PUSH    DPL
        CGRAM1: LCALL   ST3             ; 判自动写状态位
                POP     DPL             ; 取字符库指针
                POP     DPH
                CLR     A
                MOVC    A,@A+DPTR       ; 取数据
                INC     DPTR            ; 字符库指针加一
                PUSH    DPH             ; 存字符库指针
                PUSH    DPL
                LCALL   PR2             ; 写入数据
                DJNZ    COUNT1,CGRAM1   ; 计数循环
                DJNZ    B,CGRAM1
                MOV     COM,#0B2H       ; 写入结束自动写指令
                LCALL   PR12
                POP     ACC             ; 修正栈指针
                POP     ACC
                RET
CGTAB:  DB 000H,040H,037H,010H,081H,061H,022H,00AH;"液"= 80H
        DB 016H,02BH,0E2H,022H,022H,022H,023H,022H
        DB 080H,044H,0FEH,020H,020H,03CH,044H,064H
        DB 098H,048H,050H,020H,050H,08EH,004H,000H
        DB 00FH,008H,008H,00FH,008H,008H,00FH,008H;"晶"= 84H
        DB 07EH,042H,042H,07EH,042H,042H,07EH,042H
        DB 0E0H,020H,020H,0E0H,020H,020H,0E0H,024H
        DB 0FEH,084H,084H,0FCH,084H,084H,0FCH,084H
;=============== 文本方式下汉字显示演示程序 ================
       DCGRAM:  MOV     CODE1,#80H
                MOV     O_XL,#03H
                MOV     O_YL,#02H
                LCALL   CCW1_PR
                MOV     CODE1,#84H
                MOV     O_XL,#07H
                MOV     O_YL,#02H
                LCALL   CCW1_PR
		            SJMP    $
;=====================================================
; 汉字库
CCTAB:  DB 000H,040H,037H,010H,083H,060H,02FH,008H; "清"代码为00H
        DB 013H,022H,0E3H,022H,023H,022H,022H,022H
        DB 040H,048H,0FCH,040H,0F8H,040H,0FEH,008H
        DB 0FCH,008H,0F8H,008H,0F8H,008H,028H,010H
        DB 004H,004H,008H,008H,018H,029H,04AH,008H; "华"代码为01H
        DB 009H,001H,0FFH,001H,001H,001H,001H,001H
        DB 040H,048H,058H,060H,0C0H,040H,044H,044H
        DB 03CH,000H,0FEH,000H,000H,000H,000H,000H
        DB 004H,0FFH,005H,041H,033H,014H,001H,0F6H; "蓬"代码为02H
        DB 01BH,010H,013H,010H,017H,010H,028H,047H
        DB 044H,0FEH,040H,0F8H,010H,0E0H,018H,046H
        DB 0F8H,040H,0F8H,040H,0FCH,040H,046H,0FCH
        DB 000H,043H,030H,010H,000H,007H,0F1H,011H; "远"代码为03H
        DB 011H,011H,012H,012H,014H,028H,047H,000H
        DB 010H,0F8H,000H,000H,008H,0FCH,020H,020H
        DB 020H,024H,024H,01CH,000H,006H,0FCH,000H
;图形方式下汉字显示演示程序
        DISCHA: MOV     CODE1,#00H
                MOV     O_XL,#00H
                MOV     O_YL,#00H
                LCALL   CCW2_PR
                MOV     CODE1,#01H
                MOV     O_XL,#03H
                MOV     O_YL,#00H
                LCALL   CCW2_PR
                MOV     CODE1,#02H
                MOV     O_XL,#06H
                MOV     O_YL,#00H
                LCALL   CCW2_PR
                MOV     CODE1,#03H
                MOV     O_XL,#09H
                MOV     O_YL,#00H
                LCALL   CCW2_PR
		            SJMP	$

;========== 文本属性方式显示演示程序段 =================
       DISTEXT: MOV     COM,#84H        ; 设置文本属性显示方式
                LCALL   PR12
                MOV     COM,#9FH        ; 开文本,图形显示及光标闪烁显示
                LCALL   PR12
;-----------------------------------------
                MOV     DAT1,#0EH       ; 文本光标位置设置
                MOV     DAT2,#01H
                MOV     COM,#21H
                LCALL   PR1
;-----------------------------------------
                MOV     R1,#00H         ; 设置属性寄存器=0
        LOOPA:  MOV     R2,#00H         ; 设置表间址寄存器=0
                MOV     R3,#00H         ; 设置显示X坐标寄存器=0
                MOV     R4,#01H         ; 设置显示Y坐标寄存器=1
        LOOPB:  MOV     A,R2
                MOV     DPTR,#DTAB
                MOVC    A,@A+DPTR
                MOV     CODE1,A         ; 置字符代码
                MOV     ATTR,R1         ; 置字符属性值
                MOV     O_XL,R3         ; 置X坐标
                MOV     O_YL,R4         ; 置Y坐标
                LCALL   CW2_PR          ; 调子程序
                INC     R2
                INC     R3
                MOV     A,R2
                CJNE    A,#14,LOOPB
                LCALL   DELAY
                INC     R1
                SJMP    $

        DELAY:  MOV     R5,#00H
                MOV     R6,#00H
        DELAY1: NOP
                DJNZ    R5,DELAY1
                DJNZ    R6,DELAY1
                RET
        DTAB:   DB 37H,45H,4CH,43H,4FH,4DH,45H,00H,34H,4FH
                DB 00H,39H,4FH,55H ;"Welcome to you"


;初始化子程序INT
;  内部调用子程序:PR1
;  程序调用入口:INT
;  程序参数:PARA1
;  程序调用变量:无
        INT:    MOV     DAT1,#00H       ; 设置文本显示区域首地址
                MOV     DAT2,#00H
                MOV     COM,#40H
                LCALL   PR1
                MOV     DAT1,#PARA1     ; 设置文本显示区域宽度*
                MOV     DAT2,#00H       ; 即一行显示所占字节数
                MOV     COM,#41H
                LCALL   PR1
                MOV     DAT1,#00H       ; 设置图形显示区域首地址
                MOV     DAT2,#08H       ; 或为文本属性区域首地址
                MOV     COM,#42H
                LCALL   PR1
                MOV     DAT1,#PARA1     ; 设置图形显示区域宽度
                MOV     DAT2,#00H       ; 或为文本属性区域宽度
                MOV     COM,#43H        ; 即一行显示所占字节数
                LCALL   PR1
                MOV     COM,#0A7H       ; 光标形状设置
                LCALL   PR12
                MOV     COM,#80H        ; 显示方式设置 逻辑"或"合成
                LCALL   PR12
                MOV     COM,#9CH        ; 显示开关设置 开文本和图形显示
                LCALL   PR12
                RET
;清显示RAM 区(清屏)子程序CLEAR
; 占用内部寄存器:COM,DAT1,DAT2,A,R3,R4
; 内部调用子程序:PR1
; 程序输入变量:无
; 程序调用入口:CLEAR
       CLEAR:   MOV     DAT1,#00H       ; 设置显示RAM 首地址
                MOV     DAT2,#00H
                MOV     COM,#24H
                LCALL   PR1

⌨️ 快捷键说明

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