Edouard Lafargue let us republish his demonstration of a Noritake GU140x32-7002 Serial VFD screen (may prompt about a secure certificate).

The Noritake VFD used here is a “Show and Tell” 140×32 semi-graphical VFD. This display has the big advantage of being able to display graphics and manage so-called ’user windows’, making it a good choice for stepping up from standard text-based LCDs or VFDs towards a more graphical approach.

This tutorial first shows how to interface with the device using async mode, and then how to use a simple python script to display GIF black and white images on the display.

Demo: is a weekly series that demonstrates devices with the Bus Pirate. Come back next Monday for another new demo. Continue reading the demo below.

Device: Noritake Serial VFD (GU140x32-7002)
Bus: UART (asynchronous serial)
Power requirements: 5 volts

Connecting the VFD using its serial interface

VFD Pin # on CN2 Bus Pirate I/O 5V power adapter
1 : Vcc (5V) Vpullup +5V

The Bus Pirate can deliver at max 150mA on its power pins: the VFD display requires 400mA typically — this is not a “green” device by any means! This is not a major issue, a simple 5V external stabilized power supply can be used instead. Don’t forget to feed the Bus Pirate on-board pull-up resistors through the Vpullup pin. I used one of the numerous Nokia chargers I had laying around with good results : it outputs 5V with a quality good enough not to destroy the display — so far — …

This demo will use the CN2 connector on the VFD which is used for asynchronous or synchronous interfacing.

Bus Pirate setup

1. HiZ
2. 1-WIRE

10. LCD
(1) >3
Mode selected
Set serial port speed: (bps)
1. 300

7. 38400

10. 31250 (MIDI)
(1) >7
Data bits and parity:
1. 8, NONE *default
2. 8, EVEN
3. 8, ODD
4. 9, NONE
(1) >
Stop bits:
1. 1 *default
2. 2
(1) >
Receive polarity:
1. Idle 1 *default
2. Idle 0
(1) >
Select output type:
1. Open drain (H=Hi-Z, L=GND)
2. Normal (H=3.3V, L=GND)
(1) >1
1. Pull-ups off
2. Pull-ups on
(1) >2
Pull-up resistors ON

By default, the GUI140x32 communicates using the async interface, with a 38400-8N1 baudrate. As the inputs are 5V and not 3V, we need the external pull-up to bring the signals to the correct level. Setup is done as shown in the log.

Note that the +5V power from the Bus Pirate itself is actually not used, since the external power adapter provides all the energy to the display.

Interfacing the display


The AUX pin is used to drive the RESET input of the display.

UART>{65 66 67 68}
WRITE: 0x65

Then, we can just type commands as described in the display’s manual.

UART bridge. Space continues, anything else exits.
Reset to exit.

Last, the UART mode currently lacks the ability to type commands as ASCII characters, as far as I can tell. But it offers a ’transparent UART Bridge’ macro which lets you type directly to the display, the only drawback is that you will need to reset your Bus Pirate to get out of the mode.

Bitmap display using the Bus Pirate binary mode

Now, let’s use the scripting capabilities offered by the Bus Pirate through its binary mode. For this demo, we will use the very nice pyBusPirateLite python library which makes it possible to talk to the Bus Pirate using a simple Python script.

The script takes as input a 140×32 black and white GIF file which will be the bitmap we want to display. It then converts the image into a bitstream formatted as expected by the Noritake display, resets the display and sends the bitmap.

You will probably have to adjust the serial port name in the source code, as this is just a quick demo.

Further work

A more sophisticated test script could be written, to test-drive further capabilities of this display, such as multiple display windows, brightness settings, font magnification, etc.

Also, it would be interesting to also drive it using not asynchronous, but synchronous communications, and check whether it has a significant impact on display speed, especially for bitmaps.