;****************************************************************************** .SYMBOLS ;****************************************************************************** A0 REG P3.0 CS1 REG P3.1 ; CS1 = E1 CS2 REG P3.5 ; CS2 = E2 R_W REG P3.7 RES REG P3.2 STP REG P2.0 S_S REG P2.1 BCD EQU 01H PAGE_ADDRESS EQU 30H COL_ADDRESS EQU 31H SET_DATA EQU 32H ;****************************************************************************** ORG 0H LJMP START ORG 50H START: ;program reset start here CALL INITIAL LJMP FULL_ON ;****************************************************************************** ; INITIAL SETTING ;****************************************************************************** INITIAL: SETB RES ;Reset MOV A,#11100010B ;Software RESET CALL WRITE_COMMAND1 CALL WRITE_COMMAND2 MOV A,#10100000B ;Select ADC=0 CALL WRITE_COMMAND1 CALL WRITE_COMMAND2 MOV A,#10100100B ;Satic Drive OFF CALL WRITE_COMMAND1 CALL WRITE_COMMAND2 MOV A,#10101001B ;Select Duty=1/32 CALL WRITE_COMMAND1 CALL WRITE_COMMAND2 MOV A,#11000000B ;Set Start Line 0(C0H)~31(DFH) CALL WRITE_COMMAND1 CALL WRITE_COMMAND2 MOV A,#10111000B ;Set Page Address 0(B8H)~3(BBH) CALL WRITE_COMMAND1 CALL WRITE_COMMAND2 MOV A,#10000000B ;Set Column Address 0(00H)~(4FH) CALL WRITE_COMMAND1 CALL WRITE_COMMAND2 MOV A,#10101111B ;Set Display ON CALL WRITE_COMMAND1 CALL WRITE_COMMAND2 RET ;****************************************************************************** ; FULL ON ;****************************************************************************** FULL_ON: MOV R0,#0 MOV R1,#0 FOLOOP1: MOV A,R1 ;Set Page Address FROM 00H ORL A,#B8H ;Command B8H~BBH CALL WRITE_COMMAND1 CALL WRITE_COMMAND2 MOV A,#00H ;Set Column Address FROM 00H CALL WRITE_COMMAND1 CALL WRITE_COMMAND2 MOV R0,#0 ;Rest Counter FOLOOP2: ;Write Data To Chip I MOV A,#FFH CALL WRITE_DATA1 INC R0 CJNE R0,#61,FOLOOP2 FOLOOP3: ;Write Data To Chip II MOV A,#FFH CALL WRITE_DATA2 INC R0 CJNE R0,#122,FOLOOP3 INC R1 CJNE R1,#4,FOLOOP1 LCALL DELAY LCALL STP_SC SJMP SHOWM ;****************************************************************************** ; SHOW MODEL ;****************************************************************************** SHOWM: MOV R0,#0 MOV R1,#0 MOV DPTR,#GRAPHIC SMLOOP1: MOV A,#B8H ;Set Page Address FROM 00H ADD A,R1 ;Command B8H~BBH CALL WRITE_COMMAND1 CALL WRITE_COMMAND2 MOV A,#00H ;Set Column Address FROM 00H CALL WRITE_COMMAND1 CALL WRITE_COMMAND2 MOV R0,#0 ;Rest Counter SMLOOP2: ;Write Data To Chip I XRL A,A MOVC A,@A+DPTR CALL WRITE_DATA1 INC R0 INC DPTR CJNE R0,#61,SMLOOP2 SMLOOP3: ;Write Data To Chip II XRL A,A MOVC A,@A+DPTR CALL WRITE_DATA2 INC R0 INC DPTR CJNE R0,#122,SMLOOP3 INC R1 CJNE R1,#4,SMLOOP1 LCALL DELAY LCALL STP_SC SJMP VLINE ;****************************************************************************** ; VERTICAL LINE ;****************************************************************************** VLINE: MOV R0,#0 MOV R1,#0 VLLOOP1: MOV A,R1 ;Set Page Address FROM 00H ORL A,#B8H ;Command B8H~BBH CALL WRITE_COMMAND1 CALL WRITE_COMMAND2 MOV A,#00H ;Set Column Address FROM 00H CALL WRITE_COMMAND1 CALL WRITE_COMMAND2 MOV R0,#0 ;Rest Counter VLLOOP21: ;Write Data To Chip I MOV A,#FFH CALL WRITE_DATA1 INC R0 CJNE R0,#61,VLLOOP22 JMP VLLOOP31 VLLOOP22: MOV A,#00H CALL WRITE_DATA1 INC R0 CJNE R0,#61,VLLOOP21 VLLOOP31: ;Write Data To Chip I MOV A,#00H CALL WRITE_DATA2 INC R0 CJNE R0,#122,VLLOOP32 JMP VLLOOP11 VLLOOP32: MOV A,#FFH CALL WRITE_DATA2 INC R0 CJNE R0,#122,VLLOOP31 VLLOOP11: INC R1 CJNE R1,#4,VLLOOP1 LCALL DELAY LCALL STP_SC SJMP HLINE ;****************************************************************************** ; HORIZONTAL LINE ;****************************************************************************** HLINE: MOV R0,#0 MOV R1,#0 HLLOOP1: MOV A,R1 ;Set Page Address FROM 00H ORL A,#B8H ;Command B8H~BBH CALL WRITE_COMMAND1 CALL WRITE_COMMAND2 MOV A,#00H ;Set Column Address FROM 00H CALL WRITE_COMMAND1 CALL WRITE_COMMAND2 MOV R0,#0 ;Rest Counter HLLOOP2: ;Write Data To Chip I MOV A,#AAH CALL WRITE_DATA1 INC R0 CJNE R0,#61,HLLOOP2 HLLOOP3: ;Write Data To Chip II MOV A,#AAH CALL WRITE_DATA2 INC R0 CJNE R0,#122,HLLOOP3 INC R1 CJNE R1,#4,HLLOOP1 LCALL DELAY LCALL STP_SC SJMP CROSSDOT ;****************************************************************************** ; CROSS DOT ;****************************************************************************** CROSSDOT: MOV R0,#0 MOV R1,#0 CDLOOP1: MOV A,R1 ;Set Page Address FROM 00H ORL A,#B8H ;Command B8H~BBH CALL WRITE_COMMAND1 CALL WRITE_COMMAND2 MOV A,#00H ;Set Column Address FROM 00H CALL WRITE_COMMAND1 CALL WRITE_COMMAND2 MOV R0,#0 ;Rest Counter CDLOOP21: ;Write Data To Chip I MOV A,#AAH CALL WRITE_DATA1 INC R0 CJNE R0,#61,CDLOOP22 JMP CDLOOP31 CDLOOP22: MOV A,#55H CALL WRITE_DATA1 INC R0 CJNE R0,#61,CDLOOP21 CDLOOP31: ;Write Data To Chip I MOV A,#55H CALL WRITE_DATA2 INC R0 CJNE R0,#122,CDLOOP32 JMP CDLOOP11 CDLOOP32: MOV A,#AAH CALL WRITE_DATA2 INC R0 CJNE R0,#122,CDLOOP31 CDLOOP11: INC R1 CJNE R1,#4,CDLOOP1 LCALL DELAY LCALL STP_SC LJMP START ;****************************************************************************** WRITE_COMMAND1: CLR A0 CLR R_W MOV P1,A CLR CS1 NOP SETB CS1 RET ;****************************************************************************** WRITE_DATA1: SETB A0 CLR R_W MOV P1,A CLR CS1 NOP SETB CS1 RET ;****************************************************************************** WRITE_COMMAND2: CLR A0 CLR R_W MOV P1,A CLR CS2 NOP SETB CS2 RET ;****************************************************************************** WRITE_DATA2: SETB A0 CLR R_W MOV P1,A CLR CS2 NOP SETB CS2 RET ;****************************************************************************** ; procedure of step by step and scan ;****************************************************************************** STP_SC MOV C,S_S JC STEP RET STEP: MOV C,STP MOV R5,#0FH LOPE: MOV R6,#0FFH LOPH: DJNZ R6,LOPH DJNZ R5,LOPE JNB S_S,LOUT JNC STEP LOUT: RET ;****************************************************************************** ; BCD DELAY TIME SELECT ;****************************************************************************** CBCD: 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,#3FH LOPB: MOV R6,#0FFH LOPA: DJNZ R6,LOPA DJNZ R5,LOPB DJNZ R4,LOPC RET GRAPHIC: DB 0FFh,011h,001h,001h,003h,001h,041h,081h DB 041h,08Fh,041h,081h,041h,081h,043h,081h DB 041h,081h,041h,08Fh,041h,081h,041h,081h DB 043h,081h,041h,081h,041h,08Fh,041h,081h DB 041h,081h,043h,081h,041h,081h,041h,08Fh DB 041h,081h,041h,001h,003h,001h,081h,081h DB 081h,00Fh,081h,081h,081h,001h,003h,001h DB 041h,081h,041h,08Fh,041h,081h,041h,081h DB 043h,081h,041h,081h,041h,08Fh,041h,081h DB 041h,081h,043h,081h,041h,081h,041h,08Fh DB 041h,081h,041h,081h,043h,081h,041h,081h DB 041h,08Fh,041h,081h,041h,001h,003h,001h DB 081h,001h,081h,08Fh,081h,001h,081h,081h DB 083h,001h,001h,001h,041h,08Fh,041h,081h DB 041h,081h,043h,081h,041h,081h,041h,08Fh DB 041h,0FFh DB 0FFh,042h,002h,002h,000h,000h,055h,0AAh DB 055h,0AAh,055h,0AAh,055h,0AAh,055h,0AAh DB 055h,0AAh,055h,0AAh,055h,0AAh,055h,0AAh DB 055h,0AAh,055h,0AAh,055h,0AAh,055h,0AAh DB 055h,0AAh,055h,0AAh,055h,0AAh,055h,0AAh DB 055h,0AAh,055h,080h,040h,080h,04Bh,08Ah DB 04Eh,080h,04Fh,088h,04Fh,080h,040h,080h DB 055h,0AAh,055h,0AAh,055h,0AAh,055h,0AAh DB 055h,0AAh,055h,0AAh,055h,0AAh,055h,0AAh DB 055h,0AAh,055h,0AAh,055h,0AAh,055h,0AAh DB 055h,0AAh,055h,0AAh,055h,0AAh,055h,0AAh DB 055h,0AAh,055h,0AAh,055h,080h,040h,080h DB 04Fh,080h,04Fh,088h,04Fh,080h,04Fh,088h DB 04Fh,080h,040h,080h,055h,0AAh,055h,0AAh DB 055h,0AAh,055h,0AAh,055h,0AAh,055h,0AAh DB 055h,0FFh DB 0FFh,008h,008h,008h,000h,000h,055h,0AAh DB 055h,0AAh,055h,0AAh,055h,0AAh,055h,0AAh DB 055h,0AAh,055h,0AAh,055h,0AAh,055h,0AAh DB 055h,0AAh,055h,0AAh,055h,0AAh,055h,0AAh DB 055h,0AAh,055h,0AAh,055h,0AAh,055h,0AAh DB 055h,0AAh,055h,0AAh,055h,0AAh,055h,0AAh DB 055h,0AAh,055h,0AAh,055h,0AAh,055h,0AAh DB 055h,0AAh,055h,0AAh,055h,0AAh,055h,0AAh DB 055h,0AAh,055h,0AAh,055h,0AAh,055h,0AAh DB 055h,0AAh,055h,0AAh,055h,0AAh,055h,0AAh DB 055h,0AAh,055h,0AAh,055h,0AAh,055h,0AAh DB 055h,0AAh,055h,0AAh,055h,0AAh,055h,0AAh DB 055h,0AAh,055h,0AAh,055h,0AAh,055h,0AAh DB 055h,0AAh,055h,0AAh,055h,0AAh,055h,0AAh DB 055h,0AAh,055h,0AAh,055h,0AAh,055h,0AAh DB 055h,0FFh DB 0FFh,0A1h,0A0h,0A0h,080h,080h,0D5h,0AAh DB 0D5h,0AAh,0D5h,0AAh,0D5h,0AAh,0D5h,0AAh DB 0D5h,0AAh,0D5h,0AAh,0D5h,0AAh,0D5h,0AAh DB 0D5h,0AAh,0D5h,0AAh,0D5h,0AAh,0D5h,0AAh DB 0D5h,0AAh,0D5h,0AAh,0D5h,0AAh,0D5h,0AAh DB 0D5h,0AAh,0D5h,0AAh,0D5h,0AAh,0D5h,0AAh DB 0D5h,0AAh,0D5h,0AAh,0D5h,0AAh,0D5h,0AAh DB 0D5h,0AAh,0D5h,0AAh,0D5h,0AAh,0D5h,0AAh DB 0D5h,0AAh,0D5h,0AAh,0D5h,0AAh,0D5h,0AAh DB 0D5h,0AAh,0D5h,0AAh,0D5h,0AAh,0D5h,0AAh DB 0D5h,0AAh,0D5h,0AAh,0D5h,0AAh,0D5h,0AAh DB 0D5h,0AAh,0D5h,0AAh,0D5h,0AAh,0D5h,0AAh DB 0D5h,0AAh,0D5h,0AAh,0D5h,0AAh,0D5h,0AAh DB 0D5h,0AAh,0D5h,0AAh,0D5h,0AAh,0D5h,0AAh DB 0D5h,0AAh,0D5h,0AAh,0D5h,0AAh,0D5h,0AAh DB 0D5h,0FFh END