趙續(xù)
摘要 隨著社會發(fā)展,電子設(shè)備應用更加廣泛,尤其是簡易計算器得到了很多人的青睞,其可以很方便地實現(xiàn)一些簡單運算。本文設(shè)計了一種新的計算器,設(shè)備采用STC89C52單片機為主控芯片,因為它具有功耗小的特點,電源部分選用5v電壓供電。系統(tǒng)的硬件部分的輸入和輸出設(shè)備分別采用鍵盤和16 02LCD液晶顯示屏,從而實現(xiàn)15位數(shù)以內(nèi)的四則運算。系統(tǒng)的軟件部分在keil環(huán)境下采用C語言編寫,并通過Proteus仿真驗證。
【關(guān)鍵詞】單片機 矩陣鍵盤 液晶顯示屏
單片機芯片上集成了大規(guī)模特定功能的器件。其中最主要的元器件就是中央處理CPU,其是單片機的大腦。單片機還集成了一些具有存儲功能的設(shè)備,如:只讀存儲器ROM和隨機存儲器RAM;定時器/計時器也是常用到的單元;為了與其他設(shè)備進行信息傳輸,單片機還需有多種I/O口。本文研究的是單片機在日常生活中常見的應用一一簡易計算器。由于它操作方便,因此應用較為廣泛。該設(shè)備通常利用LCD液晶對數(shù)據(jù)進行顯示,從而可以使運算結(jié)果更加直觀而且不會浪費過多的電能。為了便于學習,本文對其功能進行了簡化,可進行整數(shù)和浮點運算,運算位數(shù)也可擴展到15位。
1 電子計算器的意義分析
電子計算器是一種電子產(chǎn)品,是人們在生活和工作中必不可少的工具。電子技術(shù)的飛速發(fā)展,人們對電子產(chǎn)品的要求也不斷提高,針對以上現(xiàn)狀,本文設(shè)計了一款更加簡便的計算器,該產(chǎn)品采用新方法來實現(xiàn)功能。由于采用傳統(tǒng)的技術(shù)要實現(xiàn)比較完善的功能需要非常復雜的模擬電路設(shè)計,不僅會使設(shè)備顯得笨重,同時也不利于操作。而一片集成度較高小體積的芯片就可以解決上述問題。本文設(shè)計的計算器就是采用單片機對系統(tǒng)進行控制,顯示模塊采用1602LCD顯示器,數(shù)據(jù)的輸入采用矩陣按鍵。該設(shè)備具有的優(yōu)勢是十分明顯,不僅體積小、精度較高而且方便使用。當前對數(shù)據(jù)的運算不僅進停留在簡單的四則運算上,還會經(jīng)常需要進行乘方、開方、指數(shù)、對數(shù)、三角函數(shù)等計算,所以對計算器的研究和改進有較強的實際意義和價值。
2 系統(tǒng)總體設(shè)計
2.1 設(shè)計要求
本文采用STC89C52系列單片機作為主控制器,對外圍電路進行一定的拓展完成實現(xiàn)對計算器的設(shè)計,設(shè)計要求主要包括以下六個方面:
(1)掌握單片機和外圍擴展電路的設(shè)計方法:
(2)可進行四則運算,采用LCD顯示數(shù)據(jù)和結(jié)果;
(3)可以完成浮點數(shù)之間的一些加減乘除運算;
(4)支持括號運算,允許多層正確嵌套;
(5)具備比較完善的報錯系統(tǒng);
(6)顯示界面友好,可實時顯示輸入數(shù)據(jù);
系統(tǒng)整體框圖如圖l所示。
2.2 設(shè)計方案
系統(tǒng)的具體設(shè)計方案主要分為以下5步:
(1)輸入模塊部分使用4*4的矩陣鍵盤和4個獨立按鍵;
(2)電源采用LM7805的穩(wěn)壓電路;
(3)執(zhí)行程序:應用液晶顯示屏顯示模塊部分,開機時無數(shù)字顯示,進入等待鍵入數(shù)值的狀態(tài);當有數(shù)字鍵入時,在液晶顯示屏顯示出數(shù)值;當鍵入運算符+、-、*、/時,計算器的內(nèi)部將會進如數(shù)值的轉(zhuǎn)換和存儲狀態(tài),接著等待下一個數(shù)值被鍵入,之后鍵入的數(shù)值會被顯示出來;最后通過按等號鍵輸出運算結(jié)果就會在液晶顯示屏上;
(4) AC清零功能:在運算結(jié)果輸出之后通過按鍵鍵入AC鍵,把數(shù)據(jù)清零,接著等待下一步計算。
(5)錯誤提示:如果單片機在執(zhí)行程序過程中出現(xiàn)錯誤,相應的錯誤提示信息則將會在液晶顯示器上顯示出來。
3 硬件系統(tǒng)設(shè)計
3.1 主控芯片STC89C52單片機
考慮到系統(tǒng)的功耗和性能等因素,選用的STC89C52控制芯片具有32個I/O口,內(nèi)部FLASH程序存儲器8KB,內(nèi)部RAM12字節(jié),內(nèi)部EEPROM2KB,雙DPTR指針,3個定時器/計數(shù)器,自帶看門狗WatchDog。
3.2 輔助模塊設(shè)計
LCD液晶顯示器用來顯示數(shù)值的輸出和輸入。它的數(shù)據(jù)端與單片機的PO口相連接,控制端部分與P24-P26相連接。當所需要的鍵盤數(shù)量較多時,為避免占用更多I/O口,最有效的方法就是將按鍵以矩陣形式進行排列。需要注意的是,在行和列的交叉處不能直接進行連接,而是使用一個按鍵將兩者連接。通過以上處理,一個I/O口就可以控制多個按鍵。
蜂鳴器起到一個提示的作用,當有按鍵被按下時就會發(fā)出聲音。本文中,驅(qū)動蜂鳴器采用的是三極管。由于單片機I/O的驅(qū)動能力不足,因此可以利用單片機的I/O口實現(xiàn)開關(guān)功能。如果想要打開蜂鳴器通道則顯示屏顯示為‘O,這樣蜂鳴器會發(fā)出聲音。
本文設(shè)計的計算器系統(tǒng)的電源模塊采用LM7805作為穩(wěn)壓芯片。由于STC89C52和LCD1602都采用5V電壓供電,經(jīng)過初級和次級的電容濾波,最終可以得到5V的電壓供給使用。
4 軟件系統(tǒng)設(shè)計
軟件編程平臺選用最常用的keil軟件,仿真平臺選擇常見的Proteus軟件。因為這些程序并沒有牽涉到底層的驅(qū)動問題,所以選用方便簡捷的C語言編程。通常把編程過程共分為四個模塊部分:主函數(shù)模塊部分、延時模塊部分、1602顯示模塊部分、用于處理計算表達式的對戰(zhàn)模塊部分。采用模塊化設(shè)計,便于系統(tǒng)的調(diào)試與了解。重點介紹軟件核心的表達式解決程序算法部分。
4.1 總體設(shè)計
在顯示數(shù)據(jù)傳輸?shù)倪M程中,應經(jīng)過程序控制的實時處理信息,顯示出輸入數(shù)據(jù)信息,差錯控制信息,運算結(jié)果信息,實時解決自定義的控制鍵功能,并且實現(xiàn)控制功能。系統(tǒng)的具體流程設(shè)計步驟如下所示:
(1)開始后程序應該先初始化參數(shù),這時1602無數(shù)字顯示。
(2)然后開始掃描鍵盤看是否有輸入,如果有輸入則讀取鍵盤的編碼。如果是數(shù)字鍵則輸入數(shù)值;如果是清零鍵則狀態(tài)就為清零;如果是功能鍵則判別輸入的是‘+鍵‘.鍵‘*鍵‘/鍵還是‘=鍵;如果是‘=鍵,則輸出運算結(jié)果并且在LCD上顯示出運算結(jié)果;如果是其他鍵則保存其相對運算程序的首地址并且在LCD上輸出顯示出來。
4.2 子程序設(shè)計
矩陣鍵盤掃描程序如下,首先初始化地址參數(shù),依次讀出低四位數(shù)據(jù)和高四位。然后再確定鍵的ASCII碼值送給LCD顯示并且與表達式相對應的堆棧進行處理。讀鍵過程利用的是反轉(zhuǎn)方法,無論矩陣規(guī)模大小都分為兩次來完成讀鍵。第一次所有行線都輸出高電平,讀入行信息;第二次所有列線都輸出高電平,讀入列信息。
根據(jù)對系統(tǒng)的要求和硬件本身的特性的分析,系統(tǒng)的復位功能只需要將AC按鍵與單片機的外部中斷O連接,就可以利用單片機的中斷對數(shù)據(jù)進行清理。具體過程為:程序運行期間通過不斷查詢標志位,若為O,則啟動清零功能,清零結(jié)束后將標志位置為l后返回主程序。
1602在上電以后,在進行具體化操作時應先對其內(nèi)部芯片做初始化處理。并且具體操作時其時序圖的參考也是非常有必要的,必須參考其時序圖,再把命令寫入它的內(nèi)部寄存器,然后再將工作方式及工作狀態(tài)進行設(shè)置。
5 系統(tǒng)調(diào)試
本文以整數(shù)運算為例子來測試電子計算器的可行性。首先需要打開電源,能夠看到LCD打開顯示,說明能夠正常運行,如果我們輸入一個比較完整的表達式:12*(34+56-78)/9,其正確結(jié)果應該為16。當所有的數(shù)值都被輸入以后,再按“=”鍵,其運算結(jié)果就會在第二行的位置顯示出來。在使用過程中,按鍵音的打開和關(guān)閉還可以通過聲音開關(guān)按鈕來控制,通過在LCD上顯示出來以判斷是否打開按鍵聲音,如果有聲音被打開,則在第二行的第一個位置就有顯示。如果聲音還沒有被打開,那么在第二行的第一個位置就沒有顯示,它們都能夠通過按鈕打開或關(guān)閉聲音。如圖2所示。
6 結(jié)束語
本設(shè)計以STC89C52作為主控芯片,采用LCD1602液晶顯示數(shù)據(jù),軟件部分是用C語言來編寫,利用鍵盤和液晶設(shè)計的一個簡便計算器,能夠?qū)崿F(xiàn)數(shù)據(jù)的簡單四則運算,并且在液晶屏上顯示運算結(jié)果。另外單片機的程序能夠可靠運行和修改,尤其是能夠?qū)崿F(xiàn)一些獨特的功能特性。通過利用單片機來編寫程序以便于完成高智能、高效率和更高的可靠性。
參考文獻
[1]彭棣,基于單片機的多功能計算器的設(shè)計與實現(xiàn)電氣工程自動化[J],山東工業(yè)技術(shù),2017 (04):189.
[2]劉巧平,李平,周斌,基于STC89C51單片機的實用計算器設(shè)計[J].信息技術(shù),2016 (11):121-123+126.
[3]夏鯤,陳國平,單片機理論實驗課程設(shè)計協(xié)同教學方法探討[J].課程教育研究,2016 (31):243.
[4]吳洋,許建明,陳炯明,基于單片機的電子計算器的設(shè)計[J].電子世界,2016 (08):18.