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

📄 em458+ht1621.dt

📁 EM系列单片机驱动1621子程序
💻 DT
字号:
;********************************** LCD程序 ****************************************

;=======================  LCD写命令子程序  ===========================
;包括命令头(100)
C_WRITE:        MOV     A,@0X08
                MOV     R_LOOP,A
                BS      P6,1         ;/WR=1
                BC      P6,0         ;/CS=0
                BC      P6,1         ;/WR=0
                BS      P6,2         ;DATA=1
                BS      P6,1         ;/WR=1
                BC      P6,1         ;/WR=0
                BC      P6,2         ;DATA=0
                BS      P6,1         ;/WR=1
                BC      P6,1         ;/WR=0
                BC      P6,2         ;DATA=0
                BS      P6,1         ;/WR=1
                BC      P6,1         ;/WR=0
C8_C1_WRITE:    JBC     COMMAND,7       ;COMMAND,7=0
                JMP     SET_DATA_1
                BC      P6,2         ;DATA=0
                JMP     NEXT_1
SET_DATA_1:     BS      P6,2         ;DATA=1
NEXT_1:         RLC     COMMAND
                BS      P6,1         ;/WR=1
                BC      P6,1         ;/WR=0
                DJZ     R_LOOP
                JMP     C8_C1_WRITE
                BC      P6,2         ;DATA=0
                BS      P6,1         ;/WR=1
                BS      P6,0         ;/CS=1
                RET
;============================= LCD显示子程序 ===========================
;包括头(101)+(地址)+(数据)
LCD_WRITE:      BS      P6,1         ;/WR=1
                BC      P6,0         ;/CS=0
                BC      P6,1         ;/WR=0
                BS      P6,2         ;DATA=1
                BS      P6,1         ;/WR=1
                BC      P6,1         ;/WR=0
                BC      P6,2         ;DATA=0
                BS      P6,1         ;/WR=1
                BC      P6,1         ;/WR=0
                BS      P6,2         ;DATA=1
                BS      P6,1         ;/WR=1
                BC      P6,1         ;/WR=0
                                        ;WRITE THE LCD MEMORY ADD 00
                BC      P6,2         ;DATA=0, 1
                BS      P6,1         ;/WR=1
                BC      P6,1         ;/WR=0
                                        ;DATA=0, 2
                BS      P6,1         ;/WR=1
                BC      P6,1         ;/WR=0
                                        ;DATA=0, 3
                BS      P6,1         ;/WR=1
                BC      P6,1         ;/WR=0
                                        ;DATA=0, 4
                BS      P6,1         ;/WR=1
                BC      P6,1         ;/WR=0
                                        ;DATA=0, 5
                BS      P6,1         ;/WR=1
                BC      P6,1         ;/WR=0
                                        ;DATA=0, 6
                BS      P6,1         ;/WR=1
                BC      P6,1         ;/WR=0
                MOV     A,SEG0
                MOV     LCDRAM,A        ;SEG0
                CALL    LCDDATA_W
                MOV     A,SEG1
                MOV     LCDRAM,A        ;SEG1
                CALL    LCDDATA_W
                MOV     A,SEG2
                MOV     LCDRAM,A        ;SEG2
                CALL    LCDDATA_W
                MOV     A,SEG3
                MOV     LCDRAM,A        ;SEG3
                CALL    LCDDATA_W
                MOV     A,SEG4
                MOV     LCDRAM,A        ;SEG4
                CALL    LCDDATA_W
                MOV     A,SEG5
                MOV     LCDRAM,A        ;SEG5
                CALL    LCDDATA_W
                MOV     A,SEG6
                MOV     LCDRAM,A        ;SEG6
                CALL    LCDDATA_W
                MOV     A,SEG7
                MOV     LCDRAM,A        ;SEG7
                CALL    LCDDATA_W
                MOV     A,SEG8
                MOV     LCDRAM,A        ;SEG8
                CALL    LCDDATA_W
                MOV     A,SEG9
                MOV     LCDRAM,A        ;SEG9
                CALL    LCDDATA_W
                MOV     A,SEG10
                MOV     LCDRAM,A        ;SEG10
                CALL    LCDDATA_W
                MOV     A,SEG11
                MOV     LCDRAM,A        ;SEG11
                CALL    LCDDATA_W
                MOV     A,SEG12
                MOV     LCDRAM,A        ;SEG12
                CALL    LCDDATA_W
		MOV     A,SEG13
                MOV     LCDRAM,A        ;SEG13
                CALL    LCDDATA_W
                BS      P6,0         ;/CS=1
                RET
;=========================== LCD写数据子程序(4Bit) ========================

LCDDATA_W:      MOV     A,@0X04         ;RAM DATA WRITE
                MOV     R_LOOP,A
DATA_W:         JBC     LCDRAM,0
                JMP     RAM_SET
                BC      P6,2         ;DATA=0
                JMP     NEXT_3
RAM_SET:        BS      P6,2         ;DATA=1
NEXT_3:         RRC     LCDRAM
                BS      P6,1         ;/WR=1
                BC      P6,1         ;/WR=0
                DJZ     R_LOOP
                JMP     DATA_W
                RET

;============================ LCD初始化子程序 ==============================

LCD_INIT:       MOV     A,@0X07
                MOV     P6,A         ;P50-P53 RESET TO 1
                BC      P6,0         ;RESET 1621 INTERFACE
                BS      P6,0
                BC      P6,0
                BS      P6,0         ;P50 SET TO 1,/CS=1
                MOV     A,@0B11100011   ;COMMAND TNORMAL
                MOV     COMMAND,A
                CALL    C_WRITE
                MOV     A,@0B10000000   ;COMMAND /IRQ DIS
                MOV     COMMAND,A
                CALL    C_WRITE
                MOV     A,@0B00011000   ;COMMAND RC 256K
                MOV     COMMAND,A
                CALL    C_WRITE
                MOV     A,@0B00100101   ;COMMAND BIASZ1/3,3 COM
                MOV     COMMAND,A
                CALL    C_WRITE
                MOV     A,@0B01100000   ;COMMAND TONE 2K
                MOV     COMMAND,A
                CALL    C_WRITE
                MOV     A,@0B00001000   ;COMMAND TONE OFF
                MOV     COMMAND,A
                CALL    C_WRITE
                MOV     A,@0B00000101   ;COMMAND WDT DIS
                MOV     COMMAND,A
                CALL    C_WRITE
                MOV     A,@0B00000100   ;COMMAND TIMER DIS
                MOV     COMMAND,A
                CALL    C_WRITE
                MOV     A,@0B00000001   ;COMMAND SYS_EN
                MOV     COMMAND,A
                CALL    C_WRITE
                MOV     A,@0B00000011   ;COMMAND LCD_ON
                MOV     COMMAND,A
                CALL    C_WRITE
		RET

⌨️ 快捷键说明

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