Panda II and LCD Wiring

Hi all, I’ve searched and searched and can’t find a solid lead.

I’m attempting to use a generic 128x64 graphical LCD with a Panda II. The LCD can do serial or parallel so I’m attempting to hook it up via SPI. I have the following wiring currently set up:
LCD R/W → Panda MOSI1 (pin 11)
LCD E → Panda SCK1 (pin 13)
LCD RS-> Panda PWM1 (pin 10)
LCD RST → Panda PWM2 (pin 9)
LCD PSB → Gnd (this selects serial communications mode from what ive learned)
LCD VSS - Gnd
LCD VDD - Panda 3.3v

and i have the backlight properly wired.

I’m using the GHI provided driver (FEZ_Extensions_Large128x64Display.cs). This is my initialization code, so i think i have the correct pins identified:

FEZ_Extensions.Large128x64Display.Initialize(FEZ_Pin.Digital.Di9, FEZ_Pin.Digital.Di8, FEZ_Pin.Digital.Di10,
SPI.SPI_module.SPI1);

My code properly uploads to the Panda II, the LCD is lit up but i get no text or graphical display. Blank screen only. I’m attempting just a simple single line of code:
FEZ_Extensions.Large128x64Display.Print(2, 2, “FEZ is Easy!!”);

Any suggestions or help ideas?
Thank you!

P.s. I used this page as a guide on how to wire up the lcd since this is the exact lcd I have:

Typically, when these displays are initialized, you will see a lot of random pixels until you write something to the display. This happens after you send the proper initialization commands.

Welcome to the community.

Gus, I’m not seeing any pixels at all during start-up (neither before nor after the initialization step).
I know the LCD is working properly because if it sits for about 10 minutes it starts up something like a screensaver that shows a moving face and geometric shapes (the screensaver stops when i reexecute the initialization from the Panda)

Are you implying maybe the initialization commands in the Large128x64Display class are incorrect?

Thanks!

My first question was whether there was much difference in the “graphical” and “large” LCD code, and whether there was a specific reason you chose “large”?

https://www.ghielectronics.com/downloads/FEZ/Extension/FEZ_Extensions_Large128x64Display.cs

https://www.ghielectronics.com/downloads/FEZ/Extension/FEZ_Extensions_Graphical128x64_UEXT_Display.cs

I tried both classes. No luck with either one. The main difference between the two is the ChipSelect Active_state in the SPI configuration. I tried both true and false and various settings for the SetupTime and HoldTime and still nothing.

Starting to wonder if it’s a defective LCD.

On a side note, the driver classes both have a parameter for initialization that is the CommandPin (which is set to Pin8 for me). I don’t have any wire going from Pin8 to the LCD, should I? What’s it for?

This LCD seems to use the ST7920 controller. Has anyone interfaced that controlled with a Fez?

the initialisation code seems like it’s different (perhaps that’s slightly different revisions or different controller processors, who knows).

If you look in the driver, the “Command” pin is the _DC object. This object is used many times, it’s set and cleared before sending commands versus data, so it’s critical that you figure out how to differentiate that for your specific controller. That’s what I’d try to do, because you really do need to figure that out before you will get any response from it.

and PS: welcome to the forum !!!

yup, you’re really not going to start with the driver for the GHI displays here. Time to go to page 26 (of 49) of the manual and figure it out from scratch. There’s not much similarity to anything else that I’ve seen.

Having said that, go on, just use the 4-bit parallel mode, it looks like that would be almost exactly the same as a 20x4 (20x2, 16x2 etc) text LCD

Search in Codeshare. There is a driver for that controller in there. It might get you going quicker and at least confirm that the display and wiring is correct.

nice one Dave. (hope you’re watching the V8’s this weekend)

https://www.ghielectronics.com/community/codeshare/entry/569

Thanks Dave! That’s put me down the right path. Works great, wiring is correct and i’m finally getting display data. Now I just need to write my own driver that is a bit easier to use than that raw bit formatting stuff.