📄 lcd.asm
字号:
LDB AXL,#75;#235D
LD BX,#0527H
CALL WR_LCD_GRA
LDB WR_DA,#4CH
STB WR_DA,LCDCODE_ADD ;SET CURSOR RIGHT
RET
;------------------WR H LINE--------------------
;画水平线;参数:BX:写入所在行的首地址
WR_LCD_LINEH:
LDB LCD_DISDA,#1FH
LDB AXL,#01H
CALL WR_LCD_GRA
LDB LCD_DISDA,#0FFH
LDB AXL,#20H
CALL WR_LCD_GRA2
LDB LCD_DISDA,#0FEH
STB LCD_DISDA,LCDDA_ADD
RET
;-----------------清除水平线------------------
;参数:BX:所在行的首地址
CLEAR_LINEH:
LDB LCD_DISDA,#10H
LDB AXL,#01H
CALL WR_LCD_GRA
LDB LCD_DISDA,#00H
LDB AXL,#20H
CALL WR_LCD_GRA2
LDB LCD_DISDA,#02H
STB LCD_DISDA,LCDDA_ADD
RET
;------------------------------------------------
;----------------WR LCD GRAPH--------------------
;参数:AXL:连续写入的次数.LCD_DISDA:需写入的数据.BX:要写入的地址.
WR_LCD_GRA:
LDB WR_DA,#46H
STB WR_DA,LCDCODE_ADD[0]
LDB WR_DA,BXL
STB WR_DA,LCDDA_ADD[0]
LDB WR_DA,BXH
STB WR_DA,LCDDA_ADD[0] ;SET CURSOR
LDB WR_DA,#42H
STB WR_DA,LCDCODE_ADD[0] ;开始写入显示数据
WR_LCD_GRA2:
STB LCD_DISDA,LCDDA_ADD[0]
NOP
DJNZ AXL,WR_LCD_GRA2
RET
;--------------------------------------------
;;参数:AX:连续写入的次数.TAB_ADD:需写入的数据表格的首地址.BX:要写入的地址.
WR_LCD_TABDATA:
LDB WR_DA,#46H
STB WR_DA,LCDCODE_ADD[0]
NOP
NOP
LDB WR_DA,BXL
STB WR_DA,LCDDA_ADD[0]
NOP
NOP
LDB WR_DA,BXH
STB WR_DA,LCDDA_ADD[0] ;SET CURSOR
NOP
NOP
LDB WR_DA,#42H
STB WR_DA,LCDCODE_ADD[0] ;开始写入显示数据
NOP
WR_LCD_TABDATA1:
LDB LCD_DISDA,[TAB_ADD]+
STB LCD_DISDA,LCDDA_ADD[0]
NOP
NOP
NOP
NOP
NOP
DJNZW AX,WR_LCD_TABDATA1
RET
;--------------------------------------------
;写读取档案显示框
WR_LCD_POPFRAME:
LD BX,#4B0H+88*40+7
LDB LCD_DISDA,#0FFH
LDB AXL,#20
CALL WR_LCD_GRA
;LD BX,#4B0H+89*40+7
;LDB LCD_DISDA,#0FFH
;LDB AXL,#20
;CALL WR_LCD_GRA
;LD BX,#4B0H+108*40+7
;LDB LCD_DISDA,#0FFH
;LDB AXL,#20
;CALL WR_LCD_GRA
LD BX,#4B0H+109*40+7
LDB LCD_DISDA,#0FFH
LDB AXL,#20
CALL WR_LCD_GRA
LD BX,#4B0H+148*40+7
LDB AXL,#20
CALL WR_LCD_GRA
LD BX,#4B0H+149*40+6
LDB AXL,#1
LDB LCD_DISDA,#7FH;#3FH
CALL WR_LCD_GRA
LDB LCD_DISDA,#0FFH
LDB AXL,#20
CALL WR_LCD_GRA2
LDB WR_DA,#4FH
STB WR_DA,LCDCODE_ADD[0] ;设置光标
LD BX,#4B0H+88*40+6
LDB LCD_DISDA,#7FH
LDB AXL,#1
CALL WR_LCD_GRA
LDB LCD_DISDA,#40H
LDB AXL,#2
CALL WR_LCD_GRA2
LDB LCD_DISDA,#4FH
LDB AXL,#16
CALL WR_LCD_GRA2
LDB LCD_DISDA,#40H
LDB AXL,#2
CALL WR_LCD_GRA2
LDB LCD_DISDA,#7FH
LDB AXL,#1
CALL WR_LCD_GRA2
LDB LCD_DISDA,#40H
LDB AXL,#32+6
CALL WR_LCD_GRA2
LDB LCD_DISDA,#7FH
LDB AXL,#1
CALL WR_LCD_GRA2
LD BX,#4B0H+88*40+6+21
LDB LCD_DISDA,#0F8H
LDB AXL,#1
CALL WR_LCD_GRA
LDB AXL,#1
LDB LCD_DISDA,#0CH;#0FCH
CALL WR_LCD_GRA2
LDB LCD_DISDA,#0EH
LDB AXL,#1
CALL WR_LCD_GRA2
LDB LCD_DISDA,#0CEH
LDB AXL,#16
CALL WR_LCD_GRA2
LDB LCD_DISDA,#0EH
LDB AXL,#2
CALL WR_LCD_GRA2
LDB LCD_DISDA,#0FEH
LDB AXL,#1
CALL WR_LCD_GRA2
LDB LCD_DISDA,#0EH
LDB AXL,#32+6
CALL WR_LCD_GRA2
LDB LCD_DISDA,#0FEH
LDB AXL,#2
CALL WR_LCD_GRA2
LDB WR_DA,#4CH
STB WR_DA,LCDCODE_ADD[0]
LDB X_GRA,#7
LDB Y_GRA,#91
LDB MXL,#10
DISPLAY_POPFRAME1:
LD TAB_ADD,#FULL16_FONT
CALL WR_LCD_FONT16
ADDB X_GRA,#2
DJNZ MXL,DISPLAY_POPFRAME1
RET
;----------------------保存弹出菜单区域的显示数据----------------------
;保存在LCD RAM中的5000H开始的单元,存储的数据是按列存取.
;被保存的数据区域是::左上角:X=6,Y=87(124EH) 右下角:X=27,Y=149
SAVE_DISPLAYDATA:
LD NX,#4B0H+87*40+6 ;需读的首地址 图形区
LD LX,#LCD_DISDATA ;设置存放数据的指针
LDB MXL,#22 ;长
LDB MXH,#64;#63 ;宽
CALL SAVE_DISPLAYDATA3
LD NX,#206 ;文本区 第六行,第七个字
LDB MXL,#22
LDB MXH,#5
CALL SAVE_DISPLAYDATA3
LDB WR_DA,#4CH
STB WR_DA,LCDCODE_ADD[0]
RET
;--------------------------------------------
SAVE_DISPLAYDATA3:
LDB KXL,MXL
LDB WR_DA,#4FH
STB WR_DA,LCDCODE_ADD[0]
SAVE_DISPLAYDATA2:
LDB KXH,MXH
LDB WR_DA,#46H
STB WR_DA,LCDCODE_ADD[0]
LDB WR_DA,NXL
STB WR_DA,LCDDA_ADD[0]
LDB WR_DA,NXH
STB WR_DA,LCDDA_ADD[0] ;SET CURSOR
LDB WR_DA,#43H
STB WR_DA,LCDCODE_ADD[0] ;设置为读
SAVE_DISPLAYDATA1:
LDB WR_DA,LCDCODE_ADD[0]
STB WR_DA,[LX]+
DJNZ KXH,SAVE_DISPLAYDATA1
ADD NX,#1
DJNZ KXL,SAVE_DISPLAYDATA2
RET
;----------------------将保存的显示数据返回显示区------------------------
LOAD_DISPLAYDATA:
LD NX,#4B0H+87*40+6 ;需写的首地址 图形区
LD LX,#LCD_DISDATA ;设置存放数据的指针
LDB MXL,#22 ;长
LDB MXH,#64;#63 ;宽
CALL LOAD_DISPLAYDATA3
LD NX,#206 ;文本区 第六行,第七个字
LDB MXL,#22
LDB MXH,#5
CALL LOAD_DISPLAYDATA3
LDB WR_DA,#4CH
STB WR_DA,LCDCODE_ADD[0]
RET
;--------------------------------------------
LOAD_DISPLAYDATA3:
LDB KXL,MXL
LDB WR_DA,#4FH
STB WR_DA,LCDCODE_ADD[0]
LOAD_DISPLAYDATA2:
LDB KXH,MXH
LDB WR_DA,#46H
STB WR_DA,LCDCODE_ADD[0]
LDB WR_DA,NXL
STB WR_DA,LCDDA_ADD[0]
LDB WR_DA,NXH
STB WR_DA,LCDDA_ADD[0] ;SET CURSOR
LDB WR_DA,#42H
STB WR_DA,LCDCODE_ADD[0] ;设置为写
LOAD_DISPLAYDATA1:
LDB WR_DA,[LX]+
STB WR_DA,LCDDA_ADD[0]
DJNZ KXH,LOAD_DISPLAYDATA1
ADD NX,#1
DJNZ KXL,LOAD_DISPLAYDATA2
RET
;-------------------清除弹出菜单区域的显示数据------------------
CLEAR_POPMENU:
LD NX,#4B0H+87*40+6 ;需写的首地址 图形区
LD LX,#LCD_DISDATA ;设置存放数据的指针
LDB MXL,#22 ;长
LDB MXH,#64;#63 ;宽
CALL CLEAR_POPMENU3
LD NX,#206 ;文本区 第六行,第七个字
LDB MXL,#22
LDB MXH,#5
CALL CLEAR_POPMENU3
LDB WR_DA,#4CH
STB WR_DA,LCDCODE_ADD[0]
RET
;--------------------------------
CLEAR_POPMENU3:
LDB KXL,MXL
LDB WR_DA,#4FH
STB WR_DA,LCDCODE_ADD[0]
CLEAR_POPMENU2:
LDB KXH,MXH
LDB WR_DA,#46H
STB WR_DA,LCDCODE_ADD[0]
LDB WR_DA,NXL
STB WR_DA,LCDDA_ADD[0]
LDB WR_DA,NXH
STB WR_DA,LCDDA_ADD[0] ;SET CURSOR
LDB WR_DA,#42H
STB WR_DA,LCDCODE_ADD[0] ;设置为写
LDB WR_DA,#00H
CLEAR_POPMENU1:
STB WR_DA,LCDDA_ADD[0]
DJNZ KXH,CLEAR_POPMENU1
ADD NX,#1
DJNZ KXL,CLEAR_POPMENU2
RET
;------------------清除短断路数据区---------------
clear_lcd_os:
LDB LCD_DISDA,#00H
LD MX,#480
clear_lcd_os1:
LDB WR_DA,#46H
STB WR_DA,LCDCODE_ADD[0]
LDB WR_DA,#78h
STB WR_DA,LCDDA_ADD[0]
LDB WR_DA,#00h
STB WR_DA,LCDDA_ADD[0] ;SET CURSOR
LDB WR_DA,#42H
STB WR_DA,LCDCODE_ADD[0] ;开始写入显示数据
clear_lcd_os2:
STB LCD_DISDA,LCDDA_ADD[0]
DJNZW MX,clear_lcd_os2
RET
;----------------正显示所指定的数据---------------
;入口参数:NX:显示数据首地址,X_GRA Y_GRA:显示坐标
;MXL:显示字符数目
display_z_font16:
LD TAB_ADD,[NX]+
CALL WR_LCD_FONT16
ADDB X_GRA,#02H
DJNZ MXL,display_z_font16 ;更改系统密码
ret
;----------------反显示所指定的数据---------------
;入口参数:NX:显示数据首地址,X_GRA Y_GRA:显示坐标
;MXL:显示字符数目
display_f_font16:
LD TAB_ADD,[NX]+
CALL WR_LCD_FONT16F
ADDB X_GRA,#02H
DJNZ MXL,display_f_font16 ;更改系统密码
ret
;----------------正显示所指定的数据---------------
;入口参数:NX:显示数据首地址,X_GRA Y_GRA:显示坐标
;MXL:显示字符数目
display_z_font8:
LD TAB_ADD,[NX]+
CALL WR_LCD_FONT8
INCB X_GRA
DJNZ MXL,display_z_font8 ;更改系统密码
ret
;----------------反显示所指定的数据---------------
;入口参数:NX:显示数据首地址,X_GRA Y_GRA:显示坐标
;MXL:显示字符数目
display_f_font8:
LD TAB_ADD,[NX]+
CALL WR_LCD_FONT8F
INCB X_GRA
DJNZ MXL,display_f_font8 ;更改系统密码
ret
;-------------将文本表格数据写入LCD--------------
;输入参数:TAB_ADD:表格首地址,MXL:字符个数,X_TXT,Y_TXT
WR_LCD_TXTTAB:
LDB LCD_DISDA,[TAB_ADD]+
CALL WR_LCD_TXT
INCB X_TXT
DJNZ MXL,WR_LCD_TXTTAB
RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -