摘要:單片機的學習應從實踐中來,再回到實踐中去,以用促學,學以致用。因此,單片機的教學必須打破傳統的教師講,學生聽、記的方式,應引導學生在實踐中解決一個個的實際問題,在解決問題的過程中獲得知識、增長經驗、提高素質。教師的角色應該是組織者、啟發者、引導者,而不是灌輸者。
關鍵詞:單片機教學;應用;編程
翻一下傳統的單片機教材,一般總是以單片機的結構為主線,先講硬件原理,然后是指令,接著講軟件編程,再是系統擴展和外圍器件,最后舉一些實例(這些實例往往由于篇幅的關系,很少涉及具體的程序)。而教材中對系統開發的過程和開發過程中要用到的工具(比如匯編軟件、仿真器、編程器等)的使用方法缺乏完整、詳盡的說明。所以有很多學生學完了整個單片機課程,總是不能將理論應用于實際。單片機不像模擬電路和數字電路那樣,只要搞懂了電路原理,再按照產品要求設計好相應的電路就可以了。它是一種簡單的硬件結構和復雜而又靈活的軟件系統相結合的產物。同樣一個芯片,可以設計出各種各樣的功能。或者要完成同樣的功能,不同的設計者編寫的程序卻并不完全一樣,運行效果也可能大相徑庭。所以單片機的學習一定要大量地閱讀成熟的設計案例,學習別人的設計思想、編程方法并應用到自己的實踐中去。要求學生在應用中學編程、在應用中增長知識、在應用中積累經驗。而不是學了一些硬件原理和指令就大功告成。基于以上原因,本人嘗試一種全新的單片機教學方法:以單片機的應用為藍本,結合基本的工業控制系統和實踐工作中的具體應用,不分先后順序,將各條指令貫串于一個又一個的實驗中,利用實驗來學習單片機的硬件原理、指令系統和編程方法,使學生盡快地熟悉單片機系統開發的基本步驟,掌握軟件編程的基本方法。以下是筆者的具體教學設計思路:
認識單片機通過一個簡單的單片機實驗電路板,認識單片機芯片的引腳功能,讓學生直觀地了解一個單片機系統的基本組成:電源;時鐘電路(一般情況下,是利用單片機內部的高增益反相放大器外接晶體振蕩器和兩個電容構成);復位電路;外圍電路(通過地址總線、數據總線、控制總線和單片機連接起來)。
認識單片機系統開發的整個過程當學生對單片機有了初步認識后,完整地演示一個單片機軟件系統的開發過程(系統必須簡單直觀,比如紅綠燈的控制系統,硬件電路板事先準備好):第一步,匯編源程序的編輯。第二步,匯編語言源程序的匯編。第三步,匯編語言程序的仿真調試。第四步,目標程序的寫入。第五步,將寫好程序的芯片插入電路板,通電獨立運行。通過演示以上過程,學生明白了一段程序從源代碼變成目標代碼,最后寫到單片機里運行的全過程。在以后的教學過程中,每一個實驗都必須貫徹執行以上五個步驟。只有這樣,才能讓學生對單片機軟件系統的開發有一個整體認識,也能讓學生慢慢地掌握程序編輯、匯編的技巧,掌握仿真器(仿真器是單片機系統開發最有力的工具)和編程器的使用方法。

培養學生分析硬件電路和閱讀程序的能力打印一些內容上有新意、源于實踐的實例(包括電路圖和程序),以小組為單位分配給學生。要注意按實驗室的規模進行分組。一般情況下,一個班可以分成8~10個組,每組4~5人。每次各小組的內容都不一樣,避免各小組之間互相抄襲、敷衍了事的情況發生。然后讓學生自己看書、查資料,結合電路圖把每條指令的功能和整個程序的功能翻譯出來,對于具備實驗條件的一定要完整地貫徹上面提到的五個步驟,完成實驗。這樣做的目的是讓學生自主學習、獨立思考,學生之間互相交流配合、取長補短、互相促進。教師是啟發者、引導者、組織者,不是灌輸者。重點講解學生理解有困難的內容,略講或不講學生自學可以完成的內容。我們應該為學生創造自主學習的空間。如表所示為筆者設計的部分練習內容。
培養學生運用知識的能力按照各個小組平時的表現,分別給學生布置適合他們自身能力水平的課題,真正做一次完整的、自主的單片機應用系統的開發。在這個過程中每個環節都要落實到位:(1)明確任務。(2)選定器件。(3)設計、組裝硬件電路。在本環節中,應盡量選取一些成熟的功能模塊加以利用;對于新增功能,則需要學習一些必要的新器件知識。(4)軟件開發,即明確設計任務→繪出程序流程圖→編寫程序→匯編成目標程序→仿真調試。(5)軟硬件聯調。通過這一環節,綜合解決軟硬件問題。(6)寫入程序。(7)單片機應用系統獨立運行。有了獨立自主開發單片機應用系統的經歷,雖然說只是剛剛跨過單片機殿堂的門檻,但無疑會增強學生進一步學習單片機的信心和興趣。
(本欄責任編輯:周秀峰)