;Program for Nokia 6610 LCD PCF8833 PHILIPS 132X132 pixcel 8bpp SCK BIT P1.7 ;Clock source SDIN BIT P1.6 ;Serial data SCE BIT P1.5 ;Chip select RES BIT P1.4 ;reset FCOLOR EQU 41H ;FONT COLOR BCOLOR EQU 42H ;BACK GROUND COLOR XS EQU 43H ;COLOUMN START PIXEL XE EQU 44H ;COLOUMN END PIXEL YS EQU 45H ;ROW START PIXEL YE EQU 46H ;ROW END PIXEL RED EQU 1FH GREEN EQU 0E3H BLUE EQU 0FCH YELLOW EQU 0E0H WHITE EQU 00H BLACK EQU 0FFH ORG 0000H AJMP MAIN ORG 0030H MAIN: MOV SP,#60H MOV P1,#00H CLR C CALL RESET CALL LCD_INIT CALL CLEAR_RAM MOV FCOLOR,WHITE MOV BCOLOR,BLACK MOV XS,#02 MOV XE,#09 MOV YS,#123 MOV YE,#130 CALL CURSOR MOV DPTR,#MESSAGE1 CALL LCD_STRING MOV FCOLOR,RED MOV BCOLOR,BLUE MOV XS,#02 MOV XE,#09 MOV YS,#114 MOV YE,#121 CALL CURSOR MOV DPTR,#MESSAGE2 CALL LCD_STRING MOV FCOLOR,GREEN MOV BCOLOR,YELLOW MOV XS,#02 MOV XE,#09 MOV YS,#105 MOV YE,#112 CALL CURSOR MOV DPTR,#MESSAGE3 CALL LCD_STRING HERE0: AJMP HERE0 DELAYS: ;1s DELAY MOV R5,#10 D1: CALL DELAY DJNZ R5,D1 RET DELAY: ;100ms DELAY SETB PSW.4 MOV R7,#200 HDH: MOV R6,#100 HD: NOP NOP NOP DJNZ R6,HD DJNZ R7,HDH CLR PSW.4 RET RESET: ; RESET SETB SCE SETB RES CLR RES CALL DELAY CALL DELAY SETB RES RET LCD_INIT: ; INITIALIZE LCD SETB SCE SETB SDIN SETB SCK MOV A,#11H ; SLEEP OUT CALL LCD_COM MOV A,#25H ; SET CONTRAST CALL LCD_COM MOV A,#3FH CALL LCD_DATA MOV A,#03H ; BOOSTER VOLTAGE ON CALL LCD_COM CALL DELAY MOV A,#21H ; INVERSE DISPLAY CALL LCD_COM MOV A,#36H ; MADCTL CALL LCD_COM MOV A,#48H CALL LCD_DATA MOV A,#3AH ; COLOR MODE CALL LCD_COM MOV A,#02H CALL LCD_DATA MOV A,#2DH CALL LCD_COM MOV DPTR,#COLOR MOV R6,#00H MOV A,#00H BACK: INC R6 MOVC A,@A+DPTR CALL LCD_DATA MOV A,R6 CJNE R6,#20,BACK MOV A,#00H ;PH NOP CALL LCD_COM MOV A,#29H ;PH DISPLAY ON CALL LCD_COM RET LCD_COM: ;ROUTINE TO SEND LCD COMMAND CLR SCE CLR C CALL CLOCK_DATA SETB SCE RET LCD_DATA: ;ROUTINE TO SEND LCD DATA CLR SCE SETB C CALL CLOCK_DATA SETB SCE RET CLOCK_DATA: ;ROUTINE FOR 9-BIT SPI MOV R5,#09 HERE: CLR SCK NOP MOV SDIN,C RLC A SETB SCK NOP DJNZ R5,HERE RET CURSOR: ;SET DISPLAY CURSOR MOV A,#2AH ;SEND COL ADDRESS CALL LCD_COM MOV A,XS ;XS POINTER CALL LCD_DATA MOV A,XE ;XE POINTER CALL LCD_DATA MOV A,#2BH ;SEND ROW ADDRESS CALL LCD_COM MOV A,YS ;YS POINTER CALL LCD_DATA MOV A,YE ;YE POINTER CALL LCD_DATA RET CLEAR_RAM: ;CLEAR RAM ,FILL ALL PIXEL WITH BLACK COLOR MOV XS,#00H MOV XE,#83H MOV YS,#00H MOV YE,#83H CALL CURSOR MOV A,#2CH ;RAM WRITE CALL LCD_COM MOV R6,#132 LOOP: MOV R7,#132 LOOP1: MOV A,BLACK CALL LCD_DATA DJNZ R7,LOOP1 DJNZ R6,LOOP CALL DELAYS RET LCD_STRING: ;ROUTINE TO DISPLAY MESSAGE MOV A,#2CH CALL LCD_COM MOV A,#0H MOV 50H,#0H NEXT: INC 50H MOVC A,@A+DPTR CJNE A,#2FH,NEXT1 RET NEXT1: CALL TABLE_PTR MOV R7,#8 XADD: NC XS INC XE CALL CURSOR DJNZ R7,XADD CALL DELAY MOV A,#2CH CALL LCD_COM MOV A,50H AJMP NEXT TABLE_PTR: PUSH DPL PUSH DPH MOV DPTR,#TABLE MOV B,#08 MUL AB DEC B MOV R7,A CJNE R7,#00H,L1 AJMP L3 L1: INC DPTR DJNZ R7,L1 L3: CLR C MOV R7,B CJNE R7,#00H,L2 AJMP L4 L2: INC DPH DJNZ R7,L2 L4: MOV R6,#7 MOV A,#7 NEXT2: DEC R6 MOVC A,@A+DPTR CALL LCD_CHAR MOV A,R6 CJNE R6,#0FFH,NEXT2 CLR C POP DPH POP DPL RET LCD_CHAR: CLR C MOV R7,#8 JP3:RLC A PUSH ACC JNC JP1 MOV A,FCOLOR CALL LCD_DATA AJMP JP2 JP1: MOV A,BCOLOR CALL LCD_DATA JP2: POP ACC DJNZ R7,JP3 RET MESSAGE1: DB " Nokia 6610 LCD /" MESSAGE2: DB " PHILIPS DRIVER /" MESSAGE3: DB " PCF 8833 /" COLOR: DB 0,2,4,6,8,11,13,15 ;RED DB 0,2,4,6,9,11,13,15 ;GREEN DB 0,4,13,15 ;BLUE TABLE: DB 000H, 000H, 000H, 000H, 000H, 000H, 000H, 000H, ; space 020 DB 030H, 078H, 078H, 030H, 030H, 000H, 030H, 000H, ; ! DB 06CH, 06CH, 06CH, 000H, 000H, 000H, 000H, 000H, ; " DB 06CH, 06CH, 0FEH, 06CH, 0FEH, 06CH, 06CH, 000H, ; # DB 018H, 03EH, 060H, 03CH, 006H, 07CH, 018H, 000H, ; $ DB 000H, 063H, 066H, 00CH, 018H, 033H, 063H, 000H, ; % DB 01CH, 036H, 01CH, 03BH, 06EH, 066H, 03BH, 000H, ; & DB 030H, 030H, 060H, 000H, 000H, 000H, 000H, 000H, ; ' DB 00CH, 018H, 030H, 030H, 030H, 018H, 00CH, 000H, ; ( DB 030H, 018H, 00CH, 00CH, 00CH, 018H, 030H, 000H, ; ) DB 000H, 066H, 03CH, 0FFH, 03CH, 066H, 000H, 000H, ; * DB 000H, 030H, 030H, 0FCH, 030H, 030H, 000H, 000H, ; + DB 000H, 000H, 000H, 000H, 000H, 018H, 018H, 030H, ; H, DB 000H, 000H, 000H, 07EH, 000H, 000H, 000H, 000H, ; - DB 000H, 000H, 000H, 000H, 000H, 018H, 018H, 000H, ; . DB 003H, 006H, 00CH, 018H, 030H, 060H, 040H, 000H, ; / (forward slash) DB 03EH, 063H, 063H, 06BH, 063H, 063H, 03EH, 000H, ; 0 030 DB 018H, 038H, 058H, 018H, 018H, 018H, 07EH, 000H, ; 1 DB 03CH, 066H, 006H, 01CH, 030H, 066H, 07EH, 000H, ; 2 DB 03CH, 066H, 006H, 01CH, 006H, 066H, 03CH, 000H, ; 3 DB 00EH, 01EH, 036H, 066H, 07FH, 006H, 00FH, 000H, ; 4 DB 07EH, 060H, 07CH, 006H, 006H, 066H, 03CH, 000H, ; 5 DB 01CH, 030H, 060H, 07CH, 066H, 066H, 03CH, 000H, ; 6 DB 07EH, 066H, 006H, 00CH, 018H, 018H, 018H, 000H, ; 7 DB 03CH, 066H, 066H, 03CH, 066H, 066H, 03CH, 000H, ; 8 DB 03CH, 066H, 066H, 03EH, 006H, 00CH, 038H, 000H, ; 9 DB 000H, 018H, 018H, 000H, 000H, 018H, 018H, 000H, ; : DB 000H, 018H, 018H, 000H, 000H, 018H, 018H, 030H, ; ; DB 00CH, 018H, 030H, 060H, 030H, 018H, 00CH, 000H, ; < DB 000H, 000H, 07EH, 000H, 000H, 07EH, 000H, 000H, ; = DB 030H, 018H, 00CH, 006H, 00CH, 018H, 030H, 000H, ; > DB 03CH, 066H, 006H, 00CH, 018H, 000H, 018H, 000H, ; ? DB 03EH, 063H, 06FH, 069H, 06FH, 060H, 03EH, 000H, ; @ 040 DB 018H, 03CH, 066H, 066H, 07EH, 066H, 066H, 000H, ; A DB 07EH, 033H, 033H, 03EH, 033H, 033H, 07EH, 000H, ; B DB 01EH, 033H, 060H, 060H, 060H, 033H, 01EH, 000H, ; C DB 07CH, 036H, 033H, 033H, 033H, 036H, 07CH, 000H, ; D DB 07FH, 031H, 034H, 03CH, 034H, 031H, 07FH, 000H, ; E DB 07FH, 031H, 034H, 03CH, 034H, 030H, 078H, 000H, ; F DB 01EH, 033H, 060H, 060H, 067H, 033H, 01FH, 000H, ; G DB 066H, 066H, 066H, 07EH, 066H, 066H, 066H, 000H, ; H DB 03CH, 018H, 018H, 018H, 018H, 018H, 03CH, 000H, ; I DB 00FH, 006H, 006H, 006H, 066H, 066H, 03CH, 000H, ; J DB 073H, 033H, 036H, 03CH, 036H, 033H, 073H, 000H, ; K DB 078H, 030H, 030H, 030H, 031H, 033H, 07FH, 000H, ; L DB 063H, 077H, 07FH, 07FH, 06BH, 063H, 063H, 000H, ; M DB 063H, 073H, 07BH, 06FH, 067H, 063H, 063H, 000H, ; N DB 03EH, 063H, 063H, 063H, 063H, 063H, 03EH, 000H, ; O DB 07EH, 033H, 033H, 03EH, 030H, 030H, 078H, 000H, ; P 050 DB 03CH, 066H, 066H, 066H, 06EH, 03CH, 00EH, 000H, ; Q DB 07EH, 033H, 033H, 03EH, 036H, 033H, 073H, 000H, ; R DB 03CH, 066H, 030H, 018H, 00CH, 066H, 03CH, 000H, ; S DB 07EH, 05AH, 018H, 018H, 018H, 018H, 03CH, 000H, ; T DB 066H, 066H, 066H, 066H, 066H, 066H, 07EH, 000H, ; U DB 066H, 066H, 066H, 066H, 066H, 03CH, 018H, 000H, ; V DB 063H, 063H, 063H, 06BH, 07FH, 077H, 063H, 000H, ; W DB 063H, 063H, 036H, 01CH, 01CH, 036H, 063H, 000H, ; X DB 066H, 066H, 066H, 03CH, 018H, 018H, 03CH, 000H, ; Y DB 07FH, 063H, 046H, 00CH, 019H, 033H, 07FH, 000H, ; Z DB 03CH, 030H, 030H, 030H, 030H, 030H, 03CH, 000H, ; [ DB 060H, 030H, 018H, 00CH, 006H, 003H, 001H, 000H, ; \ (back slash) DB 03CH, 00CH, 00CH, 00CH, 00CH, 00CH, 03CH, 000H, ; ] DB 008H, 01CH, 036H, 063H, 000H, 000H, 000H, 000H, ; ^ DB 000H, 000H, 000H, 000H, 000H, 000H, 000H, 0FFH, ; _ DB 018H, 018H, 00CH, 000H, 000H, 000H, 000H, 000H, ; ` 060 DB 000H, 000H, 03CH, 006H, 03EH, 066H, 03BH, 000H, ; a DB 070H, 030H, 03EH, 033H, 033H, 033H, 06EH, 000H, ; b DB 000H, 000H, 03CH, 066H, 060H, 066H, 03CH, 000H, ; c DB 00EH, 006H, 03EH, 066H, 066H, 066H, 03BH, 000H, ; d DB 000H, 000H, 03CH, 066H, 07EH, 060H, 03CH, 000H, ; e DB 01CH, 036H, 030H, 078H, 030H, 030H, 078H, 000H, ; f DB 000H, 000H, 03BH, 066H, 066H, 03EH, 006H, 07CH, ; g DB 070H, 030H, 036H, 03BH, 033H, 033H, 073H, 000H, ; h DB 018H, 000H, 038H, 018H, 018H, 018H, 03CH, 000H, ; i DB 006H, 000H, 006H, 006H, 006H, 066H, 066H, 03CH, ; j DB 070H, 030H, 033H, 036H, 03CH, 036H, 073H, 000H, ; k DB 038H, 018H, 018H, 018H, 018H, 018H, 03CH, 000H, ; l DB 000H, 000H, 066H, 07FH, 07FH, 06BH, 063H, 000H, ; m DB 000H, 000H, 07CH, 066H, 066H, 066H, 066H, 000H, ; n DB 000H, 000H, 03CH, 066H, 066H, 066H, 03CH, 000H, ; o DB 000H, 000H, 06EH, 033H, 033H, 03EH, 030H, 078H, ; p 070 DB 000H, 000H, 03BH, 066H, 066H, 03EH, 006H, 00FH, ; q DB 000H, 000H, 06EH, 03BH, 033H, 030H, 078H, 000H, ; r DB 000H, 000H, 03EH, 060H, 03CH, 006H, 07CH, 000H, ; s DB 008H, 018H, 03EH, 018H, 018H, 01AH, 00CH, 000H, ; t DB 000H, 000H, 066H, 066H, 066H, 066H, 03BH, 000H, ; u DB 000H, 000H, 066H, 066H, 066H, 03CH, 018H, 000H, ; v DB 000H, 000H, 063H, 06BH, 07FH, 07FH, 036H, 000H, ; w DB 000H, 000H, 063H, 036H, 01CH, 036H, 063H, 000H, ; x DB 000H, 000H, 066H, 066H, 066H, 03EH, 006H, 07CH, ; y DB 000H, 000H, 07EH, 04CH, 018H, 032H, 07EH, 000H, ; z DB 00EH, 018H, 018H, 070H, 018H, 018H, 00EH, 000H, ; { DB 00CH, 00CH, 00CH, 000H, 00CH, 00CH, 00CH, 000H, ; | DB 070H, 018H, 018H, 00EH, 018H, 018H, 070H, 000H, ; } DB 03BH, 06EH, 000H, 000H, 000H, 000H, 000H, 000H, ; ~ DB 01CH, 036H, 036H, 01CH, 000H, 000H, 000H, 000H ; DEL END