浮点面板仪表计算器
摘要
一个DIY项目,构建一个使用面板电压表显示浮点数的计算器,配有定制亚克力面板和CNC雕刻文字。
暂无内容
查看缓存全文
缓存时间: 2026/07/16 13:51
# 带浮点数的面板仪表计算器
来源:https://lcamtuf.substack.com/p/panel-meter-calculator-with-floating
不寻常的时钟是电子DIY项目中的常见创意。难点从来不是计时部分,而是让时钟看起来体面。对于我自己对这个主题的诠释,你可以查看我在五月发表的文章:
[一款更漂亮的电压表时钟](https://lcamtuf.substack.com/p/a-nicer-voltmeter-clock)
抛开时钟不谈,一些读者可能还记得我是个[计算器迷](https://lcamtuf.substack.com/p/a-brief-history-of-counting-stuff)。有一段时间,由于缺乏合适的显示技术,计算器落后于通用计算。一些早期设计使用纸带、阴极射线管或白炽灯泡面板来显示结果:
[](https://substackcdn.com/image/fetch/$s_!JIvn!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c3daa99-89b2-4165-a5b9-64b535034adf_2261x1399.jpeg)
*卡西欧 14-A,采用灯泡显示(1957年)。*
但有点令人惊讶的是,几乎没有计算器使用机电显示器,所以我决定解决这个缺憾。
我从一块 3 毫米厚的亚克力板开始。我在背面喷上了蓝色漆:
[](https://substackcdn.com/image/fetch/$s_!K-vS!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c9c8b29-7102-4a7d-af90-6e248d2b7f9f_2000x1334.jpeg)
*显示面板,喷漆的乐趣。*
然后我选择性地去除了一些油漆,并用 CNC 铣床切割了一些开口:
[](https://substackcdn.com/image/fetch/$s_!7pwG!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4c46309-0d6c-4ffd-a05d-e87ad4f9c6fd_2000x1334.jpeg)
*显示面板,加工中。*
带有刻字的区域随后再次喷漆,以赋予这些区域对比度和酷炫的三维效果。
我使用六块来自亚马逊的通用“SO-45”面板电压表,加上一块在 eBay 上淘到的老式边缘读数电压表,构建了显示器本身。这些电压表配有定制印刷在背胶纸上的表盘(模板文件 [在此](http://lcamtuf.coredump.cx/soft/embedded/meter_calc.pdf)):
[](https://substackcdn.com/image/fetch/$s_!MBrj!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb32c6b93-d5c5-48c0-840a-fac6d0d15fcc_2000x1334.jpeg)
*显示面板,电压表带有原始表盘。*
这是组装好的面板,还装饰了两个 Dialight 656 系列面板指示灯([产品目录页](https://www.dialight.com/wp-content/uploads/2021/07/Dialight_PMI_catalog_April2021.pdf)),用于指示负数结果和溢出:
[](https://substackcdn.com/image/fetch/$s_!fCbr!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d17f3d5-7be9-4ca3-b3d3-4704e1f8cfb6_2000x1334.jpeg)
*面板特写。*
没错,中间那块边缘读数电压表*显然*用于浮点数。
面板是简单部分;接下来,我得设计一个外壳。由于面板相当厚重,我决定采用非标准键盘布局:左侧两行共十个数字键和一个小数点键,右侧则是一个由五个运算符键组成的集群。
[](https://substackcdn.com/image/fetch/$s_!Nsml!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38b241ec-de94-4d7a-9c39-eb0ee503399e_2486x1468.jpeg)
*外壳的粗略 3D 草图。*
电气上,键盘仍然是 4×4 网格,有四条驱动行和四条列检测线。
我用在我的工作室里重新锯开的薄枫木料制作了外壳。刻字和凹陷的键盘矩阵再次由 CNC 铣床加工:
[](https://substackcdn.com/image/fetch/$s_!Ysom!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a7be03b-56a3-4709-9535-c5017ab0d50d_2000x1334.jpeg)
*看,字体艺术!*
这是粘合过程的照片:
[](https://substackcdn.com/image/fetch/$s_!jLfw!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24276410-51f8-4c80-b702-026b06846b9d_2000x1334.jpeg)
*夹子永远不嫌多。*
键盘使用了十六个相对 fancy 的 18×18 mm NKK JF 系列 tactile 开关([产品目录在此](https://www.nkkswitches.com/pdf/JFnonilluminated.pdf))。我为每个按键制作了定制 vinyl 贴纸。
这是成品外壳的照片:
[](https://substackcdn.com/image/fetch/$s_!5g6i!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8495a57a-13fc-4227-bd09-bb251bac2990_2000x1334.jpeg)
*Calcumator 2000 的全貌。*
项目的最后一部分是控制电路。有些人鼓动我实现模拟计算,但这会让计算器更不实用——而如果你想走那条路,纯机械设计更有趣。所以,控制单元的核心是一块 8 位 [AVR128DA28](https://lcamtuf.substack.com/p/psa-if-youre-a-fan-of-atmega-try) MCU。
芯片直接由 5 V 电源适配器供电。它使用七条数字线(PD0-PD6)上的脉宽调制来驱动电压表,一个 4×4 感应驱动网格(PA0-PA3 / PA4-PA7)来扫描键盘,以及两条线(PC0, PC1)用于指示灯。
关于软件架构,我会省去详细讲解,因为它相当直接。最有趣的部分大概是定点(6+5 位)算术的实现,以避免与浮点数相关的精度问题。你可以 [在此](https://lcamtuf.coredump.cx/soft/embedded/meter_calc.c) 下载源代码;代码简短且注释良好。
正如之前在这个博客中讨论过的,[计算器用户界面是地狱](https://lcamtuf.substack.com/p/ui-is-hell-four-function-calculators),代码在这方面做出了若干选择。它允许通过连续按“+”、“×”或“÷”来重复操作,但将“-”保留为改变符号的前缀,除非在按等号键之后立即按下。它还解释双“=”为清除计算器状态的指令,因为键盘没有专用的“C”键。
现在,是你们一直期待的时刻。视频片段展示了分数、负数和错误条件的处理:
就这些。
如果你喜欢这篇文章,你会喜欢 *[电路的秘密生活](https://lcamtuf.coredump.cx/electronics/)*。这是一本插图丰富、清晰易懂的电子学入门书——从导电物理到嵌入式系统编程。包含 290 多张彩色图表、420 多页原创内容,并且零 AI。
*我撰写关于电子学、[数学基础](https://lcamtuf.substack.com/p/monkeys-typewriters-and-busy-beavers)、[技术史](https://lcamtuf.substack.com/p/a-brief-history-of-counting-stuff)以及其他极客兴趣的文章。如果你喜欢,请订阅。*
#### 关于这篇文章的讨论
### 想了解更多?
相似文章
一款更精美的电压表时钟
一份详细指南,介绍如何制作具有自定义贴花、CNC加工外壳和连续运动指针的模拟电压表时钟。
基于ESP32的图形科学计算器
NumOS 是一个开源操作系统,适用于基于ESP32-S3微控制器的图形科学计算器,搭载了由Giac驱动的CAS引擎和LVGL 9.x界面。
从零开始在FPGA上设计科学计算器
一系列详细的博客文章,记录了从零开始使用FPGA设计和实现科学计算器的过程,涵盖了数值方法、CPU架构、微码和硬件原型设计。
@charles_irl: @modal LLMEng Almanac 的另一页:低精度浮点数(从 bf16 到 fp4)探索器 https://modal.com/ll…
来自 Modal 的 LLM Engineer's Almanac,提供了一个互动探索器,用于理解 bf16 和 fp4 等低精度浮点数格式。
我设计了一个基于半字节的Verilog CPU,用于构建科学计算器
该项目使用FPGA在硬件中实现了一个功能齐全的科学计算器,包括自定义软CPU、微码固件和支持工具。它提供了一个基于Web的模拟器和开源的Verilog代码。