薛玉利,刁廣強,柳欣,田 園
(山東青年政治學院信息工程學院、山東省高校智能信息處理技術與安全重點實驗室,山東 濟南 250103)
“單片機原理與應用”是電子信息工程專業的核心實踐課,培養學生電路設計、軟件開發和軟硬件聯調的能力,為后續嵌入式原理與應用、電子技術綜合設計、專業實習、畢業實習、畢業設計等課程打下堅實的基礎。該課程有實踐性強、軟硬件結合等特點,傳統教學方式將理論教學和實踐教學割裂為兩部分,難以取得理想效果。為此,許多教師在課程教學中引入了案例教學法,石巧云以LED 數碼管動態顯示為例介紹了案例教學的實施過程。單巍等人設計了“模擬電磁曲射炮”的實踐訓練,要求學生分組討論設計、分析實驗結果并改進。張謙設計了基于51單片機的人數監測系統綜合實驗,可用于單片機項目式教學。雷濤等人設計了一款基于單片機的心電監測系統,并將其應用于課程實驗教學。汪愛明等人設計了應用于煤礦無極繩運輸設備控制系統的顯示及語音提示裝置的實驗案例。張東陽等人介紹了一套較為完整的基于理實教學一體化的單片機原理與應用課程案例體系設計。
我們認為目前教學存在的問題和已有研究成果存在一些不足之處。①教學中實踐性不強。單片機課程一般有配套實驗箱,電路的連接和軟件的編寫較固定,學生大部分時候完成驗證性實驗,設計性實驗較少,無法培養學生的高階能力。②學生參與度較低。課程教學中,教師先講授理論知識點并演示,學生隨后進行實驗驗證,出現結果皆大歡喜,然而稍微換一下情境就完全不知道怎么處理。這是因為學生沒有深刻理解,不會舉一反三和思考總結。③一些研究中提供的教學案例大部分是綜合性實驗,需要學生掌握較多知識,一般要課程快結束時才能進行,在平時的教學中沒有體現出案例教學的特點。
單片機的I/O 口默認為輸出口,開關狀態檢測是單片機作為輸入口使用的典型案例。本文以開關狀態檢測為例介紹案例式教學方法的實施。
本課程開設在大二上學期,學生已完成C++語言程序設計、電路分析基礎、數字電子技術等課程的學習,具備了一定的C 語言編程、電路分析設計的能力。經過前幾周的學習,學生對單片機最小系統、硬件結構、C51 語言編程有了初步的認識。本案例將為后續的獨立式鍵盤、矩陣式鍵盤和中斷系統打下良好的基礎。具體的教學目標如表1所示。

表1 開關狀態檢測教學目標
案例式教學方法主要由課前預習、課中實踐和課后拓展三部分組成。課前預習每次十分鐘左右,通過視頻讓學生對所學內容有一個先驗知識,方便課堂上直接導入;課中實踐分為原理講授、軟件仿真、開發板調試三部分,培養學生分析問題、解決問題和舉一反三的能力;課后拓展通過老師布置或者學生自己尋找題目的方式,讓學生根據本次課程內容,查閱資料,完成一個創新性的設計,培養其自學能力、信息檢索能力和創新精神。每一次課程的實施都像一次過關游戲,每一次解決問題后會增強學生的專業自信,激發他們的學習積極性,為后續的“電子技術綜合設計”和“大學生創新創業項目實訓”打下良好的基礎。
學生觀看教師在網上教學平臺布置的視頻“獨立按鍵的原理”,并翻閱教材中“開關狀態檢測”部分,對獨立按鍵的原理和應用到開關狀態檢測部分的電路有個基本的了解。
⑴原理講授:電路原理圖如圖1所示。①通過開關閉合和斷開兩種情況的電路原理分析,學生發現“開關的閉合和斷開會導致I/O 端口是低電平還是高電平”。反過來,通過檢測I/O端口是低電平還是高電平,就知道開關是閉合還是斷開;②檢測到I/O 端口的電平,需要將其由高4 位傳遞給低4位,引入第一個問題:如何實現?③學生依據課前預習的內容,分組討論后,給出解決方案;④帶學生解讀該實例的代碼。

圖1 電路原理圖
⑵軟件仿真:①利用Proteus繪制開關檢測電路;②用keil 軟件編寫程序、生成hex 文件;③將hex 文件下載到Proteus 的單片機,觀察結果。在這個過程中,學生會遇到各種問題,教師在旁邊進行手把手指導,并鼓勵學生通過網絡查找問題的解決方法,將其分享到QQ群,方便其他遇到該問題的同學參考。實驗結果出現的一刻,學生會表現的更自信。
⑶開發板調試:單片機開發板電路原理圖如圖2所示,可以看出,與課本實例發生了一些變化,獨立按鍵連接的IO 端口變為P3 口的低4位,LED 燈連接的IO 端口變為P2口,如何將開關狀態檢測的信息傳遞給LED 燈。學生分組討論分析問題,提出各種解決問題的方法,調整代碼,并將hex 文件燒寫到開發板中逐一實現,觀察設想的方法與實際結果是否相符。

圖2 開發板電路原理圖
下面以其中一種解決方法為例,觀察開發板代碼相對于軟件仿真代碼做了哪些調整。軟件仿真代碼和開發板代碼的對比分析圖如圖3 所示,與軟件仿真代碼相比,開發板代碼主要發生了兩部分的調整:①開關和LED 連接的IO 口發生變化使得代碼中的變量發生相應變化;②軟件仿真中,開關的狀態由P1 口的高4 位檢測,利用“&”運算符屏蔽低4 位賦給變量temp,由temp 將高4 位移到低4位,再送到P1 口驅動LED 點亮。而開發板中需要將P3 口的低4 位取出,利用“|”運算符取出低4位,送到P2口驅動LED點亮。

圖3 軟件仿真代碼和開發板代碼的對比分析
學生分組查閱資料,找到開關狀態檢測的實際問題情境,并通過軟件仿真,將仿真結果截圖發到網絡教學平臺,實現舉一反三、鞏固練習。
案例式教學方法以學生為主體,教師引導,分層次、分階段地推進,以傳統教學為基礎,在完成課本實例基礎上,引入新的問題,引導學生針對新問題分組討論,嘗試各種解決方法,并在實踐中培養了舉一反三的能力。本文以開關狀態檢測為例進行了介紹,實際教學中每次課程均采用該教學方法,學生均能完成軟件仿真部分,實驗結果的呈現增強了同學的專業自信心,開發板調試部分需要同學分組討論、查閱資料,大部分同學順利完成程序設計,并實現了軟硬件聯調,這個過程培養了學生的自主學習、團隊協作、信息檢索和舉一反三能力。課后拓展環節給了學生開放空間,根據所學知識去解決實際問題,可以促進學生創新精神的培養。
案例式教學方法幫助學生更容易地學習專業知識,同時提升了他們舉一反三的能力。課前預習能夠讓學生對所學內容大概了解;課中軟件仿真促使學生將理論應用到實踐,實驗結果的出現建立學習自信,隨后的開發板調試,根據實際電路調整代碼并燒寫到開發板,實物結果更加建立專業自信;最后將所學知識技能應用到實際生活情景,培養了學生舉一反三的能力,促進了學生創新精神的培養,為后續課程打下了堅實的基礎。