?? hgs12864z80.asm
字號:
RET
;***********復位子程序***************************
;***********初始化***************************
LCD_Int: MOV COM,#15H ;設置列地址
LCALL W_C
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,#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
SETB RD1
CLR CD1
MOV DATABUS,A
CLR WR1
NOP
SETB WR1
NOP
NOP
SETB CS1
NOP
RET
;寫數據
W_D: MOV A,DAT
CLR CS1
SETB RD1
SETB CD1
MOV DATABUS,A
CLR WR1
NOP
NOP
SETB WR1
NOP
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
NOP
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -