I couldn't follow what you did as to which wiring you were trying to use with which
interface (SR3W vs SR and what constructors)
I haven't ever looked very closely at or used those diagrams on fm's page.
After looking at them I did notice that the wiring figure and example code under the "Three wire latch Shift Register Schematic."
is wrong.
It is mixing up SR and SR3W and has other errors.
There is no way to make SR3W drive E from an arduino pin, it simply does not work that way.
SR3W drives E with a shift register output pin rather than driving it directly so therefore
there is no way to configure SR3W to work with the "Three wire latch Shift Register Schematic"
or any other wiring that requires E to be driven directly from an Arduino pin.
SR can drive E drive directly.
However, SR does not allow configuring which shift register output pins can be connected to which LCD pins.
So if you want run in 3 wire mode where the arduino drives E you must use SR
and the 595 must be wired up the way that SR interface wants it to be wired up.
SR always wants the internal bits assigned as follows:
0 - not used
1 - (backlight control in coming update)
2 - LCD RS
3 - D4
4 - D5
5 - D6
6 - D7
7 - EN - in 2 wire mode
The 595 can be wired up run in latching mode or non-latching/free-running mode.
In order to use 2 wire mode, the 595 must run in non latching mode.
In 3 wire mode the 595 can be run in either mode.
The 595 has lots of internal delay so when running in non-latching mode,
because of the internal delays, the output bits end up being 1 clock behind which
means that the output bits show up on pins all shifted down 1 bit/pin.
The schematic that I provided above was for 3 wire mode with the 595 wired in non latching mode
to match how it is wired/connected in 2 wire mode.
so technically while all the internal 595 bits are still the same, the output pins are all shifted down
when making the connections to the LCD.
(This is noted in the comment above the ascii art schematic)
If the 595 is connected in in latching mode then all the output pins will
be different than what I provided.
So the 595 can wired up two different ways and still work with the SR interface code.
The difference is whether the part is being run in latching mode or not.
As luck would have it, the schematic diagram jpg image on fm's page
happens to have the 595 wired up in latching mode and with the pins
connected in a way so it will work with SR.
So here are the two different ways to wire up the 595 to work with SR using 3 Arduino pins:
(I updated the ascii art to include both)
// 74HC595 wired in "non latching mode" for SR 3 wire operation
//
// 74HC595 (VCC)
// +----u----+ |
// (LCD RS)------------1-|Q1 VCC|-16-+
// (LCD D4)------------2-|Q2 Q0|-15-------------(BL circuit)
// (LCD D5)------------3-|Q3 SER|-14-------------(data pin)
// (LCD D6)------------4-|Q4 /OE|-13--(gnd)
// (LCD D7)------------5-|Q5 RCLK|-12-------+
// | | |
// 6-|Q6 SCLK|-11-------+-----(clock pin)
// 7-|Q7 /MR|-10--(VCC)
// +-8-|GND Q6'|--9
// | +---------+
// | 0.1uf
// (gnd)-----||----(VCC)
//
// (enable pin)-----------------------------------(LCD Enable)
//
// (LCD RW)--(gnd)
//
// ---------------------------------------------------------------------------
//
// 74HC595 wired in "latching mode" for SR 3 wire operation
//
// NOTE: pin 11 is not connected to pin 12
//
// 74HC595 (VCC)
// +----u----+ |
// (BL circuit)--------1-|Q1 VCC|-16-+
// (LCD RS)------------2-|Q2 Q0|-15
// (LCD D4)------------3-|Q3 SER|-14-------------(data pin)
// (LCD D5)------------4-|Q4 /OE|-13--(gnd)
// (LCD D6)------------5-|Q5 RCLK|-12--------+
// | | \
// (LCD D7)------------6-|Q6 SCLK|-11----------)--(clock pin)
// 7-|Q7 /MR|-10--(VCC) /
// +-8-|GND Q6'|--9 |
// | +---------+ |
// | 0.1uf |
// (gnd)-----||----(VCC) |
// |
// (enable pin)---------------------------------+-(LCD Enable)
//
// (LCD RW)--(gnd)
Notice that the latching mode schematic above matches
the pin wiring in the schematic jpeg image for "Three wire latch Shift Register Schematic" on fm's page.
--- bill