徐偉業 馬湘蓉 楊會軍 馮琤
南京工程學院信息與通信工程學院 南京 211167
“教師的最高境界是喚醒學生的興趣”--愛因斯坦語錄中的原話。實際教學過程中,經過數年的綜合電子系統設計教學實踐發現,激發學生的程序控制興趣的確可以收獲到意想不到的教學效果。本文從一線的理論教學和實踐教學出發,對激發學生程控興趣的教學思路做了總結與思考,希望對這門課程的教學與實踐提供可借鑒經驗。
綜合電子系統設計課程是電子信息專業學生必修課程,是在學生學完語言類和電子類等課程后所設的一門綜合類的實踐課程,課程設置的目標是將學生所學過的知識運用于構建一個規模較大的、數模混合的、可以自動控制的電子系統。在展開時要求具有較好的綜合性,實踐性,檢驗性與可擴展性。要求學生具有綜合的、靈活的運用知識的能力,能夠用以往學過的知識,創新性地完成一定規模的電子系統設計和對應的微芯片的智能控制。同時該課程也是后續課程電子類實訓的一個先期實踐課程,為后續的電子類實訓以及畢業設計打下一個堅實的基礎,因此,該課程在電子專業的培養體系里具有承上啟下的中堅作用。
這門課程一開始的培養目標定得比較高,是因為這門課開始之前有較多的先修課程打底,所以,理論上認為學生基礎比較好,自然教學起點放得比較高。但是實際實施的過程中,發現還是存在一些問題的,主要總結為以下兩條。
在學習綜合電子系統設計課程之前,學生學過相關的編程課程有2 門,一門是高級C 語言設計,在大一的第二學期展開,該課學時較多,還要參與計算機等級考試,但是,學生對總體的程序控制能力并不佳,具體可參考每屆大二學生的二級通過率。另外一門單片機原理與設計既涉及電子電路,又涉及程序編制與控制,但是因為這是第一次設計微控制,涉及內容較多,特別是系統結構和系統控制部分占比較大,這樣實際的語言控制的鍛煉機會大大縮水。因此,在學習電子系統設計的時候,除少數學生的系統控制能力不錯外,大多數學生的程控能力比預期來的要差了一截,不但設計興趣不濃,甚至還具有畏難情緒。
綜合電子系統設計之前的先修相關電路課程有電路分析、模擬電子技術、數字電子技術與EDA、高頻電子線路、單片機原理、嵌入式系統等。如果按照中等學生的正常發揮,大多數學生其實已經儲備相當的電路設計理論知識,具備一般的電路設計能力(包括一般的資料查閱與電路規劃、模塊組合等能力),但是因為涉及的科目比較多,內容的交互性比較強,學生的軟硬軟遷移與轉換的能力不順暢、不自如,特別是當系統比較龐大復雜的時候,學生的這種設計與調試能力明顯跟不上。
鑒于綜合電子系統設計課程的重要性,針對教學中存在的問題,采取相應的應對策略,激發學生的設計興趣,提高課程學習效率和學習效果。文中采用如下方法進行教學改進與實踐。
大家都知道,簡單的知識很容易理解與掌握,并且大多數人都有避難就易的心理趨同,因此,筆者在這門課程的最初采取簡單原則。一切從最簡單開始,降低起點。首先在程序驅動上不再拋開C 語言的編制結構,之前以為學生學過了,就應該會,實際上,入門和熟練的差距還是有點距離的。大多數學生有基本的入門知識和深入研究的素養,但是要想一開始沒有鋪墊直入主題,學生多少有點功力不濟,因此,采用例題的形式將語言編程的基本知識進行一次組合,如數組、數表、函數、變量、寄存器、時隙與時延、存儲空間與位置等等,再來一次演練,熟悉又陌生,溫故又知新。其次在硬件設計與實現上也從最簡單的電路開始,采用可視化器件,講究電路設計與連接,并且每個通路借助仿真平臺實時操作演示電平和邏輯值,體現流水操作,所控即所見,雖然原理簡單,但也是一氣呵成。最后在微電腦的中控環節也不從內部腦回路結構開始,先避免繁復,僅僅從外圍的接口開始,將前端的程序和后端的硬件借助中控MCU 有機組合。因為是按步驟完成,又是從最底端開始設計,因此最簡單的程控就完成了。實際控制過程中,先讓學生裝好環境,帶了電腦到教室,現場只采用一句程序,驅動微單片機任意一個P 口,點亮外圍電路一個7段數碼管,好多人會說這也太簡單了吧,單片機原理已經學過了。不錯是很簡單,但是讓學生再次溫習了之前的知識。C 語言賦值,會不會?端口選擇會不會?數碼管驅動會不會?都會,都是以前學過的,那好,可以變化嗎?數碼管可以變化顯示各種數值?個數由1 個變為8 個,靜態變為動態,人眼視覺停留多少?延時怎樣準確?和晶振的關系?微單片機定時器如何用?同樣的電路結構只是提高了一點要求,教師先做好講解與示范,包括C 語言里的相關程序,學生先理解再做好程序調試,因為簡單,都能跟得上節奏,連那些平時不怎么喜歡編程的學生也都能適應。
依然是同一電路結構,要求逐漸增加,模塊也逐漸累積,程序也已經由最初的一行加碼到數百行。整個設計過程比較簡單,但是連續性很強,大多數學生并沒有因為簡單而無聊,反而是學習的過程覺得輕松,饒有興趣。還認為自己可以開發系統,適應變化,很有成就感。
當然,這里的簡單不是簡化,而是分解,教學中采用遷移原理,將信號與線性系統課程里復雜信號分解為簡單信號進行求解的原理遷移過來,將系統設計也進行分解,分解原則除了簡單還是簡單。實踐表明這個方法確實可行,消除了學生的畏難情緒,引起學生的設計興趣,為電子系統設計涂上最初的底色。
綜合電子系統設計課程綜合性、實踐性很強,課程內容比較廣泛,無論你的教學設計多么簡單,學習起來仍然是有一定難度的,這就需要教師不但要在整體上把控有力,知識交互上也要講究方法。如何引導學生從底層開始,逐步學習軟件與硬件的點對點對接,完成學生的這種遷移與轉換是關鍵問題。本課程按照系統結構分為底層,中層和頂層,共三層來引導。
1)底層的線路轉換與數據轉換:上述的七段數碼管顯示案例就是最典型的硬件線路與軟件的控制對接,幾條電路線可以轉換為簡單幾句語句,而且這種轉換從最基本最底層的電路已經開始,只是在轉換過程中軟件的控制一定要遵循硬件的邏輯結構,底層設計包含線路轉換,基本數據輸入輸出的邏輯變換以及函數塊的構建與移植等。掌握這種最基本的轉換,在程控中實現程序語句與線路連接的等價代換。只要多做幾個練習,經過這種底層的軟硬件鏈接和強化,基礎會得到非常大的固化,而且這種思維還會遷移到其他的課程學習中。
2)中層的芯片級封裝與控制:當底層的線路能夠按照基本要求轉換或者對接完畢,就可以將芯片按照函數或者模塊的形式進行封裝,在封裝時,特別注重每一個芯片在工作原理的學習和功能的使用,這個要很細致,不能操之過急,因此在功能描述時,依然采用底層的轉換邏輯,將時序與功能表用程控語言進行點對點的遷移與轉換,然后借助可視化等手段調試成功后封裝,外掛微控制器外。中層設計比底層設計整體性強,但是按照芯片接口分類時,依然遵循簡單原則,將分類后的接口按照底層的遷移邏輯進行函數設計,軟件描述服從硬件的構造,實現軟硬件與芯片級的接口鏈接與知識遷移,設計好的函數逐層累加,最后完成功能模塊。
3)頂層的系統設計:當所需的芯片級模塊已經封裝好之后,頂層的系統設計就變得比較簡單了,只要辨別清楚主函數里邏輯控制和時序控制就可以了。頂層的主函數設計要求以簡潔為主,因為任何具體的功能要求在中層級完成,只要順著正常調用邏輯,少量程序就可以實現。但是頂層的邏輯控制需要顯示模塊配合,達到調試目的。
經過這種三層遷移與轉換,軟件與硬件之間原理簡單明了,切換機制自如,軟件可以當作硬件,硬件可以當做軟件,從底層到頂層,逐步拾級而上,不再畏懼設計難度和系統復雜性。當學生掌握了鑰匙,自信心再上一層樓,設計興趣也再次提升。
可視化教學不是一般意義上的可視化編程,可視化編程在語法的控制與檢測方面要求比較嚴格,消耗學生很大一部分精力。而可視化教學是在已有的開發環境中添加可視化硬件設計,在學習中注重解決電路的實現問題上。在上述的軟件與硬件的聯調過程中,借助開發環境和仿真平臺,加入可視化器件,比如并口的LED、LCD 顯示器以及設置的寄存器和RAM 存儲器等,隨時將調試過程的中間值顯示出來以幫助驗證。這些可視化器件并非僅僅只是一個中間驗證環節或者終端顯示界面,而是與前面的入門案例和知識遷移相結合,一邊做著顯示與提示,一遍還需要復雜的程序編制來驅動顯示器本身。另外,在驅動顯示的同時還有函數調用,又因為顯示器本身還是一塊硬件芯片,編寫驅動函數時還涉及軟件上的接口與硬件的對應和封裝。所以,在展開可視化教學時,除了顯示與驗證的功能外,還存有開發與設計的成分在里面。
引入可視化教學,使程控調試變得直觀易行。學生可以充分利用時間碎片自學自檢地完成設計項目,好像系統開發變成了生活的一部分,不知不覺,興趣就培養出來了。
按照上述的教學方式與思路,進行教學效果檢驗。首先提前布置3 ~4 個綜合系統設計題目,有難有易,自由選擇,然后拋出誘餌,以作品的完美度作為成績評判標準。學生在選題時進行人員組合,有的一個宿舍選一個題目的,也有一個宿舍四個人特意選兩個課題的,四個人兩兩討論,再互相討論;也有幾個要好的學生選一個題目的,便于交流;還有就是學生根據興趣或者難易程度,分散的,自由的任意選題。
課程調試中也會有各種問題出現,但是學生基本可以解決語法、變量、接口和一般的功能問題,遇到算法和邏輯性問題會熱烈討論,也會大膽提出自己的見解。基礎好的學生不但在功能上有所翻新,而且在算法上也會尋求簡潔程序編制,做出與眾不同的作品來。總的來說,學生經過前期的教學引導與實踐訓練,在方法、思路和系統的軟硬件設計的獨立性已經很強,在學習的積極性方面也表現活躍,可以完成該有的設計任務。甚至有的學生對當時的作品不太滿意,經過不斷琢磨與改進,還會重新提交更加完美的作品。事實證明,當有足夠的設計興趣和設計信心,再加上充裕的時間,每一屆學生都有很特別的創新性作品,可以用百花齊放、百家爭鳴來形容。
課程結束后,許多學生反饋說這門課容量大、負擔重,但是可以學到很多的東西,特別是程控方面得到很好的鍛煉;有的學生說可以多開這樣接地氣的設計課;部分學生說離教師一萬行程序開發的目標較遠,過后會繼續補齊(因為在開課之前,要求學生至少編寫一萬行左右的控制代碼)。總之,經過系列的教學方法與思路的改進,大大提高了學生的學習積極性。
綜合系統設計課程不但需要學生掌握硬件設計,更重要的是能夠程序編制,自動控制,因此需要在教學中不斷改進教學思路,完善教學方法,努力提高學生程控的興趣與能力。首先,從簡單的理念入手,提起學生的入門興趣,再以可視化與知識遷移為手段,強化學生的學習技能,再以課題目標為引領,深入電子系統設計的精髓。
目前來說,學生對這門課設計興趣濃郁,比較認可目前的教學方法,普遍認為可以鞏固和學習到較多的專業知識。
實踐是檢驗真理的唯一標準,經過實踐的檢驗,舍棄不恰當的方法,推廣有價值的方法,只要這種教學尊重學生發展的規律、尊重認知發生的過程,最終肯定會有所收益。綜合電子系統設計課程在程控教學時,基于學生的入門基礎和興趣培養,不斷探索、取舍與改進,取得了較好的教學效果。