]> sigrok.org Git - sigrok-dumps.git/blob - display/hd44780/README
611228568f460faabb3e5ad9c93937ead4d7f37b
[sigrok-dumps.git] / display / hd44780 / README
1 -------------------------------------------------------------------------------
2 Hitachi HD44780 display controller, 4-bit mode, initialization sequence
3 -------------------------------------------------------------------------------
4
5 This capture contains the initialization sequence of an Hitachi HD44780
6 display controller which is very popular for 2x16, 4x20, and similar
7 character oriented display modules.
8
9 The specific hardware setup that got recorded uses 4-bit mode, which
10 means that data gets communicated on lined D4-D7 only, and D0-D3 are
11 not connected.
12
13
14 Logic analyzer setup (hd44780-reset-init-hello.sr)
15 --------------------------------------------------
16
17 The capture was taken with an ASIX Sigma2 logic analyzer, sampling 8
18 logic channels at a rate of 50MHz:
19
20   Probe       HD44780
21   -------------------
22   1           IR (infrared remote control, idle, not HD44780 related)
23   2           RS (selects "commands" and "display data" mode)
24   3           RW (read/write, always low for write, fixed in HW)
25   4           E (enable, falling edge clocks data transfers)
26   5           D4 (data lines ...)
27   6           D5
28   7           D6
29   8           D7
30
31
32 hd44780-reset-init-hello.sr
33 ---------------------------
34
35 See https://en.wikipedia.org/wiki/Hitachi_HD44780_LCD_controller for a
36 list of display controller commands, and especially the 'Mode Selection'
37 section which discusses the synchronization phase.
38
39 The sequence demonstrates the following steps:
40 - Synchronize to the LCD controller, cope with it being in any arbitrary
41   state from previous execution.
42 - Configure the LCD controller hardware to 4-bit mode, clear the screen
43   and setup other parameters.
44 - Print two text labels: "Hello LCD" and "counter", start printing
45   counter values.
46
47 When a dedicated HD44780 decoder is not available, the 'parallel' decoder
48 can extract the most basic information: Clock on E (falling edge), D4-D7
49 of the display corresponds to D0-D3 of the decoder (D4-D7 of the decoder
50 are not connected). Words consist of 8 bits (span 2 bus cycles), and are
51 in big endian format.
52
53
54 Logic analyzer setup (other files)
55 ----------------------------------
56
57 The capture was taken with a Saleae Logic clone (mostly at 200kHz):
58
59   Probe       HD44780
60   -------------------
61   0           RS (selects "commands" and "display data" mode)
62   1           E (enable, falling edge clocks data transfers)
63   2           D4 (data lines...)
64   3           D5
65   4           D6
66   5           D7
67
68
69 hd44780-blink.sr
70 ----------------
71
72 Arduino firmware based on the LiquidCrystal example Arduino Sketch.
73
74 This is what the decoded data should look like:
75
76  - initialization
77  - write "hello, world!"
78  - toggle blinking every 3 seconds
79
80
81 hd44780-cursor.sr
82 -----------------
83
84 Arduino firmware based on the LiquidCrystal example Arduino Sketch.
85
86 This is what the decoded data should look like:
87
88  - initialization
89  - write "hello, world!"
90  - toggle cursor every 0.5 seconds
91
92
93 hd44780-customcharacter.sr
94 --------------------------
95
96 Arduino firmware based on the LiquidCrystal example Arduino Sketch.
97
98 This is what the decoded data should look like:
99
100  - initialization
101  - define special characters: heart, smiling face, unhappy face, stickman
102    with arms low, stickman with arms up
103  - write "I {heart} Arduino {smiling face}" and "    {stickman with arms low}"
104  - toggle second line between "    {stickman with arms low}" and
105    "    {stickman with arms up}" about (!) every 0.9 seconds
106
107
108 hd44780-font.sr
109 ---------------
110
111 Arduino firmware based on the LiquidCrystal example Arduino Sketch.
112
113 This is what the decoded data should look like:
114
115  - initialization
116  - define special characters: heart, smiling face, unhappy face, stickman
117    with arms low, stickman with arms up
118  - every about 250ms a set of 2 * 16 characters are written to the display,
119    starting at 0
120
121
122 hd44780-power.sr
123 ----------------
124
125 Arduino firmware based on the LiquidCrystal example Arduino Sketch.
126
127 This is what the decoded data should look like:
128
129  - initialization
130  - write "hello, world!"
131  - toggle display power every 0.5 seconds
132
133
134 hd44780-shift.sr
135 ----------------
136
137 Arduino firmware based on the LiquidCrystal example Arduino Sketch.
138
139 This is what the decoded data should look like:
140
141  - initialization
142  - write "hello, world!"
143  - repeats:
144    - shift text to the left until it is outside the view
145    - shift text to the right until it is outside the view
146    - shift text to the left until it is where it was before shifting
147
148
149 hd44780-shiftcursor_204.sr
150 --------------------------
151
152 This is what the decoded data should look like:
153
154  - initialization
155  - write "hello, world!"
156  - using cursor shifts it replaces the ! by ?, w by W and h by H, so it is
157    "Hello, World?" in the end
158
159
160 hd44780-textdirection.sr
161 ------------------------
162
163 Arduino firmware based on the LiquidCrystal example Arduino Sketch.
164
165 This is what the decoded data should look like:
166
167  - initialization
168  - write "abcdefghijklm"
169  - continue to the left until "s"
170  - continue to the right until "z"