51单片机流式混合运算计算器
本项目是一个基于 STC89C516 的流式混合运算计算器,在资源受限的 51 单片机上实现了带括号的浮点数四则运算。核心算法借鉴编译原理,使用流式有限状态机进行词法分析,并用算符优先分析完成语法归约,解决了负号二义性与运算优先级问题。
项目特性
- 支持浮点数四则混合运算与括号
- 负号与减号歧义消解,输入更稳定
- 矩阵键盘 + 独立按键输入,LCD1602 显示
- 蜂鸣器按键反馈与彩蛋功能
- 模块化架构,算法层与驱动层分离
硬件与开发环境
硬件配置
- 开发板:普中51-单核-A5
- 主控:STC89C516(兼容 STC89C52/54/58 系列)
- 显示:LCD1602
- 输入:矩阵按键(P1 口)与独立按键(P3 口)
- 蜂鸣器:无源蜂鸣器(P2.4)
软件环境
- 编辑器:VSCode
- 编译工具:Keil uVision 5(C51)
- 烧录工具:AiCube-ISP
编译与运行
1. 打开工程
在 Keil uVision 5 中打开项目根目录的 MyCalculator.uvproj。
2. 编译生成固件
点击 Rebuild(或按 F7),确认输出 0 Error(s), 0 Warning(s),生成 Objects/MyCalculator.hex。
3. 烧录到开发板
在 AiCube-ISP 中选择芯片型号 STC89C516,加载 Objects/MyCalculator.hex,选择正确串口并下载。
目录结构
1 | |
核心算法说明
- 词法分析:流式有限状态机(FSM)实时解析按键流,识别数字、小数点与负号逻辑。
- 语法分析:算符优先分析(双栈)完成括号与运算优先级处理。
- 显示优化:针对 LCD1602 的浮点转字符串算法,自动去除尾零。
许可证
本项目采用 MIT License 开源,详见 LICENSE 文件。
如有问题或建议,欢迎在评论区留言交流!
51单片机流式混合运算计算器
https://blog.yanjz.top/c51-stream-calculator/