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

📄 正在检测.txt

📁 是HD61202液晶显示汉字的完整程序代码
💻 TXT
📖 第 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.2            ; 片选/CSA
        CSB     EQU     P3.3            ; 片选/CSB
        RS      EQU     P3.5            ; 寄存器选择信号rs==d/i
        RES     EQU     P3.4            ; 复位
        RW      EQU     P3.0            ; 读/ 写选择信号
        E1      EQU     P3.1            ; 使能信号
        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:   CLR     RES
                MOV	SP,#60H
		MOV	P3,#21H
                SETB     RES
		LCALL	INT
		LCALL	CLEAR
		;LJMP	DISTEXT;西文显示
		LJMP	DISCHA ;中文显示
		;LJMP	DRAW ;绘点演示
                ;LJMP    WIPE
		;LJMP	S_UP ;滚动演示
		;LJMP	S_DOWN;向下滚动
                
;  初始化子程序INT(适用MGLS19264)
;  内部调用子程序:PR1,PR4,PR7
;  程序调用入口:INT
;  程序调用变量:无
      INT:
                ;LCALL         DELAY100MS
                MOV     COM,#0C0H      ; 设置显示起始行为第一行
                LCALL   PR1
                LCALL   PR4
               ;CLR    RES
                MOV     COM,#3FH       ; 开显示设置
                LCALL   PR1
                LCALL   PR4

                RET
; 清显示RAM 区(清屏)子程序CLEAR(适应MGLS12864)
; 占用内部寄存器:R3,R4
; 内部调用子程序:PR1,PR2,PR4,PR5
; 程序调用入口:CLEAR
        CLEAR:


                ;LCALL        DELAY100MS
                ;SETB     RES
                MOV     R4,#00H		; 页面地址暂存器设置
        CLEAR1: MOV     A,R4
                ORL     A,#0B8H		; "或"页面地址设置代码
                MOV     COM,A		; 页面地址设置


                LCALL   PR1
                LCALL   PR4
                MOV     COM,#40H        ; 列地址设置为"0"
                NOP
                NOP
                NOP
                NOP

                LCALL   PR1
                LCALL   PR4
                MOV     R3,#40H         ; 一页清64个字节
        CLEAR2: MOV     DAT1,#00H       ; 显示数据为"0"
                LCALL   PR2
                LCALL   PR5
                NOP
                NOP


                DJNZ    R3,CLEAR2       ; 页内字节清零循环
                INC     R4		; 页地址暂存器加1
                NOP
                NOP
                NOP
                NOP

                CJNE    R4,#08H,CLEAR1  ; RAM 区清零循环

                RET
; 间接驱动驱动子程序由6个子程序组成(适应MGLS12864):
;  占用内部资源:COM,DAT1,A
;  占用系统资源:CSA,CSB,RS,RW,E1,DATBUS
;  程序输入变量:COM 或 DAT1
; 1. 左区驱动子程序
; 1.1 写指令代码子程序(左)
        PR1:    CLR     CSB            ; 片选设置为"01"
                SETB    CSA            ;
                CLR     RS             ; RS=0
                SETB    RW             ; R/W=1
                NOP
                NOP
                NOP
                NOP
                NOP



        PR11:   MOV     DATBUS,#0FFH   ; DATBUS口置"1"
                SETB    E1             ; E=1
                NOP
                NOP
                NOP
                NOP
                NOP
                NOP



                MOV     A,DATBUS       ; 读状态字


                CLR     E1             ; E=0
                JB      ACC.7,PR11     ; 判"忙"标志为"0"否, 否再读
                CLR     RW             ; R/W=0
                MOV     DATBUS,COM     ; 写指令代码
                NOP
                NOP
                NOP
                NOP
                NOP
                NOP



                SETB    E1             ; E=1
                NOP
                NOP
                NOP
                NOP
                NOP


                CLR     E1             ; E=0
                NOP
                NOP
                NOP



                RET
; 1.2 写显示数据子程序(左)
        PR2:    CLR     CSB            ; 片选设置为"01"
                SETB    CSA            ;
                CLR     RS             ; RS=0
                SETB    RW             ; R/W=1
        PR21:   MOV     DATBUS,#0FFH   ; DATBUS口置"1"
                NOP
                NOP
                NOP
                NOP

                SETB    E1             ; E=1
                NOP
                NOP
                NOP
                NOP
                NOP

                MOV     A,DATBUS       ; 读状态字
                NOP
                NOP
                NOP
                CLR     E1             ; E=0
                JB      ACC.7,PR21     ; 判"忙"标志为"0"否, 否再读
                SETB    RS             ; RS=1
                CLR     RW             ; R/W=0
                MOV     DATBUS,DAT1    ; 写数据
                NOP
                NOP
                NOP
                NOP

                SETB    E1             ; E=1
                NOP
                NOP
                NOP
                NOP
                NOP

                CLR     E1             ; E=0
                RET
; 1.3 读显示数据子程序(左)
        PR3:    CLR     CSB            ; 片选设置为"01"
                SETB    CSA            ;
                CLR     RS             ; RS=0
                SETB    RW             ; R/W=1
        PR31:   MOV     DATBUS,#0FFH   ; DATBUS口置"1"
                NOP
                NOP
                NOP
                NOP


                SETB    E1             ; E=1
                NOP
                NOP
                NOP
                NOP
                NOP

                MOV     A,DATBUS       ; 读状态字
                NOP
                NOP
                NOP
                NOP
                NOP

                CLR     E1             ; E=0
                JB      ACC.7,PR31     ; 判"忙"标志为"0"否, 否再读
                SETB    RS             ; RS=1
                NOP
                NOP
                NOP
                NOP
                NOP


                MOV     DATBUS,#0FFH   ; DATBUS口置"0"
                NOP
                NOP
                NOP
                NOP


                SETB    E1             ; E=1
                MOV     DAT1,DATBUS    ; 读数据
                NOP
                NOP
                NOP
                NOP
                NOP


                CLR     E1             ; E=0
                RET
; 2. 右区驱动子程序
; 2.1 写指令代码子程序(右)
        PR4:    SETB    CSB            ; 片选设置为"10"
                CLR     CSA            ;
                CLR     RS             ; RS=0
                SETB    RW             ; R/W=1
        PR41:   MOV     DATBUS,#0FFH   ; DATBUS口置"1"
                NOP
                NOP
                NOP
                NOP
                NOP



                SETB    E1             ; E=1
                NOP
                NOP
                NOP
                NOP
                NOP
                NOP


                MOV     A,DATBUS       ; 读状态字
                CLR     E1             ; E=0
                JB      ACC.7,PR41     ; 判"忙"标志为"0"否, 否再读
                CLR     RW             ; R/W=0


                MOV     DATBUS,COM     ; 写指令代码
                NOP
                NOP
                NOP
                NOP
                NOP
                NOP




                SETB    E1             ; E=1
                NOP
                NOP
                NOP
                NOP
                NOP
                NOP



                CLR     E1             ; E=0
                RET
; 2.2 写显示数据子程序(右)
        PR5:    SETB    CSB            ; 片选设置为"10"
                CLR     CSA            ;
                CLR     RS             ; RS=0
                SETB    RW             ; R/W=1
        PR51:   MOV     DATBUS,#0FFH   ; DATBUS口置"1"
                NOP
                NOP
                NOP
                NOP
                NOP



                SETB    E1             ; E=1
                NOP
                NOP

⌨️ 快捷键说明

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