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

📄 testd1.asm

📁 基于61202控制芯片的LCD液晶显示驱动程序。
💻 ASM
📖 第 1 页 / 共 3 页
字号:
; 直接访问方式地址定义,根据用户平台接口修改
        CWADD1  EQU     0800H           ; 写指令代码地址(左)
        CRADD1  EQU     0A00H           ; 读状态字地址  (左)
        DWADD1  EQU     0900H           ; 写显示数据地址(左)
        DRADD1  EQU     0B00H           ; 读显示数据地址(左)
        CWADD2  EQU     0400H           ; 写指令代码地址(右)
        CRADD2  EQU     0600H           ; 读状态字地址  (右)
        DWADD2  EQU     0500H           ; 写显示数据地址(右)
        DRADD2  EQU     0700H           ; 读显示数据地址(右)
; 间接控制方式信号定义,根据用户平台接口修改
        CSA     EQU     P3.0            ; 片选/CSA
        CSB     EQU     P3.1            ; 片选/CSB
        RS      EQU     P3.2            ; 寄存器选择信号
        RW      EQU     P3.3            ; 读/ 写选择信号
        E1      EQU     P3.4            ; 使能信号
        DATBUS	EQU	P1              ; 数据总线
; 程序变量定义,根据用户平台提供的内部资源修改
        COM     EQU     50H             ;;指令码寄存器
        DAT1     EQU     51H            ; ;数据寄存器
        O_XL    EQU     30H             ; 列地址(0-127)
        O_YL    EQU     31H             ; 行地址 D2,D1,D0: 
					; 在文本显示下为字符行(以8点行为单位)
					; 在西文显示时 D7为字符体选择 
					;              D7=0为6x8点阵
					;	       D7=1为8x8点阵  
					; 在绘点显示下以点行为单位,其中
                                        ; D7为点标志 "1"为置点,"0"为清点
        CODE    EQU     32H             ; 字符代码寄存器
        COUNT1  EQU     33H             ; 计数器
;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
;演示程序
                ORG	0000H
		AJMP	MAIN
		ORG	0030H
	MAIN:	MOV	SP,#60H
		MOV	P3,#0C3H
		LCALL	INT
		LCALL	CLEAR
		LJMP	DISTEXT
;		LJMP	DISCHA
;		LJMP	DRAW
;		LJMP	S_UP
;		LJMP	S_DOWN
		
;============= 西文显示演示程序段 ====================
     DISTEXT:	MOV     O_YL,#85H       ; 8x8点阵字体, 第6页
                MOV     O_XL,#10H       ; 起始列为第48列
                MOV     CODE,#34H       ; 字符代码          
                LCALL   CW_PR
                MOV     O_YL,#85H
                MOV     O_XL,#1CH
                MOV     CODE,#45H
                LCALL   CW_PR
                MOV     O_YL,#85H
                MOV     O_XL,#28H
                MOV     CODE,#4CH
                LCALL   CW_PR
                MOV     O_YL,#85H
                MOV     O_XL,#34H
                MOV     CODE,#1AH
                LCALL   CW_PR
                MOV     R7,#00H
                MOV     R6,#40H
         LOOP:  MOV     A,R7
                MOV     DPTR,#TAB1
                MOVC    A,@A+DPTR
                MOV     CODE,A
                MOV     O_YL,#05H       ; 6X8点阵字体, 第4页
                MOV     O_XL,R6
                LCALL   CW_PR
                INC     R7
                MOV     A,#06H
                ADD     A,R6
                MOV     R6,A
                CJNE    R7,#08H,LOOP
                SJMP    $
        TAB1:   DB 16H,12H,16H,11H,16H,18H,12H,17H
;============= 中文演示显示程序段 ==================
      DISCHA:   MOV     O_YL,#02H       ; 第3页
                MOV     O_XL,#15H;35H       ; 第54列
                MOV     CODE,#00H       ; 汉字代码
                LCALL   CCW_PR
                MOV     O_YL,#02H       ; 第3页
                MOV     O_XL,#2BH;4BH       ; 第76列
                MOV     CODE,#01H       ; 汉字代码
                LCALL   CCW_PR
                MOV     O_YL,#02H       ; 第3页
                MOV     O_XL,#43H;63H       ; 第100列
                MOV     CODE,#02H       ; 汉字代码
                LCALL   CCW_PR
                MOV     O_YL,#02H       ; 第3页
                MOV     O_XL,#5BH;7BH       ; 第124列
                MOV     CODE,#03H       ; 汉字代码
                LCALL   CCW_PR
                SJMP    $
;============== 中文字符库 ==================================
CCTAB:  DB 082H,08AH,092H,0B2H,002H,0A7H,092H,05EH;蓬90 = 00H
        DB 02AH,0AFH,02AH,05AH,04AH,083H,082H,000H
        DB 000H,080H,040H,03FH,041H,090H,095H,095H
        DB 095H,0FFH,095H,095H,095H,0D0H,040H,000H
        DB 080H,064H,024H,024H,03FH,024H,0A6H,064H;勃90 = 01H
        DB 020H,020H,0FFH,020H,020H,0F0H,020H,000H
        DB 000H,008H,049H,089H,07DH,00BH,089H,040H
        DB 030H,00EH,041H,080H,040H,03FH,000H,000H
        DB 040H,042H,044H,0CCH,000H,020H,022H,0E2H;远90 = 02H
        DB 022H,022H,0E2H,023H,032H,020H,000H,000H
        DB 000H,040H,020H,01FH,020H,050H,04CH,043H
        DB 040H,040H,047H,048H,048H,06EH,020H,000H
        DB 020H,020H,020H,020H,020H,020H,0A0H,07FH;大90 = 03H
        DB 0A0H,020H,020H,020H,020H,030H,020H,000H
        DB 000H,040H,040H,020H,010H,00CH,003H,000H
        DB 001H,006H,008H,010H,020H,060H,020H,000H
;===========  滚动演示程序段 ==============================
         S_UP:  MOV     R7,#00H         ; 向上滚动程序
        S_UP1:  MOV     A,#0C0H         ; 显示起始行设置代码
                ORL     A,R7
                MOV     COM,A
                LCALL   PR1
                LCALL   PR4
;                LCALL   PR7
                LCALL   DELAY
                INC     R7
                CJNE    R7,#40H,S_UP1
                MOV     R7,#00H
                SJMP    S_UP1
;------------------------------------------------------------
       S_DOWN:  MOV     R7,#3FH         ; 向下滚动程序
                MOV     COM,#0C0H       ; 显示起始行设置代码
                LCALL   PR1
                LCALL   PR4
;                LCALL   PR7
                LCALL   DELAY
      S_DOWN1:  MOV     A,#0C0H         ; 显示起始行设置代码
                ORL     A,R7
                MOV     COM,A
                LCALL   PR1
                LCALL   PR4
;                LCALL   PR7
                LCALL   DELAY
                DJNZ    R7,S_DOWN1
                SJMP    S_DOWN
;---------------------------------------
        DELAY:  MOV     R6,#00H         ; 延时子程序
                MOV     R5,#00H
        DELAY1: NOP
                DJNZ    R5,DELAY1
                DJNZ    R6,DELAY1
                RET
;============== 绘点演示程序段 ======================
         DRAW:  MOV     R6,#00H         ; 绘点
                MOV     R7,#80H
        LOOP1:  MOV     O_XL,R6       ; 列地址设置
                MOV     O_YL,R7         ; 行地址设置
                LCALL   W_DOT
                INC     R6
                INC     R7
                CJNE    R7,#0C0H,LOOP1
        LOOP2:  DEC     R7
                MOV     O_XL,R6       ; 列地址设置
                MOV     O_YL,R7         ; 行地址设置
                LCALL   W_DOT
                INC     R6
                CJNE    R7,#80H,LOOP2
;        LOOP3:  MOV     O_XL,R6       ; 列地址设置
;                MOV     O_YL,R7         ; 行地址设置
;                LCALL   W_DOT
;                INC     R6
;                INC     R7
;                CJNE    R7,#0C0H,LOOP3
;----------------------------------------------------
         WIPE:  MOV     R6,#00H         ; 消点
                MOV     R7,#00H
        LOOP4:  MOV     O_XL,R6       ; 列地址设置
                MOV     O_YL,R7         ; 行地址设置
                LCALL   W_DOT
                INC     R6
                INC     R7
                CJNE    R7,#040H,LOOP4
        LOOP5:  DEC     R7
                MOV     O_XL,R6       ; 列地址设置
                MOV     O_YL,R7         ; 行地址设置
                LCALL   W_DOT
                INC     R6
                CJNE    R7,#00H,LOOP5
;        LOOP6:  MOV     O_XL,R6       ; 列地址设置
;                MOV     O_YL,R7         ; 行地址设置
;                LCALL   W_DOT
;                INC     R6
;                INC     R7
;                CJNE    R7,#40H,LOOP6
                SJMP    $
;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
;直接驱动子程序由6个子程序组成(适应MGLS12864):
;     1. 写指令代码子程序(左)PR1
;     2. 写显示数据子程序(左)PR2
;     3. 读显示数据子程序(左)PR3
;     4. 写指令代码子程序(右)PR4
;     5. 写显示数据子程序(右)PR5
;     6. 读显示数据子程序(右)PR6
;    驱动接口地址:
;        CWADD1  EQU     0800H           ; 写指令代码地址(左)
;        CRADD1  EQU     0A00H           ; 读状态字地址  (左)
;        DWADD1  EQU     0900H           ; 写显示数据地址(左)
;        DRADD1  EQU     0B00H           ; 读显示数据地址(左)
;        CWADD2  EQU     0400H           ; 写指令代码地址(右)
;        CRADD2  EQU     0600H           ; 读状态字地址  (右)
;        DWADD2  EQU     0500H           ; 写显示数据地址(右)
;        DRADD2  EQU     0700H           ; 读显示数据地址(右)

⌨️ 快捷键说明

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