📄 hgs12864z68.asm
字号:
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 + -