15C, 16c or 41c take your pick,
Build you're own Classic HP Calculator Emulator

A Bit of history...

I have used HP RPN calculators all my life. I wonder why there aren’t any RPN calculators anymore. They have been phased out in favor of the standard infix calculators.
Anyway, I've always wanted an HP15c calculator and never got the chance to buy one.

So this is my take on building one.

It is designed with only through hole parts. For easy soldering.

The brains of the calculator is the ATMEGA328. It takes care of everything (display, keypad scanning, sound, clock, etc.).

I decided to use the ATMEGA328 since it is pretty common in the Arduino community and it is one of the few microcontrollers still produced as a through hole part. No other semiconductor is used.

Even though the ATMEGA328 is an 8 bit microcontroller and running at 8Mhz, it is still pretty fast. In the end, the emulation is about 4 to 5 times faster than the original.

I've added a speaker for audible Keyboard feedback. And a 32.768khz crystal for the real time clock.

The emulator can run any of the Voyager series calculator as well as the HP41C (my personal favorite!).

Image Gallery



With the calculator turned off press the '.' button (Button '0' on PX41c) and turn it on. Do not release the '.' (Button '0' on PX41c)button yet.
The display will turn on and show the version along with the mini-instructions.
When you do release the '.' button (Button '0' on PX41c), the setting will be shown.

Options that can be customized:

  • BKLT: Backlight intensity (0-9)
  • BKTM: Backlight Timeout in sec (0-255)
  • CONT: Contrast (0-15)
  • SLPT: Sleep Timer (0-255)
  • BEEP: Audible feedback
  • 1224: Hour Format (12hr or 24hr)
  • Time and Date: Hours are set in 24hr format.
PX15c and PX16c:
Use the '÷' and 'X' buttons to select an option.
Use the '+' and '-' buttons to change.

Use the '9' and '6' buttons to select an option.
Use the '3' and 'R/S' buttons to change.

Assembly Tips...


Part List

Part Value Description
C1, C2 0.1µf Decoupling Capacitor
C3 0.1µf Speaker impedance
U1 ATMEGA328P Microcontroller
J1 6 pin female headers PI Programing header
BAT Battery Holder CR2032 Battery Holder
XTAL Clock Crystal 32.768kHz Clock
R1 10KΩ Reset pullup resistor
R2 10Ω LCD backlight resistor
BTN's 6x6mm tactile switch 7mm height Key buttons
RST 6x3.5 mm tactile button Reset button
DISP Display 192X64 LCD Display


Current firmware version v0.85.

Download PX15c
Download PX16c
Download PX41c



Firmware version v0.85:

Firmware version v0.81:

First Release: Firmware version v0.80:

Known Issues:

WARNING!: Pressing the reset key or uploading new firmware will erase all content!

Loading New Firmware:

To load new firmware, you need a standard AVR SPI (Serial Peripheral Interface) programmer. Such as the usbasp.
You can even use an Arduino Uno as a ISP programmer.

Also, you will need avrdude or some other software to program the microcontroller.

Most AVR programer have a 6 pin (2x3) or 10 (2x5) pin header. The calculator uses a 6 pin (1x6) header. So you will probably need to buy an adaptor or simply make one.

I simply cut the ribbon cable and solder a 6 pin male header.

CAUTION!!! Be sure the voltage on the programer is set to 3V, failure to do so will destroy the LCD.

3D Printed Case

You can print your own case.

The 3D printed case are available at thingiverse:

  • For kits with a display with no metal bezel:3D Case.
  • For kits with a display with black metal bezel:Simple.

You can download the pdf keyboard overlay here:


RPN (Reverse Polish Notation) is a mathematical notation that allows users to solve problems by mimicking how they learned to do math on paper. The operators (+,–,x,÷) are placed after the arguments (for example, 3+4 becomes 3 {ENTER} 4 +) allowing users to stack number sequences and operations, working from the bottom up. RPN eliminates the need for parentheses in complex calculations and reduces keystrokes, making problem solving quicker and more efficient.


The LCD display has 12,288 (192x64) pixels. Enough space to draw all bitmap fonts along with the status bar. By the way, did I mention that is's backlit?

The Brains

The ATMEGA328P microcontroller from ATMEL (now Microchip) is behind the PX-15c. It was chosen because of it's popularity with the Arduino community and it is still one of the few microcontrollers that is produced as a through hole part.


There is a standard magnetic speaker that is used as audio feedback on button pressed.

Tactile buttons

There are 39 standard of the shelf 6x6mm tactile switches.


Did I mention it has a real date and time clock?
You can always see the date and time on the status bar. The time heartbeat is provided by a standard 32.768KHz watch crystal.


Energy comes from one itty-bitty buton cell, a standard CR2032 3V, 235mah lithium battery that should last a long time with normal use.
To conserve energy, the PX-15c will speed down when ideal and will go to sleep after some time of inactivity. The backlight will also turn off after some time.


Yep. With all of the emulators are programable.
RPN is considered a more intuitive and efficient way to enter data in a calculator. One you try it, you won't go back to infix style calculators.
The idea to use only through-hole components is so that anyone with basic soldering skills can have a go at it.
Nop. This is not a graphing calculator. The original HP-15C did not graphing capabilities. And since we are emulating it, neither does the PX-15C.
Well, because most 16, 32 or 64bit microprocessors are not produced in through-hole factor and the ATMEGA328 is very popular with the Arduino community.
All code was written in standard, plain C heavily optimized for space not speed and compiled using GNU AVR Toolchain on a Mac.
You can get the HP-15c kit from tindie.

Want more information?
Contact us!