引言
單片機體積小,質(zhì)量輕,具有很強的靈活性,而且價格也不高,從而得到越來越廣泛的應(yīng)用。其中以Inter公司推出的8051 /8052芯片最基礎(chǔ)、最普及、最常用。8051 /8052在小、中型開發(fā)場合應(yīng)用很廣,已成為單片機領(lǐng)域的標準。
在電子仿真軟件Multisim10中,也引入了單片機仿真內(nèi)容,且它的模塊型號就是最常見和應(yīng)用廣泛的8051 /8052。在Multisim10中, 8051 /8052 不但可以用匯編語言編寫程序,同時也支持C語言編寫程序,拓展了單片機8051 /8052的使用,使虛擬仿真顯得更加靈活和實用。
下面以一個具體的11進制計數(shù)器應(yīng)用例子來說明(用C語言編寫程序) ,詳細介紹如何實現(xiàn)Multi2sim10單片機仿真,計數(shù)器的電路原理圖如圖1所示。
?
圖1 計數(shù)器電路原理圖
1 組建仿真電路
1. 1 調(diào)出單片機模塊8052
1. 1. 1 單擊電子仿真軟件Multisim10基本界面元件工具條“PlaceMCU Module”按鈕。
1. 1. 2 在彈出“Select a Componet”對話框的“Family”欄中先選取“805X”, 然后在“Componet”欄下選取“8052”,最后單擊對話框右上角的“ok”按鈕。
1. 1. 3 鼠標箭頭將帶出一個“8052”模塊,在電子仿真平臺上單擊鼠標,將先彈出MCU向?qū)υ捒蛑唬谝粰谑枪ぷ鲄^(qū)路徑,第二欄是工作區(qū)取名,這里輸入“my mcu design1”,最后單擊下方的“Next”按鈕。
1. 1. 4 再次彈出MCU向?qū)υ捒蛑灿?欄選項,第一欄為項目類型,一般選擇“Standard (標準) ”;第二欄選擇編程語言種類,單擊右側(cè)下拉箭頭,可以在“Assembly C匯編”和“C”語言之間選擇,這里選取“C”語言;則第三欄自動顯示“Hi2Tech C512L ite com2p iler”字樣; 第四欄可以輸入項目名稱,本文取名為“p roject2”,最后單擊下方的“Next”按鈕,如圖2所示。
?
圖2 MCU向?qū)υ捒蛑?/p>
1. 1. 5 再次彈出MCU向?qū)υ捒蛑?個單選項:“Create emp ty p roject (創(chuàng)建空項目) ”和“Addsource file (添加源文件) ”, 這里選取“Add sourcefile”;下面欄中可以輸入后綴為“。 C”的源文件名,這里就用“Led11. c”最后單擊下方的“Finish”按鈕完成。
1. 1. 6 完成MCU向?qū)υ捒蛑螅@時能在電子仿真平臺上顯示出原來調(diào)出單片機模塊U18052,右擊鼠標退出元件操作。
1. 1. 7 保存文件,在文件名欄輸入“l(fā)ed001”文件名,默認文件后綴“。 ms10”。
1. 2 在電子仿真軟件Multisim10基本界面平臺上,單擊主菜單“View /Design Toolbox”,在基本界面左側(cè)將打開“設(shè)計工具盒”窗口,單擊“l(fā)ed001”前的“ + ”號可以看到剛才命名的工作區(qū)“my mcudesign1”,在工作區(qū)下面是項目名“p roject2 ”, 在項目名下面是源文件名“Led11. c”,如圖3所示。
?
圖3 工作區(qū)項目和文件
2 編寫MCU源C語言程序
2. 1 雙擊“設(shè)計工具盒”中的源文件“Led11. c”,在其右側(cè)將打開編寫程序窗口,刪除已有的文字注釋說明。
2. 2 在源程序窗口輸入以下11進制計數(shù)器C語言源程序:
#include " htc. h"
void delay( unsigned int i) ;
unsigned char code table [ ] = { 0x40, 0x79, 0x24, 0x30, 0x19, 0x12, 0x02,
0x78, 0x00, 0x90};
unsigned char a1, a2, a3;
void main ( )
{
unsigned int i;
while (1)
{ for( i = 0; i < 11; i + + )
{
if ( i = = 0)
{P2 = 0x40;
P1 = 0x40;
P0 = 0x40; }
if ( i = = 1)
{P2 = 0x79;
P1 = 0x40;
P0 = 0x40; }
if ( i = = 2)
{P2 = 0x24;
P1 = 0x40;
P0 = 0x40;
}
if ( i = = 3)
{
P2 = 0x30;
P1 = 0x40;
P0 = 0x40;
}
if ( i = = 4)
{
P2 = 0x19;
P1 = 0x40;
P0 = 0x40;
}
if ( i = = 5)
{
P2 = 0x12;
P1 = 0x40;
P0 = 0x40;
}
if ( i = = 6)
{
P2 = 0x02;
P1 = 0x40;
P0 = 0x40;
}
if ( i = = 7)
{
P2 = 0x78;
P1 = 0x40;
P0 = 0x40;
}
if ( i = = 8)
{
P2 = 0x00;
P1 = 0x40;
P0 = 0x40;
}
if ( i = = 9)
{
P2 = 0x10;
P1 = 0x40;
P0 = 0x40;
}
if ( i = = 10)
{
P2 = 0x40;
P1 = 0x79;
P0 = 0x40;
i = 0;
}
}
} }
void delay( unsigned int i)
{
while ( i - - ) ;
}
2. 3 單擊主菜單“MCU /MCU8085U1 /Build”,“Build”的結(jié)果將輸出到“Sp readsheet View (電子數(shù)據(jù)表視圖) ”中,同時也將所編程序“燒錄”到8052 模塊中。
如果程序語句邏輯格式有錯誤,稍等片刻,在程序下方打開的電子數(shù)據(jù)表視圖中可以看到程序分析結(jié)果,必須重新檢查所編程序,找出錯誤修正改之,方能進入下一步操作。運行本程序在電子數(shù)據(jù)表視圖顯示結(jié)果如圖4所示,顯然沒問題, 2個警告沒有關(guān)系,只是編程程序中有些元素設(shè)置了未用而已。
?
圖4 C語言編程分析結(jié)果
3 調(diào)出其他仿真元件,搭建單片機仿真電路,進行仿真
3. 1 單擊電子仿真軟件Multisim10基本界面元件工具條,從不同的元件庫中,分別調(diào)出相應(yīng)的元件(三極管、電阻和數(shù)碼管等) ,按圖1 進行連接,然后運行仿真。
3. 2 按圖1所示仿真電路接線無誤的前提下,單擊基本界面右上角仿真開關(guān)按鈕。
3. 3 電子仿真工作平臺將會看到LED按編好的程序完成11進制計數(shù)器的功能。
4 仿真調(diào)試工具
4. 1 在“11進制計數(shù)器”仿真電路運行的情況下,單擊主菜單“MCU /MCU8085U1 /Debug View”,將打開調(diào)試程序和排除故障窗口。
4. 2 單擊主菜單“MCU /MCU8085U1 /Memory View”,將打開MCU存儲器窗口,在該窗口下可以看到特殊函數(shù)寄存器( SFR ) ; 內(nèi)部RAM ( IRAM ) ; 內(nèi)部ROM( IROM) ;外部RAM (XRAM) 。借助于以上仿真調(diào)試工具和MCU的存儲器,可以對程序進行諸如設(shè)置斷點、修改程序、觀察地址值、堆棧情況、進入子函數(shù)、跳過指令等操作,從而達到驗證、調(diào)整、修改和完善仿真程序的目的,直至完成所需功能為止。
5 結(jié)束語
綜上所述,相信本文對單片機愛好者會有很大的啟示,并對單片機初學者起到拋磚引玉的作用。無需借助實驗室的儀器設(shè)備,只要擁有一臺手提電腦就可以在任何時間和地點進行單片機仿真實驗,很好地滿足了電子工作者在單片機仿真方面的需求。
評論