韓光江+孫鵬+何夢雪+余曉銘
摘 要:提出了一種可進(jìn)行連續(xù)四則運(yùn)算的計算器設(shè)計方案,主要從硬件部分和軟件部分兩方面介紹此設(shè)計方案。在硬件部分中,說明了所選用的STC公司最新的STC15F2K61S2微控制器相比于傳統(tǒng)C51單片機(jī)的優(yōu)勢,提出了僅用3個引腳驅(qū)動8位數(shù)碼管的方法,并介紹了4×4矩陣鍵盤的驅(qū)動方案;在軟件部分中,給出了計算器程序執(zhí)行流程圖,并提出了一種實(shí)現(xiàn)計算器四則運(yùn)算的算法。
關(guān)鍵詞:計算器;單片機(jī);驅(qū)動方案;數(shù)碼管
中圖分類號:TP368.1 文獻(xiàn)標(biāo)識碼:A DOI:10.15913/j.cnki.kjycx.2015.10.101
隨著嵌入式技術(shù)的不斷發(fā)展,計算器在生活中的應(yīng)用越來越廣泛,便攜式計算器日益成為人們工作、學(xué)習(xí)中不可或缺的工具。因此,采用STC公司最新的STC15F2K61S2單片機(jī),并結(jié)合數(shù)碼管、矩陣鍵盤等模塊完成了一種可進(jìn)行8位數(shù)以內(nèi)四則運(yùn)算的計算器設(shè)計。其能進(jìn)行連續(xù)的四則運(yùn)算,并能實(shí)時顯示當(dāng)前輸入數(shù)據(jù)和輸出結(jié)果,具有計算可靠、制作簡單、集成度高、成本低等優(yōu)點(diǎn)。
1 計算器硬件設(shè)計部分
1.1 微控制器
STC15F2K61S2系列單片機(jī)是STC生產(chǎn)的單時鐘/機(jī)器周期(1T)的單片機(jī),是高速、高可靠性的新一代8051單片機(jī),ISP編程時時鐘頻率可設(shè)置為5~35 MHz,可徹底省掉外部晶振。其內(nèi)部已集成了高可靠性的復(fù)位電路,無需再設(shè)計外部復(fù)位電路。
此外,STC15F2K61S2相比于傳統(tǒng)的C51系列單片機(jī)而言,具有良好的在線仿真功能,可直接在集成開發(fā)環(huán)境Keil中進(jìn)行在線仿真調(diào)試,極大地提高了軟件開發(fā)的效率。
1.2 數(shù)碼管顯示模塊
本模塊包含8個數(shù)碼管。在傳統(tǒng)的數(shù)碼管驅(qū)動方法中,需要采用8個引腳段選,極大地浪費(fèi)了微控制器的引腳資源。因此,本設(shè)計采用2片74HC595芯片,實(shí)現(xiàn)了采用3個引腳就能完成8位數(shù)碼管的驅(qū)動,很好地節(jié)省了有限的控制器資源。
設(shè)計采用2片74HC595串聯(lián),第一級(U1)的串行輸出口(QH)與第二級(U2)的串行輸入口(SER)相連。這樣在串行輸入時鐘的作用下,可一次性更新16位數(shù)據(jù)。其中,U1輸出的8位數(shù)據(jù)為數(shù)碼管的段選,控制數(shù)碼管顯示數(shù)字;U2輸出的8位數(shù)據(jù)用于選中數(shù)碼管以循環(huán)刷新。在C語言程序代碼中,會預(yù)先存儲所需要的數(shù)碼管顯示編碼,包括段選編碼和位選編碼,顯示數(shù)字時只需輸出相應(yīng)編碼即可。
1.3 矩陣鍵盤
用戶輸入采用4×4矩陣鍵盤,依次表示阿拉伯?dāng)?shù)字“0~9”“+”“-”“×”“÷”“=”和“清零(CLR)”。采用8個I/O口進(jìn)行驅(qū)動,其中,4個為輸入口,4個為輸出口。驅(qū)動時,在主函數(shù)中對矩陣鍵盤輪詢進(jìn)行掃描。掃描時控制行的4個I/O置高作為輸入,控制列的4個I/O置低為輸出模式。當(dāng)讀取到控制行I/O的狀態(tài)發(fā)生改變,即有按鍵按下,且處于狀態(tài)發(fā)生改變的一行4個按鍵之中。此時,可進(jìn)一步判斷具體被按下的按鍵,將控制行的I/0置低,控制列的I/O口置高,查詢控制列的I/O狀態(tài),即可找到具體被按下的按鍵。
2 計算器軟件設(shè)計部分
計算器在上電復(fù)位后進(jìn)行相關(guān)外設(shè)的初始化,設(shè)置定時器的中斷時間為5 ms。在中斷函數(shù)中,讀取數(shù)碼管緩沖區(qū)中的數(shù)據(jù),通過74HC595串行輸入并行輸出進(jìn)行顯示,每次刷新1個數(shù)碼管,利用二極管的余輝效應(yīng)可達(dá)到同時顯示8個數(shù)字的效果。具體過程如圖1所示。
在主函數(shù)中,利用輪詢法判斷是否有按鍵被按下。在判斷
有按鍵按下后,更新按鍵編碼緩沖區(qū)的數(shù)據(jù),并利用此數(shù)據(jù)確定按鍵動作函數(shù)。如果輸入的是“0~9”,則臨時緩沖區(qū)中的數(shù)據(jù)將“×10+按鍵所代表的數(shù)字”。比如,臨時緩沖區(qū)的數(shù)據(jù)為2,按下按鍵“5”,則進(jìn)行“2×10+5”的操作。此時,臨時緩沖區(qū)的數(shù)據(jù)更新為25.
當(dāng)按下運(yùn)算符按鍵時,將運(yùn)算符標(biāo)志修改為相應(yīng)的運(yùn)算符編碼,結(jié)果緩沖區(qū)會復(fù)制臨時緩沖區(qū)的數(shù)據(jù)。比如,按下“+”,則記錄運(yùn)算符標(biāo)志symbol修改為1,當(dāng)輸入下一個數(shù)字按下“=”鍵或其他運(yùn)算符按鍵,根據(jù)運(yùn)算符標(biāo)志位,結(jié)果緩沖區(qū)和臨時緩沖區(qū)進(jìn)行相應(yīng)運(yùn)算,并將結(jié)果緩沖區(qū)的內(nèi)容復(fù)制到數(shù)碼管緩沖區(qū),以便數(shù)碼管及時更新。
3 結(jié)束語
設(shè)計方案采用的微控制器是STC公司最新的STC15F2K61S2微控制器,相比于傳統(tǒng)的51單片機(jī),其能進(jìn)行在線仿真調(diào)試,且無需外部晶振和復(fù)位電路,降低了制作的成本和復(fù)雜度。顯示部分采用2片74HC595串聯(lián)的方法,僅使用3個引腳便可完成8位數(shù)碼管的驅(qū)動。在軟件設(shè)計中,提出的算法嚴(yán)謹(jǐn)、可靠,可按照預(yù)定的要求進(jìn)行連續(xù)的四則運(yùn)算。因此,文章中的計算器設(shè)計方案具有使用可靠、成本低廉、集成度高和制作簡單等一系列優(yōu)點(diǎn)。在制作完成后,通過大量的運(yùn)算驗證證明,本設(shè)計能達(dá)到設(shè)計要求,可正確輸出計算結(jié)果。此外,此設(shè)計對理解單片機(jī)的原理、學(xué)習(xí)單片機(jī)的控制具有很大幫助。
參考文獻(xiàn)
[1]張建強(qiáng).電子制作基礎(chǔ)[M].西安:西安電子科技大學(xué)出版社,2010.
〔編輯:張思楠〕