78e51_HT1621_LCD顯示程序
義隆78e51_HT1621_LCD顯示程序
;**************************]
;MCU:W78E51(MCS-51 系列單片機)
CSBITP0.0
WRIBITP0.2
DATA_BIT BITP0.1
;30H~32H are used for write cycle flag
;40H~43H are used for delay sub-program
ORG0000H
START:
INIT:
CLRCS
MOV A,#10000000B;select command writing
LCALLMODE_SELECT ;sub_program for command mode or data mode selection
MOV A,#01H;system oscillator on
LCALLWCOM
MOV A,#03H;display on
LCALLWCOM
MOV A,#29H;set bias=1/3; duty=1/4
LCALLWCOM
SETBCS
MAIN:
lcallkenwood
lcallwaitkey
LJMPSTART
clear:
setbcs ;these two rows are important
clrcs
MOV a,#0a0h
lcallmode_select
MOV a,#00h
lcalladdress
MOV r0,#017
clear1:
MOV a,#00h
lcallwdata
djnzr0,clear1
ret
kenwood:
setbcs
clrcs
MOV a,#0a0h
lcallmode_select
MOV a,#00h
lcalladdress
MOV a,#040h
lcallwdata
kenwood_1:
setbcs
clrcs
MOV a,#0a0h
lcallmode_select
MOV a,#0
lcalladdress
MOV r1,#32
MOV dptr,#data_kenwood
kenwood_2:
MOV a,#0
MOV cA,@a+dptr
lcallwdata
inc dptr
djnzr1,kenwood_2
ret
MODE_SELECT:
MOV 33H,#03H
MODE_SELECT1:
CLRWRI
RLCA
MOV DATA_BIT,C
LCALLDELAY_1MS
SETBWRI
DJNZ33H,MODE_SELECT1
RET
WCOM: ;write command to ht1621
MOV 30H,#8
WCOM2:
CLRWRI
RLCA
MOV DATA_BIT,C
LCALLDELAY_1MS
SETBWRI
DJNZ30H,WCOM2
CLRWRI
;CLRDATA_BIT
LCALLDELAY_1MS
SETBWRI
RET
ADDRESS:;write address to ht1621
RLCA
RLCA
MOV 31H,#6
ADD1:
CLRWRI
RLCA
MOV DATA_BIT,C
LCALLDELAY_1MS
SETBWRI
DJNZ31H,ADD1
RET
WDATA: ;write data to ht1621
MOV 32H,#4
WDATA1:
CLRWRI
RLCA
MOV DATA_BIT,C
LCALLDELAY_1MS
SETBWRI
DJNZ32H,WDATA1
RET
WAITKEY:SETB P2.0;wait a key to next screen
MOV 43H,#80
WAITKEY1:
LCALL DELAY ;IN ORDER TO ACCEPT SELECT STATUS
DJNZ 43H,WAITKEY1
STATUS: MOV C,P2.0
JC STATUS
RET
WAIT: MOV 42,#2FH
WAIT0: LCALL DELAY
DJNZ 42,WAIT0
RET
;DELAY SUBPROGRAM
DELAY: MOV 40H,#032H ;10.05ms
DELAY1: MOV 41H,#030H
DELAY2: DJNZ 41H,DELAY2 ;192us
DJNZ 40H,DELAY1
RET
DELAY_1MS:
MOV 44H,#005H
DELAY_1MS1:
MOV 45H,#030H
DELAY_1MS2:
DJNZ45H,DELAY_1MS2
DJNZ44H,DELAY_1MS1
RET
data_kenwood:
db070h,0f0h,0f0h,0f0h,0f0h,0f0h,
db 060h,000h
db 0f0h
db 050h,0b0h,0f0h,0f0h
db 000h,000h,000h,000h,0F0h ;seg9,seg10,seg11
db0F0h,0F0h,0F0h,0F0h,0F0h,0F0h,0F0h,0F0h,0F0h,0F0h,0F0h,0F0h,0F0h,0F0h
END