📄 lcd.asm
字号:
;************************************************
;lcd.asm LCD操作文件
;程序模快功能介绍:操作显示画面
;WR_LCD_TXT: 对文本区操作,写入参数,LCD_DISDA(显示代码),X_TXT,Y_TXT(坐标),写单个数据.
;WR_LCD_FONT8: 对图形区写入8点阵汉字操作,写入参数,TAB_ADD(显示代码首地址),X_GRA,Y_GRA(坐标)
;WR_LCD_FONT16: 对图形区写入16点阵汉字操作,写入参数,TAB_ADD(显示代码首地址),X_GRA,Y_GRA(坐标)
;WR_LCD_FONT16F: 对图形区写入16点阵汉字操作,写入参数,TAB_ADD(显示代码首地址),X_GRA,Y_GRA(坐标),反显
;WR_LCD_FONT24: 对图形区写入24点阵汉字操作,写入参数,TAB_ADD(显示代码首地址),X_GRA,Y_GRA(坐标)
;WR_LCD_FONT32: 对图形区写入32点阵汉字操作,写入参数,TAB_ADD(显示代码首地址),X_GRA,Y_GRA(坐标)
;WR_LCD_MAXFRAME: 对图形区写入菜单框架,不带参数.
;WR_LCD_SAMFRAME: 写功能菜单框架,参数:CXL:1为FUNC1,2为FUNC2.......
;CLEAR_LCD_TXT: 清除文本框中显示数据
;CLEAR_LCD_FILENUM: 清除显示区中的文件序号
;CLEAR_LCD_PAGE: 清除显示的翻页信息
;CLEAR_LCD_ALLGRA: 清除所有在图形中的显示数据
;CLEAR_LCD_SAMFRAME: 清除功能按图标
;WR_LCD_LINEH: 画水平线;参数:BX:写入所在行的首地址
;WR_LCD_GRA: 在图形区连续写入某一数据,参数:AXL:连续写入的次数.LCD_DISDA:需写入的数据.BX:要写入的地址.
;WR_LCD_TABDATA: 参数:AX:连续写入的次数.TAB_ADD:需写入的数据表格的首地址.BX:要写入的地址.
;WR_LCD_POPFRMAE: 写弹出菜单框
;SAVE_DISPLAYDATA: 保存弹出菜单区域显示数据
;LOAD_DISPLAYDATA: 加载弹出菜单区域显示数据
;CLEAR_DISPLAYDATA: 清除弹出菜单区域
;CLEAR_POPMENU: 清除弹出菜单区域显示数据
;display_z_font16: 正显示所指定的数据(16 Pix)
;display_f_font16: 反显示所指定的数据(16 Pix)
;display_z_font8: 正显示所指定的数据(8 Pix)
;display_f_font8: 反显示所指定的数据(8 Pix)
;clear_lineh: 清除水平线,参数:BX:要清除所在行的首地址
;wr_lcd_txttab 将文本表格数据写入
;************************************************
;-----------------WR LCD TXT -------------------
;写入参数,LCD_DISDA(显示代码),X_TXT,Y_TXT(坐标)
WR_LCD_TXT:
LDB AXL,Y_TXT
LDB BXL,#28H
MULUB AXL,BXL
LDB BXL,X_TXT
LDB BXH,#00H
ADD AX,BX ;计算在LCD RAM中的地址,存放在AX中
LDB WR_DA,#46H
STB WR_DA,LCDCODE_ADD[0]
LDB WR_DA,AXL
STB WR_DA,LCDDA_ADD[0]
LDB WR_DA,AXH
STB WR_DA,LCDDA_ADD[0] ;设定所要写的地址
LDB WR_DA,#42H
STB WR_DA,LCDCODE_ADD[0] ;开始写入显示数据
NOP
STB LCD_DISDA,LCDDA_ADD[0] ;WRITE DISPLAY DATA TO LCD
RET
;--------------------WR CHINESE------------------
;写入参数,TAB_ADD(显示代码首地址),X_GRA,Y_GRA(坐标)
WR_LCD_FONT8:
LDB AXL,Y_GRA
LDB BXL,#28H
MULUB AXL,BXL
LDB BXL,X_GRA
LDB BXH,#00H
ADD AX,BX ;计算显示偏移地址,存放在AX中
;第二显示区的首地址(图形)O4B0H
ADD AX,#04B0H
LDB WR_DA,#4FH ;设置LCD使光标自动向下移动
STB WR_DA,LCDCODE_ADD[0]
LDB WR_DA,#46H
STB WR_DA,LCDCODE_ADD[0]
LDB WR_DA,AXL
STB WR_DA,LCDDA_ADD[0]
LDB WR_DA,AXH
STB WR_DA,LCDDA_ADD[0] ;SET CURSOR
LDB WR_DA,#42H
STB WR_DA,LCDCODE_ADD[0] ;开始写入显示数据
LDB AXL,#10H ;计数器
WR_LCD_FONT8_1:
LDB LCD_DISDA,[TAB_ADD]+ ;取显示数据
STB LCD_DISDA,LCDDA_ADD[0] ;写
DJNZ AXL,WR_LCD_FONT8_1 ;写第一列-------------------
LDB WR_DA,#4CH
STB WR_DA,LCDCODE_ADD
RET
;--------------------WR CHINESE------------------
;写入参数,TAB_ADD(显示代码首地址),X_GRA,Y_GRA(坐标)
WR_LCD_FONT8F:
LDB AXL,Y_GRA
LDB BXL,#28H
MULUB AXL,BXL
LDB BXL,X_GRA
LDB BXH,#00H
ADD AX,BX ;计算显示偏移地址,存放在AX中
;第二显示区的首地址(图形)O4B0H
ADD AX,#04B0H
LDB WR_DA,#4FH ;设置LCD使光标自动向下移动
STB WR_DA,LCDCODE_ADD[0]
LDB WR_DA,#46H
STB WR_DA,LCDCODE_ADD[0]
LDB WR_DA,AXL
STB WR_DA,LCDDA_ADD[0]
LDB WR_DA,AXH
STB WR_DA,LCDDA_ADD[0] ;SET CURSOR
LDB WR_DA,#42H
STB WR_DA,LCDCODE_ADD[0] ;开始写入显示数据
LDB AXL,#10H ;计数器
WR_LCD_FONT8F_1:
LDB LCD_DISDA,[TAB_ADD]+ ;取显示数据
NOTB LCD_DISDA
STB LCD_DISDA,LCDDA_ADD[0] ;写
DJNZ AXL,WR_LCD_FONT8F_1 ;写第一列-------------------
LDB WR_DA,#4CH
STB WR_DA,LCDCODE_ADD
RET
;--------------------WR CHINESE------------------
;写入参数,TAB_ADD(显示代码首地址),X_GRA,Y_GRA(坐标)
WR_LCD_FONT16:
LDB AXL,Y_GRA
LDB BXL,#28H
MULUB AXL,BXL
LDB BXL,X_GRA
LDB BXH,#00H
ADD AX,BX ;计算显示偏移地址,存放在AX中
;第二显示区的首地址(图形)O4B0H
ADD AX,#04B0H
LD BX,AX ;保存操作地址,AX为第一列的地址(LCD RAM)
ADD BX,#1D ;第二列的地址,BX为第二列的地址(LCD RAM)
LDB WR_DA,#4FH ;设置LCD使光标自动向下移动
STB WR_DA,LCDCODE_ADD[0]
LDB WR_DA,#46H
STB WR_DA,LCDCODE_ADD[0]
LDB WR_DA,AXL
STB WR_DA,LCDDA_ADD[0]
LDB WR_DA,AXH
STB WR_DA,LCDDA_ADD[0] ;SET CURSOR
LDB WR_DA,#42H
STB WR_DA,LCDCODE_ADD[0] ;开始写入显示数据
LDB AXL,#10H ;计数器
WR_LCD_FONT16_1:
LDB LCD_DISDA,[TAB_ADD]+ ;取显示数据
STB LCD_DISDA,LCDDA_ADD[0] ;写
DJNZ AXL,WR_LCD_FONT16_1 ;写第一列-------------------
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] ;开始写入显示数据
LDB AXL,#10H ;计数器
WR_LCD_FONT16_2:
LDB LCD_DISDA,[TAB_ADD]+ ;取显示数据
STB LCD_DISDA,LCDDA_ADD[0] ;写
DJNZ AXL,WR_LCD_FONT16_2 ;写第二列--------------------
LDB WR_DA,#4CH
STB WR_DA,LCDCODE_ADD[0] ;重新设置光标的方向
RET
;--------------------WR CHINESE------------------
;写入参数,TAB_ADD(显示代码首地址),X_GRA,Y_GRA(坐标)
WR_LCD_FONT16F:
LDB AXL,Y_GRA
LDB BXL,#28H
MULUB AXL,BXL
LDB BXL,X_GRA
LDB BXH,#00H
ADD AX,BX ;计算显示偏移地址,存放在AX中
;第二显示区的首地址(图形)O4B0H
ADD AX,#04B0H
LD BX,AX ;保存操作地址,AX为第一列的地址(LCD RAM)
ADD BX,#1D ;第二列的地址,BX为第二列的地址(LCD RAM)
LDB WR_DA,#4FH ;设置LCD使光标自动向下移动
STB WR_DA,LCDCODE_ADD[0]
LDB WR_DA,#46H
STB WR_DA,LCDCODE_ADD[0]
LDB WR_DA,AXL
STB WR_DA,LCDDA_ADD[0]
LDB WR_DA,AXH
STB WR_DA,LCDDA_ADD[0] ;SET CURSOR
LDB WR_DA,#42H
STB WR_DA,LCDCODE_ADD[0] ;开始写入显示数据
LDB AXL,#10H ;计数器
WR_LCD_FONT16F_1:
LDB LCD_DISDA,[TAB_ADD]+ ;取显示数据
NOTB LCD_DISDA
STB LCD_DISDA,LCDDA_ADD[0] ;写
DJNZ AXL,WR_LCD_FONT16F_1 ;写第一列-------------------
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] ;开始写入显示数据
LDB AXL,#10H ;计数器
WR_LCD_FONT16F_2:
LDB LCD_DISDA,[TAB_ADD]+ ;取显示数据
NOTB LCD_DISDA
STB LCD_DISDA,LCDDA_ADD[0] ;写
DJNZ AXL,WR_LCD_FONT16F_2 ;写第二列--------------------
LDB WR_DA,#4CH
STB WR_DA,LCDCODE_ADD[0] ;重新设置光标的方向
RET
;--------------------WR CHINESE------------------
;写入参数,TAB_ADD(显示代码首地址),X_GRA,Y_GRA(坐标)
WR_LCD_FONT24:
LDB AXL,Y_GRA
LDB BXL,#28H
MULUB AXL,BXL
LDB BXL,X_GRA
LDB BXH,#00H
ADD AX,BX ;计算显示偏移地址,存放在AX中
;LD BX,#04B0H ;第二显示区的首地址(图形)
ADD AX,#04B0H
LD BX,AX ;保存操作地址,AX为第一列的地址(LCD RAM)
ADD BX,#1D ;BX为第二列的地址(LCD RAM)
LD CX,#1D
ADD CX,BX ;BX为第三列的地址(LCD RAM)
LDB WR_DA,#4FH ;设置LCD使光标自动向下移动
STB WR_DA,LCDCODE_ADD[0]
LDB WR_DA,#46H
STB WR_DA,LCDCODE_ADD[0]
LDB WR_DA,AXL
STB WR_DA,LCDDA_ADD[0]
LDB WR_DA,AXH
STB WR_DA,LCDDA_ADD[0] ;SET CURSOR
LDB WR_DA,#42H
STB WR_DA,LCDCODE_ADD[0] ;开始写入显示数据
LDB AXL,#18H ;计数器
WR_LCD_FONT24_1:
LDB LCD_DISDA,[TAB_ADD]+ ;取显示数据
STB LCD_DISDA,LCDDA_ADD[0] ;写
DJNZ AXL,WR_LCD_FONT24_1 ;写第一列-------------------
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] ;开始写入显示数据
LDB AXL,#18H ;计数器
WR_LCD_FONT24_2:
LDB LCD_DISDA,[TAB_ADD]+ ;取显示数据
STB LCD_DISDA,LCDDA_ADD ;写
DJNZ AXL,WR_LCD_FONT24_2 ;写第二列--------------------
LDB WR_DA,#46H
STB WR_DA,LCDCODE_ADD[0]
LDB WR_DA,CXL
STB WR_DA,LCDDA_ADD[0]
LDB WR_DA,CXH
STB WR_DA,LCDDA_ADD[0] ;SET CURSOR
LDB WR_DA,#42H
STB WR_DA,LCDCODE_ADD[0] ;开始写入显示数据
LDB AXL,#18H ;计数器
WR_LCD_FONT24_3:
LDB LCD_DISDA,[TAB_ADD]+ ;取显示数据
STB LCD_DISDA,LCDDA_ADD[0] ;写
DJNZ AXL,WR_LCD_FONT24_3 ;写第三列--------------------
LDB WR_DA,#4CH
STB WR_DA,LCDCODE_ADD[0] ;重新设置光标的方向
RET
;--------------------WR CHINESE------------------
;写入参数,TAB_ADD(显示代码首地址),X_GRA,Y_GRA(坐标)
WR_LCD_FONT32:
LDB AXL,Y_GRA
LDB BXL,#28H
MULUB AXL,BXL
LDB BXL,X_GRA
LDB BXH,#00H
ADD AX,BX ;计算显示偏移地址,存放在AX中
;LD BX,#04B0H ;第二显示区的首地址(图形)
ADD AX,#04B0H
LD BX,AX ;保存操作地址,AX为第一列的地址(LCD RAM)
ADD BX,#1D ;BX为第二列的地址(LCD RAM)
LD CX,#1D
ADD CX,BX ;CX为第三列的地址(LCD RAM)
LD DX,#1D
ADD DX,CX ;DX为第四列的地址(LCD RAM)
LDB WR_DA,#4FH ;设置LCD使光标自动向下移动
STB WR_DA,LCDCODE_ADD[0]
LDB WR_DA,#46H
STB WR_DA,LCDCODE_ADD[0]
LDB WR_DA,AXL
STB WR_DA,LCDDA_ADD[0]
LDB WR_DA,AXH
STB WR_DA,LCDDA_ADD[0] ;SET CURSOR
LDB WR_DA,#42H
STB WR_DA,LCDCODE_ADD[0] ;开始写入显示数据
LDB AXL,#32D ;计数器
WR_LCD_FONT32_1:
LDB LCD_DISDA,[TAB_ADD]+ ;取显示数据
STB LCD_DISDA,LCDDA_ADD[0] ;写
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -