;****************************************************************************** ; SED 1520 ;****************************************************************************** .SYMBOLS ;****************************************************************************** A0 REG P3.0 CS1 REG P3.1 ; 00 = chip1, 01 = chip2 CS2 REG P3.5 ; 10 = chip3 CL REG P3.3 EN REG P3.4 R_W REG P3.7 RES REG P3.2 STP REG P2.0 S_S REG P2.1 BCD EQU 7FH ;****************************************************************************** ORG 00H JMP START ORG 0BH JMP CLK_GEN START: ;program reset start here MOV TMOD,#00000010B ;set timer0:mode2 MOV IE,#10000010B ;enable timer0 interrupt * MOV TH0,#(256-250) ;interrupt period = 250 us * SETB TR0 ;turn timer0 on * ;INITIAL SETTING INITIAL: SETB RES ;Reset MOV A,#11100010B ;Software RESET CALL WRITE_COMMAND1 CALL WRITE_COMMAND2 CALL WRITE_COMMAND3 MOV A,#10100000B ;Select ADC=0 CALL WRITE_COMMAND1 CALL WRITE_COMMAND2 CALL WRITE_COMMAND3 MOV A,#10100100B ;Satic Drive OFF CALL WRITE_COMMAND1 CALL WRITE_COMMAND2 CALL WRITE_COMMAND3 MOV A,#10101001B ;Select Duty=1/32 CALL WRITE_COMMAND1 CALL WRITE_COMMAND2 CALL WRITE_COMMAND3 MOV A,#11000000B ;Set Start Line 0(C0H)~31(DFH) CALL WRITE_COMMAND1 CALL WRITE_COMMAND2 CALL WRITE_COMMAND3 MOV A,#10111000B ;Set Page Address 0(B8H)~3(BBH) CALL WRITE_COMMAND1 CALL WRITE_COMMAND2 CALL WRITE_COMMAND3 MOV A,#10000000B ;Set Column Address 0(00H)~(4FH) CALL WRITE_COMMAND1 CALL WRITE_COMMAND2 CALL WRITE_COMMAND3 MOV A,#10101111B ;Set Display ON CALL WRITE_COMMAND1 CALL WRITE_COMMAND2 CALL WRITE_COMMAND3 ;****************************************************************************** ; FULL ON ;****************************************************************************** FULL_ON: MOV R1,#0 FOLP11: MOV A,#B8H ;Set Page Address FROM 00H ADD A,R1 ;Command B8H~BBH CALL WRITE_COMMAND1 MOV A,#00H ;Set Column Address FROM 00H CALL WRITE_COMMAND1 MOV R0,#0 ;Rest Counter FOLP12: ;Write Data To Chip I MOV A,#FFH CALL WRITE_DATA1 INC R0 CJNE R0,#61,FOLP12 INC R1 CJNE R1,#4,FOLP11 MOV R1,#0 FOLP21: MOV A,#B8H ;Set Page Address FROM 00H ADD A,R1 ;Command B8H~BBH CALL WRITE_COMMAND2 MOV A,#00H ;Set Column Address FROM 00H CALL WRITE_COMMAND2 MOV R0,#0 ;Rest Counter FOLP22: ;Write Data To Chip I MOV A,#FFH CALL WRITE_DATA2 INC R0 CJNE R0,#80,FOLP22 INC R1 CJNE R1,#4,FOLP21 MOV R1,#0 FOLP31: MOV A,#B8H ;Set Page Address FROM 00H ADD A,R1 ;Command B8H~BBH CALL WRITE_COMMAND3 MOV A,#00H ;Set Column Address FROM 00H CALL WRITE_COMMAND3 MOV R0,#0 ;Rest Counter FOLP32: ;Write Data To Chip II MOV A,#FFH CALL WRITE_DATA3 INC R0 CJNE R0,#27,FOLP32 INC R1 CJNE R1,#4,FOLP31 CALL DELAY CALL STP_SC ;***************************************************************************** ; VERTIAL LINE ;***************************************************************************** VLINE: MOV R1,#0 VLLP0: MOV A,#B8H ;Set Page Address FROM 00H ADD A,R1 ;Command B8H~BBH CALL WRITE_COMMAND1 CALL WRITE_COMMAND2 CALL WRITE_COMMAND3 MOV A,#00H ;Set Column Address FROM 00H CALL WRITE_COMMAND1 CALL WRITE_COMMAND2 CALL WRITE_COMMAND3 MOV R0,#0 ;Rest Counter VLLP1: ;Write Data To Chip I MOV A,#FFH CALL WRITE_DATA1 INC R0 CJNE R0,#61,NEXTV1 JMP VLLP2 NEXTV1: MOV A,#00H CALL WRITE_DATA1 INC R0 CJNE R0,#61,VLLP1 VLLP2: ;Write Data To Chip II MOV A,#00H CALL WRITE_DATA2 INC R0 CJNE R0,#141,NEXTV2 JMP VLLP3 NEXTV2: MOV A,#FFH CALL WRITE_DATA2 INC R0 CJNE R0,#141,VLLP2 VLLP3: ;Write Data To Chip III MOV A,#00H CALL WRITE_DATA3 INC R0 CJNE R0,#168,NEXTV3 JMP NEXTV4 NEXTV3: MOV A,#FFH CALL WRITE_DATA3 INC R0 CJNE R0,#168,VLLP3 NEXTV4: INC R1 CJNE R1,#4,VLLP0 CALL DELAY CALL STP_SC ;***************************************************************************** ; HORIZONTAL LINE ;***************************************************************************** HLINE: MOV R1,#0 HLLP0: MOV A,#B8H ;Set Page Address FROM 00H ADD A,R1 ;Command B8H~BBH CALL WRITE_COMMAND1 CALL WRITE_COMMAND2 CALL WRITE_COMMAND3 MOV A,#00H ;Set Column Address FROM 00H CALL WRITE_COMMAND1 CALL WRITE_COMMAND2 CALL WRITE_COMMAND3 MOV R0,#0 ;Rest Counter HLLP1: ;Write Data To Chip I MOV A,#55H CALL WRITE_DATA1 INC R0 CJNE R0,#61,HLLP1 HLLP2: ;Write Data To Chip II MOV A,#55H CALL WRITE_DATA2 INC R0 CJNE R0,#141,HLLP2 HLLP3: ;Write Data To Chip III MOV A,#55H CALL WRITE_DATA3 INC R0 CJNE R0,#168,HLLP3 INC R1 CJNE R1,#4,HLLP0 CALL DELAY CALL STP_SC ;***************************************************************************** ; SHOW PAGE1 ;***************************************************************************** SHOW_P1: MOV R1,#0 MOV DPTR,#SHOW_WG SP1LP1: MOV A,#B8H ;Set Page Address FROM 00H ADD A,R1 ;Command B8H~BBH CALL WRITE_COMMAND1 MOV A,#00H ;Set Column Address FROM 00H CALL WRITE_COMMAND1 MOV R0,#0 ;Rest Counter SP1LP2: ;Write Data To Chip I XRL A,A MOVC A,@A+DPTR CALL WRITE_DATA1 INC R0 INC DPTR CJNE R0,#61,SP1LP2 MOV A,#B8H ;Set Page Address FROM 00H ADD A,R1 ;Command B8H~BBH CALL WRITE_COMMAND2 MOV A,#00H ;Set Column Address FROM 00H CALL WRITE_COMMAND2 SP1LP3: ;Write Data To Chip II XRL A,A MOVC A,@A+DPTR CALL WRITE_DATA2 INC R0 INC DPTR CJNE R0,#141,SP1LP3 MOV A,#B8H ;Set Page Address FROM 00H ADD A,R1 ;Command B8H~BBH CALL WRITE_COMMAND3 MOV A,#00H ;Set Column Address FROM 00H CALL WRITE_COMMAND3 SP1LP4: ;Write Data To Chip III XRL A,A MOVC A,@A+DPTR CALL WRITE_DATA3 INC R0 INC DPTR CJNE R0,#160,SP1LP4 INC R1 CJNE R1,#4,SP1LP1 MOV A,#B8H ;Set Page Address FROM 00H CALL WRITE_COMMAND3 MOV A,#13H ;Set Column Address FROM 00H CALL WRITE_COMMAND3 MOV R0,#0 ;Rest Counter FOLP5: ;Write Data To Chip III MOV A,#00H CALL WRITE_DATA3 INC R0 CJNE R0,#8,FOLP5 CALL DELAY CALL STP_SC LJMP INITIAL ;***************************************************************************** ; CLEAR SCR ;***************************************************************************** CLK_GEN: CPL P3.3 RETI ;***************************************************************************** ; CLEAR SCR ;***************************************************************************** CLEAR_S: MOV R1,#0 CSLP11: MOV A,#B8H ;Set Page Address FROM 00H ADD A,R1 ;Command B8H~BBH CALL WRITE_COMMAND1 MOV A,#00H ;Set Column Address FROM 00H CALL WRITE_COMMAND1 MOV R0,#0 ;Rest Counter CSLP12: ;Write Data To Chip I MOV A,#00H CALL WRITE_DATA1 INC R0 CJNE R0,#80,CSLP12 INC R1 CJNE R1,#4,CSLP11 MOV R1,#0 CSLP21: MOV A,#B8H ;Set Page Address FROM 00H ADD A,R1 ;Command B8H~BBH CALL WRITE_COMMAND2 MOV A,#00H ;Set Column Address FROM 00H CALL WRITE_COMMAND2 MOV R0,#0 ;Rest Counter CSLP22: ;Write Data To Chip I MOV A,#00H CALL WRITE_DATA2 INC R0 CJNE R0,#80,CSLP22 INC R1 CJNE R1,#4,CSLP21 MOV R1,#0 CSLP31: MOV A,#B8H ;Set Page Address FROM 00H ADD A,R1 ;Command B8H~BBH CALL WRITE_COMMAND3 MOV A,#00H ;Set Column Address FROM 00H CALL WRITE_COMMAND3 MOV R0,#0 ;Rest Counter CSLP32: ;Write Data To Chip I MOV A,#00H CALL WRITE_DATA3 INC R0 CJNE R0,#80,CSLP32 INC R1 CJNE R1,#4,CSLP31 RET ;***************************************************************************** WRITE_COMMAND1: CLR A0 CLR CS1 ;CS1=0 CLR CS2 ;CS2=0, Y1=0 CLR R_W MOV P1,A SETB EN CLR EN CALL DELAYS SETB CS1 ;CS1=1 SETB CS2 ;CS2=0, Y1=1 RET ;***************************************************************************** WRITE_DATA1: MOV P1,A SETB A0 CLR CS1 ;CS1=0 CLR CS2 ;CS2=0, Y1=0 CLR R_W SETB EN CLR EN CALL DELAYS SETB CS1 ;CS1=1 SETB CS2 ;CS2=0, Y1=1 RET ;***************************************************************************** WRITE_COMMAND2: MOV P1,A CLR A0 SETB CS1 ;CS1=1 CLR CS2 ;CS2=0, Y1=0 CLR R_W SETB EN CLR EN SETB CS1 ;CS1=1 SETB CS2 ;CS2=0, Y1=1 RET ;***************************************************************************** WRITE_DATA2: MOV P1,A SETB A0 SETB CS1 ;CS1=1 CLR CS2 ;CS2=0, Y1=0 CLR R_W SETB EN CLR EN SETB CS1 ;CS1=1 SETB CS2 ;CS2=0, Y1=1 RET ;***************************************************************************** WRITE_COMMAND3: MOV P1,A CLR A0 CLR CS1 ;CS1=0 SETB CS2 ;CS2=1, Y2=0 CLR R_W SETB EN CLR EN SETB CS1 ;CS1=0 SETB CS2 ;CS2=1, Y2=1 RET ;***************************************************************************** WRITE_DATA3: MOV P1,A SETB A0 CLR CS1 ;CS1=0 SETB CS2 ;CS2=1, Y2=0 CLR R_W SETB EN CLR EN SETB CS1 ;CS1=0 SETB CS2 ;CS2=1, Y2=1 RET ;****************************************************************************** ; Procedure of step by step and scan ;****************************************************************************** STP_SC: JB S_S,STEP RET STEP: CLR STP MOV R5,#4 LOPE: MOV R6,#250 LOPD: DJNZ R6,LOPD DJNZ R5,LOPE JNB S_S,LOUT JNB STP,STEP LOUT: RET ;****************************************************************************** ; BCD DELAY TIME SELECT ;****************************************************************************** CBCD: MOV P0,#00H PUSH A MOV A,P0 ANL A,#0FH RL A RL A MOV BCD,A POP A RET ;****************************************************************************** DELAY: CALL CBCD MOV R4,BCD LOPC: MOV R5,#2FH LOPB: MOV R6,#0FFH LOPA: DJNZ R6,LOPA DJNZ R5,LOPB DJNZ R4,LOPC RET ;****************************************************************************** DELAYS: MOV R6,#5 LOP3: DJNZ R6,LOP3 RET ;****************************************************************************** SHOW_WG: DB 0FFh,011h,001h,001h,003h,001h,041h,081h,041h,08Fh,041h,081h,041h,081h,043h,081h DB 041h,081h,041h,08Fh,041h,081h,041h,081h,043h,081h,041h,081h,041h,08Fh,041h,081h DB 041h,081h,043h,081h,041h,081h,041h,08Fh,041h,081h,041h,001h,003h,001h,081h,081h DB 081h,00Fh,081h,081h,081h,001h,003h,001h,041h,081h,041h,08Fh,041h,081h,041h,081h DB 043h,081h,041h,081h,041h,08Fh,041h,081h,041h,081h,043h,081h,041h,081h,041h,08Fh DB 041h,081h,041h,081h,043h,081h,041h,081h,041h,08Fh,041h,081h,041h,001h,003h,001h DB 081h,001h,081h,08Fh,081h,001h,081h,081h,083h,001h,001h,001h,041h,08Fh,041h,081h DB 041h,081h,043h,081h,041h,081h,041h,08Fh,041h,081h,041h,081h,043h,081h,041h,081h DB 041h,08Fh,041h,081h,041h,081h,043h,081h,041h,081h,041h,08Fh,041h,081h,041h,001h DB 003h,001h,081h,001h,081h,08Fh,081h,001h,081h,081h,083h,001h,055h,0ABh,055h,0FFh DB 0FFh,042h,002h,002h,000h,000h,055h,0AAh,055h,0AAh,055h,0AAh,055h,0AAh,055h,0AAh DB 055h,0AAh,055h,0AAh,055h,0AAh,055h,0AAh,055h,0AAh,055h,0AAh,055h,0AAh,055h,0AAh DB 055h,0AAh,055h,0AAh,055h,0AAh,055h,0AAh,055h,0AAh,055h,080h,040h,080h,04Bh,08Ah DB 04Eh,080h,04Fh,088h,04Fh,080h,040h,080h,055h,0AAh,055h,0AAh,055h,0AAh,055h,0AAh DB 055h,0AAh,055h,0AAh,055h,0AAh,055h,0AAh,055h,0AAh,055h,0AAh,055h,0AAh,055h,0AAh DB 055h,0AAh,055h,0AAh,055h,0AAh,055h,0AAh,055h,0AAh,055h,0AAh,055h,080h,040h,080h DB 04Fh,080h,04Fh,088h,04Fh,080h,04Fh,088h,04Fh,080h,040h,080h,055h,0AAh,055h,0AAh DB 055h,0AAh,055h,0AAh,055h,0AAh,055h,0AAh,055h,0AAh,055h,0AAh,055h,0AAh,055h,0AAh DB 055h,0AAh,055h,0AAh,055h,0AAh,055h,0AAh,055h,0AAh,055h,0AAh,055h,0AAh,055h,080h DB 040h,080h,04Fh,080h,04Bh,08Ah,04Eh,080h,04Fh,088h,04Fh,080h,055h,0AAh,055h,0FFh DB 0FFh,008h,008h,008h,000h,000h,055h,0AAh,055h,0AAh,055h,0AAh,055h,0AAh,055h,0AAh DB 055h,0AAh,055h,0AAh,055h,0AAh,055h,0AAh,055h,0AAh,055h,0AAh,055h,0AAh,055h,0AAh DB 055h,0AAh,055h,0AAh,055h,0AAh,055h,0AAh,055h,0AAh,055h,0AAh,055h,0AAh,055h,0AAh DB 055h,0AAh,055h,0AAh,055h,0AAh,055h,0AAh,055h,0AAh,055h,0AAh,055h,0AAh,055h,0AAh DB 055h,0AAh,055h,0AAh,055h,0AAh,055h,0AAh,055h,0AAh,055h,0AAh,055h,0AAh,055h,0AAh DB 055h,0AAh,055h,0AAh,055h,0AAh,055h,0AAh,055h,0AAh,055h,0AAh,055h,0AAh,055h,0AAh DB 055h,0AAh,055h,0AAh,055h,0AAh,055h,0AAh,055h,0AAh,055h,0AAh,055h,0AAh,055h,0AAh DB 055h,0AAh,055h,0AAh,055h,0AAh,055h,0AAh,055h,0AAh,055h,0AAh,055h,0AAh,055h,0AAh DB 055h,0AAh,055h,0AAh,055h,0AAh,055h,0AAh,055h,0AAh,055h,0AAh,055h,0AAh,055h,0AAh DB 055h,0AAh,055h,0AAh,055h,0AAh,055h,0AAh,055h,0AAh,055h,0AAh,055h,0AAh,055h,0FFh DB 0FFh,0A1h,0A0h,0A0h,080h,080h,0D5h,0AAh,0D5h,0AAh,0D5h,0AAh,0D5h,0AAh,0D5h,0AAh DB 0D5h,0AAh,0D5h,0AAh,0D5h,0AAh,0D5h,0AAh,0D5h,0AAh,0D5h,0AAh,0D5h,0AAh,0D5h,0AAh DB 0D5h,0AAh,0D5h,0AAh,0D5h,0AAh,0D5h,0AAh,0D5h,0AAh,0D5h,0AAh,0D5h,0AAh,0D5h,0AAh DB 0D5h,0AAh,0D5h,0AAh,0D5h,0AAh,0D5h,0AAh,0D5h,0AAh,0D5h,0AAh,0D5h,0AAh,0D5h,0AAh DB 0D5h,0AAh,0D5h,0AAh,0D5h,0AAh,0D5h,0AAh,0D5h,0AAh,0D5h,0AAh,0D5h,0AAh,0D5h,0AAh DB 0D5h,0AAh,0D5h,0AAh,0D5h,0AAh,0D5h,0AAh,0D5h,0AAh,0D5h,0AAh,0D5h,0AAh,0D5h,0AAh DB 0D5h,0AAh,0D5h,0AAh,0D5h,0AAh,0D5h,0AAh,0D5h,0AAh,0D5h,0AAh,0D5h,0AAh,0D5h,0AAh DB 0D5h,0AAh,0D5h,0AAh,0D5h,0AAh,0D5h,0AAh,0D5h,0AAh,0D5h,0AAh,0D5h,0AAh,0D5h,0AAh DB 0D5h,0AAh,0D5h,0AAh,0D5h,0AAh,0D5h,0AAh,0D5h,0AAh,0D5h,0AAh,0D5h,0AAh,0D5h,0AAh DB 0D5h,0AAh,0D5h,0AAh,0D5h,0AAh,0D5h,0AAh,0D5h,0AAh,0D5h,0AAh,0D5h,0AAh,0D5h,0FFh END