鞠陽(yáng)
南京工程學(xué)院電力工程學(xué)院 南京 211167
單片機(jī)是典型的嵌入式微控制器,在工業(yè)控制、機(jī)電一體化、通信終端、智能儀表、家用電器等諸多領(lǐng)域應(yīng)用廣泛。國(guó)內(nèi)高校的一些相關(guān)專業(yè)在20世紀(jì)80年代末就開設(shè)了單片機(jī)原理及應(yīng)用課程,并成為電氣信息類、機(jī)械類等專業(yè)的專業(yè)核心課程。因?yàn)閱纹瑱C(jī)在實(shí)際生活中廣泛應(yīng)用,該課程在培養(yǎng)環(huán)節(jié)中都被定位在理論與實(shí)踐并重,著重培養(yǎng)學(xué)生開發(fā)實(shí)際應(yīng)用系統(tǒng)的能力。
該門課程是一門涉及硬件、軟件技術(shù)的綜合性課程。在學(xué)習(xí)本課程的時(shí)候,學(xué)生應(yīng)該掌握邏輯電路設(shè)計(jì)、計(jì)算機(jī)原理硬件以及軟件編程等知識(shí)。但在實(shí)際教學(xué)中發(fā)現(xiàn),當(dāng)需要學(xué)生綜合運(yùn)用這些知識(shí)分析解決單片機(jī)在實(shí)際生產(chǎn)過(guò)程中的具體問(wèn)題時(shí),往往不能融會(huì)貫通地加以理解和應(yīng)用,容易造成學(xué)生對(duì)本課程的畏難情緒,學(xué)習(xí)積極性受到影響。原因有不少,采用匯編語(yǔ)言為主的傳統(tǒng)授課方式就是其中之一,分析其原因包括:匯編語(yǔ)言語(yǔ)句抽象,可讀性差,學(xué)生難理解;匯編語(yǔ)言編程效率低,學(xué)生學(xué)習(xí)難度大;匯編語(yǔ)言代碼結(jié)構(gòu)復(fù)雜,難以維護(hù)、更新;匯編語(yǔ)言對(duì)硬件結(jié)構(gòu)依賴較大,難以實(shí)現(xiàn)在不同種類和系列單片機(jī)之間移植。
如今,企業(yè)的單片機(jī)項(xiàng)目開發(fā),一般都采用C語(yǔ)言。為適應(yīng)時(shí)代發(fā)展的要求,需要培養(yǎng)滿足社會(huì)需求的基于C語(yǔ)言的單片機(jī)人才。在多年的課程教學(xué)及科研實(shí)踐中,不斷總結(jié)、摸索和改革,構(gòu)建一套以C語(yǔ)言為主、匯編語(yǔ)言為輔、單片機(jī)應(yīng)用系統(tǒng)為教學(xué)主線、能力培養(yǎng)為目標(biāo)的課程教學(xué)體系。
C語(yǔ)言源于編寫UNIX系統(tǒng),與匯編語(yǔ)言和其他高級(jí)語(yǔ)言相比,優(yōu)點(diǎn)有很多:具有豐富的流程控制語(yǔ)句,適用于結(jié)構(gòu)化和模塊化設(shè)計(jì),使得程序?qū)哟吻逦?,易于閱讀、編寫、調(diào)試和維護(hù);使用范圍廣泛,可移植性強(qiáng),目前主流的CPU和MCU都有支持C的編譯器;數(shù)據(jù)結(jié)構(gòu)和運(yùn)算符豐富,有強(qiáng)大的庫(kù)函數(shù)支持,使用靈活方便;允許直接訪問(wèn)物理地址,可以直接操作計(jì)算機(jī)硬件;編程和調(diào)試效率高,目標(biāo)代碼質(zhì)量好。
用C語(yǔ)言編寫單片機(jī)程序與用匯編語(yǔ)言編寫單片機(jī)程序不太一樣。用匯編語(yǔ)言編寫單片機(jī)程序要按實(shí)際地址組織、分配存儲(chǔ)器資源,處理端口數(shù)據(jù);用C編寫程序不必十分熟系處理器的運(yùn)算過(guò)程和數(shù)據(jù)的具體組織,可以更專注于算法而不是具體實(shí)現(xiàn)細(xì)節(jié),也更符合人們的思考習(xí)慣。由于C語(yǔ)言具有這樣的優(yōu)點(diǎn),幾乎各品種單片機(jī)的廠商都發(fā)布了相應(yīng)的C語(yǔ)言開發(fā),因此采用C語(yǔ)言開發(fā)單片機(jī)已成為必然趨勢(shì)。
在傳統(tǒng)的教學(xué)模式中,“單片機(jī)與接口技術(shù)”課程內(nèi)容安排一般都是概述、硬件結(jié)構(gòu)、指令系統(tǒng)、匯編語(yǔ)言設(shè)計(jì)、存儲(chǔ)器擴(kuò)展、中斷與定時(shí)系統(tǒng)、I/O口擴(kuò)展及應(yīng)用、串行數(shù)據(jù)通訊。采用C語(yǔ)言教學(xué),匯編語(yǔ)言應(yīng)要求適當(dāng)掌握。因?yàn)榇罅楷F(xiàn)有的寶貴資料是匯編語(yǔ)言編制的,需具備一定的閱讀能力。掌握的程度以能閱讀和理解常用的指令為度,不要求所有的指令都熟記。
在課程內(nèi)容安排上,可以采用這樣的模式:概述、硬件結(jié)構(gòu)、I/O口和存儲(chǔ)器擴(kuò)展、中斷與定時(shí)系統(tǒng)、應(yīng)用、串行數(shù)據(jù)通訊。其中,指令系統(tǒng)的講解穿插在各個(gè)章節(jié)中,以例題的形式講解。例題中用到哪條指令就講哪條指令,不再單獨(dú)講解,也不單獨(dú)講解指令的尋址方式。匯編語(yǔ)言章節(jié)可不講,但要求學(xué)生能讀懂課本該章節(jié)中的部分例題。由于學(xué)生的先修課程中已經(jīng)學(xué)過(guò)C語(yǔ)言,該部分內(nèi)容也不單獨(dú)介紹。在各章的由淺入深的例題中,帶著學(xué)生一邊復(fù)習(xí)和鞏固C語(yǔ)言知識(shí),一邊介紹C51與標(biāo)準(zhǔn)C語(yǔ)言的不同點(diǎn)和編程注意事項(xiàng),并逐漸讓學(xué)生熟悉編寫較大規(guī)模C語(yǔ)言程序的思維模式。
在教學(xué)過(guò)程中讓學(xué)生樹立學(xué)習(xí)信心,吸引他們的學(xué)習(xí)興趣。教師將Keil C51集成開發(fā)軟件和編程器帶到教室,編程實(shí)現(xiàn)單片機(jī)控制8個(gè)LED閃爍的簡(jiǎn)單程序。通過(guò)軟件編譯仿真演示后,下載至單片機(jī)中進(jìn)行硬件演示,讓學(xué)生了解單片機(jī)開發(fā)的全過(guò)程。上課時(shí)教師多用通俗易懂的語(yǔ)言講解,多舉實(shí)例,使學(xué)生容易理解和消化。在教學(xué)過(guò)程中,盡量采用講解、演示方法,如講完整形變量的概念后,通過(guò)軟件演示,可以看到變量在內(nèi)存中存放的位置、存儲(chǔ)的內(nèi)容和存放方式,這樣學(xué)生對(duì)整形變量就有完整清晰的認(rèn)識(shí)。通過(guò)進(jìn)一步演示可以看到整形變量的值為32767時(shí),再加1不等于32768,而是等于-32768,但其溢出時(shí)系統(tǒng)卻沒(méi)有任何報(bào)警提示,所以要求程序設(shè)計(jì)者做出正確處理,如溢出飽和等。同樣,講完定時(shí)器/計(jì)數(shù)器的工作原理和初始化方法后,編寫簡(jiǎn)單的定時(shí)器/計(jì)數(shù)器應(yīng)用程序,在仿真軟件中運(yùn)行進(jìn)行演示,可以清楚看到程序運(yùn)行時(shí),計(jì)數(shù)器的值不斷變化,也可以看到定時(shí)器中斷服務(wù)程序的執(zhí)行結(jié)果。這樣定時(shí)器/計(jì)數(shù)器的整體形象非常生動(dòng),其工作原理也就不難理解了。通過(guò)講解、演示這些教學(xué)方式,使學(xué)生掌握了Keil C51集成開發(fā)軟件的使用方法,以后只要碰到有疑難的地方,就可以用仿真軟件調(diào)試運(yùn)行解決,增強(qiáng)了對(duì)C語(yǔ)言的直觀了解。
下面以流水燈為例,介紹以C語(yǔ)言為主的教學(xué)法具體講解步驟。
1)硬件部分:P1口接8只發(fā)光二極管,編寫程序?qū)崿F(xiàn)讓發(fā)光二極管按P1.0—P1.1—P1.2—…P1.7—P1.0—…的順序依次循環(huán)點(diǎn)亮。圖略。
2)軟件部分:
3)利用仿真器或編程器在面包板上現(xiàn)場(chǎng)調(diào)試并運(yùn)行該實(shí)例,證明軟硬件設(shè)計(jì)的正確性。
4)軟件部分,介紹主要語(yǔ)句功能。
5)講解課本相關(guān)知識(shí)點(diǎn)。
6)在學(xué)生掌握該例題后,引申該例題,同學(xué)生互動(dòng)(如若采用定時(shí)器,程序應(yīng)如何修改?等等)。
7)講解相應(yīng)的匯編程序。
8)講解該例題未涉及的知識(shí)點(diǎn)。
該課程是實(shí)踐性很強(qiáng)的課程,因此除理論教學(xué)外必須重視實(shí)驗(yàn)教學(xué)。盡量給學(xué)生提供充分的上機(jī)實(shí)踐是調(diào)動(dòng)、激發(fā)學(xué)生學(xué)習(xí)主動(dòng)性的很好手段。通過(guò)上機(jī)實(shí)踐,學(xué)生能自主地獲得知識(shí),提高調(diào)試程序的能力。這樣就可以把一部分教學(xué)內(nèi)容移到上機(jī)的過(guò)程中去自行獲取,既能節(jié)約教學(xué)學(xué)時(shí),又能幫助學(xué)生牢固掌握知識(shí)。一般課堂教學(xué)學(xué)時(shí)與上機(jī)實(shí)踐學(xué)時(shí)應(yīng)掌握為3:1。
在實(shí)驗(yàn)內(nèi)容安排上,努力建立由淺入深、從基礎(chǔ)到前沿、從接受知識(shí)到培養(yǎng)綜合能力的實(shí)驗(yàn)新體系。在實(shí)驗(yàn)內(nèi)容上要突出綜合性、實(shí)踐性特點(diǎn)。綜合性實(shí)驗(yàn)著重于實(shí)驗(yàn)原理及要求。實(shí)驗(yàn)內(nèi)容、操作步驟等從略或簡(jiǎn)述操作事項(xiàng),以加強(qiáng)實(shí)驗(yàn)動(dòng)手能力的培養(yǎng)。例如,為了讓學(xué)生真正掌握可編程并行接口芯片8255A的使用,要求學(xué)生對(duì)它的實(shí)驗(yàn)原理及編程方法吃深吃透,從最簡(jiǎn)單的做起,讓8255A芯片的PA口的8個(gè)引腳PA7~PA0與8個(gè)發(fā)光二極管相接,讓發(fā)光二極管一個(gè)一個(gè)或兩個(gè)兩個(gè)或三個(gè)三個(gè)循環(huán)閃爍顯示。當(dāng)學(xué)生真正理解了8255A芯片使用主要在于編程,其3種工作方式可用軟件編程的方法來(lái)實(shí)現(xiàn)后,再在指導(dǎo)性實(shí)驗(yàn)后面增加相關(guān)的思考題,要求學(xué)生按照教師提出的實(shí)驗(yàn)?zāi)康暮鸵螅约涸O(shè)計(jì)、自擬操作方法與步驟,在面包板上接插線,上機(jī)調(diào)試。當(dāng)學(xué)生做完實(shí)驗(yàn)后又要求他們寫出有結(jié)論、有分析、有體會(huì)的實(shí)驗(yàn)報(bào)告,經(jīng)過(guò)這樣的舉一反三,活學(xué)活用,充分調(diào)動(dòng)學(xué)生積極性,有利于培養(yǎng)新型人才。它可以開闊學(xué)生知識(shí)面,有利于學(xué)生的動(dòng)手能力的培養(yǎng),使學(xué)生學(xué)到的知識(shí)得到鞏固和升華。
課程設(shè)計(jì)是一個(gè)綜合性的教學(xué)環(huán)節(jié),也是一個(gè)實(shí)戰(zhàn)練兵的機(jī)會(huì)。為此安排一周的課程設(shè)計(jì),讓學(xué)生有較充裕的時(shí)間系統(tǒng)地編寫并調(diào)試一套完整并有一定程序量的程序。課程設(shè)計(jì)題目分為兩大類型,即基本類型和提高類型?;绢愋桶娮隅姵绦蛟O(shè)計(jì)、交通燈控制器程序設(shè)計(jì)、模擬全主動(dòng)洗衣機(jī)程序設(shè)計(jì)、步進(jìn)電機(jī)單步進(jìn)給特性的測(cè)試等題目;提高類型包括單片機(jī)與微機(jī)串行通信軟件設(shè)計(jì)、閉環(huán)恒溫控制系統(tǒng)程序設(shè)計(jì)、倒車?yán)走_(dá)設(shè)計(jì)、溫度顯示儀表等題目。學(xué)生可根據(jù)自己的情況自主選擇設(shè)計(jì)內(nèi)容。
課程設(shè)計(jì)要求完成硬件原理圖、軟件流程圖、調(diào)試成功的軟件。通過(guò)課程設(shè)計(jì)的實(shí)戰(zhàn)練兵,可以達(dá)到以下幾個(gè)目的:1)進(jìn)一步鞏固了所學(xué)理論知識(shí);2)使學(xué)生對(duì)該課程有系統(tǒng)的認(rèn)識(shí);3)使學(xué)生對(duì)這門課從理論到實(shí)踐跨出了關(guān)鍵性的一步。
通過(guò)采用以C語(yǔ)言為主、匯編語(yǔ)言為輔的教學(xué)方法的改革后,學(xué)生學(xué)習(xí)單片機(jī)與接口技術(shù)的積極性有了較大的提高,學(xué)生既能扎實(shí)地學(xué)好理論知識(shí),又具備了較強(qiáng)的動(dòng)手能力。根據(jù)對(duì)幾屆學(xué)生的調(diào)查和成績(jī)統(tǒng)計(jì)來(lái)看,學(xué)生對(duì)該課程的掌握與實(shí)際開發(fā)能力均得到了較大的提高,為學(xué)生今后的畢業(yè)設(shè)計(jì)乃至將來(lái)的工作打下了良好的基礎(chǔ)。學(xué)生在學(xué)完本課程后,參加校內(nèi)和省內(nèi)的電子設(shè)計(jì)競(jìng)賽的成績(jī)比以前有了較大的提高。
在以后的教學(xué)進(jìn)程中,還需要進(jìn)一步完善課程的教學(xué)改革,為培養(yǎng)出高素質(zhì)、能力強(qiáng)、符合現(xiàn)代化建設(shè)需要的新型人才,為實(shí)現(xiàn)學(xué)校的人才培養(yǎng)目標(biāo)繼續(xù)努力,力爭(zhēng)使教學(xué)水平、教學(xué)質(zhì)量躍上一個(gè)新的臺(tái)階。
[1]胡漢才.單片機(jī)原理及其接口技術(shù)[M].2版.北京:清華大學(xué)出版社,2004:237-367.
[2]牛驍.單片機(jī)和C語(yǔ)言的教學(xué)探討[J].江蘇機(jī)械制造與自動(dòng)化,2001(4):136-138.
[3]林益平,等.單片機(jī)C語(yǔ)言課程教學(xué)的探索與實(shí)踐[J].電氣電子教學(xué)學(xué)報(bào),2007(4):104-106.
[4]苗新法.單片機(jī)教學(xué)改革方案探索[J].中國(guó)現(xiàn)代教育裝備,2009(8):79-80.