劉 敬
(濱州學院機電工程學院,山東 濱州 256600)
單片機自20 世紀70 年代問世以來,廣泛地應用在工業自動化、自動控制與檢測、智能儀器儀表、機電一體化以及家用電器等各個方面[1,2]。“單片機原理與應用”是工科類專業(如機械設計制造及其自動化、電子信息工程、測控技術、機電一體化等專業)重要的基礎課程之一。通過理論課程的學習,講解MCS-51 單片機的硬件結構、指令系統、常用的匯編語言設計以及片內各外圍部件(中斷系統、定時/計數器、UART 串行口)的工作原理,同時,實驗課程的實踐訓練可進一步加深理解所學知識,使學生具備單片機應用系統的初步設計能力,為將來從事機電一體化、測控系統、儀表等方面應用系統的開發打下堅實的基礎[3,4]。單片機原理與應用課程內容多,課時少,知識比較抽象難懂,傳統的以教師為中心的“注入式”教學模式教學顯然不利于學生自主學習能力的提升以及發散性思維的培養。因此,教師如何高效利用課堂,采取什么樣的手段引導,讓學生從被動接收轉為主動思考,對于激發學生求知欲和培養創新意識,最終達到學以致用的效果有著重要的現實意義。
以濱州學院機械制造及其自動化專業的學生為例,“單片機原理與應用”是本科階段第四學期開設的專業課程,相比通用性強、直觀易懂的先修課程“C 語言程序設計”,本門課程介紹的匯編語言是面向“硬件”的語言,是在圍繞單片機的硬件結構和原理進行講解的基礎上,對片內外各功能部件進行編程應用。該課程綜合性、實踐性較強,所講授內容相對抽象,而機械類學生對微型計算機的結構和原理的前期認知較少,基礎相對比較薄弱,知識遷移能力、知識應用于實踐中的能力相對滯后[5,6],在學習過程中容易產生消極被動的情緒。
就機械類專業培養方案及課程標準來看,單片機原理與應用課程的理論課時所占比重較多(理論課32 學時、實驗實踐課4 學時)。目前,理論授課以課堂板書結合PPT 的講授法為主。其中,課程理論內容的前期安排通常是對單片機的內部硬件結構進行講解,比如,在以某具體型號的MCS-51 單片機為例,首先介紹片內硬件組成、引腳功能以及存儲器結構,進而講授8051 指令系統以及匯編語言編程基礎,然后從實際應用的角度對中斷系統、定時計數器、串行口等主要硬件的具體原理和應用展開講解。
由于單片機內的硬件部分以及邏輯結構是看不見、摸不到的,對于沒有扎實專業基礎知識鋪墊的學生來說較為抽象難懂,初始接觸時學生普遍感到難以理解、無從入手,這就往往導致學生對單片機的學習提不起來興趣,缺乏主動探索學習的動力[7]。因此,任課教師在教學過程中的教學方法與設計對于單片機原理與應用課程知識的傳授顯得尤為重要,圍繞專業培養方案和課程目標選取合適的教學方法,能使復雜的問題簡單化,抽象的理論具體化,學生也能更容易吸收所學知識。
啟發式教學是指教師在課堂講授過程中根據教學內容和學生學習的客觀規律,借助生活中的實例與常識,以啟發學生的聯想擴展為核心,激起學生自主學習的興趣,引導學生能夠生動靈活地接收所學知識的一種教學指導思想[8,9]。啟發式教學的關鍵在于問題情境的設置,可采用循序漸進由淺入深的方式將理論知識融入案例講解,從“疑”入手,巧設懸念,對于促進學生積極主動地參與教學活動,激發學生獨立思考和創新意識,達到教與學的最佳效益具有重要的現實意義。下面以MCS-51 單片機的定時/計數器章節為例,介紹啟發式教學在“單片機原理與應用”課程中的應用。
在工業檢測與控制中,許多場合都要用到計數或定時的功能。例如,對外部脈沖計數或產生精確的定時時間等。在介紹定時/計數器的邏輯結構之前,可以先從生活中常見的實例引入相關概念,再過渡到課程理論知識的講解。
1)定時和計數的概念。生活中,計數的例子比比皆是,選舉時通過畫“正”字對票數進行統計就是計數的一種方式。家庭里面用的水表、電度表,汽車上的里程表等也是計數的形式。在單片機內部也有一類功能部件用于實現計數的功能,該功能部件稱為定時/計數器,其計數的功能是通過對脈沖進行計數來實現的。單片機內的定時/計數器除了能作計數之用外,還能用作時鐘,如打鈴器,家用電器的定時開關等都是其定時功能的體現。然后請同學們思考:計數器是如何作為定時器來用的呢?引入生活實例進行啟發,以鬧鐘為例,定時1h,秒針走了3600 次,時間就轉化為秒針走的次數,學生思考秒針走的次數和時間之間的關系是什么(秒針每走動一次的時間是1s)。由此得出,定時/計數器在作定時的功能時,其本質也是通過“計數”來實現的,關鍵是計數的時間間隔要固定,而這個時間間隔由單片機的晶振頻率決定,也可以理解為對機器周期進行計數,即:定時時間=計數次數×機器周期。最后,對本知識點總結,定時和計數是定時/計數器的兩種工作模式,本質上都是通過計數來實現的,只是計數對象不同,定時模式下是對機器周期計數,計數模式下是對來自相應引腳(P3.4、P3.5)的外部脈沖計數。
2)定時/計數器的容量和預置數。對于定時/計數器的容量和預置數的講解,可以從日常生活中用到的容器導入,在我們的認知中任何容器都是有容量的,同樣,MCS-51 的兩個計數器(T0 和T1)也有計數的上限,由于每個計數器都是由兩個8 位的寄存器組合構成,則最大的計數容量是216=65536。隨后進一步引導學生思考,若將水杯放在水龍頭下接水,水逐滴落入水杯中,當液面上升至與杯口平齊時若再有一滴水落下,水杯會發生什么現象呢?(水滿溢出沿杯壁流下)同樣,單片機內的計數器達到計數上限后,再多記一次脈沖也會“溢出”,只是“溢出”后的現象是將標志位TF0/TF1 由“0”變為“1”,而標志位的變化就如觸發警報一般傳達到CPU,則意味著計數/定時的任務已完成。
當學生理解定時/計數器的容量及“溢出”現象后,承接上面所鋪墊的基礎知識導入問題:生活中的計數一般從1 開始,計到幾是幾,而單片機中定時/計數器的計數不管從何初始值開始,都是要計到滿為止。請同學們思考:一般我們現實生活中經常會有少于65536 個計數值的要求,怎么實現?由此引出預置數的概念,預置數意味著要先給計數器賦初值,而初值的大小由計數上限和要計的次數來確定。
3)定時/計數器的相關控制寄存器。特殊功能寄存器(SFR)是用來對片內各功能模塊進行管理、控制以及監視的控制寄存器和狀態寄存器,是一個很抽象的概念[10]。對于定時/計數器的相關控制寄存器的講解可以拿家用電器空調來舉例進行知識導入,空調可以制冷也可以制熱,且在任意工作模式下都可以選擇不同風速(可看作不同工作方式),同樣,定時/計數器作為單片機的功能部件同樣有不同工作模式(定時/計數)和工作方式(用途和計數能力不同)。空調工作模式和工作方式的選擇可以通過控制按鍵來實現,那怎樣讓單片機內的定時/計數器按我們想要的用途工作呢?由此問題引出定時/計數器的工作方式控制寄存器TMOD 和運行狀態控制寄存器TCON,進而展開介紹各控制位的名稱及作用。
為加深學生對以上所講理論知識的理解,緊接著以應用實例進行鞏固。在工廠車間流水線上一個包裝是200 盒,要求每到200 盒就產生一個打包動作,用AT89S51 單片機定時/計數器T0 來實現(選用工作方式1),試寫出定時計數器的初始化設置。
結合前面所學知識,引導學生根據任務繪制主程序框圖,如圖1 所示。

圖1 主程序框圖
首先,對工作方式寄存器TMOD 賦值(選用T0在方式1 下進行計數,則TMOD 設置為05H)。然后,根據所需計數個數計算初值X,X 為65536-200=65336,對應的十六進制為FF38H,則相應寄存器賦初值為TH0=FFH,TL0=38H。
進一步引導學生寫出主程序即定時/計數器的初始化設置:

匯編語言、通信技術等知識結合起來的一門課,有一定的理論深度且工程性、實踐性強,是工科類學生培養方案中普遍設置的專業課。本文以機械制造及其自動化專業的學生為教學對象,進行學情分析,并指出了當前教學過程中常存在的問題,針對目前學生普遍反應理論知識枯燥難懂的現象,提出采用啟發式教學法進行授課并展示了定時/計數器章節的教學設計。經課堂教學實踐,發現從生活常識切入所授教學內容,以啟發式的教學手段講解相對枯燥的理論,更能激發學生的學習熱情,提高學生的主觀能動性。