沙愛軍 郭麗紅
(南京工程學院信息與通信工程學院 江蘇·南京 211167)
“微課”是“微型教學視頻課”的縮寫,是指通過精心的教學設計和組織[1],在5-10分鐘左右時間內,為講解具有重難點的某個知識點等而開展的微型的視頻課程,其具有時間短小、內容精悍等特征,且得益于移動互聯(lián)網(wǎng)和智能手機的發(fā)展,便于授課對象可以更好地利用碎片化時間,實現(xiàn)隨時、隨地的學習。
“單片機原理及應用”是通信、電子等專業(yè)的一門重要的專業(yè)基礎課。單片機課程具有知識點多,內容細碎、原理抽象,需要理論聯(lián)系實踐等特點,將微課運用于“單片機原理及應用”教學中,將課程劃分為一系列的小的專題和任務,通過講解和討論,在較短的時間內更好地幫助學生掌握重難點。本次以單片機原理及應用課程中的一個重難點:多個數(shù)碼管的動態(tài)顯示微課教學設計為例,做相關介紹。
由于數(shù)碼管的動態(tài)顯示以單個數(shù)碼管顯示為基礎,所以將此次任務分解成2個子任務:(1)單個數(shù)碼管的顯示;(2)多個數(shù)碼管的動態(tài)顯示。
教學目標主要有:
(1)學習掌握單個數(shù)碼管的顯示原理及實現(xiàn);
(2)學習掌握多個數(shù)碼管的動態(tài)顯示原理及實現(xiàn);
(3)掌握相關的思政元素:引導學生學習科學的研究問題,以及課程涉及的相關的哲學知識。
本次微課采用項目驅動,從問題引入→任務分解:單個數(shù)碼管的顯示,多個數(shù)碼管的動態(tài)顯示→兩個子任務的實現(xiàn)→進行拓展:討論和思考[2]。在此過程中,引導學生循序漸進,不斷深入問題,利用對比、動畫展示、理論聯(lián)系實際(keil和proteus仿真)等多種教學方法,幫助學生掌握數(shù)碼管的顯示相關知識點,并培養(yǎng)學生的思考問題的能力,提高科研、哲學素養(yǎng)。
首先以2幅多個數(shù)碼管的使用的圖片引入,描述數(shù)碼管在生活中得到廣泛的使用,經(jīng)常用于設備和儀表的顯示,提出如何實現(xiàn)多個數(shù)碼管顯示?引出多個數(shù)碼管的顯示方法:靜態(tài)顯示和動態(tài)顯示,以及本次課的重要內容:動態(tài)顯示。然后將任務分解成2個子任務:任務1,單個數(shù)碼管的顯示;任務2,多個數(shù)碼管的動態(tài)顯示。前者是后者的基礎。
首先,以共陰數(shù)碼管為例,講解單個數(shù)碼管的顯示原理。從數(shù)碼管的外觀有a,b,c,d,e,f,g,dp等8個段、10個引腳開始,進而指出共陰數(shù)碼管名稱的由來,以求出字符0的段碼為例,講解了如何根據(jù)要顯示的字符,在段選端加不同的電平,以控制數(shù)碼管的不同的段的亮滅,并可由此得出顯示字符對應的段碼0x3f,用上面的求段碼的方法得出了0-f常見字符的段碼,并把它們依次存入一個數(shù)組ucharsegcode[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}中。歸納出數(shù)碼管顯示的原理:①公共端必須有效;②段選端必須送相應的字符的段碼。
然后,實現(xiàn)單個數(shù)碼管的顯示電路和編程。將單片機P2口連接了數(shù)碼管的段選端,數(shù)碼管公共端接地。程序中,要顯示字符0,只需要把字符0的段碼通過segcode[0]送給P2即可。
并點出:單個數(shù)碼管顯示實質是靜態(tài)顯示,特點:①公共端固定接地(對共陰極數(shù)碼管);②1個數(shù)碼管單獨需要一組段選線。
首先,講解數(shù)碼管動態(tài)顯示的含義。通過2個演示:(1)演示8個數(shù)碼管顯示的視覺效果:看起來好像所有數(shù)碼管都同時在顯示;(2)演示單步運行的數(shù)碼管動態(tài)顯示視覺效果,得出數(shù)碼管顯示的本質:多個數(shù)碼管動態(tài)顯示,實際上是逐個輪流點亮數(shù)碼管,一個時間里面只有一個數(shù)碼管顯示,當1秒循環(huán)24次以上,由于人眼的視覺暫留效應,看起來所有數(shù)碼管都同時在顯示。
并以此拋出一個問題:眼見是否為實?啟發(fā)學生思考,點出一個重要的思政元素:眼見未必為實。要學會探究事物的本質,要去偽存真,不被表象所迷惑。
然后,講解了多個數(shù)碼管動態(tài)顯示的控制過程[3]。主要從段選端和位選端的設置角度,并采用和單個數(shù)碼管靜態(tài)顯示對比的方法來講解。兩個不同點:①8個數(shù)碼管的段選端并接,用一個端口I/O(1)共同控制,而不是1個數(shù)碼管一組段選線;②8個數(shù)碼管的公共端L0-L7,并沒有固定接地,而是由另一個端口I/O(2)控制,稱為位選線。
如何搭配位碼和段碼,實現(xiàn)數(shù)碼管的輪流點亮,是此處重點講解的內容。
講解中,采用了動畫展示如何實現(xiàn)8個數(shù)碼管從左到右輪流顯示0-7。以先讓最左邊數(shù)碼管顯示0為例,要顯示0,可先把0的段碼0x3f發(fā)送到段選線,由于是共陰數(shù)碼管,可以先讓最左邊數(shù)碼管的公共端L0為低電平,其余數(shù)碼管公共端L1~L7為高電平,對應位碼為0xfe,就能實現(xiàn)最左邊數(shù)碼管顯示0。其它數(shù)碼管顯示也類似。這樣就實現(xiàn)了一輪顯示,添加循環(huán)就可以實現(xiàn)一直顯示。并將獲得的8個位碼依次存到一個數(shù)組ucharposcode[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}中。接著,結合電路和關鍵程序代碼,講解如何實現(xiàn)多個數(shù)碼管的動態(tài)顯示,并對數(shù)碼管的延時時間長短對顯示的影響進行了探討。
數(shù)碼管動態(tài)顯示的仿真電路主要由51單片機和8個數(shù)碼管組成。單片機的P0口控制數(shù)碼管的段選線,P2口控制數(shù)碼管的位選線。
程序結合disbuffer[8]={0,1,2,3,4,5,6,7,8}數(shù)組存放要顯示的內容。數(shù)組segcode[8]和poscode[16]分別存放段碼表和位碼表,用程序中用變量i控制當前工作的數(shù)碼管,調用語句 P0=codevalue[disbuffer[i]],P2=chocode[i],delay()等。當i=0時取顯示內容disbuffer[0],得到顯示內容0,通過segcode[0]查到對應的段碼0x3f送給P0,再通過poscode[0]查到位碼0xfe送給P2,控制只有第0個數(shù)碼管工作,就可以實現(xiàn)在第0個數(shù)碼管上顯示0。然后再調用延時函數(shù)delay,讓數(shù)碼管延時顯示1ms。當i從0變化到7,就可以實現(xiàn)一輪的顯示,將display函數(shù)放入1個死循環(huán)中就可以實現(xiàn)循環(huán)顯示。由于單片機運行速度很快,所以看起來就是所有數(shù)碼管一直在顯示。
對電路和程序Proteus和keilC仿真進行演示,并說明結果和上述分析完全吻合。
安排兩個思考和討論:(1)delay函數(shù)延時時間太多和太少對顯示有什么影響?(2)多個數(shù)碼管動態(tài)顯示有什么優(yōu)點和缺點?前者可以讓學生更深刻地理解動態(tài),后者可以讓學生更好地總結相對于靜態(tài)顯示缺點,并為引出串行口擴充實現(xiàn)靜態(tài)顯示打下基礎。
(1)利用逐步深入法:將整體分解成2個小任務,每次完成一個小項目,循序漸進,不斷探索,逐步深入;
(2)運用視頻和動畫教學展示、解釋重點難點:如動態(tài)顯示概念和控制;
(3)運用對比的方法:講解單個和多個數(shù)碼管顯示對段選端和公共端要求的不同;
(4)理論聯(lián)系實際:運用Proteus和keilC的聯(lián)合仿真來展示相關理論描述;
(5)教學中采用啟發(fā)式教學:拋出問題,引導思考,得出正確結論。
通過對單片機原理及應用課程重難點錄制微課,并利用現(xiàn)代化的教學手段和方法,可以極大地方便學生利用課后時間自由、反復地觀看,提升對知識點的掌握,成為課堂教學外的有效補充甚至替代傳統(tǒng)教學。