Like many others, I have used a number of character LCDs. These use an HD44780 LCD controller chip (or equivalent) to run the display itself. The primary mode of operation of these LCDs is their 8-bit mode but hobbyists often choose to use the alternate 4-bit mode to conserve I/O pins on the microcontroller in their project. Even if the LCD module's Read/Write line is grounded, 8-bit mode requires 10 I/O pins whereas 4-bit mode requires only 6 I/O pins.
I have seen circuits that effectively cut the number of required I/O pins further by adding a shift register or some other integrated circuit and I have even done that on one occasion myself.
Most of the time, I have been using these displays in 4-bit mode but recently happened upon an idea that made another big improvement in the number of required I/O pins but without requiring the addition of any semiconductors at all. I call it the 2-Bit Interface For Character LCDs. This allows a character LCD to be operated using only 3 I/O pins.
I wrote up a page about the technique, detailing how it works and how to prepare your own software to reproduce it in your own system, regardless of which microcontroller and which language you are using.
You can find my page here: http://www.angelfire.com/oh3/ebjoew/LCD_2-Bit_Interface.html
I hope this proves as useful to others as it does to me.
I have seen circuits that effectively cut the number of required I/O pins further by adding a shift register or some other integrated circuit and I have even done that on one occasion myself.
Most of the time, I have been using these displays in 4-bit mode but recently happened upon an idea that made another big improvement in the number of required I/O pins but without requiring the addition of any semiconductors at all. I call it the 2-Bit Interface For Character LCDs. This allows a character LCD to be operated using only 3 I/O pins.
I wrote up a page about the technique, detailing how it works and how to prepare your own software to reproduce it in your own system, regardless of which microcontroller and which language you are using.
You can find my page here: http://www.angelfire.com/oh3/ebjoew/LCD_2-Bit_Interface.html
I hope this proves as useful to others as it does to me.