福州大學(xué) 吳芳琴
計算器為人們的學(xué)習(xí)、生活提供了很大的便利,市場大,應(yīng)用范圍廣,是辦公應(yīng)用不可缺少的器件。常見的計算器類型主要有:算術(shù)型計算器,能夠進行加、減、乘、除等簡單的四則運算。科學(xué)型計算器,能夠進行指數(shù)、對數(shù)、平方、開方等的運算。程序計算器,可通過編程將較復(fù)雜的運算步驟儲存起來,再進行多次運算。一般的計算器包括顯示部分(顯示器)、鍵盤、存儲、控制等部。分利用硬件和軟件設(shè)計的計算器更為實用,同時也是電子領(lǐng)域的一個重要課題。
本系統(tǒng)通過單片機與外圍擴展器件連接實現(xiàn)簡易計算器的設(shè)計。本系統(tǒng)設(shè)計目標(biāo)有:
(1)能夠進行8位整數(shù)的四則運算,計算的結(jié)果由8個數(shù)碼顯示管顯示。
(2)計算器鍵盤有以下功能鍵分別是:10個數(shù)字鍵(0-9)、4個符號鍵(+、-、*、/)、刪除鍵和等號鍵,
系統(tǒng)實現(xiàn)的具體功能有:
(1)系統(tǒng)上電時,8個數(shù)碼管都顯示為“0”。
(2)當(dāng)按下某個數(shù)字鍵時,該數(shù)字顯示在數(shù)碼管的最低位,原數(shù)碼管顯示的數(shù)字依次向高位移動一位。
(3)當(dāng)按下刪除鍵時,8個數(shù)碼管的最低位被刪除,同時其它高位向低位依次移動一位,最高位由數(shù)字0填充。
可進行8位整數(shù)的四則運算,計算的結(jié)果由8個數(shù)碼顯示管顯示。
(1)本設(shè)計采用的主控芯片是STC89C52單片機,是一種低功耗、高性能的芯片。
STC89C52單片機具有以下功能:512字節(jié)RAM,8K字節(jié)Fl ash,內(nèi)置4KBEEPROM,32位I/O口線,全雙工串行口,3個16位定時器/計數(shù)器,4個外部中斷等。相對來說該主控芯片功能較強大,且編程較為靈活,適應(yīng)性強,適合很系統(tǒng)的計算器設(shè)計。STC89C52的P3口作為鍵盤的輸入口,實現(xiàn)數(shù)據(jù)的輸入;P0口:作為輸出口,控制數(shù)碼顯示管顯示數(shù)據(jù)的結(jié)果,P1口的D0位和D1位分別連接集成塊的鎖存位LE。電路圖如圖1所示。
(2)矩陣鍵盤電路,該鍵盤的線路設(shè)計為矩陣式,行線與P3口的低4位連接,列線連接P3口的高4位,再分別連接10K電阻與5V電源連接。數(shù)碼顯示電路,8個數(shù)碼管為共陰極數(shù)碼管,由于顯示電路有八個數(shù)碼管,每個數(shù)碼管有8個引腳,需要的I/O口數(shù)量多,本系統(tǒng)采用兩個片集成塊74HC573,該集成塊是擁有八路輸出的透明鎖存器,輸出為三態(tài)門,是一種高性能硅柵CMOS器件共20個。D1~D8為數(shù)據(jù)輸入端,Q1~Q8為數(shù)據(jù)輸出端,LE為鎖存控制端;OE為使能端。其中一塊74HC573通過P0口控制8個數(shù)碼管的位選(即8個數(shù)碼管的COM端),另外一塊74HC573通過P0口連接每個數(shù)碼管的8個數(shù)碼段。P1口的D0位和D1位分別連接集成塊的鎖存位LE端。
系統(tǒng)包括以下三個功能模塊:主程序,讀取判斷鍵碼程序并運算子程序、數(shù)碼管顯示子程序。流程圖如圖2、圖3所示。
鍵盤模塊的程序設(shè)計。采用線反轉(zhuǎn)法來判斷按鍵,若判斷有鍵按下,須去抖動,再讀出鍵碼值(即讀出P3口的低四位,若有鍵按下延時15ms,再讀取鍵碼判斷有鍵按下,即有鍵按下),再讀取鍵碼值。根據(jù)鍵碼值進行相應(yīng)的操作,若是數(shù)字鍵碼值,則換算成其相應(yīng)的十進制數(shù);若是刪除鍵碼值,則刪除數(shù)碼管低位數(shù)字,最高位填充零,其余高位向低位移動一位;若為“+、—、*、/”鍵,則進行相應(yīng)的四則運算。

圖1 數(shù)碼管連接電路
顯示模塊的程序設(shè)計。數(shù)碼管顯示采用動態(tài)掃描顯示方法,先將要顯示數(shù)字的段碼通過P0口送到負(fù)責(zé)鎖存段碼的74HC573后,將該集成塊的LE端置為高電平,鎖存后再置為低電平。要點亮的數(shù)碼管COM端為低電平,其它數(shù)碼的COM端為高電平,將8個數(shù)碼管的位選通過P0口送到負(fù)責(zé)位選的74HC57,再將該芯片的LE端設(shè)為高電平,鎖存后再置為低電平,相應(yīng)的數(shù)碼管顯示數(shù)字,延時5ms。如此依次循環(huán)點亮相應(yīng)數(shù)碼管。

圖2 主程序

圖3 鍵盤掃描子程序流程圖
主程序設(shè)計。該主程序主要包括上電初始化部分,數(shù)碼管全部顯示為0,再采用死循環(huán)調(diào)用鍵盤掃描子程序和數(shù)碼管顯示程序。
本設(shè)計顯示部分硬件采用2片74HC595負(fù)責(zé)鎖存數(shù)碼管的段碼和位選碼的方法,并用P0口來驅(qū)動,鍵盤采用16個矩陣鍵盤。在軟件設(shè)計中,本設(shè)計用C語言來編寫程序,采用模塊化設(shè)計,主要分為數(shù)碼管顯示子程序,鍵盤掃描子程序,主程序循環(huán)調(diào)用各個子程序。
本系統(tǒng)設(shè)計計算器設(shè)計方案有簡單、可靠、成本低等有電。經(jīng)過大量運算操作,本設(shè)計經(jīng)達(dá)到了設(shè)計要求,可以正確輸出運算結(jié)果。
[1]胡輝.單片機原理與應(yīng)用[M].北京:中國水利水電出版社,2007.
[2]郭天祥. 51單片機C語言教程[M].北京:電子工業(yè)出版社,2012.
[3]龔運新.單片機C語言開發(fā)技術(shù)[M].北京:北京清華大學(xué).出版社,2006.
[4]柴鈺.單片機原理及應(yīng)用[M].西安電子科技大學(xué)出版社,2009.2.