趙繼忠
(遼寧開(kāi)放大學(xué),遼寧沈陽(yáng) 110034)
單片機(jī)原理是計(jì)算機(jī)類(lèi)、自動(dòng)化類(lèi)等專(zhuān)業(yè)學(xué)生必修的一門(mén)實(shí)踐性很強(qiáng)的技術(shù)基礎(chǔ)課程[1]。本課程涉及硬件設(shè)計(jì)和軟件編程兩個(gè)層面的綜合知識(shí),對(duì)于普通在校學(xué)生而言,該課程接受起來(lái)有一定難度。在理論教學(xué)中,教師介紹單片機(jī)原理時(shí),即使配上再好的結(jié)構(gòu)圖也很難說(shuō)清;在實(shí)踐教學(xué)中,一些學(xué)生往往對(duì)單片機(jī)實(shí)驗(yàn)電路板的認(rèn)知上有困難,主要原因是單片機(jī)實(shí)驗(yàn)電路板的電路結(jié)構(gòu)復(fù)雜,難以清晰地表達(dá)電路結(jié)構(gòu)。鑒于此,本文展開(kāi)基于Proteus軟件的單片機(jī)理論和實(shí)踐教學(xué)一體化的研究,以提高教師對(duì)本課程的教學(xué)水平和學(xué)生對(duì)本專(zhuān)業(yè)知識(shí)的掌握程度。
Proteus軟件是一款極好的單片機(jī)應(yīng)用開(kāi)發(fā)工具軟件,其特有的虛擬仿真技術(shù)很好地解決了單片機(jī)及其外圍電路的設(shè)計(jì)和仿真問(wèn)題,可以在沒(méi)有單片機(jī)實(shí)際硬件的條件下,利用PC以虛擬仿真方式實(shí)現(xiàn)單片機(jī)系統(tǒng)的軟、硬件同步仿真調(diào)試,使單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)變得簡(jiǎn)單容易。
Proteus軟件與單片機(jī)原理這門(mén)課程結(jié)合優(yōu)勢(shì),主要體現(xiàn)在以下三個(gè)方面:
第一,使用Proteus進(jìn)行單片機(jī)仿真,對(duì)于學(xué)生來(lái)說(shuō)具有較強(qiáng)的直觀(guān)性。通過(guò)Proteus的單片機(jī)仿真實(shí)驗(yàn),學(xué)生可以得到比在電路板上更直觀(guān)的電路中各元件連接關(guān)系的視覺(jué)感受。例如單片機(jī)與4位七段數(shù)碼管的實(shí)驗(yàn)項(xiàng)目,圖1(a)是單片機(jī)與七段數(shù)碼管連接的PCB,圖1(b)是利用Proteus繪制的仿真電路圖。從視覺(jué)上看,圖1(b)比圖1(a)簡(jiǎn)單很多,電路中各元件連接更直觀(guān),更能清晰表達(dá)出各元件直觀(guān)的關(guān)系。學(xué)生可以從圖1(b)中清楚地看出單片機(jī)與七段數(shù)碼管的連接方式,對(duì)程序編制,程序運(yùn)行和單片機(jī)運(yùn)行的理解都有非常重要的幫助。
圖1 單片機(jī)與七段數(shù)碼管連接電路圖
第二,利用Proteus進(jìn)行單片機(jī)教學(xué)和學(xué)習(xí),對(duì)于教師和學(xué)生來(lái)說(shuō)具有適度的漸進(jìn)性。利用Proteus可以從極為簡(jiǎn)單的單片機(jī)控制電路開(kāi)始,逐漸增加單片機(jī)電路的復(fù)雜度。電路圖紙漸進(jìn)地從簡(jiǎn)單到復(fù)雜,非常適配教師由簡(jiǎn)到難的授課邏輯,也符合學(xué)生的學(xué)習(xí)習(xí)慣。
第三,利用Proteus 可以更加便捷設(shè)計(jì)各種電路,對(duì)于教師和學(xué)生而言其具有很好的靈活性。盡管現(xiàn)有的單片機(jī)實(shí)驗(yàn)電路板已經(jīng)非常豐富,但是實(shí)驗(yàn)步驟和內(nèi)容受到固定的硬件電路結(jié)構(gòu)限制,教師必須按照硬件電路板不可更改的電路結(jié)構(gòu)進(jìn)行知識(shí)點(diǎn)講授,同時(shí)學(xué)生很難按照自己的想法,隨意設(shè)計(jì)硬件結(jié)構(gòu)和編制相應(yīng)的控制程序。利用Proteus軟件進(jìn)行學(xué)習(xí),學(xué)生可以根據(jù)自己對(duì)知識(shí)的理解和興趣,創(chuàng)新性地選擇和設(shè)計(jì)實(shí)驗(yàn)內(nèi)容,培養(yǎng)學(xué)生的創(chuàng)新意識(shí)。
由于電子電路本身具有一定的抽象性,特別是電路實(shí)驗(yàn)箱這種以PCB為載體的元件連接方式,元件與元件的連接不能直觀(guān)地呈現(xiàn)在學(xué)生面前。對(duì)于初學(xué)者而言,如圖1(a)PCB的連接方式?jīng)]有圖1(b)原理圖連接方式看起來(lái)直觀(guān)。因此,這種將理論課堂與實(shí)驗(yàn)課堂搬到一起的理實(shí)一體化課程教學(xué)方式,對(duì)于電子類(lèi)課程,特別是單片機(jī)這門(mén)課程而言,意義不大?!凹磳W(xué)即練”才是本門(mén)課程教學(xué)改革的關(guān)鍵。總之,作為一個(gè)開(kāi)放性的仿真實(shí)驗(yàn)平臺(tái),利用其特有功能,完全可以建立一個(gè)設(shè)備齊全的綜合性仿真實(shí)驗(yàn)室。
目前,單片機(jī)課程教學(xué)都是理論教學(xué)和實(shí)踐教學(xué)分開(kāi)進(jìn)行,理論課程中要介紹單片機(jī)硬件基本結(jié)構(gòu)、指令系統(tǒng)、匯編語(yǔ)言程序設(shè)計(jì)、存儲(chǔ)器擴(kuò)展、中斷與定時(shí)器、I/O擴(kuò)展、串行數(shù)據(jù)通信、模數(shù)/數(shù)模轉(zhuǎn)換等;實(shí)踐教學(xué)就是通過(guò)實(shí)際電路板完成對(duì)理論學(xué)習(xí)知識(shí)的驗(yàn)證和擴(kuò)展。教師若能將難于理解的理論知識(shí)點(diǎn)配合形象化的仿真設(shè)計(jì),對(duì)于學(xué)生來(lái)說(shuō),理論知識(shí)點(diǎn)的理解就能更易于接受。
下面以理論教學(xué)中指令系統(tǒng)講授為例,說(shuō)明如何利用Proteus開(kāi)展單片機(jī)課程的相關(guān)理論教學(xué)。指令系統(tǒng)是學(xué)習(xí)單片機(jī)的基礎(chǔ),掌握指令系統(tǒng)對(duì)于了解單片機(jī)內(nèi)部運(yùn)行情況十分必要,從多年的教學(xué)經(jīng)歷可以看到學(xué)生理解和掌握指令系統(tǒng)比較困難??菰锏闹噶钕到y(tǒng)往往令學(xué)生感到十分困惑,也給理解單片機(jī)結(jié)構(gòu)和運(yùn)行機(jī)制造成了不小的障礙。關(guān)于這兩個(gè)指令的理論教學(xué),教師通常進(jìn)行如下陳述性講授:MOV指令是數(shù)據(jù)傳送指令,也是最基本的編程指令,用于將一個(gè)數(shù)據(jù)從源地址傳送到目標(biāo)地址。其特點(diǎn)是不破壞源地址單元的內(nèi)容。ACALL指令是短調(diào)用指令,是子程序調(diào)用指令的一種,所調(diào)用的子程序首地址必須在A(yíng)CALL指令后第一字節(jié)開(kāi)始的2 KB范圍內(nèi)的程序儲(chǔ)存器中。通常,在寫(xiě)幾行用到該指令的程序,帶領(lǐng)同學(xué)讀懂程序,以幫助對(duì)指令的理解和掌握。從實(shí)踐經(jīng)驗(yàn)看出,若通過(guò)如上教學(xué)方法,學(xué)生并不能很好掌握指令的實(shí)際用途和具體使用方法,更無(wú)法靈活使用。在此通過(guò)對(duì)MOV、ACALL兩個(gè)指令的舉例介紹,闡述基于Proteus的單片機(jī)理論教學(xué)改革方法。
若采用實(shí)例仿真,設(shè)計(jì)一個(gè)簡(jiǎn)單的案例,將指令融入案例中,學(xué)生對(duì)指令的理解會(huì)更加深刻,對(duì)自己使用指令有很大幫助。例如,教師利用單片機(jī)控制一位LED的亮/滅,實(shí)現(xiàn)以上兩個(gè)指令的講解。電路圖如圖2所示。
圖2 單片機(jī)控制LED亮/滅
首先,利用MOV指令,可以將立即數(shù)00000000傳送到單片機(jī)端口P1,使P1口全滅,然后,利用ACALL指令調(diào)用延時(shí)程序(DE?LAY),控制LED滅一段時(shí)間;最后利用MOV指令,將立即數(shù)00000001傳送到單片機(jī)端口P1,使P1.0口亮。LED亮/滅時(shí)間分別為100 ms。程序如下:
通過(guò)以上例子所產(chǎn)生的LED亮/滅100 ms的交替效果,可以很好地解釋MOV指令是如何將數(shù)據(jù)傳送到P1鎖存器的,也很好解釋ACALL是如何調(diào)用延時(shí)子程序進(jìn)行亮滅交替閃爍的。通過(guò)在Proteus軟件的仿真實(shí)驗(yàn)作為配合,可以讓學(xué)生相對(duì)容易理解匯編指令。
單片機(jī)課程動(dòng)手操作非常重要,因此,實(shí)踐教學(xué)也就顯得尤為重要。實(shí)踐教學(xué)一般利用單片機(jī)硬件實(shí)驗(yàn)箱來(lái)完成,但存在一些不足。首先,實(shí)驗(yàn)箱所布置好的硬件電路,是為了完成一些特定規(guī)范實(shí)驗(yàn)而設(shè)置的,實(shí)驗(yàn)個(gè)數(shù)有限,實(shí)驗(yàn)內(nèi)容固定,實(shí)驗(yàn)靈活性差。雖然有些實(shí)驗(yàn)箱預(yù)留了外部接口,可以做規(guī)范實(shí)驗(yàn)之外的項(xiàng)目,但是需要外部硬件電路作為支撐,操作復(fù)雜度大,對(duì)于初學(xué)者來(lái)說(shuō)不可實(shí)現(xiàn)。其次,由于很難察覺(jué),實(shí)驗(yàn)箱某一電路或者芯片的損壞,將會(huì)造成實(shí)驗(yàn)結(jié)果的不準(zhǔn)確,對(duì)學(xué)習(xí)單片機(jī)十分不利。同時(shí),實(shí)驗(yàn)箱價(jià)格比價(jià)貴,配置一個(gè)50人的標(biāo)準(zhǔn)單片機(jī)實(shí)驗(yàn)室,電腦和單片機(jī)實(shí)驗(yàn)箱價(jià)格大概30萬(wàn)元,且面臨設(shè)備更新等困擾。設(shè)備資源不能在學(xué)生課余時(shí)間得到充分利用,即使開(kāi)放實(shí)驗(yàn)室,也不能滿(mǎn)足大量學(xué)生的需求。基于此,建立仿真單片機(jī)環(huán)境,開(kāi)展實(shí)驗(yàn)教學(xué)尤為必要[2-3]。
基于Proteus軟件的實(shí)踐要充分利用其靈活性、適度的漸進(jìn)性等特點(diǎn),設(shè)計(jì)實(shí)踐教學(xué)案例。第一,實(shí)驗(yàn)指導(dǎo)書(shū)只給出實(shí)驗(yàn)?zāi)康?、?nèi)容、要求和硬件原理框圖,不給出硬件電路圖。學(xué)生要利用Proteus軟件獨(dú)立完成硬件電路圖的繪制,并根據(jù)硬件電路圖設(shè)計(jì)情況,編寫(xiě)軟件程序,經(jīng)過(guò)調(diào)試,完成仿真實(shí)驗(yàn)。第二,仿真實(shí)驗(yàn)成功后,再根據(jù)實(shí)驗(yàn)箱的硬件連線(xiàn)情況,調(diào)整程序,對(duì)真實(shí)系統(tǒng)進(jìn)行調(diào)試、分析實(shí)驗(yàn)結(jié)果。
本文通過(guò)以4×4矩陣鍵盤(pán)電路為例,說(shuō)明基于Proteus軟件的實(shí)踐教學(xué)的教學(xué)過(guò)程。
3.1.1 實(shí)驗(yàn)要求及步驟
實(shí)驗(yàn)?zāi)康摹U莆罩袛嗍褂?,特別是分析外部中斷與內(nèi)部中斷不同之處;加深理解8051單片機(jī)設(shè)計(jì)步驟和方法。
實(shí)驗(yàn)內(nèi)容。4×4矩陣鍵盤(pán)共16個(gè)按鍵作為輸入,每一個(gè)按鍵代表一個(gè)數(shù)值,例如當(dāng)按下1號(hào)按鍵時(shí),二位七段數(shù)碼管顯示01,依次類(lèi)推,按下16號(hào)按鍵,二位七段數(shù)碼管顯示16。硬件電路框圖如圖3所示。
圖3 矩陣(4×4)鍵盤(pán)電路
實(shí)驗(yàn)步驟。實(shí)驗(yàn)步驟如圖4所示,首先要利用Proteus繪制電路原理圖,其次根據(jù)電路原理圖完成程序設(shè)計(jì),調(diào)試和仿真,最后當(dāng)仿真成功后,結(jié)合實(shí)驗(yàn)箱電路情況對(duì)程序進(jìn)行修改并觀(guān)察實(shí)際硬件電路的運(yùn)行實(shí)驗(yàn)結(jié)果。
圖4 實(shí)驗(yàn)步驟
3.1.2 硬件電路設(shè)計(jì)
硬件電路的設(shè)計(jì)以實(shí)驗(yàn)指導(dǎo)書(shū)中硬件結(jié)構(gòu)框圖為參考來(lái)完成。硬件電路原理圖如圖5所示。
圖5 鍵盤(pán)矩陣電路原理圖
本電路原理圖在單片機(jī)最小系統(tǒng)基礎(chǔ)上,連接了4×4矩陣鍵盤(pán)、七段數(shù)碼管譯碼驅(qū)動(dòng)芯片7447和2位七段數(shù)碼管。單片機(jī)最小系統(tǒng)是設(shè)計(jì)基礎(chǔ),學(xué)生獨(dú)立設(shè)計(jì)仿真過(guò)程,就是不斷熟悉理論知識(shí)和運(yùn)用理論知識(shí)的過(guò)程。學(xué)生必須分析矩陣鍵盤(pán)和七段數(shù)碼管譯碼驅(qū)動(dòng)芯片7447如何連接到單片機(jī)的I/O上,七段數(shù)碼管譯碼驅(qū)動(dòng)芯片7447如何和2位七段數(shù)碼管連接等問(wèn)題,才能實(shí)現(xiàn)實(shí)驗(yàn)?zāi)康摹?/p>
電路原理圖連接是根據(jù)實(shí)驗(yàn)指導(dǎo)書(shū)提供的電路原理圖框圖繪制的,因此每個(gè)學(xué)生繪制的電路原理圖會(huì)根據(jù)個(gè)人設(shè)計(jì)習(xí)慣和對(duì)電路原理圖框圖的理解而不同。這樣設(shè)計(jì)完成的電路原理圖才會(huì)更能體現(xiàn)學(xué)生對(duì)知識(shí)的掌握程度,便于教師及時(shí)掌握學(xué)生學(xué)習(xí)情況。
3.1.3 軟件編程與調(diào)試
此實(shí)驗(yàn)編程主要考慮的是矩陣鍵盤(pán)信號(hào)掃描、外部中斷初始化以及2位七段數(shù)碼管顯示的控制。從電路原理圖可以看出,4×4矩陣鍵盤(pán)的8個(gè)引腳分別與P2.0-P2.7連接作為信號(hào)輸入,P0.0-P0.3等4個(gè)引腳作為輸出端與七段數(shù)碼管譯碼驅(qū)動(dòng)芯片7447的譯碼輸入端ABCD連接,P3.0控制第一個(gè)數(shù)碼管的亮/滅,P3.1控制第二個(gè)數(shù)碼管的亮/滅。程序設(shè)計(jì)的關(guān)鍵點(diǎn)就是單片機(jī)要通過(guò)其P2.0-P2.7輸入端有效信號(hào),準(zhǔn)確地判斷有效信號(hào)來(lái)源于16個(gè)按鍵的哪一個(gè),這樣才能夠通過(guò)7447譯碼驅(qū)動(dòng)芯片驅(qū)動(dòng)七段數(shù)碼管的正確顯示。
程序設(shè)計(jì)如下:
程序編寫(xiě)完畢后,用keil軟件對(duì)程序進(jìn)行編譯。編譯成功后,生成key.hex文件。將key.hex文件加載到Proteus所繪制的電路原理圖中單片機(jī)中,最后運(yùn)行仿真。例如按下按鍵1,那么七段數(shù)碼管顯示01,如圖6所示。
圖6 按下按鍵1,七段數(shù)碼管顯示01
仿真實(shí)驗(yàn)完畢后,學(xué)生基本掌握了本電路設(shè)計(jì)原理和實(shí)現(xiàn)方法。為了在實(shí)際電路中再次得到驗(yàn)證,觀(guān)察實(shí)驗(yàn)箱中相同或者類(lèi)似實(shí)驗(yàn),根據(jù)要求,修改部分程序代碼(若實(shí)際硬件電路連線(xiàn)發(fā)生變化就要修改程序代碼),再次對(duì)軟硬件進(jìn)行調(diào)試,并與虛擬仿真結(jié)果進(jìn)行對(duì)比和驗(yàn)證。最后撰寫(xiě)實(shí)驗(yàn)報(bào)告,完成實(shí)驗(yàn),達(dá)到學(xué)習(xí)的目的[4-6]。
學(xué)生根據(jù)自己繪制的電路原理圖來(lái)編制軟件程序就會(huì)很好地理解基于硬件平臺(tái)的軟件編程的要求和特點(diǎn)。
Proteus仿真軟件的好處是可以?xún)H有一臺(tái)運(yùn)行本軟件的電腦,就能完成單片機(jī)的學(xué)習(xí),不受實(shí)驗(yàn)室限制。學(xué)生可以根據(jù)自己所想,調(diào)整硬件電路結(jié)構(gòu),修改程序代碼,觀(guān)察變化,不斷加深單片機(jī)這門(mén)實(shí)踐性很強(qiáng)的課程學(xué)習(xí)。利用Proteus進(jìn)行仿真實(shí)驗(yàn),可以提升學(xué)生的實(shí)驗(yàn)興趣和創(chuàng)新思維能力[7]。
電子類(lèi)專(zhuān)業(yè)由于其非主觀(guān)等特殊性,教學(xué)創(chuàng)新是十分必要的?;赑roteus軟件在單片機(jī)原理與接口技術(shù)課程教學(xué)的應(yīng)用有利于教師深入淺出的課堂教學(xué)和學(xué)生循序漸進(jìn)地學(xué)習(xí)。對(duì)于一門(mén)實(shí)踐性強(qiáng)的課程,利用虛擬仿真軟件有效地解決了學(xué)習(xí)空間、時(shí)間的限制。虛擬仿真與實(shí)際硬件操作的有機(jī)結(jié)合,對(duì)學(xué)生創(chuàng)新能力提升起到了十分積極有效的作用。