数码之家

 找回密码
 立即注册
搜索
查看: 10048|回复: 37

[外设] 财务用USB数字小键盘改造成RPN计算器

  [复制链接]
发表于 2022-7-10 10:59:42 | 显示全部楼层 |阅读模式
零、前言
我是电工,经常要做些电学计算,但普通计算器太简单,不能先乘除后加减,也没有倒数,很不方便。
早就想自制一台符合心意的计算器,但试过之后才发现写软件的坑太多,调试就像打地鼠。
想到世界三大计算器厂(德仪、惠普、卡西欧)都是凭数十年经验积累才取得今天地位,我也就释然了,不要重新发明轮子。
调查了一番,发现惠普在70年代开发的一系列计算器技术资料相对完备。
其中一款HP-45定位适中,很合我意,于是决定复刻。
正好,刚入手了一款小键盘(拆解/刷机https://www.mydigit.cn/thread-323006-1-1.html)手感不错,把HP-45移植到小键盘上。

一、逆波兰式
逆波兰式(Reverse Polish notation,RPN)也叫后缀表达式,算符写在数的后面。(我们日常习惯书写的叫中缀表达式,算符在数的中间。)
比如,日常写的1+2*SIN(3+4*5),用RPN写就是4 5 * 3 + SIN 2 * 1 +。
举个例子:计算5欧和8欧电阻并联的阻值,即1/(1/5+1/8)的输入过程和栈的变化。


二、HP-45计算器
这是一款RPN科学计算器,有基本初等函数、度分秒、直角/极坐标、统计等功能。
CPU主频约784kHz,每秒执行约3500条机器码。如今的8051都能轻松秒杀它,小键盘里的单片机当然也跑得动。
官方早就停更了,现在国外仍有一些爱好者在研究它。这个链接是比较详细的介绍:https://www.hpmuseum.org/hp45.htm


三、虚拟机
HP-45的CPU构架、总线结构、指令集、ROM机器码(固件)都详细列在它的专利文件中,很容易获取到。
我据此用C语言写成HP CPU的虚拟机,在上面直接运行HP-45机器码。
由于是用ANSI C写的,可以移植到任何有C编译器的CPU上,只要以3500步/秒的速度执行,就能完全复刻当年HP-45的行为。
具体过程不多说,有兴趣的朋友可以私信交流。
这是代码仓库,是比较“正规”的写法,适用ARM使用。

四、移植到小键盘
HP-45是LED显示构成是【负号+10位底数+负号+2位指数】,完整显示需要14位7段数码管。
而这款小键盘只有8位,所以只截取前8位底数显示。如果是负数,则是负号+前7位底数。如果有指数,则是前5位底数+符号+2位指数。
5欧和8欧电阻并联的视频演示


按C51语法改动并优化(比如把函数传参改为全局变量)后,在8051上大约占用7KB ROM和200B RAM,用12M主频基本上能实现全速仿真。
如果有坛友也有兴趣,可以私信索取购买链接和固件。

五、最后
由于键位不够,无法分配函数功能,所以只有四则运算、倒数、指数、平方、开方。即使如此,也是秒杀同价位的计算器和大多数手机APP。
期待能捡到键位更多的同类键盘,到时再完整地复刻HP-45。


补充内容 (2022-8-21 17:09):
我上传附件后并没有设定价格,是系统自动标价的,不关我的事。我也找不到取消的办法。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

打赏

参与人数 9家元 +170 收起 理由
zzy_85569381 + 20 謝謝分享
EMZ1 + 24 专业!
vicdoo + 20 優秀文章
cushion + 20 原創內容
ch104517745 + 20 原創內容
2n3055 + 20 謝謝分享
qrut + 20
亲爱的混蛋 + 20
cutter + 6

查看全部打赏

发表于 2022-7-10 15:51:57 | 显示全部楼层
专业!
我用STC8尝试过,打了板子,懒得写程序扔那吃灰了。
回复 支持 反对

使用道具 举报

发表于 2022-7-10 16:21:59 | 显示全部楼层
这小键盘简直就是给DIY计算器量身定制的啊
回复 支持 反对

使用道具 举报

发表于 2022-7-10 16:55:58 来自手机浏览器 | 显示全部楼层
感谢分享      
回复 支持 反对

使用道具 举报

发表于 2022-7-10 19:09:38 | 显示全部楼层
这个厉害了!赞!
回复 支持 反对

使用道具 举报

发表于 2022-7-10 19:10:33 | 显示全部楼层
一个计算器APP就能搞定的事(带先乘除后加减功能的很多)。
回复 支持 1 反对 1

使用道具 举报

发表于 2022-7-11 09:13:37 | 显示全部楼层
有创新思维,真不错,学习了
回复 支持 反对

使用道具 举报

发表于 2022-7-11 09:19:16 | 显示全部楼层
高手,想起当年勇vf写计算器的时代了
回复 支持 反对

使用道具 举报

发表于 2022-7-11 10:48:35 | 显示全部楼层
很专业!想起了当年使用的工程用可编程计算器
回复 支持 反对

使用道具 举报

发表于 2022-7-12 12:01:59 | 显示全部楼层
能改成输入正常顺序的算式直接输出结果吗?
回复 支持 反对

使用道具 举报

发表于 2022-7-12 12:19:57 | 显示全部楼层
9.9包邮的中学生计算器,已经很强大了。
回复 支持 反对

使用道具 举报

发表于 2022-7-13 12:08:32 | 显示全部楼层
lht 发表于 2022-7-10 19:10
一个计算器APP就能搞定的事(带先乘除后加减功能的很多)。

rpn并不是“先乘除后加减”!
回复 支持 反对

使用道具 举报

发表于 2022-7-15 20:00:16 | 显示全部楼层














找到了这个小计算器了。。。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复 支持 反对

使用道具 举报

发表于 2022-7-15 20:00:47 | 显示全部楼层
本帖最后由 jpdd521 于 2022-7-15 20:02 编辑

上个视频。。。


乘号跟除号共用一个键,按一下乘法,快速按两下是除法。
加减号也是同理。

但是,程序没有写完,现在只有乘法跟加法。

工程文件也没了,目前就是这样子。。。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复 支持 1 反对 0

使用道具 举报

发表于 2022-7-15 21:44:26 | 显示全部楼层
有创新思维,真不错,学习了
回复 支持 反对

使用道具 举报

发表于 2022-7-16 09:44:04 | 显示全部楼层
你这是电工高级技师吧?
回复 支持 反对

使用道具 举报

发表于 2022-7-17 16:05:44 | 显示全部楼层
哈哈哈哈高级电工技师?
回复 支持 反对

使用道具 举报

发表于 2022-7-17 19:14:10 | 显示全部楼层
高手,膜拜一下。
回复 支持 反对

使用道具 举报

发表于 2022-7-22 11:06:07 | 显示全部楼层
还是期待把他回归到键盘的正常用途上,最好还能自定义宏和键值
回复 支持 反对

使用道具 举报

发表于 2022-7-26 15:42:23 | 显示全部楼层
搞个EXCEL表,弄些公式,要多方便就有多方便
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

APP|手机版|小黑屋|关于我们|联系我们|法律条款|技术知识分享平台

闽公网安备35020502000485号

闽ICP备2021002735号-2

GMT+8, 2025-5-6 05:33 , Processed in 0.405601 second(s), 10 queries , Redis On.

Powered by Discuz!

© 2006-2025 MyDigit.Net

快速回复 返回顶部 返回列表