Difference between revisions of "HD44780 display"

From Hackerspace ACKspace
Jump to: navigation, search
(initial page)
 
Line 51: Line 51:
  
 
==Operation==
 
==Operation==
 +
The display can operate in both 8 and 4-bit mode.
 +
By default, it will start at 8-bit mode, so you need extra initialization before you can start bit banging per nibble.
 +
 +
For most of the things you do, you need to write either a command (instruction) or just data (text).
 +
Therefore, you need a write routine.
 +
RS (Pin4) determines the type (command/data), the rest is just nibbles and bytes ;)
 +
 +
Note: for a better timing, refer to table 6 (page 24 and 25) of the datasheet. Also, waiting on the the busy flag is recommended.
  
 
===8-bit===
 
===8-bit===
 +
 +
{| class="wikitable"
 +
|+ 4-bit mode write sequence
 +
! scope="col" | Pin
 +
! scope="col" | Action
 +
! scope="col" | Description
 +
|-
 +
| EN
 +
| 0
 +
| make sure chip is in normal operation
 +
|-
 +
| RS
 +
| 0 or 1
 +
| command->0 or data->1
 +
|-
 +
| D0-D7
 +
| bits 0 to 7
 +
| place byte on bus
 +
|-
 +
| EN
 +
| 1
 +
| latch the data onto the chip
 +
|-
 +
|
 +
| wait
 +
| > 450ns for the data to latch
 +
|-
 +
| EN
 +
| 0
 +
| resume normal operation
 +
|-
 +
|
 +
| wait
 +
| > 5ms for a command to execute, or > 200us for data to set
 +
|}
  
 
===4-bit===
 
===4-bit===
 +
 +
Note that setting the display in 4-bit mode seems to require two commands (three write instructions: the first in 8-bit mode, the other in 2x4-bit: see page 24, 42 and 46 of the datasheet).
 +
 +
{| class="wikitable"
 +
|+ 4-bit mode write sequence
 +
! scope="col" | Pin
 +
! scope="col" | Action
 +
! scope="col" | Description
 +
|-
 +
| EN
 +
| 0
 +
| make sure chip is in normal operation
 +
|-
 +
| RS
 +
| 0 or 1
 +
| command->0 or data->1
 +
|-
 +
| D4-D7
 +
| bits 4 to 7
 +
| place high nibble on bus
 +
|-
 +
| EN
 +
| 1
 +
| latch the data onto the chip
 +
|-
 +
|
 +
| wait
 +
| > 450ns for the data to latch
 +
|-
 +
| EN
 +
| 0
 +
| make sure chip resumes normal operation (waiting for the next nibble in 4bit mode)
 +
|-
 +
|
 +
| wait
 +
| > 5ms for memory to prepare command, or > 200us for data to set
 +
|-
 +
|
 +
|
 +
|
 +
|-
 +
| D4-D7
 +
| bits 0 to 3
 +
| place low nibble on bus
 +
|-
 +
| EN
 +
| 1
 +
| latch the data onto the chip
 +
|-
 +
|
 +
| wait
 +
| > 450ns for the data to latch
 +
|-
 +
| EN
 +
| 0
 +
| resume normal operation
 +
|-
 +
|
 +
| wait
 +
| > 5ms for a command to execute, or > 200us for data to set
 +
|}
  
  
 
==physical device==
 
==physical device==
 +
[[User:Xopr|Xopr]] 23:25, 16 June 2011 (CEST) plans to bring a myAVR LCD for usage in the space: it's a 2x18 regular green version
  
 
==references==
 
==references==
 
[http://joshuagalloway.com/lcd.html joshuagalloway.com's lcd page]
 
[http://joshuagalloway.com/lcd.html joshuagalloway.com's lcd page]
 +
[http://www.sparkfun.com/datasheets/LCD/HD44780.pdf HD44780 datasheet from sparkfun]

Revision as of 22:25, 16 June 2011

Hitachi HD44780 compatibele LCD

Pinout

A HD44780 compatible display has 14 or 16 pins, depending whether it has backlight. For a working display, you need a minimum of 6 microcontroller ports: RS, EN and D4-D7.

HD44780 pinout
Pin Name Description
1 VSS Ground
2 VDD +5 volts
3 VLC Contrast voltage, normally < 1V
4 RS Register Select (high=Data write, low=Command write)
5 R/W Read/Write (high=read, low=write)
6 EN Enable: high pulse latches command or data
7-10 DB0-DB3 8-bit mode only: data/command bits 0-3
11-14 DB4-DB7 8-bit mode: data/command bits 4-7, or both nibbles in 4-bit mode
15,16 AB,KB (optional) Background light: anode, kathode


Operation

The display can operate in both 8 and 4-bit mode. By default, it will start at 8-bit mode, so you need extra initialization before you can start bit banging per nibble.

For most of the things you do, you need to write either a command (instruction) or just data (text). Therefore, you need a write routine. RS (Pin4) determines the type (command/data), the rest is just nibbles and bytes ;)

Note: for a better timing, refer to table 6 (page 24 and 25) of the datasheet. Also, waiting on the the busy flag is recommended.

8-bit

4-bit mode write sequence
Pin Action Description
EN 0 make sure chip is in normal operation
RS 0 or 1 command->0 or data->1
D0-D7 bits 0 to 7 place byte on bus
EN 1 latch the data onto the chip
wait > 450ns for the data to latch
EN 0 resume normal operation
wait > 5ms for a command to execute, or > 200us for data to set

4-bit

Note that setting the display in 4-bit mode seems to require two commands (three write instructions: the first in 8-bit mode, the other in 2x4-bit: see page 24, 42 and 46 of the datasheet).

4-bit mode write sequence
Pin Action Description
EN 0 make sure chip is in normal operation
RS 0 or 1 command->0 or data->1
D4-D7 bits 4 to 7 place high nibble on bus
EN 1 latch the data onto the chip
wait > 450ns for the data to latch
EN 0 make sure chip resumes normal operation (waiting for the next nibble in 4bit mode)
wait > 5ms for memory to prepare command, or > 200us for data to set
D4-D7 bits 0 to 3 place low nibble on bus
EN 1 latch the data onto the chip
wait > 450ns for the data to latch
EN 0 resume normal operation
wait > 5ms for a command to execute, or > 200us for data to set


physical device

Xopr 23:25, 16 June 2011 (CEST) plans to bring a myAVR LCD for usage in the space: it's a 2x18 regular green version

references

joshuagalloway.com's lcd page HD44780 datasheet from sparkfun