aboutsummaryrefslogtreecommitdiffstats
path: root/README.HD44780
blob: 5fb762edd615291d6d46e37b7ffb8ce8d2ea22ca (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
#
# $Id: README.HD44780,v 1.3 2001/03/14 15:14:59 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.

At least 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 had to be calibrated (see Configuration below).
Since 0.98 there are two new delay loops, one based on the processor's TSC (Time Stamp Counter),
one based on gettimeofday(). lcd4linux decides automatically which one to use (it prefers the
TSC method, but falls back to gettimeofday() if neither the tsc flag nor the MHz value is set 
in /proc/cpuinfo).

The driver knows of two ways of controlling the parallel port: The (old, ugly and unportable) raw
programming of ports, and the new, cool, great ppdev() style. You decide which one to use by 
specifying either a hexadecimal value or a device file with the 'Port' entry in the config file.

Note that the old port programming only works with standard ports (0x3f8, 2f8,...), but not 
with PCI parallel port cards.

ppdev requires kernel 2.4. The configure script detects if you have the required include files, 
and deactivates ppdev if they are not there.

You should use ppdev whenever possible. Raw port access may be dropped someday. 


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: either the hexadecimal address of the parallel port (e.g. 0x378)
      or a ppdev device (e.g. /dev/parports/0)

Size: [columns]x[rows] e.g. "16x2"


#ifdef USE_OLD_UDELAY

Delay: calibration of the delay loop, loops per microsecond
       THIS IS NO LONGER NECESSARY!

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
AMD Athlon  1010 MHz, 2012 BogoMips:  505 

#endif


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!