Sei sulla pagina 1di 8

AT89C51 PROGRAM CODE

;Program for Nokia 3310 LCD PCD8544 48x84 pixel


SCK
SDIN
D_C
SCE
RES

BIT
BIT
BIT
BIT
BIT

P1.7
P1.6
P1.5
P1.4
P1.3

ORG

0000H

AJMP

MAIN

ORG

0030H

MOV
MOV
CLR
CALL
CALL

SP,#60H
P1,#00H
C
RESET
LCD_INIT

CALL
MOV
CALL
CALL
CALL
MOV
CALL
CALL
AJMP

CLEAR_RAM
DPTR,#MESSAGE
LCD_STRING
DELAYS
CLEAR_RAM
DPTR,#IMAGE
DISPLAY
DELAYS
HERE

MOV

R5,#10

CALL
DJNZ
RET

DELAY
R5,D1

SETB
MOV

PSW.4
R7,#200

MOV

R6,#100

MAIN:

HERE:

DELAYS:

;1s DELAY

D1:

DELAY:

;100ms DELAY

HDH:
HD:
NOP
NOP
NOP
DJNZ
DJNZ
CLR
RET

R6,HD
R7,HDH
PSW.4

RESET:

; RESET
SETB

SCE

SETB
CLR
CALL
SETB
RET
LCD_INIT:
MOV
CALL
CALL
MOV
MOV
CALL
RET

RES
RES
DELAY
RES
;INITALIZE LCD
DPTR,#LCDCODE1
LCD_IN
CLEAR_RAM
R1,#00H
R2,#00H
CURSOR

;Y
;X

LCD_IN:
MOV
MOV

A,#00H
R6,#00H

INC
MOVC
CJNE
RET

R6
A,@A+DPTR
A,#2FH,NEXT3

CALL
MOV
AJMP

LCD_COM
A,R6
LOOP3

LOOP3:

NEXT3:

DISPLAY:
MOV
DO:
PUSH
PUSH
MOV
BACK:
MOV
MOVC
CALL
CALL
CALL
DJNZ
POP
POP
INC
DJNZ
RET

;DISPLAY IMAGE
R7,#06H
DPL
DPH
R6,#84
A,#00H
A,@A+DPTR
ROTATE
LCD_DATA
IN_DP
R6,BACK
DPH
DPL
DPTR
R7,DO

IN_DP:
MOV

R5,#06H

INC
DJNZ
RET

DPTR
R5,GO1

CLR
MOV

C
R3,#8H

RLC
MOV

A
53H,A

GO1:

ROTATE:
ROT:

PUSH
MOV
RRC
MOV
POP
MOV
DJNZ
MOV
RET
LCD_COM:
CLR
CLR
NOP
CALL
SETB
NOP
RET
LCD_DATA:
SETB
CLR
NOP
CALL
NOP
SETB
RET
CLOCK_DATA:
CLR
MOV
HERE1:
CLR
RLC
MOV
in
SETB
DJNZ
of 8 bits)
RET

53H
A,R1
A
R1,A
53H
A,53H
R3,ROT
A,R1
;ROUTINE TO SEND LCD COMMAND
D_C
SCE
CLOCK_DATA
SCE

;ROUTINE TO SEND LCD DATA


D_C
SCE
CLOCK_DATA
SCE
;ROUTINE FOR SPI
C
R5,#08
SCK
A
SDIN,C

;low on serial clock


;rotate left, with MSB of ACC to carry
;write bit value in carry to serial data

SCK
R5,HERE1

;high in serial clock


;decrement r5 by 1 (1 bit transfered out
;repeat until full 8 bit is written

CURSOR:
MOV
ANL
ORL
CALL
MOV
ANL
ORL
CALL
RET

A,R1
A,#07H
A,#40H
LCD_COM
A,R2
A,#7FH
A,#80H
LCD_COM

CLEAR_RAM:
MOV
MOV
CALL
CLR
MOV
LOOP:
MOV

R1,#00H
R2,#00H
CURSOR
C
R6,#06

;SET DISPLAY CURSOR


;Y POINTER

;X POINTER

;CLEAR RAM

R7,#84

LOOP1:
MOV
CALL
DJNZ
DJNZ
RET
LCD_STRING:
MOV
MOV
NEXT:
INC
MOVC
CJNE
RET
NEXT1:
CALL
MOV
CALL
MOV
AJMP

A,#00H
LCD_DATA
R7,LOOP1
R6,LOOP
;ROUTINE TO DISPLAY MESSAGE
A,#0H
50H,#0H
50H
A,@A+DPTR
A,#2FH,NEXT1
TABLE_PTR
A,#00H
LCD_DATA
A,50H
NEXT

TABLE_PTR:
PUSH
PUSH

DPL
DPH

MOV
MOV
MUL
SUBB
JNC
DEC

DPTR,#TABLE
B,#05H
AB
A,#0A0H
HERE2
B

MOV
CJNE
AJMP
INC
DJNZ

R4,A
R4,#00H,L1
L3
DPTR
R4,L1

CLR
MOV
CJNE
AJMP
INC
DJNZ

C
R4,B
R4,#00H,L2
L4
DPH
R4,L2

MOV
MOV

R6,#00H
A,#00H

INC
MOVC
CALL
MOV
CJNE
POP
POP
RET

R6
A,@A+DPTR
LCD_DATA
A,R6
R6,#05H,NEXT2
DPH
DPL

HERE2:

L1:
L3:

L2:
L4:
NEXT2:

LCDCODE1:

DB
DB
DB
DB
DB
DB
DB
DB
DB
MESSAGE:
DB

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

" GOOD DAY !/"

;Max. character 14 per message

TABLE:
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB

000H,000H,000H,000H,000H,
000H,000H,05fH,000H,000H,
000H,007H,000H,007H,000H,
014H,07fH,014H,07fH,014H,
024H,02aH,07fH,02aH,012H,
023H,013H,008H,064H,062H,
036H,049H,055H,022H,050H,
000H,005H,003H,000H,000H,
000H,01cH,022H,041H,000H,
000H,041H,022H,01cH,000H,
014H,008H,03eH,008H,014H,
008H,008H,03eH,008H,008H,
000H,050H,030H,000H,000H,
008H,008H,008H,008H,008H,
000H,060H,060H,000H,000H,
020H,010H,008H,004H,002H,
03eH,051H,049H,045H,03eH,
000H,042H,07fH,040H,000H,
042H,061H,051H,049H,046H,
021H,041H,045H,04bH,031H,
018H,014H,012H,07fH,010H,
027H,045H,045H,045H,039H,
03cH,04aH,049H,049H,030H,
001H,071H,009H,005H,003H,
036H,049H,049H,049H,036H,
006H,049H,049H,029H,01eH,
000H,036H,036H,000H,000H,
000H,056H,036H,000H,000H,
008H,014H,022H,041H,000H,
014H,014H,014H,014H,014H,
000H,041H,022H,014H,008H,
002H,001H,051H,009H,006H,
032H,049H,079H,041H,03eH,
07eH,011H,011H,011H,07eH,
07fH,049H,049H,049H,036H,
03eH,041H,041H,041H,022H,
07fH,041H,041H,022H,01cH,
07fH,049H,049H,049H,041H,
07fH,009H,009H,009H,001H,
03eH,041H,049H,049H,07aH,
07fH,008H,008H,008H,07fH,

;HEX ARRAY TO DISPLAY CHARACTERS


;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;

20
21
22
23
24
25
26
27
28
29
2a
2b
2c
2d
2e
2f
30
31
32
33
34
35
36
37
38
39
3a
3b
3c
3d
3e
3f
40
41
42
43
44
45
46
47
48

space
!
"
#
$
%
&
'
(
)
*
+
,
.
/
0
1
2
3
4
5
6
7
8
9
:
;
<
=
>
?
@
A
B
C
D
E
F
G
H

DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB

000H,041H,07fH,041H,000H, ; 49 I
020H,040H,041H,03fH,001H, ; 4a J
07fH,008H,014H,022H,041H, ; 4b K
07fH,040H,040H,040H,040H, ; 4c L
07fH,002H,00cH,002H,07fH, ; 4d M
07fH,004H,008H,010H,07fH, ; 4e N
03eH,041H,041H,041H,03eH, ; 4f O
07fH,009H,009H,009H,006H, ; 50 P
03eH,041H,051H,021H,05eH, ; 51 Q
07fH,009H,019H,029H,046H, ; 52 R
046H,049H,049H,049H,031H, ; 53 S
001H,001H,07fH,001H,001H, ; 54 T
03fH,040H,040H,040H,03fH, ; 55 U
01fH,020H,040H,020H,01fH, ; 56 V
03fH,040H,038H,040H,03fH, ; 57 W
063H,014H,008H,014H,063H, ; 58 X
007H,008H,070H,008H,007H, ; 59 Y
061H,051H,049H,045H,043H, ; 5a Z
000H,07fH,041H,041H,000H, ; 5b [
002H,004H,008H,010H,020H, ; 5c Yen Currency Sign
000H,041H,041H,07fH,000H, ; 5d ]
004H,002H,001H,002H,004H, ; 5e ^
040H,040H,040H,040H,040H, ; 5f _
000H,001H,002H,004H,000H, ; 60 `
020H,054H,054H,054H,078H, ; 61 a
07fH,048H,044H,044H,038H, ; 62 b
038H,044H,044H,044H,020H, ; 63 c
038H,044H,044H,048H,07fH, ; 64 d
038H,054H,054H,054H,018H, ; 65 e
008H,07eH,009H,001H,002H, ; 66 f
00cH,052H,052H,052H,03eH, ; 67 g
07fH,008H,004H,004H,078H, ; 68 h
000H,044H,07dH,040H,000H, ; 69 i
020H,040H,044H,03dH,000H, ; 6a j
07fH,010H,028H,044H,000H, ; 6b k
000H,041H,07fH,040H,000H, ; 6c l
07cH,004H,018H,004H,078H, ; 6d m
07cH,008H,004H,004H,078H, ; 6e n
038H,044H,044H,044H,038H, ; 6f o
07cH,014H,014H,014H,008H, ; 70 p
008H,014H,014H,018H,07cH, ; 71 q
07cH,008H,004H,004H,008H, ; 72 r
048H,054H,054H,054H,020H, ; 73 s
004H,03fH,044H,040H,020H, ; 74 t
03cH,040H,040H,020H,07cH, ; 75 u
01cH,020H,040H,020H,01cH, ; 76 v
03cH,040H,030H,040H,03cH, ; 77 w
044H,028H,010H,028H,044H, ; 78 x
00cH,050H,050H,050H,03cH, ; 79 y
044H,064H,054H,04cH,044H, ; 7a z
000H,008H,036H,041H,000H, ; 7b <
000H,000H,07fH,000H,000H, ; 7c
000H,041H,036H,008H,000H, ; 7d >
010H,008H,008H,010H,008H, ; 7e Right Arrow ->
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
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB

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

DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB

000H,000H,002H,000H,003H,0f0H,
000H,000H,000H,000H,003H,0f0H,
000H,000H,000H,000H,003H,0f0H,
000H,000H,000H,000H,000H,000H,
000H,000H,000H,000H,000H,000H,
0feH,000H,07cH,0feH,0feH,0c0H,
070H,000H,082H,010H,092H,020H,
00eH,0feH,082H,020H,092H,01eH,
070H,000H,082H,058H,092H,020H,
0feH,000H,044H,086H,000H,0c0H,
000H,000H,000H,000H,000H,000H,
000H,000H,000H,000H,000H,000H,
000H,000H,000H,000H,000H,000H,
000H,000H,000H,000H,000H,000H,
000H,000H,000H,000H,000H,000H,
000H,000H,000H,000H,000H,000H,
000H,000H,000H,000H,000H,000H,
000H,000H,000H,000H,000H,000H,
000H,000H,000H,000H,000H,000H,
000H,000H,000H,000H,000H,000H,
000H,000H,000H,000H,000H,000H,
000H,000H,000H,000H,000H,000H

Potrebbero piacerti anche