LCD117E adapted for a Nokia 1100 display

My version of Peter Anderson's awesome serial backpack, using a Nokia 1100 graphic display instead of a character lcd.

Similar projects worth following
I wanted a small, reusable, semi-rugged serial display for building and/or debugging various projects, but didn't have a pre-built serial backpack handy. I did have some spare pics, a couple of old Nokia cell phones with 1100 displays, and a 3d printer... so I rolled my own.

The device is built using a pic16F688 (has a eusart but no hardware pwm) and in addition to the display function it includes some general output pins, a speaker, and pwm backlight control.

I modified the latest version of Peter Anderson's original serial backpack code (lcd117e) to compile using Hitech-C instead of CCS, and to run an 1100 graphic display instead of a character display.

The displays are flimsy so I printed a case to house and protect it. There's a header on the left side for i/o and power connections, and a header for the ICSP port so I can make firmware changes.

Source code, schematic and enclosure model files are posted in the files section.

This is an easy project to make if you're looking for a simple serial display for a project or even just for debugging. I used TinyCAD to draw the schematic, VeeCAD to do the vero/strip board layout, and OpenSCAD to do the case. All of the source files are attached to the project.


I used a PIC16F688 because that's what I had lying around. It's a 14-pin part with no hardware PWM but I used a simple interrupt routine to generate 30 different pulse widths, 0 being nothing and 30 being full on. It's running at 4mhz on the internal oscillator.

The board is powered by a 3.3 volt regulator because the LCD can not handle 5 volts. The LCD is reportedly supposed to run at 2.8 volts but mine has been working fine at 3.3. I meant to put a reverse voltage protection diode at the regulator input but I never got around to it.

I added an ICSP (in circuit serial programming) header so that I could modify the firmware without taking the whole darned thing apart.

My 1100 lcd came with a built-in speaker and I drilled a hole through the case to access the +/- terminals on the speaker but I have not yet hooked it up. I did test it though and it makes a decently loud low frequency beep.

Here is the schematic:


When Peter Andersen passed away his code was left to be maintained by Paul Badger and Brian Riley and released to the public under the MIT license. I took the LCD117E version of the code and changed it for compilation with Microchip's Mplab v8.73 IDE and the Hitech C compiler - I haven't gone to Mplab-x yet, but it shouldn't be that hard to make it work there.

The LCD117E code was built to work with a Hitachi compatible character display - which the Nokia 1100 is not - so some of the original features do not work, such as setting the cursor type. I also modified the code to work with a Nokia 1100 library I got years ago from Spiralbrain's blog. His site is down and his blog is no longer active, but the archived version of his site says his code may be used for non-commercial purposes.

The baud is set to 19200 but it can certainly be changed in code. I haven't done it yet but I plan to add another command to set the baud rate. Peter Anderson didn't originally allow for run-time baud rate changes because he didn't want to have a situation where the baud rate would be unknown, but I show it on start-up.

The code is still a little rough, and has a lot of stuff commented out but it is working well enough for me to use the device. In the future I plan to add some graphics capabilities - maybe dot, line, and shape commands - but I haven't needed them yet.

I finally added the code to github:


The case didn't come out great but it works... the 4 legs of the case were too long because my math skills are apparently poor, but this was only the 2nd thing I ever designed in OpenSCAD. My screw posts are also about 1 mm too close together in both directions. Everything was measured with a set of standard vernier calipers (0.001") and then I scaled the whole thing in Cura because it wanted to print in mm. I probably should have used mm all along. I also think my printer's z-step is off.

It could use some improvements such as fixing the leg height, adding more material where the display is screwed down, and adding a slot for the ICSP header and maybe a printed button cap for the reset switch.


Using this thing is pretty easy. On the left side of the case is an 8-pin header, and below that is a 5-pin ICSP header. The 8-pin header is where the magic happens:

  1. Vcc In - input voltage to the 3.3 volt regulator
  2. Gnd - ground
  3. RX - character input (RC5 on pic16f688)
  4. TX - character output (not currently used, reserved for future)
  5. Out 0 - general purpose output (RA0 on pic16f688)
  6. Out 1 - general purpose output (RA1 on pic16f688)
  7. Out 2 - general purpose output (RA2 on pic16f688)
  8. Spkr - beep output to small speaker

Connect power (there's an onboard...

Read more »

text/plain - 27.47 kB - 01/31/2017 at 20:37



spiralbrain nokia 1100 lcd library

plain - 9.39 kB - 01/27/2017 at 07:08



spiralbrain nokia 1100 lcd library

plain - 1.49 kB - 01/27/2017 at 07:08


Standard Tesselated Geometry - 297.81 kB - 01/25/2017 at 07:32


Standard Tesselated Geometry - 312.67 kB - 01/25/2017 at 07:32


View all 9 files

  • 1 × PIC16F688 Microprocessors, Microcontrollers, DSPs / ARM, RISC-Based Microcontrollers
  • 1 × Nokia 1100 LCD
  • 1 × LD33 Regulator
  • 1 × R1 - 10k Electronic Components / Misc. Electronic Components
  • 1 × R2 - 390 ohm

View all 11 components

View all 2 project logs

Enjoy this project?



Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates