韓光江+孫鵬+何夢雪+余曉銘

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