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