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