趙續


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