曹曉龍
(貴州師范大學(xué),貴州貴陽,550001)
單片機常用于各種需要進行控制的領(lǐng)域,包括工業(yè)、工業(yè)乃至家庭電子產(chǎn)品。單獨一個單片機是無法完成控制作用的,必須通過單片機與外部設(shè)備進行連接。然而51單片機的并口資源較少,僅有P0、P1、P2和P3四個8位并口。且在大多數(shù)情況下,外接存儲器、大量IO接口時,P0、P2作為地址數(shù)據(jù)線、P3則作為控制線。而余下的僅有P1口。由此可見,51的并口資源是極其缺乏的。有必要采取一定的方法對51的并口資源進行擴展。多數(shù)教材中,基本上都介紹了利用鎖存器及緩沖器進行雙向并口的擴展,以及利用并口芯片8255A進行擴展的方法[1]。然而,教學(xué)過程中僅靠老師引導(dǎo)式地講解,還不足以讓學(xué)生完全了解這種方法的核心,沒有形成直觀的感受,在脫離課堂以及課本后,學(xué)生仍舊無法充分掌握該擴展法。正是在這一背景下,本文提出了一種利用Proteus仿真平臺,設(shè)計一個有關(guān)利用8255A進行并口擴展的方法實驗,旨在通過對整個實驗內(nèi)容的設(shè)計,讓學(xué)生親自動手,逐步實現(xiàn)其硬件軟件設(shè)計,并最終能夠理解并掌握擴展方法。此外,對于在單片機與其他外部芯片的連接上也有一定的參考價值。
本設(shè)計的實驗原理圖如圖1所示。
圖1 單片8255A擴展并口實驗原理圖
實驗的主要內(nèi)容是通過8255A輸出數(shù)據(jù)以使得兩個BCD類型數(shù)碼管顯示60秒的計數(shù)器。內(nèi)容較為簡單,主要是體現(xiàn)出對8255A的基本設(shè)置。為此可按照下述步驟進行實驗的準(zhǔn)備與設(shè)計。
這部分主要是為了幫助學(xué)生將課堂所學(xué)的有關(guān)8255A的相關(guān)特點進行一個歸納總結(jié),以便為后續(xù)的實驗作準(zhǔn)備。為此,可以設(shè)置一些問答及思考題,讓學(xué)生在實驗中完成。以鞏固所學(xué)的知識點。例如可設(shè)置下面的問題:
(1)8255A內(nèi)部一共有 個寄存器,其對應(yīng)的外部地址為A1A0,且當(dāng)A1A0為 時表示此時的數(shù)據(jù)接收寄存器為 。
(2)根據(jù)圖2所示的8255A的控制寄存器格式[2],說明當(dāng)寄存器為 時,表示A口為輸出,方式0、其余口為方式0,輸出?
圖2 8255A控制方式字
(3)在與8255A進行連接時,_______與A1A0形成地址信號。
通過類似上述三個問題的回答,能夠較為清楚地反應(yīng)出8255A并口芯片在實現(xiàn)連接以及軟件設(shè)置時的重點。
為了能夠?qū)崿F(xiàn)擴展,51單片機本身的外連時的主要特性也是整個外擴的重點內(nèi)容,尤其是對P0的外接鎖存器以連接地址線,以及同時又要與數(shù)據(jù)線相連的特點,此外還需要掌握通過MOVX實現(xiàn)對外部數(shù)據(jù)傳輸?shù)姆椒?。為此可參?255A的做法設(shè)置相應(yīng)的問答及思考題加強學(xué)生對相關(guān)的重點難點理解與掌握??稍O(shè)置諸如下面所給的例子中相關(guān)的思考題以充分發(fā)揮學(xué)生的主動性
(1)51單片機在外擴時是如何實現(xiàn)與外接設(shè)備的地址數(shù)據(jù)相連操作的?期間用到了鎖存器LS373,鎖存器用在何處?為什么?
(2)若外設(shè)的地址線有3根,那么單片機可設(shè)置的地址范圍是多少?
(3)單片機的ALE信號主要作用是什么?外接時,一般接在何處?
(4)單片機訪問外部的指令是什么?具有怎樣的格式?
(5)有哪些間接尋址寄存器可使用?使用所采取的選擇標(biāo)準(zhǔn)是什么?
通過類似上述思考題的設(shè)置,可以較為全面地歸納了51單片機在外擴時的硬件軟件特征。通過對各個問題的回答,更加深了對知識點的了解。
通過上面的分析和準(zhǔn)備,指出了外擴時的主要控制信號以及讀寫實現(xiàn)的原理。因此,可在此處依然以問答的方式逐步引導(dǎo)學(xué)生寫出關(guān)鍵信號的連接關(guān)系,并繪制電路圖。相比事先給一個電路圖,讓學(xué)生照著畫的方式,更能調(diào)動學(xué)生的積極主動性,引發(fā)思考。充分利用實驗課時,提高實驗的效率和教學(xué)成果。
(1)8255A的A1A0及CS可與單片機的那一部分進行相連,對應(yīng)的地址分別是多少?
(2)74LS373的LE、OE如 何連接?
(3)數(shù)據(jù)線之間的連接關(guān)系如何?
(4)兩個BCD類型的7段數(shù)碼管與8255A如何連接。
通過對以上問題的思考,基本上能夠勾畫出整體的電路結(jié)構(gòu)圖,能夠在Proteus中畫出類似本文圖1的系統(tǒng)結(jié)構(gòu)圖。
單片機的軟件設(shè)計與硬件電路的構(gòu)成息息相關(guān),而單片8255A擴展實驗中,軟件部分主要是實現(xiàn)對8255A的控制寄存器設(shè)置以及讀寫操作。所使用的指令是MOVX。但就對8255A操作上,程序設(shè)計并沒有任何難度,實驗的難點在于60秒顯示數(shù)據(jù)的產(chǎn)生。
8255A相關(guān)設(shè)置程序設(shè)計:
(1)根據(jù)電路,所使用的與數(shù)碼管相連的接口屬于輸入還是輸出?
(2)哪一種工作方式比較適合?由此得出的控制寄存器的值應(yīng)為多少?
(3)如何將設(shè)置的值寫入8255A的控制寄存器?
顯示部分程序設(shè)計:
(1)如何將一個兩位十進制數(shù)據(jù)分離為十位、個位?
(2)BCD顯示的顯示碼如何確定?
(3)1s的時間通過軟件如何實現(xiàn)?
通過對上述問題的回答,能夠?qū)懗鋈缦屡c實驗有關(guān)的程序。
在實現(xiàn)上述程序時,對一些較難的點,可在提示下幫助學(xué)生完成,以實現(xiàn)在實驗教學(xué)環(huán)節(jié)的教學(xué)互動。而非老師一味地講解原理,學(xué)生一味地被動聽。缺乏獨立思考的時間,對所操作的實驗沒有深入的體會和理解。
通過對這一簡單的實驗從分析到設(shè)計并到最終觀察到實驗現(xiàn)象,完全是靠學(xué)生參與到其中,逐步實現(xiàn)的過程。透過觀察到的實驗現(xiàn)象,可以看出與之前直接通過51單片機的某個并口輸出60的計數(shù)顯示數(shù)據(jù)進行對比,通過8255A可以實現(xiàn)相同的功能。實驗體現(xiàn)了關(guān)鍵信號之間的連接與控制作用,以及利用MOVX實現(xiàn)外部數(shù)據(jù)傳輸?shù)溶浻布Y(jié)合的方法,實現(xiàn)了擴展。由此,能讓學(xué)生更加深入理解這種擴展方法的核心。此外,可針對連接關(guān)系進一步引發(fā)學(xué)生的思考。如可就其中若改變CS、A1、A0與P0口的連接,則對實驗將產(chǎn)生怎樣的影響,程序的設(shè)計將如何修改等問題進行提問。為后續(xù)的多片進行擴展的方法開拓思路。
經(jīng)過單片8255A擴展并口的基本實驗的設(shè)計與分析過程,使學(xué)生已經(jīng)建立了對這種擴展方式的感性認識及較為深入的理解。而單片擴展的方法使得51單片機的并口數(shù)量擴展為5個8位并口,因為其中P0及P3口被占用了資源。而實際應(yīng)用中,存在著對并口資源數(shù)量更多的要求,因此,如何利用8255A擴展出更多的并口,便成了51單片機外擴并口的一個具有現(xiàn)實意義的問題。為此,有必要在實驗中加入這一內(nèi)容。為此,在單片擴展實驗的基礎(chǔ)上,加入另一片8255A,從而構(gòu)成一個具有8個并口的51單片機系統(tǒng)。且整個實驗的設(shè)置可參考單片的模式,引導(dǎo)學(xué)生逐步實現(xiàn)設(shè)計并完成實驗。
解決的主要問題是,另一片8255A將怎樣接入到只有一片8255A的并口系統(tǒng)中,針對這一問題,仍舊可以通過提出對應(yīng)思考題的方式進行。在有了對8255A關(guān)鍵控制信號以及與單片機互連受單片控制完成控制字的設(shè)置,以及數(shù)據(jù)讀寫的單片擴展基礎(chǔ),要回答這一類問題相對容易。此外,新引入的8255A也要考慮其內(nèi)部控制寄存器以及A、B和C口數(shù)據(jù)寄存器的地址分配問題。而這些早已在上一個單片擴展實驗中就已解決的問題,在這里完全具有一定的參考價值,學(xué)生能較容易地寫出第二片8255A各個口的分配地址。從而更能體會外接存儲器或接口地址劃分的技術(shù)。若此時提出要求增加的第二片8255A將作為輸入接入8個按鈕以實現(xiàn)第一片上顯示第二片中接入的按鈕按下的具體哪一號鍵,則學(xué)生能夠畫出如圖3所示的多片8255A擴展的實驗硬件結(jié)構(gòu)圖。
圖3 多片8255A擴展硬件構(gòu)成圖
圖3所示的系統(tǒng)連接圖,通過同一個P0.2的輸出作為對芯片片選信號的輸出控制,且從連接的關(guān)系來看,兩片的片選信號屬于互斥關(guān)系,當(dāng)一片被選中時,另一片處于未選中的狀態(tài)。這一屬性是通過P0.2的經(jīng)鎖存器輸出以直接接在其中一片,而另一片則經(jīng)過反相器進行連接對應(yīng)的CS片選而實現(xiàn)的,而A1A0的連接,可以兩片的都通過相同的信號進行控制,也可以選擇不同的P0口進行確定,圖3所示的采用的是第二種方法。從而保證了兩片8255A各個內(nèi)部寄存器在地址上不會出現(xiàn)重疊。
多片8255A軟件設(shè)計部分主要是針對兩片不同的8255A進行控存不同數(shù)據(jù)的寫入,以及通過第二片的輸入按鈕數(shù)據(jù),并通過第一片8255A輸出。程序?qū)崿F(xiàn)的功能相對簡單,但包括了有關(guān)外擴的主要特點。按圖3所示的結(jié)構(gòu),第一片的控存地址仍舊為03H,第二片為1CH,第一片的A口地址為00H,第二片B口地址為0CH。另外,第一片的控制數(shù)據(jù)仍舊為80H,第二片的則為82H。得出這些重要的相關(guān)數(shù)據(jù)后,引導(dǎo)學(xué)生寫出實驗程序。程序的主要功能是通過從第二片讀取數(shù)據(jù),并通過第一片輸出。
通過設(shè)置兩個基于51單片機與8255A連接以實現(xiàn)并口擴展的實驗,讓學(xué)生掌握并理解這一擴展方法的關(guān)鍵技術(shù)。與大多數(shù)直接給出實驗原理圖以及實驗代碼的方式不同,為了改變老師講解,學(xué)生被動聽,最終實驗教學(xué)效果低下的現(xiàn)狀,本實驗設(shè)計采用的是引導(dǎo)式教學(xué)方式。從分析8255A的主要結(jié)構(gòu)包括內(nèi)部寄存器及外部引腳連接入手,以思考題的方式讓學(xué)生主動積極復(fù)習(xí)所學(xué)的知識,同時也采用同一方式加深51單片機外接時的主要信號特點。并在對這些關(guān)鍵性問題的回答上,自行在Proteus中畫出相應(yīng)的實驗電路圖。從而激發(fā)學(xué)生實驗的積極性及主動性。而實驗內(nèi)容的設(shè)計上,采用逐步提高的方式,在理解并實際設(shè)計單片8255A擴展的基礎(chǔ)上,進一步實現(xiàn)通過兩片8255A實現(xiàn)擴展的方法。不僅對外接方法有了一進步的認識和掌握,還能深入理解多片擴展增加并口數(shù)量的意義所在。在實際的教學(xué)中取到了很好地教學(xué)效果。使學(xué)生能夠充分利用實驗時間,掌握實驗內(nèi)容。