SOLVED: How to wire an mjkdz I2C board to a 20 x 4 LCD

farkuino:
And I saw the other posts about changing the constructor, and asked wtf they would do that and not just keep one standard way of doing it.

For this type of board there is no standard.
The standard interfaces are i2c and hd44780. What is in the middle on the PCB
to connect between the two is left up to the implementor and could be done
in many different ways.

I'm curious what is in the docs they sent you.

But you really won't need it.
It should be possible to figure out everything other than the i2c address
from carefully looking at the PCB.
It uses a PCF8574 which you can tell because it has 16 pins.
The MCP23008 (another popular i2c chip used has 18 or 20 pins depending on package)
The 8574 has a known pinout.
The PCB connects to a hd44780 LCD 16 pin interface. Also a known pinout.
You can find datasheets for the pin definitions of each of those interfaces.
The PCB is a simple two layer board which allows seeing nearly all the traces
(There may be some that dip under the PCF8574).
Usually you can see enough of the traces to figure which
pins on the PCF8574 are hooked up to which LCD pins.
If you can't, sometimes you may have to use an ohm meter to test continuity.
From that you can tell which PCF8574 output port bits are attached to the various LCD pins.

Its a good exercise into learning how to read datasheets
and examining hardware to get a true understanding of
how the board is wired up and works.

When using low cost hardware, which often comes with little to no
support or documentation, this kind of exercise is often necessary.

No better time to jump in feet first....

Here is a link to a PCF8574 datasheet:
http://www.nxp.com/documents/data_sheet/PCF8574.pdf
The pinout you are looking for is on page 5.
You need to figure out what P0 to P7 are hooked to.
That is PCF8574 pins 4,5,6,7,9,10,11,12
Those are the output port bits. How they are connected
to the hd44780 pins determines what goes in the constructor.
If P0 is connected to LCD D4 then 0 is the bit number for D4 in the
constructor.
The constructor uses output port bit numbers not PCF8574 pin numbers.
P0 is 0, P1 is 1, etc...

--- bill