15C, 16C or 41C - Take Your Pick
Build Your 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.

I always wanted an HP-15C 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 at least 2X 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 calculators as well as the HP41C (my personal favorite!).

REAL Engineers ONLY use RPN!

Image Gallery


Emulator Settings

Start with the calculator turned off.
While holding the '0' key ('÷' on PX-41C) press the 'ON' key.
Continue holding '0' key ('÷' on PX-41C) to read the instructions on how to navigate the settings menu.
Release the '0' key ('÷' on PX-41C) when you are ready to change settings.
Once you have changed the settings press the 'ON' key to exit. The settings are now saved.

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

Use the '÷' and '×' ('9' and '6' on 41c) buttons to select an option.
Use the '+' and '-' ('3' and 'R/S' on 41c) buttons to increase or decrease value by 1.
Use the '3' and '∑+' ('2' and '.' on 41c) buttons to increase or decrease value by 10.

Advanced Settings Options:

Pressing the '9' key (‘8’ on PX-41C) will toggle between normal settings and advanced settings.

Options that can be customized:

  • RUNC: Number of cycles to execute at a time
  • KEYC: Key cycles to wait before processing it
  • DBOU: Key debounce time
  • DISC: Number of cycles to add before redrawing display (41C only)
  • SSPC: 41C only, number of slow speed cycles before speedup
  • BATL: Current battery level, can't be modified
  • BATT: Low battery indicator threshold


Hackaday Articles:




PX-16 in the wild:

Assembly Tips...

Building 101

For assembly instructions click here.



Downloading and flashing instructions click here.

3D Printed Case

You can print your own case.

Our friend Shigemaru Nishiyama has designed a battery cover for the 3D printed bumper.
You can download it from thingverse.

The overlays for the Aluminum panels can be found here.

Overlays for the 3D printed case for short keys are below:


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.


Yes, all the emulators are programmable.
RPN is considered a more intuitive and efficient way to enter data in a calculator. Once you try it, you won't be able to 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.
No, this is not a graphing calculator. The original HP-15C did not have graphing capabilities. Since we are emulating it, neither does the PX-15C.
Well, because most 16, 32 or 64bit microcontrollers are not produced in through-hole factor and the ATMEGA328 is very popular within 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. Some functions are written in assembly to speed up execution.
Your can purchase the kits tirectly from tindie:
PX-15c kit.
PX-16c kit.
PX-41c kit.
Many thanks to all the wonderful people from the "The Museum of HP Calculators" Forum.
They are the reason this project exists. I can't begin to name all of the great people who reverse-engineered the ROMs (Eric Smith, etc).

Want more information?
Contact us!

Complete puzzle to send: