郭杰
一、Proteus和Keil介紹及聯調
理論教學在以往的單片微型計算機課程教學過程中實施比較多,而實驗教學因條件限制開展較少。教師講解軟件設計、硬件設計和單片微型計算機的原理等理論知識,學生在學習過程中普遍感覺枯燥、概念抽象,很難領會和應用;開展的大多數的實驗也僅僅是驗證性的基于單片微型計算機實驗箱的簡單實驗,學生很難掌握單片微型計算機系統開發的實戰經驗[1]。此外,有不少學校通過單片微型計算機實驗箱或實驗電路板另外加上硬件電路仿真頭的模式,需要采購大量的定制儀器和實驗設備,設備使用過程中損壞比較嚴重,維護工作量很大[2]。Proteus仿真軟件和Keil編譯軟件的出現,很好地解決了這些問題,提供了很好的“單片微型計算機”課程的仿真教學平臺。
1.軟件簡介
由英國Lab Center Electronics公司設計開發的Proteus仿真軟件是一款高效仿真工具,由ISIS模塊和ARES模塊組成,其中ISIS模塊用于原理圖的編輯和仿真,ARES用于PCB布線編輯[3]。與別的單片微型計算機仿真軟件相比, Proteus除了能仿真單片微型計算機芯片的工作情況,也可以同時仿真單片微型計算機以外的電路和沒有用到單片微型計算機的其他模擬電路、數字電路的工作情況。該軟件的應用能夠進行單片微型計算機系統的無失真仿真。
Proteus仿真軟件與其他電路設計仿真軟件相比最大的差別在于,它的功能是全面的,它有非常強大的元件庫,甚至超過任何其他電路設計軟件。就其電路的仿真方面的功能能夠比過Multisim,而且它具有的單片微型計算機的仿真功能,Multisim和任何其他仿真軟件是不具備的。另外,Proteus仿真軟件的PCB電路設計、制版功能可以和Protel不相上下。其功能之強大,絲毫不亞于Protel,是眾多電子產品設計者使用得心應手的工具軟件。
由德國開發的Keil軟件是一款51單片微型計算機開發設計平臺,支持采用多種編程語言,包括匯編語言、C語言等高級語言。目前常用的 Keil μVision版本除了能夠進行單純的軟件仿真(只進行軟件程序仿真,不搭接硬件電路),同時能夠通過硬件仿真器,加上單片微型計算機的硬件系統,在仿真器當中加載設計程序后進行電路的實時仿真。另外,還能夠利用μVision內部嵌入的Keil Monitor-51模塊,不額外增加硬件仿真器的情況下,對單片微型計算機硬件、軟件系統綜合調試[4]。
Keil C51目標代碼生成效率很高,大部分語句匯編代碼生成很緊湊,理解起來比較容易。開發復雜軟件系統更加能夠表現出使用高級語言的編程優勢。較匯編語言相比,在功能、結構、可讀性、可維護性上C程序設計語言有顯著的優勢,因而好學易用。用過匯編語言的設計人員,今后再使用C語言來編程,會有更加深刻的體會。
2.Proteus與Keil軟件的聯調方法
Keil編譯軟件和Proteus仿真軟件的聯合調試,也就是要建立軟件和硬件仿真調試聯合的過程。硬件仿真環境和軟件執行環境能夠組成軟件硬件聯合仿真系統,一般軟件設計環境和硬件仿真環境都有一套自己的查錯和修改頁面,利用 Proteus仿真軟件和 Keil設計軟件就能夠完美地進行軟件和硬件系統的聯合調試。在該聯合調試項目系統中,Proteus仿真軟件作為硬件仿真界面,而Keil設計編譯軟件作為軟件調試界面。
二、單片微型計算機設計任務項目的模塊化分解
1.系統資源
所有的單片微型計算機都結合了一套系統資源。51單片微型計算機提供的資源包括寄存器和存儲器。我們可以利用多種51單片微型計算機的模擬仿真軟件來查看寄存器內容。另外,在仿真軟件Proteus 中,執行debug菜單下registers菜單命令可以調出相應的仿真窗口。要想查看系統內部存儲器,可以通過執行debug 菜單下的 internal memory 菜單項命令。
2.硬件接口
單片微型計算機的接口電路知識包含了應用電子技術的各個領域,根據單片微型計算機應用系統的產品任務需要,Proteus仿真將單片微型計算機仿真和SPICE電路仿真進行了整合,仿真工具包含各種儀器儀表,有示波器、邏輯分析儀,等等。
3.軟件程序
在課程的教學過程中,軟件程序的教學包括語句的結構、功能講解,檢查語法錯誤和邏輯錯誤。在項目課程實施時,針對具體單片微型計算機的任務,教師可以結合Keil和Proteus軟件進行仿真、演示和講解,以取得良好的教學效果。
4.綜合應用
一個完整的單片微型計算機的應用系統包括軟件和硬件。在學完相關理論知識點后,通過項目任務的實施,可以將一個項目分解成多個子任務,通過幾節課來完成,這樣學生更加容易掌握。這個階段,軟件的編寫、調試是學習的主要內容。教師引導學生根據功能要求設計硬件電路,給出參考程序,幫助學生分析、理解、修改軟件達到項目設計的要求。
根據單片微型計算機課程的大綱要求結合學生的具體情況,教學中我將整個單片微型計算機課程的教學內容設計成單片微型計算機基礎知識、流水燈電路的設計與制作、交通燈電路的設計與制作、數字鐘的設計與制作以及漢字點陣LED顯示的設計與制作等項目。我將課程的知識點貫穿于項目任務中,指導學生通過實踐學習掌握單片微型計算機的應用。
三、項目仿真教學實例
“單片微型計算機”是一門注重實踐的學科,學生要想很好地領會和應用,必須通過真實的項目任務來實施。單片微型計算機系統是軟硬件結合的系統,教學中搭建硬件電路需要耗費大量的時間,如果采用傳統的實驗箱又不利于學生理解硬件。同時,單片微型計算機系統的開發過程就是軟件、硬件不斷修改完善的過程。使用仿真軟件免去了反復修改硬件的不便,使單片微型計算機的學習拓展到課堂之外。下面,我將以單片微型計算機的典型應用“數碼管顯示”為例說明單片微型計算機的仿真教學。
“數碼管顯示”是單片微型計算機項目課程中的重點、難點。特別是數碼管的動態掃描顯示技術,其硬件電路結構復雜,如果讓學生搭接電路,大致需要四節課時,而且容易出錯。采用Proteus仿真軟件搭接電路既節省時間,又不易出錯,電路改動非常方便,特別適合循序漸進、由淺入深地開展探究式教學。教學過程中,結合課程標準及教學目標,我將數碼管的顯示分為三個子任務,從單個數碼管到多個數碼管,由靜態顯示到動態顯示,借助仿真軟件由易到難、層層推進地完成教學任務。任務一是數碼管的靜態顯示,具體要求是用一個數碼管循環顯示0~9,時間間隔約0.5s。
四、任務實施步驟
本任務的學習目標是理解數碼管靜態顯示的硬件結構及原理;鞏固一維數組的定義、初始化及數組元素的引用方法;熟練掌握Keil調試軟件及Proteus仿真軟件的使用方法。
課前,我布置學生復習數碼管的結構、類型及工作原理;讓學生查閱數碼管顯示0~9時的共陰和共陽段碼表;復習一維數組相關知識;到課程資源庫中觀看靜態顯示和動態顯示的動畫視頻。
課上,我對學生課前的預習情況進行檢查,及時了解學情以便及時調整上課方案;講解靜態顯示原理及硬件結構,給出參考原始程序,要求學生通過 Proteus搭接電路,利用 Keil軟件編譯程序;最后在仿真平臺上進行軟硬件的綜合調試,巡回指導學生調試,及時解決調試過程中遇到的問題,確保每組學生的基本功能程序調試成功。
1.打開Proteus軟件,繪制單個數碼管的靜態顯示原理圖
通過硬件電路的繪制,我讓學生熟悉常用元件的名稱和位置,掌握快速查找元器件的方法,本例中,數碼管采用共陰極數碼管,讓學生注意辨別。另電路省略了數碼管的限流電阻,不影響仿真,但實際電路中要接上。單片微型計算機的時鐘和復位電路在仿真電路中可以不畫,不影響仿真結果(如圖1)。
2. 打開Keil軟件,按照參考程序編輯軟件查錯、編譯,產生HEX文件
采用C語言編寫程序,可讀性強,保存時,注意提醒學生保存為C文件,勾選產生HEX文件,在遇到未能編譯時需要查錯,直到產生HEX文件。程序不長,重點和學生講解數組的結構和應用、延時程序的修改,等等(如圖2)。
3.在Proteus仿真軟件中,將HEX文件加載到單片微型計算機中,運行,觀察調試現象,完成基本功能任務
加載文件需要正確選擇HEX文件的保存路徑,所以,文件保存時,提醒學生不要亂存,方便查找。如若軟件、硬件正確,一般調試應該正常。
4.修改基本功能程序,實現拓展功能
①實現0、2、4、6、8循環顯示;②實現1、3、5、7、9循環顯示;③實現由9至0依次遞減循環顯示。
學生分組討論、探究,教師點撥。在教師的引導下學生嘗試修改程序,觀察程序運行效果,不斷完善功能,達到知識的深度理解、靈活應用。
拓展功能的實現,進一步加強學生對一維數組的理解、通過反復修改程序加強學生對Proteus仿真軟件和Keil軟件的熟練使用。這種需要頻繁修改程序的課程更加能夠體現利用仿真軟件教學帶來的便利性和直觀性,大大地提高課堂教學的效率。
五、結語
與傳統教學相比,采用Proteus仿真軟件進行單片微型計算機的仿真教學,優勢非常明顯,克服了教學過程中枯燥的理論難于理解的問題。學生可以通過軟件仿真看到直觀的現象,幫助修改調試程序,快速掌握知識點,提高學習興趣。這種軟件仿真教學硬件投入少、沒有硬接線和元器件的損耗,既節約資源也省時省力,確保了很好的教學效果。
參考文獻:
[1]胡敬朋,王 聰.單片機項目教學研究及實踐[J].電氣電子教學學報,2009(5):82-84.
[2]袁鋒偉,趙立宏,朱慧玲,等.基于Proteus的單片機課程教學與實驗改革[J].實驗室研究與探索,2007(12):75-78.
[3]劉燎原,孫秋波.Proteus軟件在單片機項目教學中的應用[J].徐州建筑職業技術學院學報,2009(2):63-65.
[4]孫凌燕,黃允千.Proteus與Keil軟件的整合在單片機實驗開發中的應用[J].實驗室研究與探索,2008(4):59-61,68.