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

📄 for 80c196.txt

📁 TMS32LF2812与液晶接口的程序实例
💻 TXT
字号:
;***************************************************************************
;液晶显示屏相关子程序%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
;***************************************************************************
;十六进制到BCD码转换子程序
;输入:          LCDAX
;输出:          LCDDL LCDCH LCDCL LCDBH LCDBL

HEXTODEC:       CLR       LCDBX
                DIVU      LCDAX,#10000        	;16进制转换为10进制
                ANDB      LCDAL,#0FH
                LDB       LCDDL,LCDAL
                LD        LCDAX,LCDBX
                CLR       LCDBX
                DIVU      LCDAX,#1000
                ANDB      LCDAL,#0FH
                LDB       LCDCH,LCDAL
                LD        LCDAX,LCDBX
                LD        LCDBX,#0000H
                DIVU      LCDAX,#0064H
                ANDB      LCDAL,#0FH
                LDB       LCDCL,LCDAL
                ST        LCDBX,LCDAX
                DIVUB     LCDAX,#0AH
                ANDB      LCDAL,#0FH
                LDB       LCDBH,LCDAL
                LDB       LCDAL,LCDAH
                ANDB      LCDAL,#0FH
                LDB       LCDBL,LCDAL
                RET

;****************************************************************************
;滚动刷新一行子程序

RDISROW:        LDB      LCD_O_X,#00H
                LDB      COUNTL,#16
                LDB      COUNTH,#15
DWL2:           LD       LCDDX,PAGE_ADD
                INC      PAGE_ADD
DWL1:           LDB      LCD_CODE,[LCDDX]+
                LCALL    LCDWRI_CC
                ADDB     LCD_O_X,#2
                DJNZ     COUNTH,DWL1
;                LCALL    DELAY1
                LDB      COUNTH,#15
                LDB      LCD_O_X,#00H
                DJNZ     COUNTL,DWL2
                RET

;****************************************************************************
;刷新一行子程序

DISROW:         LDB      LCDCL,#15
                LDB      LCD_O_X,#0
DRLOOP:         LDB      LCD_CODE,[PAGE_ADD]+
                PUSH     LCD_O_X
                LCALL    LCDWRI_CC
                POP      LCD_O_X
                ADDB     LCD_O_X,#2
                DJNZ     LCDCL,DRLOOP
                RET

;*****************************************************************************
;满屏写汉字子显示程序:15*4

DISPLAY:        LDB      LCDCL,#15
                LDB      LCDCH,#4
                LDB      LCD_O_Y,#0
                LDB      LCD_O_X,#0
DLOOP:          LDB      LCD_CODE,[PAGE_ADD]+
                LCALL    LCDWRI_CC
                ADDB     LCD_O_X,#2
                DJNZ     LCDCL,DLOOP
                ADDB     LCD_O_Y,#16
                CLRB     LCD_O_X
                LDB      LCDCL,#15
                DJNZ     LCDCH,DLOOP
                RET

;***************************************************************************
;液晶屏初始化子程序

LCDINT:         LDB     LCDDAT1,#00H
                LDB     LCDDAT2,#00H
                LDB     LCDCOM,#40H
                LCALL   LCDPR1
                LDB     LCDDAT1,#1EH
                LDB     LCDDAT2,#00H
                LDB     LCDCOM,#41H
                LCALL   LCDPR1
                LDB     LCDDAT1,#00H
                ADDB    LCDDAT2,#10H
                LDB     LCDCOM,#42H
                LCALL   LCDPR1
                LDB     LCDDAT1,#1EH
                LDB     LCDDAT2,#00H
                LDB     LCDCOM,#43H
                LCALL   LCDPR1
                LDB     LCDCOM,#0A7H
                LCALL   LCDPR12
                LDB     LCDCOM,#81H
                LCALL   LCDPR12
                LDB     LCDCOM,#9CH
                LCALL   LCDPR12
                RET

;***************************************************************************
;液晶屏清显示RAM区子程序

LCDCLEAR:       LDB     LCDDAT1,#00H
                LDB     LCDDAT2,#00H
                LDB     LCDCOM,#24H
                LCALL   LCDPR1
                LDB     LCD_COUNT,#0F0H
                LDB     LCDCOM,#0B0H
                LCALL   LCDPR12
LCDCLEAR1:      LCALL   LCDST3
                CLRB    LCDAL
                STB     LCDAL,[LCDD_ADD]
                DJNZ    LCD_COUNT,LCDCLEAR1
                LDB     LCDCOM,#0B2H
                LCALL   LCDPR12

                LDB     LCDDAT1,#00H
                ADDB    LCDDAT2,#10H
                LDB     LCDCOM,#24H
                LCALL   LCDPR1
                LDB     LCD_COUNT,#0F0H
                LDB     LCD_COUNT1,#8
                LDB     LCDCOM,#0B0H
                LCALL   LCDPR12
LCDCLEAR2:      LCALL   LCDST3
                CLRB    LCDAL
                STB     LCDAL,[LCDD_ADD]
                DJNZ    LCD_COUNT,LCDCLEAR2
                LDB     LCD_COUNT,#0F0H
                DJNZ    LCD_COUNT1,LCDCLEAR2
                LDB     LCDCOM,#0B2H
                LCALL   LCDPR12
                RET

;***************************************************************************
;建立CGRAM子程序

CGRAM:         LD      LCDDAT,#0003H
               LDB     LCDCOM,#22H
               LCALL   LCDPR1
               LD      LCDDAT,#1C00H
               LDB     LCDCOM,#24H
               LCALL   LCDPR1
               LDB     LCDCOM,#0B0H
               LCALL   LCDPR12
               MULUB   LCDAX,LCD_COUNT,#08H
               STB     LCDAL,LCD_COUNT
               INCB    LCDAH
               STB     LCDAH,LCD_COUNT1
               LD      LCDCX,HZ_ADDR
CGRAM1:        LCALL   LCDST3
               LDB     LCDDAT1,[LCDCX]+
               STB     LCDDAT1,[LCDD_ADD]
               DJNZ    LCD_COUNT,CGRAM1
               DJNZ    LCD_COUNT1,CGRAM1
               LDB     LCDCOM,#0B2H
               LCALL   LCDPR12
               RET

;***************************************************************************
;图形方式下写汉字子程序

LCDWRI_CC:     LDB     LCD_TEMPL,LCD_O_X
               LDB     LCD_TEMPH,LCD_O_Y
               LDB     LCDAL,#1EH
               MULUB   LCDAX,LCDAL,LCD_TEMPH
               ADDB    LCD_TEMPL,LCDAL
               ADDCB   LCDAH,#10H
               LDB     LCD_TEMPH,LCDAH

               LD      DPTR,#TXHZ
               LDB     LCDAL,#20H
               MULUB   LCDAX,LCDAL,LCD_CODE
               ADD     DPTR,LCDAX
               LDB     LCD_COUNT,#10H

LCDWRI_CC1:    LDB     LCDDAT1,LCD_TEMPL
               LDB     LCDDAT2,LCD_TEMPH
               LDB     LCDCOM,#24H
               LCALL   LCDPR1
               LDB     LCDDAT2,0[DPTR]
               LDB     LCDDAT1,16[DPTR]
               INC     DPTR
               LDB     LCDCOM,#0C0H
               LCALL   LCDPR11
               LDB     LCDDAT2,LCDDAT1
               LCALL   LCDPR11
               ADDB    LCD_TEMPL,#1EH
               ADDCB   LCD_TEMPH,#0
               DJNZ    LCD_COUNT,LCDWRI_CC1
               RET

;***************************************************************************
;文本方式下写汉字子程序

LCDWRI_CT:     LDB     LCDAL,#1EH
               MULUB   LCDAX,LCD_O_Y
               ADDB    LCDAL,LCD_O_X
               ADDCB   LCDAH,#0
               LD      LCDDAT,LCDAX
               LDB     LCDCOM,#24H
               LCALL   LCDPR1
               LDB     LCDDAT2,LCD_CODE
               LDB     LCDCOM,#0C0H
               LCALL   LCDPR11
               INCB    LCDDAT2
               INCB    LCDDAT2
               LCALL   LCDPR11
               ADD     LCDDAT,LCDAX,#1000H
               LDB     LCDCOM,#24H
               LCALL   LCDPR1
               LDB     LCDDAT2,LCD_ATTR
               LDB     LCDCOM,#0C0H
;               LCALL   LCDPR11
;               LCALL   LCDPR11

               ADD     LCDAX,#001EH
               LD      LCDDAT,LCDAX
               LDB     LCDCOM,#24H
               LCALL   LCDPR1
               LDB     LCDDAT2,LCD_CODE
               INCB    LCDDAT2
               LDB     LCDCOM,#0C0H
               LCALL   LCDPR11
               INCB    LCDDAT2
               INCB    LCDDAT2
               LCALL   LCDPR11
               ADD     LCDDAT,LCDAX,#1000H
               LDB     LCDCOM,#24H
               LCALL   LCDPR1
               LDB     LCDDAT2,LCD_ATTR
               LDB     LCDCOM,#0C0H
;               LCALL   LCDPR11
;               LCALL   LCDPR11
               RET

;***************************************************************************
;文本方式下写西文子程序

LCDWRI_C:      LDB     LCDDAT,#1EH
               MULUB   LCDDAT,LCD_O_Y
               ADDB    LCDDAT1,LCD_O_X
               ADDCB   LCDDAT2,R0
               STB     LCDDAT2,LCDAL
               LDB     LCDCOM,#24H
               LCALL   LCDPR1
               LDB     LCDDAT2,LCD_CODE
               LDB     LCDCOM,#0C4H
               LCALL   LCDPR11
               ADDB    LCDDAT2,LCDAL,#10H
               LDB     LCDCOM,#24H
               LCALL   LCDPR1
               LDB     LCDDAT2,LCD_ATTR
               LDB     LCDCOM,#0C4H
               LCALL   LCDPR11
               RET

;***************************************************************************
;液晶屏判断读写指令/数据状态位子程序

LCDST01:       LDB     LCD_STA,[LCDC_ADD]
               JBC     LCD_STA,0,LCDST01
               JBC     LCD_STA,1,LCDST01
               RET

;***************************************************************************
;液晶屏判断数据自动读状态位子程序

LCDST2:        LDB     LCD_STA,[LCDC_ADD]
               JBC     LCD_STA,2,LCDST2
               RET

;***************************************************************************
;液晶屏判断数据自动写状态位子程序

LCDST3:        LDB     LCD_STA,[LCDC_ADD]
               JBC     LCD_STA,3,LCDST3
               RET

;***************************************************************************
;液晶屏判断屏读/屏拷状态位子程序

LCDST6:        LDB     LCD_STA,[LCDC_ADD]
               JBC     LCD_STA,6,LCDST6
               RET

;***************************************************************************
;液晶屏写指令和写数据子程序

LCDPR1:        LCALL   LCDST01
               STB     LCDDAT1,[LCDD_ADD]
LCDPR11:       LCALL   LCDST01
               STB     LCDDAT2,[LCDD_ADD]
LCDPR12:       LCALL   LCDST01
               STB     LCDCOM,[LCDC_ADD]
               RET

;***************************************************************************
;液晶屏读数据子程序

LCDPR2:        LCALL   LCDST01
               LDB     LCDDAT2,[LCDD_ADD]
               RET

;***************************************************************************

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -