I have an idea to connect 2 or 3 LCDs to 1 LPT port. With a modified display driver I think it would work in smartie.
Here is the schematic.
If you only wanted 2 LCDs, you could add a transistor in place of the third LCDs enable pin on the LPT and switch the backlight and/or the main power with it.
I think you have a bug in the power and/or R/W*. Vdd is +5v, Vss is ground. If you only want to write to the LCD's, not read, then R/W* should be ground also.
Vss is the power rail for the "source" terminals of MOSFET devices (like "emitter" on bipolar devices), which is the circuit ground. Vdd is the MOSFET "drain" (like "collector" on bipolar) power rail and is the positive supply side. Can be confusing!
On the parallel port pinout:
D0-D1 = pins 2-9 (data bits)
C0 = pin 1 (/strobe, inverted)
C1 = pin 14 (/autofeed, inverted)
C2 = pin 16 (/init, non-inverted)
I'm not sure how well this would work in Smartie (if at all), since Smartie can only control 1 LCD per instance, and then you'd have 2-3 instances of Smartie trying to access the same port. I don't know whether that works with the I/O driver.
PS: AJ, can you upload the schematic as a GIF or PNG file? The forum doesn't seem to recognise BMPs as image files (they're not standard for the web).
I think I might try to write a diplay driver instead of a whole new prog. But how would I manage the 2/3 diff displays in smartie? Is it possile to write a display driver in VB.Net?
I don't know if it's possible to have the LCDs accessed by 3 different instances of Smartie (possibly not), but you may be able to treat 2 or 3 smaller displays as one large display in software. Eg 2 LCDs each of 4x20 could be handled by Smartie as one 4x40 LCD. The driver would decide which LCD to write to depending on the "cursor" location.
I tried writing a display driver in VB.NET (Express 2005) but got nowhere - I couldn't figure out any way to make a DLL with exported functions. You can make a class library, but that only works for regular Smartie plugins, not drivers.
I've used VisualC++ 6 and Visual C++.NET Express 2005 to write plugins for Smartie.
Delphi would be best for a writing a parallel port driver, since the native Smartie drivers are in Delphi and there's some fiddly low-level port access.
what if I have 2/3 instances of smartie each with a diplay driver that sends commands to a seperate program. The program then sends the commands seperately to the lcd.
sounds like a good idea? Can anyone think of any problems I might have.
If you want to control just two displays just use HD44780 driver and select 4x40 as display.
Use the schematics for 4x40 displays and connect db-0-7, rw, rs to both displays and e1 and e2 as in the schematic.
Worked fine for me when I used 2 24x2 displays. connected to one port.
Each instance of smartie can access just one port. So for each instance you'll have to assign a different parallel port (or serial/whatever). More instances can't use one port, as they must access it directly.
If you still wand to do your own driver, then use the displays in 4-bit mode and you will get 4 extra lines that can be used for extra displays. It will be 2x slower though to send a character.