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