李新雪
摘要:本系統(tǒng)中央處理器由市場上較為成熟的51單片機來承擔,51單片機價格低廉操作簡單,外圍接口豐富,可以很好的實現(xiàn)系統(tǒng)的各項功能要求,鍵盤輸入部分采用4*4矩陣鍵盤來實現(xiàn),16個按鍵分別完成0-9數(shù)字的輸入和加、減、乘、除、等號、5個計算鍵的功能,最后一個按鍵實現(xiàn)清除計算內(nèi)容的功能,顯示單元采用LCD1602液晶顯示屏顯示,液晶顯示效果相比數(shù)碼管更加穩(wěn)定,無閃爍同時顯示字符內(nèi)容豐富。
關(guān)鍵詞:計算器;單片機;顯示屏
1.計算器設(shè)計的任務(wù)和要求
本設(shè)計采用宏晶科技公司生產(chǎn)的STC89C52單片機作為系統(tǒng)的核心控制單元,然后以此單片機為基礎(chǔ)結(jié)合外圍所需的硬件電路,最后在硬件設(shè)計平臺上完成軟件代碼的驗證,最終完成簡易數(shù)字計算器各項功能要求。此簡易數(shù)字計算器主要電路模塊包括:單片機最小系統(tǒng)、矩陣鍵盤電路、液晶LCD顯示電路等單元組成。系統(tǒng)所使用的主要元器件包括:STC89C52單片機、4*4矩陣鍵盤、液晶顯示屏LCD1602等。
本設(shè)計主要實現(xiàn)的功能和要求包括:(1)實現(xiàn)100000000以內(nèi)的加法運算功能;(2)實現(xiàn)100000000以內(nèi)的減法運算功能;(3)實現(xiàn)10000的乘法運算功能;(4)實現(xiàn)100000000的除法運算功能;(5)系統(tǒng)計算時輸入數(shù)字和符號以及運算結(jié)果顯示功能;(6)系統(tǒng)輸入錯誤時具有清除的功能。
2.單片機最小系統(tǒng)設(shè)計
單片機為整個系統(tǒng)的控制核心,單片機型號的選擇好壞直接會影響到整個系統(tǒng)設(shè)計的成敗,因而選擇一款合適的單片機對整個系統(tǒng)設(shè)計的成功與否起著至關(guān)重要的作用,目前市場上單片機種類型號千差萬別,從基礎(chǔ)的8位單片機到高端的64位單片機,價格從幾元到上百元不等,選擇單片機要首先要考慮價格因素,由于本系統(tǒng)設(shè)計是簡易型計算器,因而功能相對較少,不需要較多的IO端口以及強大的存儲空間,所以不需要選擇價位較高的高端的單片機,考慮到目前市場上應(yīng)用較為廣泛的51位單片機完全能夠達到設(shè)計的功能要求,因而本設(shè)計首選單片機是51單片機。宏晶科技公司生產(chǎn)的STC89C52單片機是目前國產(chǎn)單片機中性價比較高的型號,此單片機價格低廉,端口豐富完全兼容國外大品牌Atmel公司的AT89S52單片機,價格相比Atmel公司的單片機只有其價格的一般,鑒于以上分析,本文最終選擇宏晶科技的STC89C52單片機作為簡易計算器的主控單片機,STC89C52單片機的引腳圖如圖1所示。
單片機最小系統(tǒng)電路是整個計算器系統(tǒng)的核心,單片機最小系統(tǒng)電路設(shè)計的好壞直接決定整個系統(tǒng)的設(shè)計成敗,因而在設(shè)計單片機最小系統(tǒng)電路之前一定要對單片機的工作原理有一個系統(tǒng)的學習,要知道單片機正常工作所需的必備條件,要了解單片機系統(tǒng)電路的組成以及各部分的主要功能。單片機最小系統(tǒng)電路一般由單片機、晶振電路、復位電路組成,此部分設(shè)計完成的電路如圖2所示。
其中Y1為12M的晶體振蕩器,選擇12M是為了便于計算單片機運行的周期,Y1兩端的電容 C1,C1 接在放大器的反饋回路中構(gòu)成并聯(lián)振蕩電路。電容C1和C2應(yīng)選擇瓷片電容,至于電容容值的大小沒有嚴格的限定,只是電容容量的大小會輕微影響振蕩頻率的高低、振蕩器工作的穩(wěn)定性、起振的難易程度及溫度的穩(wěn)定性。如果使用石英晶體,推薦電容使用30pF士l0pF。
3.系統(tǒng)顯示電路
主要包括單片機控制器、單片機P0口上拉電阻、LCD1602液晶顯示器和對比度調(diào)節(jié)電阻器組成,此部分電路如圖3所示。
液晶LCD1602的1腳為接地端,2腳為電源引腳,此款液晶顯示器采用DC5V電壓供電,此處VCC接5V電壓,3腳為液晶顯示器的對比度調(diào)節(jié)引腳,通過電阻R6接地,R6阻值可以選擇2.2K到4.7K之間的電阻,也可以接4.7K的可調(diào)電位器接地,可通過改變此電阻的阻值大小來調(diào)節(jié)液晶的對比度;4腳、5腳、6腳為液晶片選控制引腳,分別連接到單片機的P1^0、P1^1、P1^2端口,7~14腳為數(shù)據(jù)接口,與單片機的P0口相連實現(xiàn)數(shù)據(jù)的傳輸,15、16腳為液晶的背光控制腳,分別接到電源和地,如果懸空不接則不使用背光。
按鍵輸入電路用來完成密碼的輸入和修改,按鍵輸入電路采用4*4矩陣鍵盤實現(xiàn),矩陣鍵盤電路如圖4所示。
4.系統(tǒng)矩陣鍵盤對應(yīng)按鍵功能如圖5所示。
如上圖5所示,0-9位數(shù)字鍵,當運算時按下對應(yīng)數(shù)字的按鍵即可輸入相應(yīng)數(shù)字,符號鍵“+”“-”“*”“/”“=”號對應(yīng)計算器的運算功能鍵,當輸入完相應(yīng)的數(shù)字后按下對應(yīng)的運算符后即可執(zhí)行相應(yīng)的計算操作,清除鍵指的是當運算過程中如果操作錯誤可以按下清除鍵完成對本次運算的清除功能,按下清除鍵以后即可進行再次運算操作。
當系統(tǒng)各部分電路設(shè)計完成后,需要對各部分電路進行總體匯總,然后對完整的電路進行可行性分析論證,在保證系統(tǒng)電路的完整性和可靠性的前提下方可進行下一步的軟件設(shè)計以及成品組裝,系統(tǒng)匯總完成的總體電路如圖6所示。
圖6為系統(tǒng)整體電路圖,主要包括矩陣鍵盤輸入電路,單片機最小系統(tǒng)電路以及液晶顯示電路3大部分組成,考慮到計算器輸入鍵盤部分由0-9共10個數(shù)字鍵,5個運算符號鍵,一個清除鍵,共需要16個按鍵,因而系統(tǒng)設(shè)計鍵盤輸入部分采用4*4的矩陣鍵盤,共16個按鍵完成;顯示界面采用LCD1602字符型液晶顯示屏,LCD1602液晶能夠顯示2行32個字符,可以很好的滿足系統(tǒng)設(shè)計的要求。
5.系統(tǒng)軟件設(shè)計采用C語言編程,編譯環(huán)境為Keil。
Keil c51 是美國Keil Software 公司出品的51 系列兼容單片機C 語言軟件開發(fā)系統(tǒng),和匯編相比,C 在功能上、結(jié)構(gòu)性、可讀性、可維護性上有明顯的優(yōu)勢,因而易學易用。
Keil c51 軟件提供豐富的庫函數(shù)和功能強大的集成開發(fā)調(diào)試工具,全Windows 界面。另外重要的一點,只要看一下編譯后生成的匯編代碼,就能體會到Keil c51 生成的目標代碼效率非常之高,多數(shù)語句生成的匯編代碼很緊湊,容易理解。在開發(fā)大型軟件時更能體現(xiàn)高級語言的優(yōu)勢。
Keil C51 可以完成編輯、編譯、連接、調(diào)試、仿真等整個開發(fā)流程。開發(fā)人員可用IDE 本身或其它編輯器編輯C 或匯編源文件,然后分別有C51 及A51 編輯器編譯連接生成單片機可執(zhí)行的二進制文件(.HEX),然后通過單片機的燒寫軟件將HEX 文件燒入單片機內(nèi)。軟件主要三個方面:一是初始化系統(tǒng);二是數(shù)據(jù)采集;三是數(shù)據(jù)處理并進行顯示。這三個方面的操作分別在主程序中來進行。程序采用模塊化的結(jié)構(gòu),這樣程序結(jié)構(gòu)清楚,易編程和易讀性好,也便于調(diào)試和修改。
6.系統(tǒng)的調(diào)試及問題
在調(diào)試過程中,曾遇到以下問題:
當硬件連接無誤,在系統(tǒng)啟動后液晶不顯示,系統(tǒng)沒有反應(yīng),經(jīng)過分析這種情況有以下幾種可能:第一,硬件電路中存在虛焊,或電路接線焊錯;第二,芯片插反了導致電路短路;第三,液晶電路焊接錯誤。
遇到這種情況首先要用萬用表檢查芯片的供電電壓是否為5V,如果不是就檢查供電電路有沒有問題。如果兩端有電壓就檢查一下單片機有沒有插反,通過逐步排查最終找到問題是因為單片機供電引腳虛焊造成的。
鍵盤輸入顯示亂碼,和設(shè)計的鍵值不符,經(jīng)檢查發(fā)現(xiàn)矩陣鍵盤的行列端口定義與仿真接口定義不一致引起的,后重新修改端口問題得以解決。
初期系統(tǒng)顯示不穩(wěn)定,這有可能是系統(tǒng)電壓不穩(wěn)定,或者STC89C52芯片的31引腳EA引腳沒有接高電平,經(jīng)過排查發(fā)現(xiàn)系統(tǒng)電源電路中未加濾波電容,由于仿真電路不存在電源干擾問題,所以在仿真中可以穩(wěn)定運行的情況下,根據(jù)仿真電路制作出的實物可能會出現(xiàn)由于外界干擾帶來的系統(tǒng)工作不穩(wěn)定情況,這種情況一般是由電源的干擾造成,可以通過增加電源端的濾波電容來解決這種問題。
7.總結(jié):
本文采用STC89C52單片機設(shè)計完成了一款簡易計算器的制作, 經(jīng)過實際測試,功能穩(wěn)定操作方便,能夠達到計算器的基本功能要求,通過適當?shù)陌b和完善即可得到很好的推廣和應(yīng)用,此次設(shè)計對我具有很好的鍛煉效果,但此次制作也有有待提高之處,比如數(shù)據(jù)處理方面,顯示屏可以顯示15位數(shù)字,去掉一位符號位,理論上可以實現(xiàn)兩個7位數(shù)的加減乘除運算,但遺憾的是數(shù)據(jù)處理能力不足,未很好的解決乘法數(shù)據(jù)的處理,只能處理5位數(shù)與5位數(shù)的乘法,原因在于C語言運算符本身大小限制,程序方面也沒有很好的思路解決這個問題。同時由于時間和費用的限制,此款計算器只是實現(xiàn)了計算器的基礎(chǔ)功能,諸如開方等一些常用功能未能夠?qū)崿F(xiàn)。
參考文獻:
[1]李朝青.單片機原理及接口技術(shù)[M].北京:北京航空航天大學出版社,2005.
[2]康華光.電子技術(shù)基礎(chǔ)模擬部分(第五版) [M].北京:高等教育出版社, 2005.
[3]閻石.數(shù)字電子技術(shù)基礎(chǔ)(第四版)[M].北京:高等教育出版社,2005.
[4]白延敏.51單片機典型系統(tǒng)開發(fā)實例精講[M].北京:電子工業(yè)出版社,2009.
[5]張齊.杜群貴.單片機應(yīng)用系統(tǒng)設(shè)計技術(shù)[M].北京:電子工業(yè)出版社,2007.