📄 正在检测.txt
字号:
; 直接访问方式地址定义,根据用户平台接口修改
;CWADD1 EQU 0800H ; 写指令代码地址(左)
;CRADD1 EQU 0A00H ; 读状态字地址 (左)
;DWADD1 EQU 0900H ; 写显示数据地址(左)
;DRADD1 EQU 0B00H ; 读显示数据地址(左)
;CWADD2 EQU 0400H ; 写指令代码地址(右)
;CRADD2 EQU 0600H ; 读状态字地址 (右)
;DWADD2 EQU 0500H ; 写显示数据地址(右)
;DRADD2 EQU 0700H ; 读显示数据地址(右)
; 间接控制方式信号定义,根据用户平台接口修改
CSA EQU P3.2 ; 片选/CSA
CSB EQU P3.3 ; 片选/CSB
RS EQU P3.5 ; 寄存器选择信号rs==d/i
RES EQU P3.4 ; 复位
RW EQU P3.0 ; 读/ 写选择信号
E1 EQU P3.1 ; 使能信号
DATBUS EQU P1 ; 数据总线
; 程序变量定义,根据用户平台提供的内部资源修改
COM EQU 50H ; 指令码寄存器
DAT1 EQU 51H ; 数据寄存器
O_XL EQU 30H ; 列地址(0-127)
O_YL EQU 31H ; 行地址 D2,D1,D0:
; 在文本显示下为字符行(以8点行为单位)
; 在西文显示时 D7为字符体选择
; D7=0为6x8点阵
; D7=1为8x8点阵
; 在绘点显示下以点行为单位,其中
; D7为点标志 "1"为置点,"0"为清点
CODE EQU 32H ; 字符代码寄存器
COUNT1 EQU 33H ; 计数器
;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
;演示程序
ORG 0000H
AJMP MAIN
ORG 0030H
MAIN: CLR RES
MOV SP,#60H
MOV P3,#21H
SETB RES
LCALL INT
LCALL CLEAR
;LJMP DISTEXT;西文显示
LJMP DISCHA ;中文显示
;LJMP DRAW ;绘点演示
;LJMP WIPE
;LJMP S_UP ;滚动演示
;LJMP S_DOWN;向下滚动
; 初始化子程序INT(适用MGLS19264)
; 内部调用子程序:PR1,PR4,PR7
; 程序调用入口:INT
; 程序调用变量:无
INT:
;LCALL DELAY100MS
MOV COM,#0C0H ; 设置显示起始行为第一行
LCALL PR1
LCALL PR4
;CLR RES
MOV COM,#3FH ; 开显示设置
LCALL PR1
LCALL PR4
RET
; 清显示RAM 区(清屏)子程序CLEAR(适应MGLS12864)
; 占用内部寄存器:R3,R4
; 内部调用子程序:PR1,PR2,PR4,PR5
; 程序调用入口:CLEAR
CLEAR:
;LCALL DELAY100MS
;SETB RES
MOV R4,#00H ; 页面地址暂存器设置
CLEAR1: MOV A,R4
ORL A,#0B8H ; "或"页面地址设置代码
MOV COM,A ; 页面地址设置
LCALL PR1
LCALL PR4
MOV COM,#40H ; 列地址设置为"0"
NOP
NOP
NOP
NOP
LCALL PR1
LCALL PR4
MOV R3,#40H ; 一页清64个字节
CLEAR2: MOV DAT1,#00H ; 显示数据为"0"
LCALL PR2
LCALL PR5
NOP
NOP
DJNZ R3,CLEAR2 ; 页内字节清零循环
INC R4 ; 页地址暂存器加1
NOP
NOP
NOP
NOP
CJNE R4,#08H,CLEAR1 ; RAM 区清零循环
RET
; 间接驱动驱动子程序由6个子程序组成(适应MGLS12864):
; 占用内部资源:COM,DAT1,A
; 占用系统资源:CSA,CSB,RS,RW,E1,DATBUS
; 程序输入变量:COM 或 DAT1
; 1. 左区驱动子程序
; 1.1 写指令代码子程序(左)
PR1: CLR CSB ; 片选设置为"01"
SETB CSA ;
CLR RS ; RS=0
SETB RW ; R/W=1
NOP
NOP
NOP
NOP
NOP
PR11: MOV DATBUS,#0FFH ; DATBUS口置"1"
SETB E1 ; E=1
NOP
NOP
NOP
NOP
NOP
NOP
MOV A,DATBUS ; 读状态字
CLR E1 ; E=0
JB ACC.7,PR11 ; 判"忙"标志为"0"否, 否再读
CLR RW ; R/W=0
MOV DATBUS,COM ; 写指令代码
NOP
NOP
NOP
NOP
NOP
NOP
SETB E1 ; E=1
NOP
NOP
NOP
NOP
NOP
CLR E1 ; E=0
NOP
NOP
NOP
RET
; 1.2 写显示数据子程序(左)
PR2: CLR CSB ; 片选设置为"01"
SETB CSA ;
CLR RS ; RS=0
SETB RW ; R/W=1
PR21: MOV DATBUS,#0FFH ; DATBUS口置"1"
NOP
NOP
NOP
NOP
SETB E1 ; E=1
NOP
NOP
NOP
NOP
NOP
MOV A,DATBUS ; 读状态字
NOP
NOP
NOP
CLR E1 ; E=0
JB ACC.7,PR21 ; 判"忙"标志为"0"否, 否再读
SETB RS ; RS=1
CLR RW ; R/W=0
MOV DATBUS,DAT1 ; 写数据
NOP
NOP
NOP
NOP
SETB E1 ; E=1
NOP
NOP
NOP
NOP
NOP
CLR E1 ; E=0
RET
; 1.3 读显示数据子程序(左)
PR3: CLR CSB ; 片选设置为"01"
SETB CSA ;
CLR RS ; RS=0
SETB RW ; R/W=1
PR31: MOV DATBUS,#0FFH ; DATBUS口置"1"
NOP
NOP
NOP
NOP
SETB E1 ; E=1
NOP
NOP
NOP
NOP
NOP
MOV A,DATBUS ; 读状态字
NOP
NOP
NOP
NOP
NOP
CLR E1 ; E=0
JB ACC.7,PR31 ; 判"忙"标志为"0"否, 否再读
SETB RS ; RS=1
NOP
NOP
NOP
NOP
NOP
MOV DATBUS,#0FFH ; DATBUS口置"0"
NOP
NOP
NOP
NOP
SETB E1 ; E=1
MOV DAT1,DATBUS ; 读数据
NOP
NOP
NOP
NOP
NOP
CLR E1 ; E=0
RET
; 2. 右区驱动子程序
; 2.1 写指令代码子程序(右)
PR4: SETB CSB ; 片选设置为"10"
CLR CSA ;
CLR RS ; RS=0
SETB RW ; R/W=1
PR41: MOV DATBUS,#0FFH ; DATBUS口置"1"
NOP
NOP
NOP
NOP
NOP
SETB E1 ; E=1
NOP
NOP
NOP
NOP
NOP
NOP
MOV A,DATBUS ; 读状态字
CLR E1 ; E=0
JB ACC.7,PR41 ; 判"忙"标志为"0"否, 否再读
CLR RW ; R/W=0
MOV DATBUS,COM ; 写指令代码
NOP
NOP
NOP
NOP
NOP
NOP
SETB E1 ; E=1
NOP
NOP
NOP
NOP
NOP
NOP
CLR E1 ; E=0
RET
; 2.2 写显示数据子程序(右)
PR5: SETB CSB ; 片选设置为"10"
CLR CSA ;
CLR RS ; RS=0
SETB RW ; R/W=1
PR51: MOV DATBUS,#0FFH ; DATBUS口置"1"
NOP
NOP
NOP
NOP
NOP
SETB E1 ; E=1
NOP
NOP
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -