https://paxer.net/voyager/ HP Classic Calculators Emulator 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 [prog] [complete] [no-disp] [settings] [41_alu] [px15_alu] [px16_bumpe] [41_closeup] Features... * All through-hole parts (easy to handle and solder) * Runs about 4 to 5 times faster than the original * PX-15C and PX-16C have the same memory than the original * PX-41C has 2.5 times more memory than the original (the same as having installed one and a half memory modules) * Continuous memory (memory is not lost when the calculator is turned off) * Auto power off * Runs on a single ATMEGA328 8-bit microcontroller running at 8MHz (same as Arduino Uno) * Speaker for audible keypress feedback * 192x64 lcd display * Display backlight * Real time clock (uses a 32.768KHz crystal) * Uses a single CR2032: 3V, 235mAh battery * Power consumption: 1uA off, 350uA idle, 3mA working (this is with speaker and backlight off) * With normal use, it should last several months * In programming mode, the names of the keys are displayed on the header of the display on the PX-15 and PX-16 * It's a bit smaller than the original - 4.2" x 2.67" (10.668 x 6.7818 cm). [settings-1] Emulator Settings With the calculator turned off, press the '0' button ('/' on PX41C) and turn it on. Do not release the '0' ('/' on PX41C) button yet. The display will turn on and show the version along with mini-instructions. When you release the '0' button ('/' on PX-41C), the setting will be shown. Press the 'ON' button to exit. 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 'x' ('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 threshold, can't be modified Assembly Tips... [finished] Building 101 For assembly instructions click here. Firmware Current firmware version v0.85. Download PX15c Download PX16c Download PX41c Fixed/Added: * Fixed broken self tests (PX-15c still shows ERROR 9). * Fixed broken low battery indicator. * Better key debounce. * Changed settings menu activation to 'ON' and '0' Keys, ('ON' ',' key is used to change radix) * On settings menu: + Keys '3' and '[?]' increments and decrements value by 10. + Press key '9' to access emulator tweaks. o RUNC: Number of cycles to execute at a time. o KEYC: Key cycles to wait before processing it. o DBOU: key debounce time. o DISC: 41c only, number of cycles to add before redrawing display. o SSPC: 41c only, number of Slow Speed Cycles before speedup. o BATL: Current Battery Level, can't be modified. o BATT: Low Battery Threshold, can't be modified. --------------------------------------------------------------------- Bugs Firmware version v0.85: Bugs: * 15c: in Prog Mode, key decoder does not decode STO, RCL when /*-+ are used. nor TEST funcion. x mean is shown as X. --------------------------------------------------------------------- Firmware version v0.81: Bugs: * On rare occasions when you turn on the calculator the display won't turn on. It seems this only happens with a low battery. So, you must turn it back off and on again. * Performing the self-test (pressing the ON and X keys at power up) will show ERROR 9. You will need to press the reset key to restore the calculator to working order. --------------------------------------------------------------------- First Release: Firmware version v0.80: Bugs:: * On rare occasions when you turn on the calculator the display won't turn on. It seems this only happens with a low battery. So, you must turn it back off and on again. * In programming mode, the key decoder shows the rolldown label backwards. * When you have an Overflow condition, the display will show +-9.999999999x10^99 but it won't blink like in the original. --------------------------------------------------------------------- Known Issues: * On PX-15C: Performing the self-test (pressing the ON and X keys at power up) will show ERROR 9. You will need to press the reset key to restore the calculator to working order. * The pause (PSE) instruction is shorter since it is running faster than the original. WARNING!: Pressing the reset key or uploading new firmware will erase all user content (programs and registers)! 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. [programing] [adaptor] 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. Remove the battery or disable power on the programmer. Use only ONE power source. Programming Adaptor Image Gallery. [closeup-sm] 3D Printed Case You can print your own case. * For the short keys (7mm buttons), the STL files can be downloaded from Thingverse 3D Case. * For the tall keys (11mm buttons), the STL files can be downloaded from Thingverse: Bumper. Our friend Shigemaru Nishiyama has designed a battery cover for the 3D printed bumper. You can download it from thingverse. You can download the pdf keyboard overlay here: * PX15c * PX16c * PX41c RPN 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. Display 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. Speaker 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. Clock 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 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. --------------------------------------------------------------------- Mentions/Reviews Hackaday Articles: CALCULATE LIKE IT'S 1989 WITH THIS HP15C EMULATOR. BUILD YOUR OWN HP41C. Hackaday Review: BUILDING THE DIY HP41C: A FIELD REPORT. EEVblog Video Review: EEVblog 1463 - Mailbag. Resources: The Museum of HP Calculators Forum (The Museum of HP Calculators) HP-41 PROGRAMMABLE CALCULATOR Articles: HP41 in Space. FAQ's Is it programable? Yes, all the emulators are programmable. Why use RPN? 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. Why do you use through-hole components? The idea to use only through-hole components is so that anyone with basic soldering skills can have a go at it. Can it graph? 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. Why are you using a 8Bit microcontroller? 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. What is it coded on? 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. Where can I find the original manuals? They can be downloaded from: HP-15C Owner's Handbook. HP15C Advanced Functions Handbook HP-15C Quick Reference HP-16C Owner's Handbookl. HP-41C/41CV Owners Handbook and Programming Guide Where can I get one? Your can purchase the kits tirectly from tindie: PX-15c kit. PX-16c kit. PX-41c kit. Credits: 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! [ ] [ ] Send (c) PAXER 2021. All Rights Reserved.