趣味單片機(jī)新玩法-自己動(dòng)手做個(gè)簡(jiǎn)單計(jì)算器
電子愛好者的樂趣,想啥做啥,????;不受拘束的想象力加上強(qiáng)大的動(dòng)手能力,我們幾乎能做絕大部分東西,下面我們來一起簡(jiǎn)單的”小試牛刀“,做個(gè)計(jì)算器耍耍。

使用到的東西元器件:4*4矩陣鍵盤,1602液晶模塊,arduino uno開發(fā)板,220Ω電阻
1602液晶模塊連接注意的引腳:
VCC: 液晶模塊供電正極
LED+:背光燈正極連接電源正極VCC
LED-:背光燈負(fù)極通過220Ω限流電阻連接負(fù)極GND
VO:設(shè)置液晶偏置電壓連接至GND
RW:讀寫模式引腳,我們這里只要寫,所以R/W接GND
GND:液晶模塊供電負(fù)極
我們來看下實(shí)際運(yùn)行效果:
矩陣鍵盤A,B,C,D分別代表?+,-,X,/;?" * "代表清除," # "號(hào)代表" = "

代 碼 部 分:
代碼解釋:
我們這里用了arduino自帶的液晶庫(kù)#include <LiquidCrystal.h>和按鍵庫(kù)#include <Keypad.h>
這樣我們只要將重心挪到計(jì)算器核心的算法開發(fā)上就好了。
定義四線驅(qū)動(dòng)1602的引腳:
按鍵行和列符號(hào)定義:
按鍵行和列引腳定義:
按鍵符號(hào)與行列引腳關(guān)聯(lián):
第一個(gè)部分運(yùn)算字符輸入處理:
加法處理部分:
減法處理部分:
乘法處理部分:
除法處理部分:除法里面還做了除0非法操作:
清除計(jì)算處理:
另外還有第二個(gè)數(shù)據(jù)字符輸入處理:
我們輸入第一個(gè)數(shù)據(jù)字符串后,如果檢測(cè)到有輸入運(yùn)算符,那么就直接進(jìn)入到第二個(gè)數(shù)據(jù)字符串里面,一直到有輸入“=”符號(hào),輸出計(jì)算結(jié)果,并跳出當(dāng)前計(jì)算;注意到每個(gè)數(shù)據(jù)字符串里面還做了數(shù)據(jù)轉(zhuǎn)換,將字符轉(zhuǎn)換為十進(jìn)制數(shù)。

大家可以思考下?
我們看到里面的數(shù)據(jù)定義都是long型的,如果超過long型所能表達(dá)的最大數(shù)據(jù)會(huì)出現(xiàn)什么情況?又該如何處理?大家可以嘗試去完善下。
另外我們這里面基本上都是調(diào)用arduino的庫(kù)函數(shù)在處理,如果放到51單片機(jī)上或者其它單片機(jī)上,那么又該如何操作?這些函數(shù)大家都可以大膽的去嘗試實(shí)現(xiàn)。