;***************************************************************************** ; The timing is base on 8051(in 12MHz). ; Min instruction time is 1us. ;***************************************************************************** ; Graphic Controller ; KS0108 Competiable (External clock) ; DI: Register Select (0: Instruction, 1: Data) ; R_W: Read/Write Select (0: Write, 1: Read) ; EN: Data Latch (1->0 Latch in ) ; CS1,CS2: It depends. ;****************************************************************************** .SYMBOLS ;****************************************************************************** ; DEFINE OUTPUT PORORT ;****************************************************************************** DI REG P3.0 EN REG P3.2 CS1 REG P3.7 CS2 REG P3.6 R_W REG P3.1 ;****************************************************************************** ORG 00H JMP START START: ;program reset start here ;INITIAL MOV A,#40H ;Set Y Address,01??-???? LCALL WRITE_COMMAND1 ;Display from Column 0 LCALL WRITE_COMMAND2 ;Range: 00H~4FH MOV A,#B8H ;Set Page Address,1011-1??? LCALL WRITE_COMMAND1 ;Display from page 0 LCALL WRITE_COMMAND2 ;Range: B8H~BFH MOV A,#C0H ;Set Start Line,11??-???? LCALL WRITE_COMMAND1 ;Display from address 0 LCALL WRITE_COMMAND2 ;Range: C0H~FFH MOV A,#3FH ;Set Display ON, 0011-111? LCALL WRITE_COMMAND1 ;Turn ON display LCALL WRITE_COMMAND2 ;****************************************************************************** ; CLEAR SCREEN ;****************************************************************************** CLEAR_S: MOV R0,#0 MOV R1,#0 CSLOOP1: MOV A,R1 ;Set Page Address FROM 00H ORL A,#B8H ;Command B8H~BFH CALL WRITE_COMMAND1 CALL WRITE_COMMAND2 MOV A,#40H ;Set Column Address FROM 40H CALL WRITE_COMMAND1 CALL WRITE_COMMAND2 MOV R0,#0 ;Rest Counter CSLOOP2: ;Write Data To Chip I MOV A,#00H CALL WRITE_DATA1 INC R0 CJNE R0,#64,CSLOOP2 CSLOOP3: ;Write Data To Chip II MOV A,#00H CALL WRITE_DATA2 INC R0 CJNE R0,#128,CSLOOP3 INC R1 CJNE R1,#8,CSLOOP1 ;****************************************************************************** ; SHOW NEWTEC ;****************************************************************************** SHOW_N: MOV R0,#0 MOV R1,#0 MOV DPTR,#NEWTEC SNLOOP1: MOV A,#B8H ;Set Page Address FROM 00H ADD A,R1 ;Command B8H~BFH CALL WRITE_COMMAND1 CALL WRITE_COMMAND2 MOV A,#40H ;Set Column Address FROM 40H CALL WRITE_COMMAND1 CALL WRITE_COMMAND2 MOV R0,#0 ;Rest Counter SNLOOP2: ;Write Data To Chip I XRL A,A MOVC A,@A+DPTR XRL A,#FFH ;Reverse Display Data CALL WRITE_DATA1 INC R0 INC DPTR CJNE R0,#64,SNLOOP2 SNLOOP3: ;Write Data To Chip II XRL A,A MOVC A,@A+DPTR XRL A,#FFH ;Reverse Display Data CALL WRITE_DATA2 INC R0 INC DPTR CJNE R0,#128,SNLOOP3 INC R1 CJNE R1,#8,SNLOOP1 JMP $ ;Main program stop! ;****************************************************************************** WRITE_COMMAND1: ;Write Command To CS1 CLR CS2 ;Disable CS2 SETB CS1 ;Enable CS1 CLR DI CLR R_W MOV P1,A SETB EN NOP CLR EN RET ;****************************************************************************** WRITE_DATA1: ;Write Data To CS1 CLR CS2 ;Disable CS2 SETB CS1 ;Enable CS1 SETB DI CLR R_W MOV P1,A SETB EN NOP CLR EN RET ;****************************************************************************** WRITE_COMMAND2: ;Write Command To CS2 CLR CS1 ;Disable CS1 SETB CS2 ;Enable CS2 CLR DI CLR R_W MOV P1,A SETB EN NOP CLR EN RET ;****************************************************************************** WRITE_DATA2: ;Write Data To CS2 CLR CS1 ;Disable CS1 SETB CS2 ;Enable CS2 SETB DI CLR R_W MOV P1,A SETB EN NOP CLR EN RET ;****************************************************************************** ;* DISPLAY DATA ;****************************************************************************** NEWTEC: DB 000h,000h,0FCh,0FCh,0FCh,0FCh,0FCh,0FCh,0FCh,0FCh,0FCh,0FCh,0FCh,0FCh,0FCh,0FCh DB 0FCh,0FCh,0FCh,0FCh,0FCh,0FCh,0FCh,0FCh,0FCh,0FCh,0FCh,0FCh,0FCh,0FCh,0FCh,0FCh DB 0FCh,0FCh,0FCh,0FCh,0FCh,0FCh,0FCh,0FCh,0FCh,0FCh,0FCh,0FCh,0FCh,0FCh,0FCh,0FCh DB 0FCh,0FCh,0FCh,0FCh,0FCh,0FCh,0FCh,0FCh,0FCh,0FCh,0FCh,0FCh,0FCh,0FCh,0FCh,0FCh DB 0FCh,0FCh,0FCh,0FCh,0FCh,0FCh,0FCh,0FCh,0FCh,0FCh,0FCh,0FCh,0FCh,0FCh,0FCh,0FCh DB 0FCh,0FCh,0FCh,0FCh,0FCh,0FCh,0FCh,0FCh,0FCh,0FCh,0FCh,0FCh,0FCh,0FCh,0FCh,0FCh DB 0FCh,0FCh,0FCh,0FCh,0FCh,0FCh,0FCh,0FCh,0FCh,0FCh,0FCh,0FCh,0FCh,0FCh,0FCh,0FCh DB 0FCh,0FCh,0FCh,0FCh,0FCh,0FCh,0FCh,0FCh,0FCh,0FCh,0FCh,0FCh,0FCh,0FCh,000h,000h DB 000h,000h,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh DB 0FFh,0FFh,0FFh,003h,003h,003h,003h,003h,007h,00Fh,03Fh,07Fh,0FFh,0FFh,003h,003h DB 003h,003h,003h,0FFh,0FFh,0FFh,0FFh,0FFh,07Fh,07Fh,07Fh,03Fh,03Fh,03Fh,03Fh,03Fh DB 07Fh,07Fh,0FFh,0FFh,0FFh,07Fh,07Fh,07Fh,07Fh,07Fh,0FFh,0FFh,0FFh,0FFh,07Fh,07Fh DB 07Fh,07Fh,07Fh,0FFh,0FFh,0FFh,0FFh,07Fh,07Fh,07Fh,07Fh,0FFh,07Fh,07Fh,00Fh,00Fh DB 007h,007h,003h,07Fh,07Fh,07Fh,0FFh,0FFh,0FFh,0FFh,07Fh,07Fh,03Fh,03Fh,03Fh,03Fh DB 03Fh,07Fh,07Fh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,07Fh,07Fh,03Fh,03Fh,03Fh,03Fh DB 03Fh,07Fh,07Fh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,000h,000h DB 000h,000h,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh DB 0FFh,0FFh,0FFh,000h,000h,000h,000h,000h,0F8h,0F0h,0C0h,080h,001h,003h,000h,000h DB 000h,000h,000h,0FFh,0FFh,0FFh,003h,000h,000h,000h,000h,0CCh,0CEh,0CEh,0CCh,040h DB 040h,0C0h,0C0h,0C1h,0FFh,0FFh,0FCh,0E0h,000h,000h,001h,01Fh,00Fh,001h,000h,0C0h DB 0F0h,080h,000h,001h,00Fh,01Fh,001h,000h,000h,0E0h,0FCh,0FFh,0FCh,0FCh,000h,000h DB 000h,000h,000h,0FCh,0FCh,0FCh,0FFh,087h,001h,000h,000h,000h,04Ch,0CEh,0CEh,0CEh DB 0CCh,040h,0C0h,0C0h,0C1h,0C7h,0FFh,087h,001h,000h,000h,000h,078h,0FCh,0FEh,0FCh DB 07Ch,038h,038h,038h,079h,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,000h,000h DB 000h,000h,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh DB 0FFh,0FFh,0FFh,0F8h,0F8h,0F8h,0F8h,0F8h,0FFh,0FFh,0FFh,0FFh,0FEh,0FCh,0F8h,0F8h DB 0F8h,0F8h,0F8h,0FFh,0FFh,0FFh,0FFh,0FEh,0FCh,0F8h,0F8h,0F8h,0F8h,0F8h,0F8h,0F8h DB 0F8h,0FCh,0FCh,0FEh,0FFh,0FFh,0FFh,0FFh,0FFh,0F8h,0F8h,0F8h,0F8h,0F8h,0FEh,0FFh DB 0FFh,0FFh,0FCh,0F8h,0F8h,0F8h,0F8h,0FCh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FEh,0F8h DB 0F8h,0F8h,0F8h,0F8h,0F8h,0F8h,0FFh,0FFh,0FEh,0FCh,0F8h,0F8h,0F8h,0F8h,0F8h,0F8h DB 0F8h,0F8h,0F8h,0FCh,0FEh,0FFh,0FFh,0FFh,0FEh,0FCh,0F8h,0F8h,0F8h,0F8h,0F8h,0F8h DB 0F8h,0F8h,0F8h,0FCh,0FEh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,000h,000h DB 000h,000h,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh DB 0FFh,0FFh,0FFh,00Fh,00Fh,00Fh,00Fh,00Fh,00Fh,00Fh,00Fh,00Fh,00Fh,00Fh,00Fh,01Fh DB 03Fh,07Fh,0FFh,0FFh,0FFh,08Fh,08Fh,08Fh,08Fh,08Fh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh DB 0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh DB 0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,00Fh,00Fh,00Fh,00Fh DB 00Fh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh DB 0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh DB 0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,000h,000h DB 000h,000h,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh DB 0FFh,0FFh,0FFh,000h,000h,000h,000h,000h,0FFh,0FFh,0FFh,0FFh,0FEh,000h,000h,000h DB 000h,000h,083h,0FFh,0FFh,001h,001h,001h,001h,001h,0FFh,0FFh,0FFh,0C3h,081h,001h DB 000h,008h,018h,018h,010h,010h,011h,031h,073h,0FFh,0FFh,0FFh,001h,001h,001h,001h DB 003h,0F1h,0F1h,0F0h,0C0h,000h,001h,001h,007h,0FFh,0FFh,0FFh,000h,000h,000h,000h DB 000h,0FFh,0FFh,0FFh,073h,031h,031h,020h,030h,018h,018h,098h,000h,001h,001h,001h DB 007h,0FFh,0FFh,0F1h,0C1h,001h,001h,001h,00Fh,07Fh,07Fh,007h,001h,001h,081h,0E1h DB 0FDh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,000h,000h DB 000h,000h,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh DB 0FFh,0FFh,0FFh,0E0h,0E0h,0E0h,0E0h,0E0h,0E1h,0E1h,0E1h,0E1h,0E0h,0E0h,0F0h,0F0h DB 0F8h,0FCh,0FFh,0FFh,0FFh,0E0h,0E0h,0E0h,0E0h,0E0h,0FFh,0FFh,0F9h,0F1h,0E1h,0E1h DB 0E1h,0E3h,0E7h,0E7h,0E2h,0E0h,0E0h,0F0h,0F8h,0FFh,0FFh,0FFh,000h,000h,000h,000h DB 000h,0E1h,0E3h,0E1h,0E0h,0E0h,0E0h,0F0h,0F8h,0FFh,0FFh,0FFh,0E0h,0E0h,0E0h,0E0h DB 0E0h,0FFh,0FFh,0F8h,0F0h,0E0h,0E0h,0E0h,0E3h,0E7h,0E3h,0F3h,0F0h,0E0h,0E0h,0E0h DB 0E0h,0FFh,0FFh,07Fh,07Fh,07Fh,078h,000h,000h,000h,000h,080h,0E0h,0FCh,0FFh,0FFh DB 0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,000h,000h DB 000h,000h,03Fh,03Fh,03Fh,03Fh,03Fh,03Fh,03Fh,03Fh,03Fh,03Fh,03Fh,03Fh,03Fh,03Fh DB 03Fh,03Fh,03Fh,03Fh,03Fh,03Fh,03Fh,03Fh,03Fh,03Fh,03Fh,03Fh,03Fh,03Fh,03Fh,03Fh DB 03Fh,03Fh,03Fh,03Fh,03Fh,03Fh,03Fh,03Fh,03Fh,03Fh,03Fh,03Fh,03Fh,03Fh,03Fh,03Fh DB 03Fh,03Fh,03Fh,03Fh,03Fh,03Fh,03Fh,03Fh,03Fh,03Fh,03Fh,03Fh,03Ch,03Ch,03Ch,03Ch DB 03Ch,03Fh,03Fh,03Fh,03Fh,03Fh,03Fh,03Fh,03Fh,03Fh,03Fh,03Fh,03Fh,03Fh,03Fh,03Fh DB 03Fh,03Fh,03Fh,03Fh,03Fh,03Fh,03Fh,03Fh,03Fh,03Fh,03Fh,03Fh,03Fh,03Fh,03Fh,03Fh DB 03Fh,03Fh,03Fh,03Ch,03Ch,03Ch,03Ch,03Ch,03Ch,03Ch,03Eh,03Fh,03Fh,03Fh,03Fh,03Fh DB 03Fh,03Fh,03Fh,03Fh,03Fh,03Fh,03Fh,03Fh,03Fh,03Fh,03Fh,03Fh,03Fh,03Fh,000h,000h END