黃 勇
作為自動(dòng)控制技術(shù)核心的單片機(jī)具有體積小、功能強(qiáng)、成本低、應(yīng)用靈活等優(yōu)點(diǎn)。通過這幾年《單片機(jī)原理與應(yīng)用》課程的教學(xué),筆者對(duì)于如何采用適當(dāng)?shù)慕虒W(xué)方法提高該課程的教學(xué)效果有如下一些體會(huì)。
一、傳統(tǒng)教學(xué)方法存在的弊端
傳統(tǒng)的學(xué)科教學(xué)法以單片機(jī)教材的知識(shí)結(jié)構(gòu)為主線,強(qiáng)調(diào)理論知識(shí)體系的完整性、嚴(yán)密性。把單片機(jī)知識(shí)系統(tǒng)按教材的章節(jié)分成硬件結(jié)構(gòu)、指令系統(tǒng)、軟件編程、系統(tǒng)的擴(kuò)展和各種外圍器件的應(yīng)用,授課過程也是按這一順序?qū)嵤┑?。一學(xué)期下來,教師感覺教學(xué)難度很大,學(xué)生也普遍感到這門課程難學(xué)。
作為技校生,他們以前沒有接觸過有關(guān)計(jì)算機(jī)結(jié)構(gòu)方面的知識(shí),一開始就去學(xué)習(xí)單片機(jī)硬件結(jié)構(gòu),要理解控制器、運(yùn)算器、存儲(chǔ)器、總線、地址的作用和相互關(guān)聯(lián)并不是一件簡(jiǎn)單的事。實(shí)際結(jié)果也是不管教師用盡什么樣的形象比喻來講解,到頭來學(xué)生們還是一頭霧水。
目前各技工學(xué)校采用的單片機(jī)教材基本上都是以單片機(jī)結(jié)構(gòu)為主線來講述單片機(jī)原理與應(yīng)用,在教材的編排上沒有考慮技校生的接受能力,使得學(xué)生在學(xué)習(xí)的過程中不斷遇到挫折,于是問起學(xué)生對(duì)學(xué)習(xí)單片機(jī)課程的感受時(shí)也只有“生澀難懂”四個(gè)字了。
二、對(duì)單片機(jī)課程教學(xué)方法的改進(jìn)
我們的具體做法是:改過去的以理論教學(xué)為主為現(xiàn)在的以實(shí)驗(yàn)項(xiàng)目為主,將理論與實(shí)驗(yàn)項(xiàng)目有機(jī)地結(jié)合起來,打破課堂教學(xué)按教材章節(jié)順序進(jìn)行的慣例,以實(shí)驗(yàn)項(xiàng)目作為實(shí)施教學(xué)的依據(jù)。在教學(xué)中,首先分析課程的知識(shí)目標(biāo)和能力目標(biāo),將整個(gè)課程劃分為若干個(gè)具有遞進(jìn)性和連貫性的“項(xiàng)目”。每個(gè)項(xiàng)目都是一個(gè)完整的單片機(jī)應(yīng)用系統(tǒng)的開發(fā),都包含了教學(xué)大綱所要求的相應(yīng)知識(shí)點(diǎn),由淺入深地把單片機(jī)的軟、硬件知識(shí)和單片機(jī)的應(yīng)用技能滲透到各實(shí)驗(yàn)項(xiàng)目的具體實(shí)施過程中。
三、分步驟講授《單片機(jī)原理與應(yīng)用》的具體方式及案例
筆者在講授《單片機(jī)原理與應(yīng)用》時(shí)主要分成以下六個(gè)步驟:
第一步:根據(jù)《單片機(jī)原理與應(yīng)用》課程的知識(shí)體系,前期花大力氣開發(fā)出了一塊與教學(xué)大綱相適應(yīng)的實(shí)驗(yàn)板,具體的實(shí)驗(yàn)項(xiàng)目有:?jiǎn)纹瑱C(jī)最小應(yīng)用系統(tǒng)(控制一盞燈的亮、滅)、流水燈程序設(shè)計(jì)、百秒計(jì)數(shù)器程序設(shè)計(jì)、搶答器程序設(shè)計(jì)、音樂演奏程序設(shè)計(jì)、電子鐘程序設(shè)計(jì)等,這些實(shí)驗(yàn)項(xiàng)目基本涵蓋了單片機(jī)課程的主要內(nèi)容。
第二步:以每次實(shí)驗(yàn)項(xiàng)目為教學(xué)內(nèi)容編寫實(shí)用的校本講義。該類項(xiàng)目教學(xué)要求課程內(nèi)容與課程實(shí)施的手段相吻合,因此編寫具有針對(duì)性的校本講義顯得尤為重要。
講義內(nèi)容包括:實(shí)驗(yàn)?zāi)康?、編程要求、硬件電路說明、應(yīng)用程序設(shè)計(jì)、程序調(diào)試(利用Protues仿真軟件,其電路見圖1)、具體電路的焊接及程序的寫入等。
第三步:課堂上圍繞當(dāng)次的實(shí)驗(yàn)項(xiàng)目?jī)?nèi)容,講清涉及的硬件、指令、編程方法及該項(xiàng)目的學(xué)習(xí)目的,要求學(xué)生對(duì)各知識(shí)點(diǎn)達(dá)到基本理解的程度。
第四步:在實(shí)驗(yàn)室利用Protues仿真軟件對(duì)學(xué)生編寫的程序進(jìn)行仿真、調(diào)試。
Protues仿真軟件是一款最新的EDA工具軟件,相對(duì)于以往的EWB(Electronics Work Bench)等仿真軟件具有一系列非常突出的優(yōu)點(diǎn)。它不僅具有其他EDA工具軟件的一般電路的仿真功能,還能仿真單片機(jī)及其各種外圍器件。在Protues中繪制好原理圖后,調(diào)入已編譯好的目標(biāo)代碼文件:*.HEX,就可以在Protues的仿真電路圖中看到模擬的實(shí)物運(yùn)行狀態(tài)和過程。
第五步:在實(shí)驗(yàn)室指導(dǎo)學(xué)生焊接具體的實(shí)驗(yàn)電路并利用燒錄器寫入程序,觀察實(shí)際的單片機(jī)實(shí)驗(yàn)板的運(yùn)行效果。
第六步:對(duì)該實(shí)驗(yàn)項(xiàng)目進(jìn)行總結(jié),并布置一個(gè)與所學(xué)項(xiàng)目相似的單片機(jī)應(yīng)用系統(tǒng)的設(shè)計(jì)任務(wù),讓學(xué)生獨(dú)立完成程序的編寫,并要求在Protues上調(diào)試通過,以檢驗(yàn)學(xué)習(xí)效果。
四、分步驟講授的案例——流水燈設(shè)計(jì)項(xiàng)目
1.項(xiàng)目確定
開發(fā)一個(gè)流水燈產(chǎn)品。
2.項(xiàng)目分析
師生共同分析該流水燈電路的結(jié)構(gòu)特點(diǎn)、電路焊接要求及完成該項(xiàng)目的工作步驟。教師引導(dǎo)學(xué)生在教材或其他參考書中查找相關(guān)程序和硬件電路圖的資料,并講解、演示實(shí)驗(yàn)過程中要用到的編程器,以及Protues仿真軟件等儀器設(shè)備的使用方法。
3.制定計(jì)劃
師生共同探究、制定出詳細(xì)的項(xiàng)目實(shí)施計(jì)劃:
(1)分小組討論硬件電路圖的設(shè)計(jì);
(2)教師指導(dǎo)各小組探討流水燈程序的編寫方法;
(3)學(xué)生獨(dú)立用Protues仿真軟件校驗(yàn)自己編寫的程序;
(4)小組之間交流程序的編寫技巧;
(5)各小組完成電路焊接并將程序燒入單片機(jī);
(6)教師檢查各小組單片機(jī)流水燈產(chǎn)品的焊接工藝和實(shí)驗(yàn)的效果。
4.項(xiàng)目實(shí)施
在教師的引導(dǎo)和幫助下,學(xué)生按照計(jì)劃在規(guī)定時(shí)間內(nèi)完成各階段的任務(wù),并寫出詳細(xì)的活動(dòng)記錄,記錄內(nèi)容包括硬件電路的焊接、利用Protues仿真軟件對(duì)所編程序調(diào)試和仿真、用編程器將程序?qū)懭氲絾纹瑱C(jī)中觀察到的實(shí)際運(yùn)行效果等。
5.項(xiàng)目評(píng)價(jià)
教師評(píng)價(jià)各小組實(shí)驗(yàn)項(xiàng)目完成的效果和質(zhì)量。具體評(píng)價(jià)內(nèi)容包括:程序設(shè)計(jì)的合理性、實(shí)驗(yàn)板的焊接工藝、編程器和仿真器使用的熟練程度、學(xué)生獨(dú)立處理問題以及合作交流能力等。
附:流水燈實(shí)驗(yàn)項(xiàng)目校本講義的具體內(nèi)容
(1)編程要求。流水燈程序:實(shí)現(xiàn)8個(gè)LED燈的循環(huán)點(diǎn)亮, 要求用三種方法實(shí)現(xiàn)。
(2)硬件電路。本流水燈實(shí)際上就是一個(gè)帶有八個(gè)發(fā)光二極管的單片機(jī)最小應(yīng)用系統(tǒng),即由發(fā)光二極管、晶振、復(fù)位、電源等電路和必要的軟件組成。
從圖1中可以看出,如果要讓接在P1.0口的LED1亮起來,那么只要把P1.0口的輸出變?yōu)榈碗娖郊纯?;相反,如果要接在P1.0口的LED1熄滅,就要把P1.0口變?yōu)楦唠娖?;同理,接在P1.1~P1.7口的其他7個(gè)LED的點(diǎn)亮和熄滅的方法同LED1。因此,要實(shí)現(xiàn)流水燈功能,我們只要將發(fā)光二極管LED1~LED8依次點(diǎn)亮、熄滅,8只LED燈便會(huì)一亮一暗地形成流水的效果。由于人眼的視覺暫留效應(yīng)及單片機(jī)執(zhí)行每條指令的時(shí)間都只有幾微秒,因此我們?cè)诳刂瓢l(fā)光二極管亮、滅的時(shí)候要采用延時(shí)程序保持一段時(shí)間,否則我們將會(huì)看不到“流水”的效果。
(3)應(yīng)用程序設(shè)計(jì)。軟件兩部分組成,硬件電路搭建完后,我們還不能看到流水燈循環(huán)點(diǎn)亮的效果,我們還需要告訴單片機(jī)怎么來進(jìn)行工作,即編寫程序去控制單片機(jī)P1端口各管腳電平的高、低變化,來實(shí)現(xiàn)發(fā)光二極管的一亮一滅。軟件編程是單片機(jī)應(yīng)用系統(tǒng)中的一個(gè)重要的組成部分,是單片機(jī)學(xué)習(xí)的重點(diǎn)和難點(diǎn)。實(shí)現(xiàn)流水燈的功能可有以下幾種軟件編程方法。
位控法。這是一種不夠靈活但又最易理解的方法,采用順序程序結(jié)構(gòu),用位指令控制P1口的每一位輪流輸出高、低電平,從而來控制相應(yīng)LED燈的亮、滅。
循環(huán)移位法。在上面的位控法中我們是通過逐個(gè)控制P1端口的每一位來實(shí)現(xiàn)流水燈效果的,因此程序顯得不夠靈活。我們可以利用循環(huán)移位指令,采用循環(huán)程序結(jié)構(gòu)進(jìn)行編程。在程序一開始就給P1口送一個(gè)八位的二進(jìn)制數(shù)01111111,這個(gè)數(shù)本身就讓P1.0先低,其他位為高。延時(shí)一段時(shí)間后,再讓這個(gè)數(shù)據(jù)向高位移動(dòng),然后再輸出至P1口。這樣也可以實(shí)現(xiàn)“流水”效果。由于8051系列單片機(jī)的指令中只有對(duì)累加器ACC中數(shù)據(jù)左移或右移的指令,因此實(shí)際編程中我們應(yīng)把需移動(dòng)的數(shù)據(jù)先放到ACC中,然后將ACC移動(dòng)后的數(shù)據(jù)再轉(zhuǎn)送到P1口。(具體程序略)
查表法。上面的兩個(gè)程序都是比較簡(jiǎn)單、易懂的流水燈程序,但“流水”花樣只能實(shí)現(xiàn)單一的“從左到右”或“從右到左”。而采用查表法所編寫的流水燈程序,能夠?qū)崿F(xiàn)任意方式的流水效果,只要更改流水花樣數(shù)據(jù)表中的流水?dāng)?shù)據(jù)即可,真正實(shí)現(xiàn)各種隨心所欲的流水燈效果。
我們首先把要顯示流水花樣的數(shù)據(jù)建在一個(gè)以TAB為標(biāo)號(hào)的數(shù)據(jù)表中,然后通過查表指令“MOVCA,@A+DPTR”把數(shù)據(jù)取到累加器A中,然后再送到P1口進(jìn)行顯示。
(4)項(xiàng)目小結(jié)。當(dāng)上述程序編寫好以后,我們需要使用Keil編譯軟件對(duì)其編譯,得到單片機(jī)所能識(shí)別的二進(jìn)制代碼,然后再用編程器將二進(jìn)制代碼燒錄到AT89C51單片機(jī)中,此時(shí)我們就可以看到LED1~LED8的“流水”效果了。
上面程序?qū)崿F(xiàn)的流水燈功能都比較簡(jiǎn)單,在對(duì)該實(shí)驗(yàn)項(xiàng)目進(jìn)行總結(jié)后,布置一個(gè)與流水燈項(xiàng)目相似的單片機(jī)應(yīng)用系統(tǒng)的設(shè)計(jì)任務(wù),讓學(xué)生獨(dú)立完成程序的編寫及調(diào)試。
采用這種實(shí)驗(yàn)項(xiàng)目教學(xué)法后,我們把理論上深?yuàn)W枯燥的知識(shí)變成了看得見、摸得著的實(shí)際單片機(jī)應(yīng)用電路,極大地調(diào)動(dòng)了學(xué)生的學(xué)習(xí)興趣,取得了明顯的教學(xué)效果。
(作者單位:廣東省中山市高級(jí)技工學(xué)校)