Nokia dot Matrix LCD Interfacing with 89c51( 8051 core)









The Nokia 3310 LCD is based on a PCD8544 48x84 pixels matrix LCD controller
























Pin Diagram given above ..
Schematic:



----------------------------

AT89C51 PROGRAM CODE


;Program for Nokia 3310 LCD PCD8544 48x84 pixel

SCK BIT P1.7
SDIN BIT P1.6
D_C BIT P1.5
SCE BIT P1.4
RES BIT P1.3


ORG 0000H
AJMP MAIN
ORG 0030H
MAIN:
MOV SP,#60H
MOV P1,#00H
CLR C
CALL RESET
CALL LCD_INIT
HERE:
CALL CLEAR_RAM
MOV DPTR,#MESSAGE
CALL LCD_STRING
CALL DELAYS
CALL CLEAR_RAM
MOV DPTR,#IMAGE
CALL DISPLAY
CALL DELAYS
AJMP HERE

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
SETB RES
RET

LCD_INIT: ;INITALIZE LCD
MOV DPTR,#LCDCODE1
CALL LCD_IN
CALL CLEAR_RAM
MOV R1,#00H ;Y
MOV R2,#00H ;X
CALL CURSOR
RET

LCD_IN:
MOV A,#00H
MOV R6,#00H
LOOP3:
INC R6
MOVC A,@A+DPTR
CJNE A,#2FH,NEXT3
RET
NEXT3:
CALL LCD_COM
MOV A,R6
AJMP LOOP3

DISPLAY: ;DISPLAY IMAGE
MOV R7,#06H
DO: PUSH DPL
PUSH DPH
MOV R6,#84
BACK:
MOV A,#00H
MOVC A,@A+DPTR
CALL ROTATE
CALL LCD_DATA
CALL IN_DP
DJNZ R6,BACK
POP DPH
POP DPL
INC DPTR
DJNZ R7,DO
RET

IN_DP:
MOV R5,#06H
GO1: INC DPTR
DJNZ R5,GO1
RET

ROTATE:

CLR C
MOV R3,#8H
ROT:
RLC A
MOV 53H,A
PUSH 53H
MOV A,R1
RRC A
MOV R1,A
POP 53H
MOV A,53H
DJNZ R3,ROT
MOV A,R1
RET

LCD_COM: ;ROUTINE TO SEND LCD COMMAND
CLR D_C
CLR SCE
NOP
CALL CLOCK_DATA
SETB SCE
NOP
RET

LCD_DATA: ;ROUTINE TO SEND LCD DATA
SETB D_C
CLR SCE
NOP
CALL CLOCK_DATA
NOP
SETB SCE
RET

CLOCK_DATA: ;ROUTINE FOR SPI
CLR C
MOV R5,#08
HERE1:
CLR SCK
RLC A
MOV SDIN,C
SETB SCK
DJNZ R5,HERE1
RET

CURSOR: ;SET DISPLAY CURSOR
MOV A,R1 ;Y POINTER
ANL A,#07H
ORL A,#40H
CALL LCD_COM
MOV A,R2 ;X POINTER
ANL A,#7FH
ORL A,#80H
CALL LCD_COM
RET

CLEAR_RAM: ;CLEAR RAM
MOV R1,#00H
MOV R2,#00H
CALL CURSOR
CLR C
MOV R6,#06
LOOP:
MOV R7,#84
LOOP1:
MOV A,#00H
CALL LCD_DATA
DJNZ R7,LOOP1
DJNZ R6,LOOP
RET

LCD_STRING: ;ROUTINE TO DISPLAY MESSAGE
MOV A,#0H
MOV 50H,#0H
NEXT:
INC 50H
MOVC A,@A+DPTR
CJNE A,#2FH,NEXT1
RET
NEXT1:
CALL TABLE_PTR
MOV A,#00H
CALL LCD_DATA
MOV A,50H
AJMP NEXT

TABLE_PTR:

PUSH DPL
PUSH DPH


MOV DPTR,#TABLE
MOV B,#05H
MUL AB
SUBB A,#0A0H
JNC HERE2
DEC B
HERE2:
MOV R4,A
CJNE R4,#00H,L1
AJMP L3
L1: INC DPTR
DJNZ R4,L1
L3:
CLR C
MOV R4,B
CJNE R4,#00H,L2
AJMP L4
L2: INC DPH
DJNZ R4,L2
L4:
MOV R6,#00H
MOV A,#00H
NEXT2:
INC R6
MOVC A,@A+DPTR
CALL LCD_DATA
MOV A,R6
CJNE R6,#05H,NEXT2
POP DPH
POP DPL
RET

LCDCODE1:
DB 21H
DB 90H
DB 07H
DB 13H
DB 20H
DB 09H
DB 08H
DB 0CH
DB 2FH


MESSAGE: DB " GOOD DAY !/" ;Max. character 14 per message




TABLE: ;HEX ARRAY TO DISPLAY CHARACTERS
DB 000H,000H,000H,000H,000H, ; 20 space
DB 000H,000H,05fH,000H,000H, ; 21 !
DB 000H,007H,000H,007H,000H, ; 22 "
DB 014H,07fH,014H,07fH,014H, ; 23 #
DB 024H,02aH,07fH,02aH,012H, ; 24 $
DB 023H,013H,008H,064H,062H, ; 25 %
DB 036H,049H,055H,022H,050H, ; 26 &
DB 000H,005H,003H,000H,000H, ; 27 '
DB 000H,01cH,022H,041H,000H, ; 28 (
DB 000H,041H,022H,01cH,000H, ; 29 )
DB 014H,008H,03eH,008H,014H, ; 2a *
DB 008H,008H,03eH,008H,008H, ; 2b +
DB 000H,050H,030H,000H,000H, ; 2c ,
DB 008H,008H,008H,008H,008H, ; 2d -
DB 000H,060H,060H,000H,000H, ; 2e .
DB 020H,010H,008H,004H,002H, ; 2f /
DB 03eH,051H,049H,045H,03eH, ; 30 0
DB 000H,042H,07fH,040H,000H, ; 31 1
DB 042H,061H,051H,049H,046H, ; 32 2
DB 021H,041H,045H,04bH,031H, ; 33 3
DB 018H,014H,012H,07fH,010H, ; 34 4
DB 027H,045H,045H,045H,039H, ; 35 5
DB 03cH,04aH,049H,049H,030H, ; 36 6
DB 001H,071H,009H,005H,003H, ; 37 7
DB 036H,049H,049H,049H,036H, ; 38 8
DB 006H,049H,049H,029H,01eH, ; 39 9
DB 000H,036H,036H,000H,000H, ; 3a :
DB 000H,056H,036H,000H,000H, ; 3b ;
DB 008H,014H,022H,041H,000H, ; 3c <
DB 014H,014H,014H,014H,014H, ; 3d =
DB 000H,041H,022H,014H,008H, ; 3e >
DB 002H,001H,051H,009H,006H, ; 3f ?
DB 032H,049H,079H,041H,03eH, ; 40 @
DB 07eH,011H,011H,011H,07eH, ; 41 A
DB 07fH,049H,049H,049H,036H, ; 42 B
DB 03eH,041H,041H,041H,022H, ; 43 C
DB 07fH,041H,041H,022H,01cH, ; 44 D
DB 07fH,049H,049H,049H,041H, ; 45 E
DB 07fH,009H,009H,009H,001H, ; 46 F
DB 03eH,041H,049H,049H,07aH, ; 47 G
DB 07fH,008H,008H,008H,07fH, ; 48 H
DB 000H,041H,07fH,041H,000H, ; 49 I
DB 020H,040H,041H,03fH,001H, ; 4a J
DB 07fH,008H,014H,022H,041H, ; 4b K
DB 07fH,040H,040H,040H,040H, ; 4c L
DB 07fH,002H,00cH,002H,07fH, ; 4d M
DB 07fH,004H,008H,010H,07fH, ; 4e N
DB 03eH,041H,041H,041H,03eH, ; 4f O
DB 07fH,009H,009H,009H,006H, ; 50 P
DB 03eH,041H,051H,021H,05eH, ; 51 Q
DB 07fH,009H,019H,029H,046H, ; 52 R
DB 046H,049H,049H,049H,031H, ; 53 S
DB 001H,001H,07fH,001H,001H, ; 54 T
DB 03fH,040H,040H,040H,03fH, ; 55 U
DB 01fH,020H,040H,020H,01fH, ; 56 V
DB 03fH,040H,038H,040H,03fH, ; 57 W
DB 063H,014H,008H,014H,063H, ; 58 X
DB 007H,008H,070H,008H,007H, ; 59 Y
DB 061H,051H,049H,045H,043H, ; 5a Z
DB 000H,07fH,041H,041H,000H, ; 5b [
DB 002H,004H,008H,010H,020H, ; 5c Yen Currency Sign
DB 000H,041H,041H,07fH,000H, ; 5d ]
DB 004H,002H,001H,002H,004H, ; 5e ^
DB 040H,040H,040H,040H,040H, ; 5f _
DB 000H,001H,002H,004H,000H, ; 60 `
DB 020H,054H,054H,054H,078H, ; 61 a
DB 07fH,048H,044H,044H,038H, ; 62 b
DB 038H,044H,044H,044H,020H, ; 63 c
DB 038H,044H,044H,048H,07fH, ; 64 d
DB 038H,054H,054H,054H,018H, ; 65 e
DB 008H,07eH,009H,001H,002H, ; 66 f
DB 00cH,052H,052H,052H,03eH, ; 67 g
DB 07fH,008H,004H,004H,078H, ; 68 h
DB 000H,044H,07dH,040H,000H, ; 69 i
DB 020H,040H,044H,03dH,000H, ; 6a j
DB 07fH,010H,028H,044H,000H, ; 6b k
DB 000H,041H,07fH,040H,000H, ; 6c l
DB 07cH,004H,018H,004H,078H, ; 6d m
DB 07cH,008H,004H,004H,078H, ; 6e n
DB 038H,044H,044H,044H,038H, ; 6f o
DB 07cH,014H,014H,014H,008H, ; 70 p
DB 008H,014H,014H,018H,07cH, ; 71 q
DB 07cH,008H,004H,004H,008H, ; 72 r
DB 048H,054H,054H,054H,020H, ; 73 s
DB 004H,03fH,044H,040H,020H, ; 74 t
DB 03cH,040H,040H,020H,07cH, ; 75 u
DB 01cH,020H,040H,020H,01cH, ; 76 v
DB 03cH,040H,030H,040H,03cH, ; 77 w
DB 044H,028H,010H,028H,044H, ; 78 x
DB 00cH,050H,050H,050H,03cH, ; 79 y
DB 044H,064H,054H,04cH,044H, ; 7a z
DB 000H,008H,036H,041H,000H, ; 7b <
DB 000H,000H,07fH,000H,000H, ; 7c
DB 000H,041H,036H,008H,000H, ; 7d >
DB 010H,008H,008H,010H,008H, ; 7e Right Arrow ->
DB 078H,046H,041H,046H,078H ; 7f Left Arrow <-

IMAGE: ;HEX ARRAY FOR IMAGE


DB 000H,000H,0fdH,000H,000H,080H,
DB 000H,007H,0ffH,000H,001H,000H,
DB 000H,00fH,0ffH,086H,002H,000H,
DB 000H,01fH,0ffH,0f9H,004H,000H,
DB 000H,03fH,0ffH,0fcH,084H,000H,
DB 000H,03fH,0ffH,0fcH,0c4H,000H,
DB 000H,07fH,0ffH,0feH,03cH,001H,
DB 000H,07fH,0ffH,0feH,014H,002H,
DB 000H,07fH,0ffH,0feH,00bH,006H,
DB 000H,07fH,0ffH,0ffH,008H,01aH,
DB 000H,07fH,0ffH,0feH,00cH,002H,
DB 000H,07fH,0ffH,0ffH,006H,004H,
DB 000H,07fH,0ffH,0feH,003H,0f8H,
DB 000H,07fH,0ffH,0feH,003H,0f8H,
DB 000H,03fH,0ffH,0feH,003H,0fcH,
DB 000H,03fH,0ffH,0fcH,003H,0f8H,
DB 000H,01fH,0ffH,0fcH,001H,0fcH,
DB 000H,00fH,0ffH,0f8H,001H,0fcH,
DB 000H,007H,0ffH,0f0H,001H,0fcH,
DB 000H,001H,0ffH,0e0H,001H,0fcH,
DB 0e0H,000H,0ffH,0fcH,001H,0fcH,
DB 0f0H,003H,0ffH,0efH,001H,0fcH,
DB 0f8H,007H,0ffH,081H,0c1H,0fcH,
DB 0fcH,00fH,0feH,000H,061H,0fcH,
DB 0feH,03fH,0fcH,000H,030H,0fcH,
DB 0feH,03fH,0fcH,000H,018H,0fcH,
DB 0ffH,07fH,0f8H,000H,00cH,0fcH,
DB 0ffH,0ffH,0f8H,000H,006H,0fcH,
DB 0ffH,0ffH,0f8H,000H,002H,0feH,
DB 0ffH,0ffH,0f8H,000H,003H,0feH,
DB 0ffH,0ffH,0f8H,000H,001H,0feH,
DB 0ffH,0ffH,0f8H,020H,007H,0feH,
DB 0ffH,0ffH,0f8H,020H,001H,0feH,
DB 0ffH,0ffH,0fcH,03cH,008H,07eH,
DB 0ffH,0ffH,0fcH,027H,0ffH,03eH,
DB 0ffH,0ffH,0feH,011H,0ffH,09eH,
DB 0ffH,0c0H,00fH,000H,07fH,0cfH,
DB 0ffH,080H,001H,080H,03fH,0efH,
DB 0ffH,000H,000H,080H,00fH,0cfH,
DB 0f6H,000H,000H,000H,00fH,0dfH,
DB 0c2H,000H,000H,000H,007H,09fH,
DB 002H,060H,000H,000H,003H,0bfH,
DB 003H,040H,0bfH,000H,001H,03fH,
DB 001H,081H,003H,0c0H,001H,07fH,
DB 001H,082H,007H,0e0H,001H,0ffH,
DB 001H,0c0H,003H,0e0H,000H,0ffH,
DB 000H,0f1H,080H,0c0H,000H,0ffH,
DB 000H,078H,03fH,000H,000H,0ffH,
DB 000H,07eH,000H,004H,000H,0ffH,
DB 000H,030H,000H,008H,000H,0feH,
DB 000H,018H,0dfH,0b0H,000H,0feH,
DB 000H,00cH,087H,0e0H,000H,0feH,
DB 000H,003H,023H,0e0H,001H,0feH,
DB 000H,000H,0faH,0c0H,001H,0feH,
DB 000H,000H,01fH,0c0H,003H,0feH,
DB 000H,000H,000H,040H,003H,0feH,
DB 000H,000H,007H,0f0H,007H,0feH,
DB 000H,000H,01eH,0f8H,00dH,0feH,
DB 000H,000H,018H,038H,01bH,0faH,
DB 000H,000H,019H,0f8H,063H,0f1H,
DB 000H,000H,01fH,0ffH,0c3H,0f0H,
DB 000H,000H,00fH,0e0H,003H,0f0H,
DB 000H,000H,002H,000H,003H,0f0H,
DB 000H,000H,000H,000H,003H,0f0H,
DB 000H,000H,000H,000H,003H,0f0H,
DB 000H,000H,000H,000H,000H,000H,
DB 000H,000H,000H,000H,000H,000H,
DB 0feH,000H,07cH,0feH,0feH,0c0H,
DB 070H,000H,082H,010H,092H,020H,
DB 00eH,0feH,082H,020H,092H,01eH,
DB 070H,000H,082H,058H,092H,020H,
DB 0feH,000H,044H,086H,000H,0c0H,
DB 000H,000H,000H,000H,000H,000H,
DB 000H,000H,000H,000H,000H,000H,
DB 000H,000H,000H,000H,000H,000H,
DB 000H,000H,000H,000H,000H,000H,
DB 000H,000H,000H,000H,000H,000H,
DB 000H,000H,000H,000H,000H,000H,
DB 000H,000H,000H,000H,000H,000H,
DB 000H,000H,000H,000H,000H,000H,
DB 000H,000H,000H,000H,000H,000H,
DB 000H,000H,000H,000H,000H,000H,
DB 000H,000H,000H,000H,000H,000H,
DB 000H,000H,000H,000H,000H,000H





Output






Comments

Popular posts from this blog

8051 Development Setup:MIDE-51 Installation