Newhaven NHD-C0220AZ-FSW-FTW

I set E, RW low and RS stays low to write commands (setting mode to 1 means RS low, if mode sees a 0 then RS sees a 1 and thats when we write to DDRAM), then E goes high, data gets pushed through and then E goes low and high...this is how I read it. I hope that is correct.

That is not correct. The diagrams on page 8 of your datasheet show essentially the same sequence of events as shown on the datasheets for all of the other controllers (I didn't check the actual times, just the sequence). My description in the last paragraph of reply #1 describes what is happening.

Since the actual data transfer occurs on the falling edge of the 'E' pulse you should change the logic analyzer configuration to put that point near the center of the display. That way we can check the what is happening both before and after the data transfer.

I didn't read your code, but most likely it requires some changes. Make sure you use the 'Code' tags when you post your corrected code. You should consider just driving R/W low at the beginning of your program and leaving it there since you are not ready to deal with the busy flag at this point.

Don