趣味单片机新玩法-自己动手做个简单计算器
电子爱好者的乐趣,想啥做啥,😄😄;不受拘束的想象力加上强大的动手能力,我们几乎能做绝大部分东西,下面我们来一起简单的”小试牛刀“,做个计算器耍耍。

使用到的东西元器件:4*4矩阵键盘,1602液晶模块,arduino uno开发板,220Ω电阻
1602液晶模块连接注意的引脚:
VCC: 液晶模块供电正极
LED+:背光灯正极连接电源正极VCC
LED-:背光灯负极通过220Ω限流电阻连接负极GND
VO:设置液晶偏置电压连接至GND
RW:读写模式引脚,我们这里只要写,所以R/W接GND
GND:液晶模块供电负极
我们来看下实际运行效果:
矩阵键盘A,B,C,D分别代表 +,-,X,/; " * "代表清除," # "号代表" = "

代 码 部 分:
代码解释:
我们这里用了arduino自带的液晶库#include <LiquidCrystal.h>和按键库#include <Keypad.h>
这样我们只要将重心挪到计算器核心的算法开发上就好了。
定义四线驱动1602的引脚:
按键行和列符号定义:
按键行和列引脚定义:
按键符号与行列引脚关联:
第一个部分运算字符输入处理:
加法处理部分:
减法处理部分:
乘法处理部分:
除法处理部分:除法里面还做了除0非法操作:
清除计算处理:
另外还有第二个数据字符输入处理:
我们输入第一个数据字符串后,如果检测到有输入运算符,那么就直接进入到第二个数据字符串里面,一直到有输入“=”符号,输出计算结果,并跳出当前计算;注意到每个数据字符串里面还做了数据转换,将字符转换为十进制数。

大家可以思考下?
我们看到里面的数据定义都是long型的,如果超过long型所能表达的最大数据会出现什么情况?又该如何处理?大家可以尝试去完善下。
另外我们这里面基本上都是调用arduino的库函数在处理,如果放到51单片机上或者其它单片机上,那么又该如何操作?这些函数大家都可以大胆的去尝试实现。