6
\$\begingroup\$

I've a 16 pin LCD. The whole display (16x2) can be driven just using only half of the data pins (D4 - D7) of the LCD. Other 4 data pins (D0 - D3) can be neglected.

I need to know why then the LCDs come with eight data pins. Of course, there should be some reason(achieve faster update rates etc...)

Can someone show me the reason..
(This is just for my knowledge)

Thanks!

\$\endgroup\$
1
  • 1
    \$\begingroup\$ I'm not sure about LCDs, but at least for things like ROMs and RAM, usually there are extra "unused" pins for a particular part number so that it maintains pin-compatibility with the particular part family \$\endgroup\$
    – Earlz
    Aug 17, 2012 at 5:21

2 Answers 2

11
\$\begingroup\$

It has 8 data pins. The 8-bit mode is the standard mode, because the data is 8-bit: the characters are ASCII, and the DDRAM addresses are also 7 bit wide. In 8-bit mode you write them in 1 instruction, in 4-bit mode you have to split a byte in 2 nibbles, shift one of them 4 bits to the right, and perform 2 write operations.

8-bit mode is just more simple.

edit
The 4-bit mode is often used today to save I/O pins. When the HD44780 was released microprocessors were far more common than microcontrollers. Microprocessors have data and address buses, and since most microprocessors were at least 8-bit that was not a problem, pinning-wise. And 4-bit microprocessors used the 4-bit mode. The control signals like R/W were also available, and the register/data select was derived from an address decoder, so that the LCD became memory mapped.

Most of today's microcontrollers don't have an external databus, and access the LCD through I/O pins through which the databus and the control signals are emulated. Smaller microcontrollers often don't have I/O to spare, and for those the 4-bit mode is a good solution.

\$\endgroup\$
10
  • \$\begingroup\$ Sorry, yeah it should be 8 data pins, not 7 (i edited the post). Thanks, well explained. 8-bit mode is simple and faster i guess. Performance is what matters for the user, isn't it.. \$\endgroup\$
    – Anubis
    Aug 17, 2012 at 5:57
  • \$\begingroup\$ @Anubis - I didn't mention speed because it's not that relevant. It would be if you had to write large amounts of data, but this is a question of a couple of bytes, and then nothing for seconds if you want the user to be able to read it. \$\endgroup\$
    – stevenvh
    Aug 17, 2012 at 6:12
  • \$\begingroup\$ It's hard to predict motivations - for production I once switched from a convenient serial interface used on the prototype (which I connected with my handy wire-wrap tool) to a 14-wire parallel interface converted from SPI by spare FPGA capacity, only because our purchasing department couldn't seem to obtain the matching miniature connector for the serial, while the parallel was a standard 2x7 100-mil header. (We did not want to modify the displays by soldering to them) \$\endgroup\$ Aug 17, 2012 at 17:28
  • \$\begingroup\$ @Chris - Isn't this a comment to supercat's answer? \$\endgroup\$
    – stevenvh
    Aug 17, 2012 at 17:31
  • \$\begingroup\$ It likely could be, but I hand't yet read that at the time. \$\endgroup\$ Aug 17, 2012 at 17:44
4
\$\begingroup\$

Nearly character LCDs which show no more than 40 columns or 4 rows, and which have a built-in controller, almost always use a controller whose design is based on a chip called the HD44870. That chip is designed to be usable on the bus of a 4-bit or 8-bit microprocessor running at the speeds that were common in the late 1970's or early 1980's. The chip accepts 8-bit commands, and processes 8-bit data, but includes some extra hardware to allow data or commands to be sent as two 4-bit pieces.

Today, there are many microcontroller-based systems which do not have an exposed data bus; the preferred display connection is six pins: D4-D7, RS, and E; all other wires get strapped high or low as appropriate. On most of the machines the chip was originally designed to interface with, however, the system bus would naturally include D0-D3 and a line that can be used for R/W (when interfacing with e.g. a Z80, one must use an address line rather than /WR to get proper timing); if the display was on a board with an early-1980's CPU bus, wiring all eleven pins would allow things to things work better than if one wired only six, with no "cost" beyond the copper traces.

I find it interesting that no competing standard has emerged for a text-only display with something like a two-wire or three-wire interface. I would think that even if a vendor didn't want to go out on a limb selling displays that weren't compatible with the HD44870, one could design an HD44870 controller so that if e.g. it received a sequence of eight 00000000 and 11111110 commands (neither of which is valid on the HD44870) with D0 staying low the whole time and without D7 having more than two consecutive rising edges between bytes) it would interpret the sequence as an 8-bit command (using data bits from D7); additional sequences of eight bytes would be interpreted as 8-bit data. One would send another command either by raising and reasserting D0, or by wiggling D7 three or more times. Users of such displays could interface them with 2 or 3 wires, saving cost, but the displays would be compatible with systems that expect an HD44870. Curious that's never happened, given that today's microcontrollers are so different from the ones for which the displays were designed.

\$\endgroup\$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.