⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lcd.asm

📁 在80C196单片机下操作液晶驱动器SED1335的显示代表码
💻 ASM
📖 第 1 页 / 共 3 页
字号:
        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 + -