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

📄 hgs12864z68.asm

📁 HGS12864Z is OLED Display Screen for Instrument display application.
💻 ASM
📖 第 1 页 / 共 4 页
字号:
                MOV	COM,#00H	;起始地址 0~127列,
		LCALL	W_C
                MOV	COM,#3FH	;结束地址  3F代表128列,一个字节负责两列
		LCALL	W_C

                MOV	COM,#75H	;设置行地址
		LCALL	W_C
                MOV	COM,#0CH	;起始行  0~64行
		LCALL	W_C
                MOV	COM,#4BH	;结束行
		LCALL	W_C

                MOV	COM,#81H	;设对比度
		LCALL	W_C
                MOV	COM,#7FH	;0~127
		LCALL	W_C

                MOV	COM,#86H	;设置电流/* Set Current Range84h:Quarter, 85h:Half,86h:Full*/
		LCALL	W_C

                MOV	COM,#0A0H	;设置片内缓存 ,参造例程即可,具体不必关心
		LCALL	W_C
                MOV	COM,#052H	;
		LCALL	W_C

                MOV	COM,#0A1H	;设置显示起始行
		LCALL	W_C
                MOV	COM,#00CH	;
		LCALL	W_C

                MOV	COM,#0A2H	;设置图象相对与RAM结构的偏置, 参造例程即可,具体不必关心
		LCALL	W_C
                MOV	COM,#04CH	;无偏移
		LCALL	W_C

                MOV	COM,#0A4H	;设置显示模式 A4:正常,A5:全亮, A6: 全不亮,A7:反显
		LCALL	W_C

                MOV	COM,#0A8H	;Set Multiplex Ratio,参照例程
		LCALL	W_C
                MOV	COM,#03FH	;
		LCALL	W_C

                MOV	COM,#0B1H	; Set Phase Length,请参照例程设置
		LCALL	W_C
                MOV	COM,#022H	; [3:0]:Phase 1 period of 1~16clocks
		LCALL	W_C

                MOV	COM,#0B2H	;  Set Row Period ,请参照例程
		LCALL	W_C
                MOV	COM,#046H	;  [7:0]:18~255,K=P1+P2+GS15 (POR:4+7+29)
		LCALL	W_C

                MOV	COM,#0B3H	; 设置芯片工作分频时钟、震荡 频率
		LCALL	W_C
                MOV	COM,#041H	;  [3:0]:1~16, [7:4]:0~16  POR = 0000 0001
		LCALL	W_C

                MOV	COM,#0BFH	;  ???指令表中没有这条指令的
		LCALL	W_C
                MOV	COM,#00DH	;  [7:0]:18~255,K=P1+P2+GS15 (POR:4+7+29)
		LCALL	W_C

                MOV	COM,#0BEH	; Set VCOMH
		LCALL	W_C
                MOV	COM,#000H	;  [7:0]:VCOMH
		LCALL	W_C

                MOV	COM,#0BCH	; 设置相素点预充电电压,调整起辉响应时间
		LCALL	W_C
                MOV	COM,#00BH	;  [7:0]:VCOMH
		LCALL	W_C

                MOV	COM,#0B8H	; 灰度设置表,对16级分别定义,参考例程即可
		LCALL	W_C
                MOV	COM,#001H	;
		LCALL	W_C
                MOV	COM,#011H	;
		LCALL	W_C
                MOV	COM,#022H	;
		LCALL	W_C
                MOV	COM,#032H	;
		LCALL	W_C
                MOV	COM,#043H	;
		LCALL	W_C
                MOV	COM,#054H	;
		LCALL	W_C
                MOV	COM,#065H	;
		LCALL	W_C
                MOV	COM,#076H	;
		LCALL	W_C

                MOV	COM,#0ADH	;   芯片配置指令,参照例程
		LCALL	W_C
                MOV	COM,#002H	;
		LCALL	W_C

                MOV	COM,#0AFH	; 开显示 AF=ON, AE=Sleep Mode
		LCALL	W_C

                RET
;***************初始化程序********************************************

;***************指令数据写子程序**************************************
;写指令
W_C:    MOV  A,COM
        CLR  CS1
        CLR  CD1
        CLR  RW1
        MOV  DATABUS,A
        SETB  E1
        NOP
        CLR   E1
        NOP
        SETB CS1
        RET
;写数据
W_D:    MOV  A,DAT
        CLR  CS1  
        SETB CD1
        CLR  RW1
        MOV  DATABUS,A
        SETB E1
        NOP
        CLR  E1
        NOP
        SETB CS1
        RET

;******************清屏子程序**************************
LCD_Clear:

        MOV   COM,#015H   ;设置列地址
        LCALL W_C
        MOV   COM,#000H
        LCALL W_C
        MOV   COM,#03FH
        LCALL W_C

        MOV   COM,#075H   ;设置行地址
        LCALL W_C
        MOV   COM,#00CH
        LCALL W_C
        MOV   COM,#04BH
        LCALL W_C
      ;  MOV   A,DAT1
      ;  MOV   DAT,#000H
        MOV   R4,#64
CLR0:   MOV   R5,#64
CLR1:  ; MOV   GRAYB,#000H ;前景色背景色均为0
       ;LCALL GRAY

        LCALL W_D
        DJNZ  R5,CLR1
        DJNZ  R4,CLR0
        RET



;******************测试灰度生成子程序**************
;******************;输入DAT1,GRAYB
GRAYC:
        MOV   COM,#015H   ;设置列地址
        LCALL W_C
        MOV   COM,#000H
        LCALL W_C
        MOV   COM,#03FH
        LCALL W_C

        MOV   COM,#075H   ;设置行地址
        LCALL W_C
        MOV   COM,#00CH
        LCALL W_C
        MOV   COM,#04BH
        LCALL W_C
     ;   MOV   A,DAT1
      ;  MOV   DAT,#088H
        MOV   R4,#64
GRAYC0:   MOV   R5,#16
GRAYC1:  ; MOV   GRAYB,#000H ;前景色背景色均为0
       MOV   A,DAT1
       LCALL GRAY

      ;  LCALL W_D
        DJNZ  R5,GRAYC1
        DJNZ  R4,GRAYC0
        RET



;******************灰度生成子程序**************************
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; 灰度生成子程序(字节)GRAY
;  占用内部资源:GRAYH3,GRAYH2,GRAYH1,GRAYH0,A
;  内部调用子程序:W_D
;  程序调用入口: GRAY
;  程序输入变量:GRAYB,A
;  灰度生成子程序(字节)如下:

GRAY:   MOV     GRAYH0,#00H     ; 灰度寄存器清零
        MOV     GRAYH1,#00H
        MOV     GRAYH2,#00H
        MOV     GRAYH3,#00H


        RLC     A              ; 取数据位
        PUSH    ACC            ; 存数据
        MOV     A,GRAYB        ; 取灰度寄存器
        JC      GRAY7          ; 判数据位是否为"0"
        SWAP    A                ;为"0" 取背景灰度数据,高四位和低四位交换
GRAY7:  ANL     A,#0F0H        ; D7为"1"时取前景色
        MOV     GRAYH3,A       ;D7转换完成

        POP     ACC            ; D6
        RLC     A              ;
        PUSH    ACC
        MOV     A,GRAYB
        JNC     GRAY6           ;前景色

        ;等于1时,取前景色
        SWAP    A
        ;等于0时 ,取背景色
GRAY6:  ANL     A,#00FH
        ORL     A,GRAYH3
        MOV     GRAYH3,A

        POP     ACC            ;D5
        RLC     A
        PUSH    ACC
        MOV     A,GRAYB
        JC      GRAY5
        SWAP    A
GRAY5:  ANL     A,#0F0H
        MOV     GRAYH2,A

        POP     ACC          ;D4
        RLC     A
        PUSH    ACC
        MOV     A,GRAYB
        JNC      GRAY4
        SWAP    A
GRAY4:  ANL     A,#00FH
        ORL     A,GRAYH2
        MOV     GRAYH2,A

        POP     ACC            ;D3
        RLC     A              ; 取数据位
        PUSH    ACC            ; 存数据
        MOV     A,GRAYB        ; 取灰度寄存器
        JC      GRAY3          ; 判数据位是否为"0"
        SWAP    A                ;为"0" 取背景灰度数据,高四位和低四位交换
GRAY3:  ANL     A,#0F0H        ; D7为"1"时取前景色
        MOV     GRAYH1,A       ;D7转换完成

        POP     ACC            ; D2
        RLC     A              ;
        PUSH    ACC
        MOV     A,GRAYB
        JNC     GRAY2           ;前景色

        ;等于1时,取前景色
        SWAP    A
        ;等于0时 ,取背景色
GRAY2:  ANL     A,#00FH
        ORL     A,GRAYH1
        MOV     GRAYH1,A

        POP     ACC            ;D1
        RLC     A
        PUSH    ACC
        MOV     A,GRAYB
        JC      GRAY1
        SWAP    A
GRAY1:  ANL     A,#0F0H
        MOV     GRAYH0,A

        POP     ACC          ;D0
        RLC     A
  ;     PUSH    ACC
        MOV     A,GRAYB
        JNC      GRAY0
        SWAP    A
GRAY0:  ANL     A,#00FH
        ORL     A,GRAYH0
        MOV     GRAYH0,A

        MOV     DAT,GRAYH3
        LCALL   W_D
        NOP
        MOV     DAT,GRAYH2
        LCALL   W_D
        NOP
        MOV     DAT,GRAYH1

⌨️ 快捷键说明

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