



關鍵詞:計算機硬件;微處理器;微控制器;有效教學;實驗室實踐
0 引言
近幾年,高等教育已經廣泛使用電子學習平臺,特別是在計算機科學和計算機工程課程的學習和教學過程中。電子學習平臺可能不是基于硬件類課程的最佳解決方案,因為不能只從建模和仿真的角度來考慮,而應該使學生對日常生活中所使用的計算機的體系結構、原理和組織有一定的認識。如果不能激發學生對硬件的好奇心,學生就會失去興趣。本文用真實硬件進行實踐,并使用適當的模擬器,提出了基于硬件的課程實踐改進方案,以實現更好的教學,并介紹了一種新的方法來減輕學生的學習負擔,激發他們學習硬件的好奇心和積極性。
1 課程組織
計算機科學與技術專業課程需要必修三門硬件課程。分別為計算機體系結構與組織、微處理器與微控制器(MM) 和現代計算機系統。除此之外,還為學生提供了其他硬件選修課程,如機器人、并行和分布式處理等。本文主要對MM課程、目標和改革進行了探討,以完善MM課程的教學大綱,從而提高學生學習MM課程的積極性。
課程教學分為3個部分,分別為理論講座、理論練習和實踐練習。講座和理論練習以小組進行,而實踐練習則在計算機實驗室中以4名學生的團隊進行,每個學生都在自己的工作臺上工作。該課程前導課程是計算機體系結構和操作系統課程。
在學習中,課程分為兩個邏輯單元。第一部分介紹了x86微處理器的內部架構和指令集、中斷處理系統、BIOS和系統例程。第二部分主要介紹微控制器及其使用。學生將了解各種類型的微控制器,分析它們的組織、指令集和與x86微處理器相關的外設系統及嵌入式系統等功能。
1.1 課程難點
在過去幾年里,編程是使用Microsoft Macro As?sembler(MASM)6.11版本完成的,程序員工作臺(PWB) 作為集成開發環境。實驗項目練習是真正基于硬件的。由于學生缺乏學習計算機硬件課程興趣,這些硬核的硬件實驗練習在課程開始就成為他們的障礙。前兩個實驗練習包括使用DOS命令和調試程序,這與之前學習的基于Linux的操作系統課程區別很大,幾乎所有學生在第三次實驗練習中都遇到了啟動和運行MASM項目的問題。第四次實驗練習是在控制臺上寫一段直接訪問內存的文本。所有的學生都沒有學習它的積極性,因為他們生活在一個有HD、DIRECTX或其他現代圖形的世界里。最后,需要在Intel 8051微控制器模擬器上練習,需要學習一個新的環境和新的組裝方法,徹底打擊了學生積極性。
2 實驗改進
根據以上分析,在MM課程的教學和實驗練習部分探索了改進方法,以激發學生對硬件課程的好奇心和積極性。提高學習微處理器和微控制器的興趣。
2.1 實驗練習(x86匯編程序)
在課程第一部分的實驗練習中,創建了全新的內容,即x86微處理器的指令集。授課內容的改革創新是通過引入新的面向軟件的實驗練習,取代了傳統的和單調的面向“硬件”的練習。新的實驗練習教會學生使用數組、矩陣、字符串、過程、宏等知識,最重要的改進是引入的練習要求學生用高級編程語言(C++或Java) 在匯編程序中編寫示例代碼。
1) 實驗環境和模擬器。第一個實驗練習向學生介紹編程環境,即Emu8086模擬器在虛擬機環境中使用。第一個實驗練習是最重要的,因為要通過每個編程練習的可視化呈現,讓學生意識到課程是很有趣的,因此,第一個實驗練習不進行評分,它由一個示例組成,學生要學習如何用少量代碼編寫簡單的紅綠燈程序,然后再使交通信號燈更加智能。
2) 8086 匯編程序。經過上面實驗練習,學生已經學習了關于8086處理器設計的基礎理論練習,不同類型的寄存器和x86匯編程序中的基本指令,如MOV (將值從寄存器傳送到寄存器)、ADD(將值加到寄存器)、SUB(從寄存器中減去值)、CMP(比較兩個寄存器的值)和LOOP(使用寄存器的一些預定義特性創建一個循環)。在第二個實驗中,學生將學習16位寄存器(例如AX) 的高、低8位寄存器(例如AH、AL) ,以及指令的源寄存器和目標寄存器。
3) 與高級語言的比較。第三個實驗練習是雙向的,即學生學習不同的尋址方式和訪問內存的方法,練習如何使用高級命令或條件表達式,如IF-THEN、IF-THEN-else、WHILE-DO、FOR和REPEAT UNTIL。實驗練習如圖1所示的準高級語言的一個簡單if-then 條件的例子,它向學生展示了兩種可能的解決方案,第一種方案是直接實現,如圖2所示的相同條件,第二種方案是從相反的條件開始,如圖3所示的更快更好的解決方案。
接下來,練習繼續使用條件表達式和循環代碼實例來處理內存,進一步學習基本的內存尋址以及值和地址的區別,掌握使用寄存器BX 作為內存指針的方法。
4) 陣列和矩陣。為了深入了解存儲器,需要學習數組和更高級的矩陣,以及基本的存儲器工作語言創建循環過程。第四個實驗練習如何在線性段中定義數組和矩陣,并將它們存儲在內存中,以及使用其索引或指針訪問特定元素。進一步學習行主和列主的概念,以及存儲器中更高級的尋址方式。
5) 字符串。第五個實驗是關于字符串的練習。學生將學習字符串的存儲表示方法,以及管理字符串的指令。這個實驗練習使用了與學生在第一和第二學年學習的編程課程“編程基礎”和“數據結構和算法”中相似的任務,所以不需要解釋額外的“硬件”問題,學生就可以立即開始練習。
學習了兩個指針寄存器,即源索引SI和目標索引DI,字符串的基本指令MOVS(移動字符串)、LODS(從字符串加載)、STOS(存儲到字符串中)、SCAS(掃描字符串)和CMPS(比較字符串)。學生們還學習了指令前綴REP(重復執行字符串指令,直到寄存器CX=0) 、REPE(重復執行字符串指令,直到寄存器CX=0或零標志清除)和REPNZ(重復執行字符串指令,直到寄存器CX=0或零標志設置)。
6) 過程、宏和中斷。在學習了所有必要的基本指令和內存訪問之后,需要深入研究使用過程和宏進行編程的更高級方法。第六個實驗練習教學生在x86匯編器中如何使用過程和宏進行更高效的編程。在本練習中,學生將學習如何使用Stack,特別是如何在寄存器中臨時存儲宏。
本練習的另一個重要目的是介紹中斷和中斷程序服務過程,特別是調用DOS與鍵盤輸入和控制臺輸出進行交互的中斷INT21使用方法。引入中斷可以幫助學生深入理解課程的第二部分,即微控制器工作過程。
2.2 實驗練習(PIC16F887)
本課程的第二部分專門介紹微控制器。為了避免枯燥乏味,課程做了重大的改進。取消了Intel8051 微控制器和PIC 8259A中斷控制器的傳統練習方法。介紹了PIC16F887及其開發環境和高級編程語言Mi?kroC、MikroPascal和MikroBasic的IDE。
1) PIC16F887 工作環境。PIC16F887的第一次實驗練習(共第七次)向學生介紹PIC單片機、開發環境、模擬器和MikroC編程工具的使用以及單片機編程。類似于匯編中的第一個實驗室練習,通過應用示例,學習如何使用編程控制器的輸入和輸出端口,控制閃爍的Led燈,經過改進,再使Led燈變得更加智能。
2) PIC16F887 中的計數器和定時器。PIC16F887 微控制器的第二個實驗練習是關于它的三個定時器和“預分頻器”,即利用預分頻振蕩器頻率不同,控制脈沖變短或變長。學生們學習如何設置和使用定時器,使用中斷例程來定義計時器,控制中斷出現時的微控制器行為。圖4為十字路口的紅綠燈程序實例。PORTC 的0、1、2引腳分別用于單向紅綠燈,分別為紅、黃、綠燈。3、4、5引腳分別為另一方向紅綠燈,對應為紅、黃、綠燈。
3) PIC16F887 串行通信。在第三個PIC16F887 實驗練習中,向學生介紹串行通信的EUSART模塊。通過計算機串口讀寫數據,發送字節、字符串或整數。學生設計了一個簡單的確定秘密數字的游戲,即通過PC 串行端口發送一個數字,使用控制器回答它是否正確的數字。
4) PIC16F887 中LCD。第四個PIC16F887 實驗練習向學生介紹了一個額外的硬件組件——液晶顯示器。同樣,通過互動游戲,他們學會了控制程序。圖5所示為輸入數字數組,并將該數組實時寫入液晶顯示器的第一行,并統計數字中偶數個數的任務示例。它使學生學會了讀取或存儲在EEPROM存儲器中的數字和使用鍵盤寫入數組,使用EEPROM控制器處理內存不足的方法,極大地激發了學生的動手能力和學習硬件課程的興趣。
5) 解決實際問題。PIC16F887的最后一個練習是最難的,綜合運用板載的和附加的硬件組件整合到一個練習中,解決實際問題。圖6描述了使用三個引腳在PIC的7段顯示器上啟動、停止和重新啟動計時器,當計數器到24時,控制籃球比賽的示例。通過控制1 號引腳,使液晶顯示器顯示數字。圖7展示了在通過串口發送到控制器的GLCD(圖形LCD)上顯示圖像的另一個示例。
3 課程改進
通過MM課程對實踐練習部分做了進一步改進,引入了可視化模擬器和先進教學方法,在課程質量上取得了顯著提高,提高了學生興趣和成績。通過增加硬件實驗內容和數量,使成績分布更加合理。通過對課程結構的修改,使其更接近于基于軟件的課程,喚醒了學生對硬件的好奇心。
為了進一步提高課程質量和激發學生學習硬件知識的積極性,研究并分析了一些不足之處,通過課程教學安排、材料的結構等方法的改進,取得了良好的效果。在教學中,對教學實踐過程的改進做了以下幾個方面的研究探索。
3.1 針對無準備的學生
盡管對課程進行了改造,使理論練習和實驗練習相似并相互聯系,但學生們還是沒有做好準備。由于實驗練習緊跟著理論知識,學生沒有足夠的時間去理解和學習新的課題,因此,做了額外的改進,即重新安排課程順序,在理論課程和練習后一周進行實踐練習。
3.2 解決方案
由于前幾年允許學生在兩周后提交課后作業,使得課堂學習內容與寫作業間隔過長,容易遺忘學習內容,導致作業質量不佳。為了改善這個問題,讓學生在課堂消化解決問題的方法,并且在實驗課上測試,另外給出擴展的問題,要求學生在課堂上解決。這種方式有助于掌握課堂內容和提高成績,也迫使學生們為練習課做好準備。
3.3 動手測試標準
為了達到較好的成績,要求學生的實踐練習分數要達到50%以上。僅僅在課堂上解決問題已經不足以通過考試了,還要具備足夠的基礎知識,這使得學生們對上課更加重視,做好充分的課前準備。
4 改進的效果
對課程的額外調整使學生取得了比前幾年更好的成績。
4.1 實踐成績改善
實踐練習的課程改進和方法的改變促進了今年的平均實踐成績明顯提高。統計了去年不使用最新方法和今年使用最新方法進行實踐練習的平均成績。根據實驗統計數據結果,動手練習方法的改進使平均成績比去年使用的方法提高了15.02%。
4.2 期中成績改善
實踐練習的課程內容和方法的改進提高了期中考試的平均成績。從統計數據來看,采用新方法之后有25%的學生成績在8分及以上,而采用舊方法的學生只有2.16%,這是一個顯著的改善效果。另一個重要的結果是低分數學生的數量,即6分和7分的數量在新方法下從21.50%減少到8.33%。今年的平均分為8.35分,而沒有采用新方法的前一年的平均分僅為6.55分。
4.3 總成績提升
課程的改進也提高了總平均成績的,即期中和期末考試。統計數據顯示采用新方法的學生期中考試和期末考試成績在8分及以上的合格率為26.67%,與采用舊方法的3.23%相比,成績取得了顯著的提高。另一個重要的結果是低分數學生的數量,即6分和7 分的學生數量在新方法下從36.56%減少到16.67%。另外今年的總平均分為7.96分,比去年的6.46分有所提高,總成績分布得到了很大的改善。
4.4 課程及格率
通過優化課程內容和教學方法,減少了不及格學生的數量。統計數據表明在新的方法下,期中考試不及格的學生減少了3.55%。即舊方法不及格的學生比改進后的新方法多了近10%(9.67%) 。結果證明在改進課程內容安排和教學方法后,普遍提高了學生學習積極性和成績,取得了良好的效果。
5 結束語
本文對計算機科學專業中基于硬件的課程教學進行了一系列的改進。結果表明在動手練習的平均成績上取得了明顯的改善,提高了15.02%。通過期中考試的學生增加了9.67%,平均成績增加1.8分。總分數分布也從舊方法的平均6.46提高到新方法的7.96,平均分數提高了1.5分。總合格率提高了3.45%。這些改進措施提高了學生在實踐練習成績和及格率。教學內容重新安排和新的教學方法不僅提高了學生對實踐練習的興趣,也提高了學生成績,減輕了學生的學習負擔,增加了他們學習硬件課程的積極性。