📄 testd1.asm
字号:
; 直接访问方式地址定义,根据用户平台接口修改
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.0 ; 片选/CSA
CSB EQU P3.1 ; 片选/CSB
RS EQU P3.2 ; 寄存器选择信号
RW EQU P3.3 ; 读/ 写选择信号
E1 EQU P3.4 ; 使能信号
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: MOV SP,#60H
MOV P3,#0C3H
LCALL INT
LCALL CLEAR
LJMP DISTEXT
; LJMP DISCHA
; LJMP DRAW
; LJMP S_UP
; LJMP S_DOWN
;============= 西文显示演示程序段 ====================
DISTEXT: MOV O_YL,#85H ; 8x8点阵字体, 第6页
MOV O_XL,#10H ; 起始列为第48列
MOV CODE,#34H ; 字符代码
LCALL CW_PR
MOV O_YL,#85H
MOV O_XL,#1CH
MOV CODE,#45H
LCALL CW_PR
MOV O_YL,#85H
MOV O_XL,#28H
MOV CODE,#4CH
LCALL CW_PR
MOV O_YL,#85H
MOV O_XL,#34H
MOV CODE,#1AH
LCALL CW_PR
MOV R7,#00H
MOV R6,#40H
LOOP: MOV A,R7
MOV DPTR,#TAB1
MOVC A,@A+DPTR
MOV CODE,A
MOV O_YL,#05H ; 6X8点阵字体, 第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,16H,11H,16H,18H,12H,17H
;============= 中文演示显示程序段 ==================
DISCHA: MOV O_YL,#02H ; 第3页
MOV O_XL,#15H;35H ; 第54列
MOV CODE,#00H ; 汉字代码
LCALL CCW_PR
MOV O_YL,#02H ; 第3页
MOV O_XL,#2BH;4BH ; 第76列
MOV CODE,#01H ; 汉字代码
LCALL CCW_PR
MOV O_YL,#02H ; 第3页
MOV O_XL,#43H;63H ; 第100列
MOV CODE,#02H ; 汉字代码
LCALL CCW_PR
MOV O_YL,#02H ; 第3页
MOV O_XL,#5BH;7BH ; 第124列
MOV CODE,#03H ; 汉字代码
LCALL CCW_PR
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
;=========== 滚动演示程序段 ==============================
S_UP: MOV R7,#00H ; 向上滚动程序
S_UP1: MOV A,#0C0H ; 显示起始行设置代码
ORL A,R7
MOV COM,A
LCALL PR1
LCALL PR4
; LCALL PR7
LCALL DELAY
INC R7
CJNE R7,#40H,S_UP1
MOV R7,#00H
SJMP S_UP1
;------------------------------------------------------------
S_DOWN: MOV R7,#3FH ; 向下滚动程序
MOV COM,#0C0H ; 显示起始行设置代码
LCALL PR1
LCALL PR4
; LCALL PR7
LCALL DELAY
S_DOWN1: MOV A,#0C0H ; 显示起始行设置代码
ORL A,R7
MOV COM,A
LCALL PR1
LCALL PR4
; LCALL PR7
LCALL DELAY
DJNZ R7,S_DOWN1
SJMP S_DOWN
;---------------------------------------
DELAY: MOV R6,#00H ; 延时子程序
MOV R5,#00H
DELAY1: NOP
DJNZ R5,DELAY1
DJNZ R6,DELAY1
RET
;============== 绘点演示程序段 ======================
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,#0C0H,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,#0C0H,LOOP3
;----------------------------------------------------
WIPE: MOV R6,#00H ; 消点
MOV R7,#00H
LOOP4: MOV O_XL,R6 ; 列地址设置
MOV O_YL,R7 ; 行地址设置
LCALL W_DOT
INC R6
INC R7
CJNE R7,#040H,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,#40H,LOOP6
SJMP $
;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
;直接驱动子程序由6个子程序组成(适应MGLS12864):
; 1. 写指令代码子程序(左)PR1
; 2. 写显示数据子程序(左)PR2
; 3. 读显示数据子程序(左)PR3
; 4. 写指令代码子程序(右)PR4
; 5. 写显示数据子程序(右)PR5
; 6. 读显示数据子程序(右)PR6
; 驱动接口地址:
; CWADD1 EQU 0800H ; 写指令代码地址(左)
; CRADD1 EQU 0A00H ; 读状态字地址 (左)
; DWADD1 EQU 0900H ; 写显示数据地址(左)
; DRADD1 EQU 0B00H ; 读显示数据地址(左)
; CWADD2 EQU 0400H ; 写指令代码地址(右)
; CRADD2 EQU 0600H ; 读状态字地址 (右)
; DWADD2 EQU 0500H ; 写显示数据地址(右)
; DRADD2 EQU 0700H ; 读显示数据地址(右)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -