📄 st7066.asm
字号:
;----------------------------------------
;Module name :ZCV4162B&D&E&F.asm
;Date :08 JUN 05
;----------------------------------------
RS EQU P1.0
RW EQU P1.1
E EQU P1.2
DATA_IO EQU P3
;R5,R6 :Delay
;R2 :CGRAM and DDRAM
;R3 :Display Screen
;----------------------------------------
ORG 0000H
JMP START
ORG 0100H
START: MOV SP,#4FH
MOV TMOD,#00H
MOV IE,#00H
CALL T0_SET
CALL T1_SET
ANL PCON,#01111110B
SETB PT0
SETB TR0
SETB EA
MAIN: CALL HWINIT
CALL INIT_IC
MOV DPTR,#CGTAB1
CALL W_CG
MOV DPTR,#DAT_0 ;CGRAM
CALL DISPLAY
ACALL DELAY
CALL CLEAR
MOV DPTR,#CGTAB2
CALL W_CG
MOV DPTR,#DAT_1 ;Full Display
CALL DISPLAY
MOV R5,#70 ;3.5s
LCALL DELAY_L
MOV R3,#5
MOV DPTR,#DAT_2 ;CGROM
LOOP1: CALL DISPLAY
ACALL DELAY
DJNZ R3,LOOP1
CALL CLEAR
MOV DPTR,#DAT_7
MOV R2,#16 ;Cycle Times
MOV A,#10000000B
CALL W_CMD
SCR1: CLR A
MOVC A,@A+DPTR
CALL W_DAT
MOV R6,#7FH ;Delay
CALL DELAY_S
INC DPTR
DJNZ R2,SCR1
MOV R2,#16
MOV A,#11000000B
CALL W_CMD
SCR2: CLR A
MOVC A,@A+DPTR
CALL W_DAT
MOV R6,#7FH
CALL DELAY_S
INC DPTR
DJNZ R2,SCR2
MOV R5,#60
CALL DELAY_L
LJMP MAIN
;==========================================================
INIT_IC: MOV R6,#100 ;Power On,Wait For More Than 30ms
CALL DELAY_S
MOV A,#30H
ACALL W_CMD
MOV R6,#10 ;Wait Time > 4.1ms
CALL DELAY_S
MOV A,#30H
ACALL W_CMD
MOV R6,#1 ;Wait Time > 100us
CALL DELAY_S
MOV A,#00110000B
CALL W_CMD
MOV A,#00111000B ;Two Line Display
CALL W_CMD
MOV A,#08H ;Display Off
CALL W_CMD
CALL CLEAR ;Clear
MOV A,#00000110B ;Cursor Increase "1"
CALL W_CMD
MOV A,#00001110B ;Display On/Cursor On
CALL W_CMD
CLEAR: MOV A,#01H ;Clear
CALL W_CMD
RET
;==========================================================
DISPLAY: ;MOV A,#00111000B ;Two Line Display
;CALL W_CMD
MOV A,#10000000B ;Set Line1 Address
CALL W_CMD
CALL DISP
;MOV A,#00111000B ;Two Line Display
;CALL W_CMD
MOV A,#11000000B ;Set Line2 Address
CALL W_CMD
CALL DISP
RET
;==========================================================
W_CG: MOV A,#01000000B ;Set CGRAM Address
CALL W_CMD
MOV R2,#64
CG_LOOP: CLR A
MOVC A,@A+DPTR
CALL W_DAT
INC DPTR
DJNZ R2,CG_LOOP
RET
CGTAB1:
DB 00EH,011H,013H,015H,015H,019H,011H,00EH ;0
DB 004H,00CH,004H,004H,004H,004H,004H,00EH ;1
DB 00EH,011H,001H,002H,004H,008H,010H,01FH ;2
DB 01FH,002H,004H,002H,001H,001H,011H,00EH ;3
DB 002H,006H,00AH,012H,012H,01FH,002H,002H ;4
DB 01FH,010H,010H,01EH,001H,001H,011H,00EH ;5
DB 006H,008H,010H,01EH,011H,011H,011H,00EH ;6
DB 01FH,001H,002H,002H,004H,004H,008H,008H ;7
CGTAB2:
DB 01FH,01FH,01FH,01FH,01FH,01FH,01FH,01FH
;DB 000H,000H,000H,000H,000H,000H,000H,000H
;==========================================================
DISP: MOV R2,#16 ;20 Chars
DIS_LOOP: CLR A
MOVC A,@A+DPTR
CALL W_DAT
INC DPTR
DJNZ R2,DIS_LOOP
RET
;----------------------------------------------------------
W_CMD: CLR RS ;RS=0,Command Register
CLR RW ;R/W=0,Write
MOV DATA_IO,A
CALL LCM_E ;Generate E Pulse
MOV R6,#03H
CALL DELAY_S
RET
;----------------------------------------------------------
W_DAT: SETB RS ;RS=1,Data Register
CLR RW ;R/W=0,write
MOV DATA_IO,A
CALL LCM_E
MOV R6,#03H
CALL DELAY_S
RET
;----------------------------------------------------------
LCM_E: SETB E
NOP
NOP
CLR E
NOP
NOP
RET
;--------------------------------------------------------
DELAY: MOV R5,#40
DELAY_L: MOV TH1,#03CH ;50ms*R5
MOV TL1,#0B0H
SETB TR1
DL_LOOP1: JBC TF1,DL_LOOP2
SJMP DL_LOOP1
DL_LOOP2: DJNZ R5,DELAY_L
CLR TR1
RET
;--------------------------------------------------------
DELAY_S: MOV TH1,#0FCH ;1ms*R6
MOV TL1,#18H
SETB TR1
DS_LOOP1: JBC TF1,DS_LOOP2
SJMP DS_LOOP1
DS_LOOP2: DJNZ R6,DELAY_S
CLR TR1
RET
;--------------------------------------------------------
T0_SET: ORL TMOD,#01H
MOV TH0,#0FCH
MOV TL0,#18H
ORL IE,#02H
RET
;--------------------------------------------------------
T1_SET: ORL TMOD,#10H
RET
;--------------------------------------------------------
; HARDWARE INITIALIZAION
;--------------------------------------------------------
HWINIT: CLR A
MOV DATA_IO,A
MOV P3,A
SETB RS
SETB RW
RET
;--------------------------------------------------------
DAT_0: DB 000H,000H,001H,001H,002H,002H,003H,003H,004H,004H,005H,005H,006H,006H,007H,007H
DB 000H,000H,001H,001H,002H,002H,003H,003H,004H,004H,005H,005H,006H,006H,007H,007H
DAT_1: DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
DAT_7: DB 059H,059H,05AH,05AH,03DH,03DH,0A4H,0A4H,0A5H,0A5H,0A6H,0A6H,0A7H,0A7H,0A8H,0A8H
DB 059H,059H,05AH,05AH,03DH,03DH,0A4H,0A4H,0A5H,0A5H,0A6H,0A6H,0A7H,0A7H,0A8H,0A8H
DAT_2: DB '////////////////'
DB '////////////////'
DAT_3: DB '1122334455667788'
DB '1122334455667788'
DAT_4: DB 'AABBCCDDEEFFGGHH'
DB 'AABBCCDDEEFFGGHH'
DAT_5: DB 'IIJJKKLLMMNNOOPP'
DB 'IIJJKKLLMMNNOOPP'
DAT_6: DB 'QQRRSSTTUUVVWWXX'
DB 'QQRRSSTTUUVVWWXX'
;--------------------------------------------------------
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -