📄 hgo160160a.asm
字号:
;6800时序点阵式32级灰阶标准程序(ST7529)
X EQU 32H
Y EQU 33H
Z EQU 34H
DATA1 EQU 35H
DATA2 EQU 36H
TIME0 EQU 37H
TIME1 EQU 38H
TEMP0 EQU 31H
TEMP1 EQU 30H
TEMP2 EQU 39H
CS BIT P2.1
RES BIT P2.2
E BIT P3.7
RW BIT P3.6
AO BIT P2.0
ORG 0000H
LJMP BEGIN ;调用主程序
ORG 0060H
NOP
BEGIN: MOV SP,#60H
CLR CS
NOP
REST: SETB RES
LCALL DELAY1
CLR RES
LCALL DELAY1
SETB RES
LCALL DELAY1
MOV A,#30H ;设置EXT=0
LCALL WRCTRL
INT: MOV A,#94H ;Sleep Out
LCALL WRCTRL
MOV A,#0D1H ;Internal OSC On
LCALL WRCTRL
MOV A,#20H ;Power control set
LCALL WRCTRL
MOV A,#08H ;打开倍压电路
LCALL WRDATA
LCALL DELAY1 ;倍压电路需要首先打开并延时1ms
MOV A,#20H ;Power control set
LCALL WRCTRL
MOV A,#0BH ;同时打开倍压电路VB,参考电压发生电路VR,偏压电路VF
LCALL WRDATA
MOV A,#81H ;开始设置电压微调
LCALL WRCTRL
MOV A,#10H ;写入VPR[5:0]数值
LCALL WRDATA
MOV A,#04H ;写入VPR[8:6]数值(共有406级电压调节)
LCALL WRDATA
MOV A,#0CAH ;控制显示指令,在打开显示后不能变动
LCALL WRCTRL
MOV A,#00H ;时钟频率设为不分频(X1),可设为2分频(X/2)
LCALL WRDATA
MOV A,#27H ;Duty设为1/160
LCALL WRDATA
MOV A,#00H ;设置几行为一帧,使用默认值11
LCALL WRDATA
MOV A,#0A6H ;设置RAM中数据为正常显示
LCALL WRCTRL
MOV A,#0BBH ;控制COM反转指令
LCALL WRCTRL
MOV A,#01H ;设置COM扫描次序为0-79,159-80
LCALL WRDATA
MOV A,#0BCH ;控制DATA扫描次序指令
LCALL WRCTRL
MOV A,#01H ;设置DATA扫描次序为0-254
LCALL WRDATA
MOV A,#00H ;设置RGB的排列顺序
LCALL WRDATA
MOV A,#01H ;设置32级灰度2B3P模式
LCALL WRDATA
MOV A,#75H ;控制行地址的指令
LCALL WRCTRL
MOV A,#00H ;设置起始行为0
LCALL WRDATA
MOV A,#9FH ;设置终止行为159
LCALL WRDATA
MOV A,#15H ;控制列地址的指令
LCALL WRCTRL
MOV A,#00H ;设置起始列为0
LCALL WRDATA
MOV A,#4FH ;设置终止列为79
LCALL WRDATA
MOV A,#31H ;设置EXT=1
LCALL WRCTRL
MOV A,#32H ;控制附加电路设置的指令
LCALL WRCTRL
MOV A,#00H ;设置时钟频率为12.7KHz,即默认值
LCALL WRDATA
MOV A,#01H ;设置倍压电容的频率为6KHz,即默认值
LCALL WRDATA
MOV A,#00H ;设置Bias=1/14
LCALL WRDATA
MOV A,#34H ;关闭抖动电路
LCALL WRCTRL
MOV A,#30H ;设置EXT=0
LCALL WRCTRL
MOV A,#0AFH ;打开显示
LCALL WRCTRL
MAIN: LCALL CLEAR
LCALL DISPLAY7
LCALL DISPLAY5
LCALL DELAY5S
LCALL DELAY5S
LCALL DELAY5S
LCALL DELAY1S
LCALL CLEAR
MOV A,#30H ;设置EXT=0
LCALL WRCTRL
MOV A,#81H ;开始设置电压微调
LCALL WRCTRL
MOV A,#10H ;写入VPR[5:0]数值
LCALL WRDATA
MOV A,#04H ;写入VPR[8:6]数值(共有406级电压调节)
LCALL WRDATA
LCALL DISPLAY1 ;全显
LCALL DELAY5S
LCALL DELAY1S
LCALL CLEAR
LCALL CLEAR
LCALL DISPLAY2 ;隔列
LCALL DELAY5S
LCALL DELAY1S
LCALL CLEAR
LCALL DISPLAY3 ;三角形1
LCALL DELAY5S
LCALL DELAY1S
LCALL CLEAR
LCALL DISPLAY4 ;福
LCALL DELAY5S
LCALL DELAY1S
LCALL CLEAR
LJMP BEGIN
DISPLAY1:MOV DATA1,#0FFH
MOV DATA2,#0FFH
LCALL WRITE
RET
DISPLAY2:MOV DATA1,#0F8H
MOV DATA2,#01FH
LCALL WRITEB
RET
DISPLAY3:LCALL WRITEE
RET
DISPLAY4:LCALL WRITEF
RET
DISPLAY5:LCALL WRITEG
RET
DISPLAY7:LCALL WRITEI
RET
WRCTRL:CLR AO
NOP
MOV P0,A
CLR RW
NOP
NOP
NOP
NOP
NOP
SETB E
NOP
CLR E
SETB AO
RET
WRDATA:SETB AO
NOP
MOV P0,A
CLR RW
NOP
SETB E
NOP
CLR E
CLR AO
RET
WRITE: MOV A,#30H ;设置EXT=0
LCALL WRCTRL
MOV A,#15H ;控制列地址的指令
LCALL WRCTRL
MOV A,#00H ;设置起始列为0
LCALL WRDATA
MOV A,#4FH ;设置终止列为79
LCALL WRDATA
MOV A,#75H ;控制行地址的指令
LCALL WRCTRL
MOV A,#00H ;设置起始行为0
LCALL WRDATA
MOV A,#9FH ;设置终止行为159
LCALL WRDATA
MOV A,#5CH ;控制往显存写数据指令
LCALL WRCTRL
MOV X,#00H ;设置起始COM
WRITE1:
MOV Y,#80 ;SEG数除以3,共循环80次
WRITE2:MOV A,DATA1 ;第一次写数据
CPL A
LCALL WRDATA
MOV A,DATA2 ;第二次写数据
CPL A
LCALL WRDATA
DJNZ Y,WRITE2
INC X
MOV A,X
CJNE A,#160,WRITE1
RET
WRITEB: MOV A,#30H ;设置EXT=0
LCALL WRCTRL
MOV A,#15H ;控制列地址的指令
LCALL WRCTRL
MOV A,#00H ;设置起始列为0
LCALL WRDATA
MOV A,#4FH ;设置终止列为79
LCALL WRDATA
MOV A,#75H ;控制行地址的指令
LCALL WRCTRL
MOV A,#00H ;设置起始行为0
LCALL WRDATA
MOV A,#9FH ;设置终止行为159
LCALL WRDATA
MOV A,#5CH ;控制往显存写数据指令
LCALL WRCTRL
MOV X,#00H ;设置起始COM
WRITEB1:MOV Y,#40 ;SEG数除以3,共循环80次
WRITEB2:MOV A,#00H
MOV A,DATA1 ;第一次写数据
CPL A
LCALL WRDATA
MOV A,DATA2 ;第二次写数据
CPL A
LCALL WRDATA
MOV A,#007H ;第三次写数据
CPL A
LCALL WRDATA
MOV A,#0C0H ;第四次写数据
CPL A
LCALL WRDATA
DJNZ Y,WRITEB2
INC X
MOV A,X
CJNE A,#160,WRITEB1
RET
WRITEE: MOV A,#30H ;设置EXT=0
LCALL WRCTRL
MOV A,#15H ;控制列地址的指令
LCALL WRCTRL
MOV A,#00H ;设置起始列为0
LCALL WRDATA
MOV A,#4FH ;设置终止列为79
LCALL WRDATA
MOV A,#75H ;控制行地址的指令
LCALL WRCTRL
MOV A,#00H ;设置起始行为0
LCALL WRDATA
MOV A,#9FH ;设置终止行为159
LCALL WRDATA
MOV A,#5CH ;控制往显存写数据指令
LCALL WRCTRL
MOV X,#00H ;设置起始COM
WRITEE1:MOV Y,#20 ;SEG数除以3,共循环80次
WRITEE01:MOV DPTR,#TAB01
MOV Z,#04
LCALL WXDATA
DJNZ Y,WRITEE01
MOV Y,#20
WRITEE02:MOV DPTR,#TAB02
MOV Z,#04
LCALL WXDATA
DJNZ Y,WRITEE02
MOV Y,#20
WRITEE03:MOV DPTR,#TAB03
MOV Z,#04
LCALL WXDATA
DJNZ Y,WRITEE03
MOV Y,#20
WRITEE04:MOV DPTR,#TAB04
MOV Z,#04
LCALL WXDATA
DJNZ Y,WRITEE04
MOV Y,#20
WRITEE05:MOV DPTR,#TAB05
MOV Z,#04
LCALL WXDATA
DJNZ Y,WRITEE05
MOV Y,#20
WRITEE06:MOV DPTR,#TAB06
MOV Z,#04
LCALL WXDATA
DJNZ Y,WRITEE06
MOV Y,#20
WRITEE07:MOV DPTR,#TAB07
MOV Z,#04
LCALL WXDATA
DJNZ Y,WRITEE07
MOV Y,#20
WRITEE08:MOV DPTR,#TAB08
MOV Z,#04
LCALL WXDATA
DJNZ Y,WRITEE08
INC X
MOV A,X
CJNE A,#20,WRITEE1
RET
WRITEF: MOV A,#30H ;设置EXT=0
LCALL WRCTRL
MOV A,#15H ;控制列地址的指令
LCALL WRCTRL
MOV A,#00H ;设置起始列为0
LCALL WRDATA
MOV A,#34H ;设置终止列为79;53
LCALL WRDATA
MOV A,#75H ;控制行地址的指令
LCALL WRCTRL
MOV A,#00H ;设置起始行为0
LCALL WRDATA
MOV A,#9FH ;设置终止行为159
LCALL WRDATA
MOV A,#5CH ;控制往显存写数据指令
LCALL WRCTRL
MOV X,#00H ;设置起始COM
MOV Y,#53 ;SEG数除以3,共循环80次
WRITEF1:MOV A,#0FFH
CPL A
LCALL WRDATA
MOV A,#0FFH
CPL A
LCALL WRDATA
DJNZ Y,WRITEF1
WRITEF3:MOV A,#0F8H
CPL A
LCALL WRDATA
MOV A,#000H
CPL A
LCALL WRDATA
MOV Y,#51
WRITEF2:MOV A,#000H
CPL A
LCALL WRDATA
MOV A,#000H
CPL A
LCALL WRDATA
DJNZ Y,WRITEF2
MOV A,#000H
CPL A
LCALL WRDATA
MOV A,#01FH
CPL A
LCALL WRDATA
INC X
MOV A,X
CJNE A,#158,WRITEF3
MOV Y,#53
WRITEF4:MOV A,#0FFH
CPL A
LCALL WRDATA
MOV A,#0FFH
CPL A
LCALL WRDATA
DJNZ Y,WRITEF4
RET
WRITEG: MOV A,#30H ;设置EXT=0
LCALL WRCTRL
MOV A,#15H ;控制列地址的指令
LCALL WRCTRL
MOV A,#08H ;设置起始列为8
LCALL WRDATA
MOV A,#2FH ;设置终止列为47
LCALL WRDATA
MOV A,#75H ;控制行地址的指令
LCALL WRCTRL
MOV A,#40H ;设置起始行为64
LCALL WRDATA
MOV A,#9FH ;设置终止行为159
LCALL WRDATA
MOV A,#5CH ;控制往显存写数据指令
LCALL WRCTRL
MOV X,#00H ;设置起始COM
;WRITEG1:MOV Y,#4 ;SEG数除以3,共循环80次
LCALL ZIMOG
; INC X
; MOV A,X
; CJNE A,#10,WRITEG1
RET
ZIMOG: MOV A,#00H
WRITEG01:MOV DPTR,#TAB11
MOV Z,#10
LCALL WXDATA
MOV DPTR,#TAB21
MOV Z,#10
LCALL WXDATA
MOV DPTR,#TAB31
MOV Z,#10
LCALL WXDATA
MOV DPTR,#TAB51
MOV Z,#10
LCALL WXDATA
WRITEG02:MOV DPTR,#TAB12
MOV Z,#10
LCALL WXDATA
MOV DPTR,#TAB22
MOV Z,#10
LCALL WXDATA
MOV DPTR,#TAB32
MOV Z,#10
LCALL WXDATA
MOV DPTR,#TAB52
MOV Z,#10
LCALL WXDATA
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -