高娟 田鑫鑫 吳思
摘 要:問題驅動教學法是以問題為牽引,將提出問題、分析問題、解決問題作為主要內容和手段的教學法。本文通過單片機教學中的“流水燈”案例,淺談“問題驅動法”在單片機應用課程教學中的應用。
關鍵詞:問題驅動教學法;單片機應用;流水燈
問題驅動教學法是以問題為牽引,將提出問題、分析問題、解決問題作為主要內容和手段的教學法。它的突出特征是以提出問題方式引導學生主動學習和思考,因此如何在課堂教學中設計問題無疑是該教學模式的關鍵。
筆者從事單片機應用課程教學多年,在教學過程中多次嘗試將“問題驅動教學法”應用其中,教學效果顯著。該文通過單片機教學中的“流水燈”案例,淺談“問題驅動教學法”在單片機應用課程教學中的應用。
1 問題驅動教學法應用實例分析
1.1 編寫流水燈程序
為了引入流水燈,首先設計如下問題:在上一任務中已經實現用單片機控制8個發光二極管亮滅閃爍的任務,但是8個燈是同時亮滅的。那么我們能不能控制8個燈按照流水作業的形式一個一個的輪流點亮呢?由此引出流水燈的實現方法。
學生根據以前學過的知識,很快可以編寫出程序,并將程序下載到單片機中,可以看到實現了我們預期的效果,8個燈依次輪流點亮了。
為了使學生熟練掌握流水燈程序的編寫方法,可以引入趣味性的問題,從而達到吸引學生和增強他們的發散思維。可以提出一個新的問題:除了這一種流水顯示方式外,還有沒有別的顯示方式呢?
大家經過思考得出還可以讓8個燈依次全部點亮、雙燈流水點亮、雙燈相向點亮等,實現的方法就是控制P1口輸出相應的數據即可。這時可以讓學員自己編寫程序,觀察效果。
通過編寫程序,實現各種各樣的流水燈效果,學生有了較濃學習興趣。接下來趁熱打,又提出如下問題:看了剛才的流水燈效果,大家可以發現燈閃爍得太快,也即延時時間太短,那么怎樣修改延時,增長延時時間呢?
1.2 增長延時時間
要增長延時時間首先要計算延時子程序的延時時間,由此引出延時時間的計算。
在12MHZ晶振頻率下,前三條單周期指令的執行時間是1us,后兩條雙周期指令的執行時間為2us。因此:
內循環的延時時間是:255*(1+2)=765?S
外循環一次的時間是:765?S+1?S+2?S=768?S
外循環的執行時間是768*255=195840?S
粗略的計算:765*255=195075?S≈195ms≈0.2S
知道了原來延時子程序的執行時間是0.2s后,怎樣增長延時時間呢?例如要增加延時時間為1s。
學員經過思考得出通過增加一層循環從而增長延時時間,修改后的1s延時程序如下:
DELAY1S:MOV R3,#100;延時1s的循環次數
DEL2:MOV R4,#10;延時10s的循環次數
DEL1:MOV R5,#250;延時1ms的循環次數
DEL0: NOP
NOP
DJNZ R5, DEL0
DJNZ R4, DEL1
DJNZ R3, DEL2
RET
將1s延時程序下載后,觀察到流水燈閃爍變慢了。接下來又提出如下問題:MOV P1,#XXXXXXXXB和ACALL DELAY在以上程序中被引用了8次,而8個數據之間是有規律的,顯然程序重復太多,能否使其簡化?由此引出利用循環程序實現流水燈。
1.3 簡化程序結構
循環程序的關鍵要用到循環左移指令RL A,首先設置循環次數和循環初值, 顯示模式字送P1端口, 顯示模式字左移1位,判斷循環次數-1是否等于0,跳轉到不同的地方。具體程序如下:
START:MOV R2,#08H
MOV A, #0FEH
NEXT:MOV P1,A
ACALL DELAY1s
RL A
DJNZ R2,NEXT
SJMP START
接下來又提出如下問題:上面這種方法只能簡化流水燈程序,如果要讓8個燈變幻出很多花樣的閃爍方式,那程序還是要編寫很長的,有沒有什么方法用短一點程序可以實現多一些花樣的閃爍效果呢?由此引出萬能閃爍燈的程序。
1.4 萬能閃爍燈
萬能閃爍燈是利用查表程序來實現的。將要輸出的數據都放在一個表格中,利用循環程序依次查表輸出每一個數據,直到所有的數據都輸出一遍再從頭開始。
2 結語
以上就是問題驅動教學法在“流水燈”教學中的整個應用過程。在這個過程中,始終以問題引出新知識,且問題的設計由易到難、層層遞進,符合人們對事物的認知規律。我們多年在單片機課程教學中運用問題驅動教學法,設計了一系列的問題引導學生學習,而學生通過觀察、思考、聯想,感受到成功的喜悅,也認識到學習這門課的意義,從而變被動學習為主動學習,提高了學習的興趣。
此外,由于單片機應用是一門實踐性很強的課程,因此,“問題驅動教學法”還應注重引導學生在實踐中主動發現并解決問題。這一應用還需要更深入地探索和研究。該文僅做初步探討,以期能拋磚引玉。
[參考文獻]
[1]張廣群,汪杭軍,王保平.問題驅動模式在VB教學中的應用研究[J].計算機教育,2008(22).