# # $Id: README.HD44780,v 1.2 2000/04/19 04:44:20 reinelt Exp $ # This is the README file for the HD44780 display driver for lcd4linux This driver supports all display modules based on the Hitachi HD44780 chip. These displays are made by different manufactures, and come in various sizes. The following types are known to work: DataVision DV16244: 2 lines by 16 characters Nan Ya NLC 08x2x06: 2 lines by 8 characters The displays are connected to the parallel board (see Wiring below), and are quite timing-critical. There's no way to delay a usermode program under Linux for e.g. 40 usec, so we have to do busy-waiting. This is done in a delay loop, which has to be calibrated (see Configuration below). The driver supports vertical, horizontal and split bars (two independent bars in one line), all bar types can be used simultanously. As the displays only have 8 user-defined characters, the needed characters to display all the bars must be reduced to 8. This is done by replacing characters with similar ones. To reduce flicker, a character which is displayed at the moment, will not be redefined, even if it's not used in this run. Only if the character compaction fails, this characters will be redefined, too. Configuration: The driver needs the following entries in lcd4linux.conf: Display: HD44780 Port: the hexadecimal address of the parallel port (e.g. 0x378) Size: [columns]x[rows] e.g. "16x2" Delay: calibration of the delay loop, loops per microsecond It is very important to use a correct delay value, otherwise you will get only junk on the display. lcd4linux has a switch '-d' where it helps you to find the correct value. Run 'lcd4linux -d' several times on a otherwise idle machine, and use the maximum value. If you encounter display problems, increase this value. But don't take it too big, lcd4linux will get slow, and you're burning CPU cycles. The delay value is defined by your CPU model and clock frequency (it looks like it's your 'BogoMips' value divided by 2, because we use a similar delay loop than the kernel does). Here are some examples: Pentium MMX, 133 MHz, 106 BogoMips: 54 Pentium MMX, 166 MHz, 333 BogoMips: 166 Celeron, 333 MHz, 333 BogoMips: 166 Pentium III, 600 MHz, 600 BogoMips: 300 Wiring: There are two basic wiring modes for HD44780-Displays: a 4 bit mode (used by lcdproc) and a 8 bit mode (used by most other packages). At the moment we only support the 8 bit mode, but I'm working on the 4 bit mode, too. The main difference is that the 8 bit mode transfers one byte at a time, but the HD44780 needs some control signals, so some of the parallel port control lines are used for this. The 4 bit mode uses only 4 bits for data (so a byte has to be transferred in two cycles), but you can use the other 4 bits for the control signals. Normally a HD44780-based display have 14 or 16 pins, where pins 15 and 16 are used for backlight. Power (+5V) must be supplied via pins 1 and 2, be careful not to change polarity, you will destroy your display! Pin 3 is used to control the contrast, you can either hardwire it to GND (pin 1) or place a potentiometer (10k-20k) between pins 1 and 2, and connect pin 3 to the slider. Note that the data bits are called DB0..DB7 on the display, but DB1..DB8 on the parallel port! Here comes the wiring diagram for the 8 bit mode: --- Display --- --- DB25 --- --- comment --- Name Pin Pin Name GND 1 18 GND GND of power supply, too! +5V 2 - power supply only LCD drive 3 - see above RS 4 14 Auto Feed register select, 0=data, 1=command R/W 5 18 GND hardwired to 0, write data only Enable 6 1 Strobe toggled when data is valid DB0 7 2 DB1 data bit 0 DB1 8 3 DB2 data bit 1 DB2 9 4 DB3 data bit 2 DB3 10 5 DB4 data bit 3 DB4 11 6 DB5 data bit 4 DB5 12 7 DB6 data bit 5 DB6 13 8 DB7 data bit 6 DB7 14 9 DB8 data bit 7 +5V 15 - power for backlight GND 16 - power for backlight 10-13 not connected 15-17 not connected 19-25 not connected Wiring diagram for 4 bit mode: soon to come!