I few weeks ago I got an random LCD from a lucky dip bag in Maplin. There were no markings on the outer case identifying it, and when I took it apart all I could find was LCM015.
Very few google results turned up anything useful, most of them were others also trying to make one work. One of them had a link to a website that had a picture that looks very similar, though the site was in German. Luckily Chrome’s auto translate feature kicked in.
The site listed the purpose of each pin, and that to communicate with the LCD I would need to communicate using the I2C pins to set the values on the LCD’s HD44780 pins. The interface is a IC PCF8574, so after looking up the datasheet, I found that it has a maximum clock rate of 100KHz, would need to communicate in 4bit mode.
I didn’t have a PIC chip that supported I2C, so I used a PIC16F627, and wrote some code to do the I2C (which was more complicated than I though due to the fact it was in assembly). It didn’t work, infact the only way I could get any response was to a high signal on all but the ground pin.
I decided the reason it didn’t work was because the pull-up resistors were insufficient, but even after disabling pull up resistors and using my own external ones, it still didn’t work. So I ordered a PIC24FJ64GB002 from Farnell, as well as an ARM11 and an OLED display to experiment with later.
I haven’t used a 24F before, and thought it worked the same as the 16F, but the I2C instead of outputting a high signal uses an open-drain pin system, so I needed to apply my own pull-up resistor again, my new oscilloscope was handy in identifying this problem though reading the datasheet would have been easier.
I much prefer the open drain since I can supply any voltage I want to the I2C pins they support 5V, but the chip is 2.5V. I chose to supply the 5V needed by USB, and the IC by the PicKit 3.
Still however, it was not working. Then it suddenly hit me, that the display only lit up when I supplied a high signal to the last pins. The german website had the pins backwards. I don’t know if it was the picture, or just another LCD, but after reversing it, it worked straight away.
You may notice there is another 8 pin chip in my circuit, that is an EEPROM I was using to experiment with saving and loading memory. I’ve uploaded a corrected pin layout. I’m sure the 16F probably would have worked now.
Now I have it working, I just need to figure out how to control the battery meter and the other OSD elements.