摘 要:傳統(tǒng)的單片機實驗是在專門的實驗室中進行的,其硬件設備昂貴和設備維護工作量大,而且實驗內容存在更新慢、與工程實際應用脫節(jié)等問題。本文提出一種基于Proteus軟件構建單片機虛擬實驗平臺的方案,并通過應用實例的分析,詳細闡述采用Proteus軟件仿真的特點,結合單片機開發(fā)程序,建立仿真環(huán)境,通過合理地設置,虛擬單片機實驗過程,驗證單片機系統(tǒng)的可靠性。從而解決實驗教學中硬件條件不足的問題,大大提高了實驗教學的效果,縮短了實驗教學與工程實際應用之間的差距。
關鍵詞:單片機實驗;Proteus軟件;仿真
“單片機原理與應用”這門課是機電一體化、自動化等專業(yè)的一門重要課程,具有理論性強、實踐性更強等特點。目前大多數高校都建立了單片機實驗室,基本上配備了實驗箱等硬件仿真設備。但實驗箱硬件電路固定、實驗內容較難改動,很難適應單片機技術的快速發(fā)展以及培養(yǎng)學生的單片機開發(fā)能力、創(chuàng)新能力等需求。利用Proteus軟件進行單片機虛擬仿真實驗,可以在一定程度上彌補上述不足。隨著多媒體教學手段的不斷發(fā)展,仿真軟件得到了廣泛的應用,Proteus軟件是英國Labcenter公司開發(fā)的電路分析與實物仿真軟件。它運行在Windows操作系統(tǒng)上,可以仿真、分析(SPICE)各種模擬器件和集成電路。
1 基于Proteus的單片機虛擬實驗平臺的優(yōu)勢
⑴實驗內容廣泛:利用Proteus軟件豐富的系統(tǒng)資源,可完成驗證性、設計性和綜合性實驗內容。驗證性實驗項目:①輸入輸出口實驗;②中斷實驗;③定時器實驗等。設計性實驗項目:①設計時鐘電路,完成時間的實時顯示;②設計16×16LED點陣的顯示電路;完成漢子的循環(huán)顯示等。綜合性實驗項目:①溫度控制系統(tǒng)設計;②步進電機控制系統(tǒng)設計等。設計靈活,克服了單片機實驗箱中實驗內容固定不變等方面的局限性,增強學生的學習興趣。
⑵硬件投入少:在實際教學中,如果微控制器涉及到 51系列、PIC系列、AVR系列等,為保證教學的需要,必然要投入各種實驗設備;在實驗過程中若需示波器、邏輯分析儀、信號發(fā)生器等設備,也必然要投入資金。若采用Proteus軟件則可仿真多種單片機,并可利用系統(tǒng)提供的虛擬儀表進行分析,避免了上述問題。
⑶實驗過程中損耗小:在傳統(tǒng)的實驗過程中,都涉及到因操作不當而造成的元器件和儀器儀表的損毀,也涉及到儀器儀表等在工作時所造成的能源消耗。采用仿真軟件進行的實驗,基本沒有元器的損耗問題,在實驗的過程中是比較安全的。
(4)Proteus軟件進行仿真實驗,學生可在計算機上自行設計所需實驗,畫原理圖、編寫源代碼、反復調試,觀察結果,直到最終滿意為止。這樣可以節(jié)省開發(fā)時間和開發(fā)費用,并且可大大提高學生的單片機應用能力以及創(chuàng)新能力。
2 基于Proteus的單片機虛擬實驗平臺的配置方案
⑴虛擬仿真軟件的配置:選Proteus軟件仿真系統(tǒng),在單片機實驗室為每臺計算機安裝一套該軟件,可彌補硬件設備的不足。
⑵編譯調試環(huán)境選用Keil C51 uVision3軟件:Keil C51 uVision3軟件集編輯、編譯和程序仿真于一體, 是當前較為流行的軟件之一,該軟件支持多種匯編和C語言的編程,Proteus軟件支持Keil C51 uVision3聯合調試。
⑶基于Proteus的單片機虛擬實驗平臺學習網站:學生可在該網站上自主學習Keil C51 uVision3軟件的詳細使用方法,以及二者聯合調試的方法,并且給出了大量的實例,以視頻錄像的方式展現,便于學生學習。
3 應用實例
下面介紹一個集中斷、七段碼顯示和時鐘日歷芯片DS1302的綜合實驗平臺設計以及調試方法。
3.1 繪制仿真電路的原理圖
啟動Proteus軟件,在主窗口界面點擊窗口左側的元器件選擇區(qū)的P按鈕,接下來會彈出Pick Devices窗口,接著Category欄里點擊,在Results 欄里會出現多類型的CPU器件,找到80C51后雙擊,80C51就被添加到當前窗口左側的元器件列表區(qū)。再用同樣的方法依次把DS1302、7SEG-MPX8-CA-BLUE、74LS373、74LS138、Switch以及多個電阻也添加到器件列表區(qū)里。然后再依次點擊列表區(qū)的器件,把他們放到繪圖區(qū)并編輯其屬性,接著進行合理的布局后,就可以進行連線。繪制出電路原理圖如圖1所示。
3.2 應用實驗平臺完成實驗項目
該仿真實驗平臺可設置多個基本實驗和擴展實驗項目。
基本實驗:
①外部中斷1實驗:外部中斷1(P3.3引腳)接一個開關,P0口通過兩片74LS273鎖存器連接16個發(fā)光二極管,可利用開關產生低電平或下跳沿觸發(fā)中斷來控制 16個發(fā)光二極管的亮滅;②多個外部中斷實驗:外部中斷0(P3.2引腳)接兩個開關,作為兩個外部中斷源,若有一個開關產生低電平或下跳沿觸發(fā)中斷,可利用查詢P1.3、P1.4引腳判斷是哪個外部中斷源引起中斷,并可控制16個發(fā)光二極管的亮滅;③七段碼顯示實驗:P2.0、P2.1、P2.2三個引腳通過74LS138譯碼器作為8個七段碼的位選線,通過P0口送出段碼,可完成動態(tài)掃描顯示。④時鐘芯片DS1302實驗:P1.0、P1.1、P1.2三個引腳作為DS1302的復位端、脈沖輸入端以及數據輸入輸出端,通過 8個七段碼顯示器顯示,可實現小時、分、秒的實時顯示。
擴展實驗:
①根據時間控制16個發(fā)光二極管的亮滅;②若P3.3口接光敏電阻,可根據光的強弱控制16個發(fā)光二極管的亮滅;③若P3.2引腳接熱式紅外傳感器,可根據是否有人來控制16個發(fā)光二極管的亮滅。
根據該實驗平臺還可設計其他實驗,可讓學生自行開發(fā)。
3.3 編寫程序
利用Keil C51 uVision軟件編寫C語言程序,由于篇幅限制,下面只給出利用外部中斷1控制16個發(fā)光二極管的亮滅程序,DS1302程序略。
#include
#include
#define uchar unsigned char
sbit ME_RST=P1^0;
sbit ME_SLCK=P1^1;
sbit ME_IO=P1^2;
sbit_1_in=P1^3;
sbit_1_out=P1^4;
sbit_273_1_clk=P2^4;
sbit_273_2_clk=P2^5;
uchar dis_code[10]= ﹛0X3F, 0X06, 0X5B, 0X4F, 0X66, 0X6D, 0X7D, 0X07, 0X7F, 0X6F﹜;
void main (void)
﹛
dsinit( );
w_init( );
dswrprt( );
IT1=1;
EX1=1;
EA=1;
Do
﹛time( );﹜
While(1);
﹜
/*int1中*/
Void extern1_ISR( )interrupt2
﹛P0=0x55;
_273_1_clk=0;
_273_1_clk=1;
_273_1_clk=0;
P0=0x55;
_273_2_clk=0;
_273_2_clk=1;
_273_2_clk=0;
﹜
在文件Keil C51 uVision2中,將上述程序編譯成16進制文件IntTimedLed.HEX。
3.4 系統(tǒng)仿真
⑴Proteus ISIS與Keil 連接
⑵在ISIS中,選中單片機80C51,再右鍵點擊80C51,出現相應的對話框,在Program File中填入“IntTimedLed.HEX”文件,然后點擊“OK”。此時,完成了程序的載入。
⑶在ISIS窗口的下方有4個模擬調試控制按鈕:運行、步進、暫停和停止按鈕,點擊運行按鈕,即可仿真。
4 結束語
基于Proteus的單片機虛擬實驗平臺的應用,既可充分利用學校計算機房的現有設備,減少了實驗設備的硬件投入及維護工作量,又實現了形象化教學,為單片機的軟硬件結合虛擬仿真提出了一個新的思路,同時可提高學生的單片機應用以及開發(fā)能力。
作者簡介:張文(1983.1-),女,漢族,江蘇徐州人,職稱:講師,學位:工程碩士,大學本科,研究方向:控制工程。