本設計是基于AT89C51 單片機進行的十進制計算器系統設計,可以完成計算器的鍵盤輸入,進行加、減、乘、除4 位無符號數字的簡單四則運算,并在LED 上相應的顯示結果。硬件方面從功能考慮,首先選擇內部存儲資源豐富的AT89C51 單片機,輸入采用4×4 矩陣鍵盤。顯示采用4 位7 段共陽極LED 動態顯示。軟件方面從分析計算器功能、流程圖設計,再到程序的編寫進行系統設計。
引言
本系統采用AT89C51 單片機作為控制器,用來實現實現四位數的“+”,“-”,“*”,“/”運算,運算結果通過數碼管顯示,并具有有清零功能。AT89C51 具有如下特點:40 個引腳,4k BytesFlash 片內程序存儲器,128 bytes 的隨機存取數據存儲器(RAM),32 個外部雙向輸入/ 輸出(I/O)口,5 個中斷優先級2層中斷嵌套中斷,2 個16 位可編程定時計數器,2 個全雙工串行通信口,看門狗(WDT)電路,片內時鐘振蕩器。
1 總體設計方案
1.1 系統組成與工作原理
本系統以51 單片機為主控核心,與矩陣鍵盤、晶振、LED 顯示管模塊一起組合而成。其工作過程為:首先存儲單元初始化,顯示初始值和鍵盤掃描,判斷按鍵位置,得出按鍵值,單片機則對數據進行儲存與相應的處理轉換,之后送入數碼管動態顯示。將運算結果送入數碼管動態顯示。本設計只能進行結果不超過四位數的運算,其功能如下:
(1)數字鍵“0”到“9”用數碼管顯示。
(2)加法運算: 加數與被加數均不能超過9999,加法最終結果不能超過9999。
(3)減法運算: 減法運算正常邏輯為大的數值減去小的數值,本計算器亦如此,只能進行正常邏輯的運算,如為小的數值減去大的數值,則將得到的負數與535 相加,得到相應的結果,即如果想進行小數減大數的運算,則把得到的結果減去535 即得到負數的正確結果。
(4)乘法運算: 與上述方法一樣,計算結果不能超出9999,如溢出則顯示結果只有后三位。
(5)除法運算: 除數與被除數均不能超過9999,計算結果只顯示整數部分。
(6)等于鍵: 只有按下等于鍵才能將運算結果顯示出來,否則一直顯示上一個數。
(7)清零功能:程序不穩定或出現錯誤時,運用清零鍵回到初始狀態,也可用復位鍵清零。
2 系統硬件設計
2.1 系統硬件總體設計
本系統由鍵盤矩陣、LED 顯示管、這幾個部分組成,鍵盤輸入鍵值,LED 顯示管顯示當前按鍵及結果。硬件總體設計圖1 如下:
圖1 硬件總體設計圖
2.2 矩陣掃描顯示當前按鍵模塊
利用AT89S51 單片機的P0 端口的P0.0 - P0.7 連接到一個七段數碼管的a - h 的筆段上,數碼管的公共端接電源。矩陣掃描顯示當前按鍵模塊見圖2。
圖2 矩陣掃描顯示當前按鍵模塊
2.3 鍵盤布局模塊
矩陣鍵盤的工作原理:計算器的鍵盤布局如圖3 所示:一般有16 個鍵組成,在單片機中正好可以用一個P 口實現16 個按鍵功能,這種形式在單片機系統中也最常用。
圖3 計算器的鍵盤布局模塊
3 系統軟件設計
3.1 系統軟件總體設計
本系統的軟件流程如圖4 所示。
圖4 系統的軟件流程圖
3.2 顯示程序模塊
顯示程序將要顯示數值的千位、百位、十位與個位分別計算出來,通過P0 段選口輸出數值,通過位選口P3^3、P3^4、 P3^5、P3^6 實現動態顯示。
LED 數碼管,實現七段數碼管的顯示四位十進制數。通過段選來顯示按鍵及計算結果的數值。由于本硬件設計選用的是共陽接法,所以對應的段碼表如下3.3 鍵盤掃描模塊。
本次鍵盤掃描程序采用的是行列翻轉法掃描鍵盤,即先置行為0,讀列值,存在變量1 中,然后把列置為0,讀行值,存在變量2 中,把變量1 和變量2 相加即為按鍵對應的鍵值,下表為相應按鍵對應的鍵值。
4 結束語
本計算器是以51 系列單片機為核心構成計算器系統,該設計為能進行簡易算術運算的計算器,在現有的硬件條件下只能進行結果不超過四位數的運算,能實現加減乘除的運算功能與數字清零功能,以及系統的復位功能。
發布評論請先 登錄
相關推薦
bcd與十進制之間的關系
基于FPGA的計算器設計
![基于FPGA的<b class='flag-5'>計算器</b>設計](https://file1.elecfans.com/web2/M00/0A/1B/wKgZomcZ6VaAZjy8AAAcPdUhPdA034.jpg)
設計分享|基于51單片機的電梯仿真系統設計
![設計分享|基于<b class='flag-5'>51</b><b class='flag-5'>單片機</b>的電梯仿真<b class='flag-5'>系統</b>設計](https://file1.elecfans.com//web1/M00/F3/4F/wKgaoWcVBd2AbL2WAAZ_km3hwDw762.png)
評論