Controlling Alphanumeric LCDs With Three Wires

shift

The HD44780 LCD controller is the defacto way of adding a small text display to your next project. If you need a way to display a few variables, a few lines of text, or adding a small user interface to a project, odds are you’ll be using one of these parallel LCDs. These displays require at least six control lines, and if you’re using a small microcontroller or are down to your last pins, you might want to think about controlling an LCD with a shift register.

[Matteo] used the ubiquitous ‘595 shift register configured as a serial to parallel converter to drive his LCD. Driving the LCD this way requires only three pins on the Arduino, [Matteo]’s microcontroller of choice.

For the software, [Matteo] modified the stock Arduino LiquidCrystal library and put it up on his Git. Most of the functions are left untouched, but for this build the LCD can only be used in its four bit mode. That’s not a problem for 99% of the time, but if you need custom characters on your LCD you can always connect another shift register.

If you just can’t spare three pins for a display, you could squeeze this down to just two, or add a second microcontroller for a one-wire-like interface.

I Am The Midnight Message Board What Messages At Midnight

Photoluminescent stars on your bedroom wall or ceiling are pretty cool, though the stationary shapes can become boring. [Adi] felt this way, too. While doodling with a bright white light on some glow in the dark vinyl, it occurred to him that this could make for an interesting display. He set about making GLO, the midnight message board and RSS display.

[Adi]’s light writer uses 12 UV LEDs on a linear axis powered by a stepper motor to write RSS headlines, Twitter trends, or custom text on his wall. He finds the slow fade of the text very soothing to fall asleep by, and it’s easy to see why. The LED array imprints a section of a character consisting of a 6×5 bit pattern. The 12 LEDs are split into two groups, so it can write two lines at 45-50 characters each. [Adi] designed his own pixel font for this project, and advises that only upper case letter forms be used.

[Adi]’s write-up is quite admirable and comprehensive. In the circuit build section, he advises that the LEDs must be very close to the vinyl for optimum results, but that they should protrude farther than the shift registers so the chips don’t rub the vinyl. Of course you could opt for more intense light sources, like laser. See it in action after the break.

Continue reading “I Am The Midnight Message Board What Messages At Midnight”

Fail Of The Week: EPROM Reading And Erasing

It may be a failure but it sure does look cool. [Scott Lawrence] had a fair number of EPROM chips on hand and decided to get rid of the traditional eraser and programmer in order to play around with the concepts using his own hardware. He was met with disappointment at several steps in the process. No worries though, each of these upsets sent him back to the drawing board and he learned way more than he ever would have if it had actually worked. It’s fair to say this failure was highly successful.

Continue reading “Fail Of The Week: EPROM Reading And Erasing”

Breadboard Sequencer Does A Lot With Very Little Hardware

breadboard-sequencer

[Jan Cumpelik] squeezes a lot of performance out of very few components with his breadboard sequencer which he calls Lunchbeat. We really like his awesome breadboard which has a series of trenches perpendicular to the bus strips framing the long sides. All of our breadboards have just one trench down the middle. This, combined with his mad breadboard skills, results in a really clean prototype.

The chip nearest his hand is the ATmega328 which drives the sequencer. It takes inputs from that row of 10k trimpots as well as a series of tactile switches. Feedback is given with the row of eight LEDs. Those are driven from a 595 shift register to save pins on the microcontroller. The remaining chip is an OpAmp which works in conjunction with a 3-bit R2R ladder DAC to output audio. Turn your speakers down just a bit before taking in the demonstration below. There you will also find an image version of his schematic that we made for your convenience. It is only available as a PDF in the code repository he posted.

Continue reading “Breadboard Sequencer Does A Lot With Very Little Hardware”

Lots Of Seven Segment Displays With A Single ATtiny

7seg

These days they’ve been replaced with character LCD displays or even brightly colored graphical displays, but if you’re trying to display data on one of your projects, there’s nothing like the classic red glow of a red seven segment display. [five volts] got his hands on a few ancient segmented displays, but controlling even one took up more microcontroller pins than he was ready to spare. The solution to this problem was to use a shift register and control multiple segment displays with an 8 pin microcontroller.

[volts] is using an ATtiny13 to control six seven segment displays. Each display is mounted on a hand-etched board, with a shift register and a handful of resistors soldered to the back. By having the microcontroller shift bits down the line, [volts] created an extremely easy to interface 6-digit segment display, and the entire device can be expanded even more.

The board files and schematics are available on [volt]’s project page. A great project if you’re just starting out to etch your own boards.

Two-wire Serial Backpack For GLCD Screens

[Debraj] wrote in about his 2-wire serial backpack he developed for a Graphic LCD screen. It’s build on a hunk of protoboard and uses a pair of 595 shift registers to translate incoming serial data to the parallel interface which is used by the LCD screen. It takes more time to push commands this way, but the interface is still quite snappy as you can see in the clip after the jump.

The real trick here is how the hardware has been configured to get away without a third wire for latching the shift registers (if you need a primer on 595 chips check out this feature). The idea of using a latch is that all of the data can be shifted in over the serial pin before it appears on the output pins. Otherwise, the GLCD would see each bit as it shifts into the register, wreaking havoc on its communication protocol. [Debraj] gets around this by using a diode AND gate trick he learned from this other serial LCD project.

One good thing about this method is the 595 chips have a wide range of control voltage that will allow you to drive this with 3.3V or 5V microcontrollers. But you do need to implement the communication protocol and push those commands via serial. For nearly the same cost in chips something like an ATtiny2313 could be substituted to make an even simpler addressing scheme — or even switch to 1-wire protocol. But you’d then lose the wide input voltage tolerance.

Continue reading “Two-wire Serial Backpack For GLCD Screens”

Learn Shift Registers Without Involving A Microcontroller

This is a truly hands-on approach to learning. [Kevin Darrah] ditched the microcontroller and is using push buttons to learn about 595 shift registers. The test rig uses two of the serial-in, parallel-out chips. These are cascading which means that as data from the first chip overflows it feeds the input of the second. The parts are commonly used to drive LEDs, or reduce the number of pins needed to drive peripherals like this character LCD.

The five push-buttons give you a chance to intuitively learn how the chip logic works. The blank button is also commonly called Output Enable (OE). Driving it high shuts off the outputs of the chips but doesn’t clear the data. That task is performed by the clear button which is driven low to set all of the shift register memory to zero. The other three buttons set the logic level, shift it into the chip using the clock signal, and push the stored values to the outputs using the latch.

To get a visual approximation of what’s happening inside of these chips you should check out the shift register tutorial linked to in this post.

Continue reading “Learn Shift Registers Without Involving A Microcontroller”