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

📄 lcd.asm

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