📄 eyelcd9.asm
字号:
; 由厂家提供的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 + -