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

📄 xianshi.asm

📁 12864LCD驅動很實用 KeilC51
💻 ASM
📖 第 1 页 / 共 2 页
字号:
   LIST P=16F877A
   #INCLUDE <P16F877A.INC>
   ERRORLEVEL 2

                        XCS      EQU  20H    ;显示器片选0=CS1,1=CS2      ;20H-2FH为位
                        BZPD     EQU  21H           ;0=上8X8半字,1=下8X8半字
                        HHBZ     EQU  22H             ;换行标志
                        HZDH     EQU  23H
                        INDEX    EQU  24H 
                        LCDFLAG  EQU  25H 
                        R4       EQU  26H
                        R5       EQU  27H
                        R6       EQU  28H
                        R7       EQU  29H
                        R0       EQU  2AH           ;0=显示汉字,1=显示动画
                        LCD_RW   EQU  1
                        LCD_DI   EQU   0
                        LCD_E  EQU 2
                        LCD_CS1 EQU 3
                        LCD_CS2 EQU  4
                        LCD_RST EQU  5
                        LCD_OPEN EQU 30H
                        LCD_LINE EQU 31H
                        LCD_PAGE EQU 32H
                        LCD_Y    EQU 33H
                        YCPD     EQU 34H           ;左右半屏溢出判断
                        HHPD     EQU 35H           ;换行判断
                        XWPD     EQU 36H
                        R1       EQU 37H
                        R2       EQU 38H
                        R3       EQU 39H
                       
                       
                        INDEX1   EQU 42H  
                        INDEX2   EQU 41H
                        INDEX3   EQU 43H
                        YCPD1    EQU 40H
                             ;写完一整屏判断
                        ORG 0000H
                        NOP 
                        GOTO MAIN
                        ORG 005H

 
MAIN:                   
                        BANKSEL TRISC 
                        MOVLW 00H
                        MOVWF TRISC
                        MOVWF TRISD
                        BANKSEL PORTC
                        BCF PORTC,LCD_RST
                        CALL DLY10
                        CALL DLY10  
                        BSF PORTC,LCD_RST
                        MOVLW 00H
                        MOVWF XCS
                        MOVLW 01H              ;选择CS2
                        MOVWF LCD_OPEN         ;开显示器1,关显示器      
                        CALL LCDOPEN
                        CALL QINGPING
                     
                        MOVLW 01H
                        MOVWF XCS
                        MOVLW 01H              ;选择CS2
                        MOVWF LCD_OPEN         ;开显示器1,关显示器      
                        CALL LCDOPEN
                        CALL QINGPING
             
                        CALL HANZI
LOOPM:                  GOTO LOOPM
;********************************************************************

QINGPING:
                        MOVLW 00H
                        MOVWF  LCD_LINE
                        CALL SETLINE          ;设置起始
                 

                        MOVLW 00H
                        MOVWF  LCD_PAGE
                        CALL SETPAGE                ;设置页地

                        MOVLW  00H
                        MOVWF  LCD_Y
                        CALL SETY                 ;设置列地
                    ;CS1

                        GOTO  CLRST3
CLR0:                   INCF LCD_PAGE,F
CLRST3:                 CALL SETPAGE
                        MOVLW 40H
                        MOVWF R7
SDF:                    MOVLW 00H
                        MOVWF LCDFLAG
                        CALL LCDWRDATA
                        DECFSZ R7,F
                        GOTO SDF
                        MOVLW 0BFH
                        XORWF LCD_PAGE,W
                        BTFSS STATUS,Z
                        GOTO CLR0
     
                        RETURN
;初始化完毕
;*************************************************************************
HANZI:
                        BANKSEL PORTC
                        MOVLW 00H 
                        MOVWF XWPD
HZ0:                    CLRF XCS
                        MOVLW 00H
                        MOVWF  LCD_LINE
                        CALL SETLINE          ;设置起始
                    

                        MOVLW 00H
                        MOVWF  LCD_PAGE
                        CALL SETPAGE                ;设置页地

                        MOVLW  00H
                        MOVWF  LCD_Y
                        CALL SETY   
                        MOVLW 00H
                        MOVWF INDEX3
                        MOVWF INDEX2
                       
                        MOVWF R1
JBO:                    MOVLW 00H
                        MOVWF  HHPD
HZ7:                    MOVLW 00H
                        MOVWF  YCPD
HZ8:                    CLRF BZPD
HZ3:                    MOVLW 08H
                        MOVWF R0          ;写左上8个Y列
                        
HZ1:                    
                        MOVFW R1
                        CALL HZDOT
                        CLRF PCLATH
                        MOVWF LCDFLAG
                        CALL LCDWRDATA
                        INCF R1,F
            
LOOPAN:
                        INCF LCD_Y,F
                        DECFSZ  R0,F
                        GOTO HZ1
LOOPQW                       
                        MOVLW 00H
                        XORWF  BZPD,W
                        BTFSS STATUS,Z
                        GOTO HZ2
                        CLRF STATUS                        ;Y列减8, 即返回扫描
                        MOVLW 08H
                        SUBWF  LCD_Y,F
                        CALL SETY
                        INCF LCD_PAGE ,F               ;页地址加1,即换第2页扫描
                        CALL SETPAGE
                        MOVLW 01H
                        MOVWF BZPD
                        GOTO  HZ3
HZ2:                    
                        DECF LCD_PAGE,F                ;返回到第1页中,准备下一个半
                        CALL SETPAGE
                        INCF YCPD,F
                        MOVLW 08H
                        XORWF YCPD,W
                        BTFSS STATUS,Z
                        GOTO  HZ8
                        MOVLW 01H
                        XORWF  XCS,W
                        BTFSC STATUS,Z
                        GOTO HZ9
                        MOVLW 01H
                        MOVWF XCS                     ;换屏
                        MOVLW 0XB8
                        CALL SETPAGE
                        MOVLW 00H
                        MOVWF  LCD_Y                      ;置列
                        CALL SETY
                        GOTO HZ7

HZ9:                
                        CLRF XCS                      ;写完一行后从CS2返回到CS1
                        INCF LCD_PAGE,F
                        INCF LCD_PAGE,F
                        CALL SETPAGE                   ;下一行开始
                        MOVLW 00H
                        MOVWF LCD_Y
                        CALL SETY
                        INCF HHPD,F
                        MOVLW 03H
                        XORWF HHPD,Z
                        BTFSS STATUS,Z
                        GOTO HZ7
                        CLRF STATUS
                        INCF XWPD,F
                        MOVLW 01H
                        XORWF XWPD,W 
                        BTFSS STATUS,Z
                        GOTO JBO
                        RETURN
          
                        
LCDWRINST:              NOP
                        BSF PORTC,LCD_RST
                        CLRF STATUS
                        MOVLW 01H
                        XORWF XCS,W
                        BTFSC STATUS,Z
                        GOTO INS0
                        BSF PORTC,LCD_CS1
                        BCF PORTC,LCD_CS2
                        GOTO  INS1
INS0:                   BCF  PORTC, LCD_CS1
                        BSF  PORTC, LCD_CS2
INS1:                   BSF  PORTC, LCD_E
                        BCF  PORTC, LCD_DI
                        BCF  PORTC, LCD_RW
                        MOVFW LCDFLAG 
                        MOVWF PORTD
                        CALL DLY10   
                        BCF  PORTC, LCD_E
                        CALL DLY10 
                        NOP
                        RETURN

LCDWRDATA:               NOP
                        BSF PORTC,LCD_RST
                        CLRF STATUS
                        MOVLW 01H
                        XORWF XCS,W
                        BTFSC STATUS,Z
                        GOTO DAT0
                        BSF  PORTC,LCD_CS1
                        BCF  PORTC,LCD_CS2

⌨️ 快捷键说明

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