Using Siemens S65 LCD (LS020)

S65 LCD Test Board

All examples of S65 LCD using on this page are for the following test board. I'm using this board to check my code. The board has an AVR (ATmega16) controller running at 16MHz, 3.3V voltage regulator to power an LCD,
the resistive dividers to shift the voltage level from 5V to about 3.3V to interface with LCD via SPI, small LED to indicate 5V voltage, ISP-connector to program the controller, other parts. Maybe the board is not best solution, but it's enough to work with code.
Also the board has a metal frame to snap an LCD. There is no need to solder the LCD with any wires. The metal frame was taken from a S65 phone's board and it's very useful thing.

You should know, there are three types of LCD for Siemens S65 phone. First of all this board is intended for testing LS020, but LPH88 may be used too. L2F50 will not work with this board, because it requires to connect pin 8 to VCC (I tested with 3.3V).
LS020 is my favorite type, because this type of LCD does support 8-bit host mode, which is faster than 16-bit host mode. There is only one problem: there is no specification of LS020 (I mean commands), so something we will try to define experimentally.
I should say that the basic info about the S65-displays at all was taken from Cristian Kranz's site (currently unavailable).

LS020 LCD pinout:

Note: the resistors R3 and R4 in the schematic have larger values because the RST-line is used only for initialization. Thus this solution decreases the common power consumption. This may be relevant for battery-powered devices.
The pin 8 of the LCD (LS020) has really no effect. There's no need to connect it.

There is still a lot of unknown registers with unclear behavior. The register RE8h allows to enable 8bit, 16bit or 24bit (yes, 24bit-mode is reality!) host mode with or without BGR-function. The BGR function means that B and R bits are swapped when the function is enabled. This is very interesting and useful register.

LCD Host modes

Register RE8h

1st Databyte

2nd Databyte

3rd Databyte

0x10

x

x

B5

B4

B3

B2

B1

B0

R3

R2

R1

R0

G5

G4

G3

G2

x

x

x

x

x

x

R5

R4

0x50

x

x

R5

R4

R3

R2

R1

R0

B3

B2

B1

B0

G5

G4

G3

G2

x

x

x

x

x

x

B5

B4

0x20

x

x

B5

B4

B3

B2

B1

B0

x

x

G5

G4

G3

G2

G1

G0

x

x

R5

R4

R3

R2

R1

R0

0x60

x

x

R5

R4

R3

R2

R1

R0

x

x

G5

G4

G3

G2

G1

G0

x

x

B5

B4

B3

B2

B1

B0

0x70

B5

B4

B3

B2

B1

B0

x

x

G5

G4

G3

G2

G1

G0

x

x

R5

R4

R3

R2

R1

R0

x

x

0x30

R5

R4

R3

R2

R1

R0

x

x

G5

G4

G3

G2

G1

G0

x

x

B5

B4

B3

B2

B1

B0

x

x

0x08

G2

G1

G0

B5

B4

B3

B2

B1

R5

R4

R3

R2

R1

G5

G4

G3

not required

0x48

G2

G1

G0

R5

R4

R3

R2

R1

B5

B4

B3

B2

B1

G5

G4

G3

not required

0x0C

R5

R4

R3

R2

R1

G5

G4

G3

G2

G1

G0

B5

B4

B3

B2

B1

not required

0x00

R

R

R

G

G

G

B

B

not required

not required

0x40

B

B

G

G

G

R

R

R

not required

not required

The table may contain inaccurate information. Use as a reference only.

Internal Resistors

How does a controller define which type of LCD is connected? Very simply - by means of internals resistors between the pins.
But it's possible only when a host controller has direct connection without any buffers, voltage shifters etc. The following picture will explain the matter.

A host controller may check these interconnections before starting initialization and decide which driver to use.