This is a simple example of how to control a character LCD module through the parallel port. This code does not read back from the module but rather just implements time delays according to the spec sheet. This works fine for me but YMMV (Your Mileage May Vary).
This code assumes the following:
I wrote and tested this software for the Seiko L2014 LCD module but it should work with any 4x20 module without modification and with other modules with little modification.
More info about the Seiko L2014 can be found on eio.com's page: http://www.eio.com/lcd2014.htm