I recently obtained a very old mobile phone from a friend. The battery was dead, so I dismantled it and to my surprise found a display with soldered contacts. In other mobile phones the display was connected via a conducting polymerpad, which was extremly difficult to use on selfmade circuitboards.
Googling the name of the display brought up a site with pinout and a link to the datasheet of the driverchip.
Using my I²C-Adapter and my I²C-Control program the testing was easy. Just look up the commands in the datasheet, put together a sequence and run it. The display works well and even the illumination is intact.
Pinout (looking at the back of the display with the black blob to the top right):
- – LED1
- – LED2
- VC (Contrast)
- VDD (+5V)
- + LED 1&2 (+5V)
Connect SDA, SCL, 5V supply and a 10k poti between 5V and GND and the centertap to VC and you are ready to go.
The adress of the display is 01110100 for writing data.
After sending the adress you first send a control byte, which determines if the following bytes are commands or characters. Sending 00000000 selects the commands. Then we set the datalength to 8bit, the number of lines to 4 and the voltage generator control to V0=VDD-0.8V by sending 00001110. The display is then switched on by sending 00001111, which also sets the cursor position and blinking. The following byte ( 00000110 ) configures the entrymode of the display to increment the adress after every written character and to freeze the display (and not shift it). Then we only have to specify in which of the four lines we want the following characters to be written. This is done by setting the DDRAM adress to one of the following values: 0x00 (1st line), 0x20 (2nd line), 0x40 (3rd line), 0x60 (4th line).
Then you send a repeated START condition, the adress again, a controlbyte which tells the display that all following data are characters ( 01000000 ).
Then you can send arbitrary characters. The character-table is on page 15 in the datasheet, and the commands are on pages 23 and 24.
Clearing the display is done by sending 00000001 as a command.
The driverchip is called PCF2116. The datasheet can be found here.
I will post a complete sequence that clears the display and writes ‘Linex’ (x = 1..4) to the four lines soon.
For now just a photo of the result: