王 超 楊蓮紅 楊 奇
(1,2,3.昌吉學(xué)院物理系新疆昌吉831100)
聯(lián)合Keil C51在Multisim 10平臺(tái)下實(shí)現(xiàn)單片機(jī)的仿真
王 超1楊蓮紅2楊 奇3
(1,2,3.昌吉學(xué)院物理系新疆昌吉831100)
針對(duì)傳統(tǒng)單片機(jī)課程實(shí)驗(yàn)、實(shí)訓(xùn)教學(xué)中出現(xiàn)的各種難點(diǎn),將Keil C51編譯軟件與Multisim 10仿真軟件相結(jié)合引入到教學(xué)中,借助第三方軟件的優(yōu)勢(shì)完成實(shí)踐教學(xué)任務(wù),可以提高單片機(jī)的教學(xué)效果、縮短開發(fā)周期、節(jié)省成本,提高學(xué)生的動(dòng)手操作能力。
Keil C 51;Multisim 10;單片機(jī);仿真
《單片機(jī)應(yīng)用技術(shù)》課程是電子、電氣信息類學(xué)生的必修課程,而實(shí)踐、實(shí)驗(yàn)教學(xué)是該課程的重要組成部分,傳統(tǒng)的方法是設(shè)計(jì)電路-面包板或?qū)嶒?yàn)箱實(shí)驗(yàn)-制版等一系列過(guò)程。但是,該過(guò)程開發(fā)周期長(zhǎng)、調(diào)試繁瑣,而且修改電路也比較困難,利用仿真軟件Multisim 10則可以很好的解決這些問(wèn)題。另外,借助于第三方編程調(diào)試軟件Keil C51與Multisim 10聯(lián)調(diào)可以在沒有硬件實(shí)物的環(huán)境下建立虛擬硬件仿真平臺(tái),利用Keil C51軟件強(qiáng)大的調(diào)試功能可以加快開發(fā)進(jìn)程,更容易實(shí)現(xiàn)實(shí)驗(yàn)、實(shí)踐的教學(xué),為教學(xué)、實(shí)驗(yàn)提供一個(gè)方便靈活的環(huán)境,豐富實(shí)驗(yàn)內(nèi)容,節(jié)約實(shí)驗(yàn)費(fèi)用,而且仿真成功的電路可以直接在產(chǎn)品開發(fā)中使用。
2.1 Multisim 10特點(diǎn)
Multisim 10軟件是美國(guó)國(guó)家儀器(NI)公司推出的電子電路仿真軟件,是目前的最新版本,它在原有基礎(chǔ)上更新和改進(jìn)了某些功能[1]。
(1)增加了大量的VHDL元件模型,可以仿真更復(fù)雜的數(shù)字元件、單片機(jī)。
(2)增強(qiáng)了軟件的仿真測(cè)試功能,大大擴(kuò)充了元件庫(kù)中的數(shù)目,特別是增加了大量與實(shí)際元件對(duì)應(yīng)的元件模型,使得仿真結(jié)果更精確、更可靠、更實(shí)用。
(3)加強(qiáng)了對(duì)匯編語(yǔ)言和C語(yǔ)言的支持,增加了反匯編以及調(diào)試功能。
(4)增加了部分3D實(shí)物元件和面包板,便于教學(xué)和實(shí)驗(yàn)使用。
2.2 Keil C51簡(jiǎn)介
Keil C51是美國(guó)Keil Software公司出品的51系列兼容單片機(jī)C語(yǔ)言軟件開發(fā)系統(tǒng),與匯編相比,C語(yǔ)言在功能上、結(jié)構(gòu)性、可讀性、可維護(hù)性上有明顯的優(yōu)勢(shì),因而易學(xué)易用,用過(guò)匯編語(yǔ)言后再使用C來(lái)開發(fā),體會(huì)更加深刻。軟件本身支持?jǐn)?shù)百種51系列單片機(jī)芯片,可以用來(lái)編譯C源碼、匯編源程序、連接和重定位目標(biāo)文件和庫(kù)文件、創(chuàng)建HEX文件、調(diào)試目標(biāo)程序等,是一種集成化的文件管理編譯環(huán)境,具有強(qiáng)大的開發(fā)工具。雖然Multisim 10也支持C語(yǔ)言,但它的功能遠(yuǎn)不如Keil C51[2]。
目前在單片機(jī)的開發(fā)應(yīng)用中,C語(yǔ)言已經(jīng)成為主要的編程語(yǔ)言,用C語(yǔ)言編寫單片機(jī)應(yīng)用程序與標(biāo)準(zhǔn)的C語(yǔ)言程序在語(yǔ)法規(guī)則、程序結(jié)構(gòu)及程序設(shè)計(jì)方法等方面基本相同,但C51程序與標(biāo)準(zhǔn)的C程序在以下幾個(gè)方面是不同的:
(1)C51中定義的庫(kù)函數(shù)和標(biāo)準(zhǔn)C語(yǔ)言定義的庫(kù)函數(shù)不同;
(2)C51中數(shù)據(jù)類型與標(biāo)準(zhǔn)C的數(shù)據(jù)類型也有區(qū)別,在C51中還增加了集中針對(duì)MCS-51單片機(jī)特有的數(shù)據(jù)類型;
(3)C51變量的存儲(chǔ)模式與C中變量的存儲(chǔ)模式不一樣,C51中變量的存儲(chǔ)模式與MCS-51單片機(jī)的存儲(chǔ)結(jié)構(gòu)緊密相關(guān)的;
(4)C51與標(biāo)準(zhǔn)C的輸入輸出處理方式不一樣,C51中的輸入輸出是通過(guò)MCS-51串行口來(lái)完成的,輸入輸出指令執(zhí)行前必須對(duì)串行口進(jìn)行初始化;
(5)C51與標(biāo)準(zhǔn)C在函數(shù)使用方面也有一定的區(qū)別,C51中有專門的中斷函數(shù)。
下面以一個(gè)簡(jiǎn)單的0-99計(jì)數(shù)器電路為例介紹利用Multisim 10與Keil C51相結(jié)合實(shí)現(xiàn)單片機(jī)仿真的過(guò)程。
3.1硬件電路設(shè)計(jì)
(1)打開一個(gè)新的電路原理圖并從元件庫(kù)中放置8051單片機(jī);
(2)根據(jù)MCU向?qū)е鸩綀?zhí)行:
首先,定義Workspace文件,包括Workspace的文件路徑和文件名;然后再定義工程,包括工程類型、編程語(yǔ)言、匯編器/編譯器工具和工程名;最后需要定義源文件,包括源文件的名字等。
按照同樣步驟,放置電路中的其它元件,如果希望查看該元件的屬性,可以采用右鍵單擊選擇屬性即可,所有組件都可以采用默認(rèn)設(shè)置來(lái)使用,硬件電路圖如圖1所示。
圖1 硬件電路圖
3.2軟件程序設(shè)計(jì)
在Keil C51環(huán)境下,采用C語(yǔ)言完成軟件程序的設(shè)計(jì),在用C語(yǔ)言編寫過(guò)程中要注意符合C語(yǔ)言的語(yǔ)法規(guī)則。
#include"htc.h"
unsigned char code table[]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10};
unsigned char count;
void delay10ms(void);延時(shí)函數(shù)
{unsigned char i,j;
for(i=02;i>0;i--)
for(j=02;j>0;j--);}
void main()
{count=0;
P3=table[count/10];個(gè)位數(shù)據(jù)
P1=table[count%10];十位數(shù)據(jù)
while(1)
{if(P37==0);檢測(cè)P3.7的電平
{delay10ms();調(diào)用延時(shí)子程序
if(P37==0)
{count++;
if(count==100)
{count=0;}
P3=table[count/10];
P1=table[count%10];}}
在Keil C51環(huán)境下,選中Creat HEX File復(fù)選框以便生成“*.Hex”文件,如圖2所示。
圖2 設(shè)置HEX格式
3.3仿真調(diào)試
Multisim10支持第三方的編譯器,可以將第三方編譯器(Keil 51)生成的可執(zhí)行代碼,如“*.Hex”文件,直接導(dǎo)入到MCU中,然后進(jìn)行仿真。
(1)建立外部可執(zhí)行文件工程
在工程類型(project type)選項(xiàng)中選擇Load External Hex File選項(xiàng)并命名,如圖3所示。
圖3 建立外部可執(zhí)行文件
圖4 添加外部可執(zhí)行文件
(2)添加外部可執(zhí)行文件
激活相應(yīng)的工程文件后,打開“MCU CodeManager”對(duì)話框,即可加載相應(yīng)的“*.Hex”文件,如圖4所示。
(3)仿真運(yùn)行
①執(zhí)行菜單MCU/MCU8051/BUILD,對(duì)源程序進(jìn)行編譯,在窗口下方會(huì)顯示編譯時(shí)間,編譯信息。編譯會(huì)通過(guò)給出“0 error(s)0 warning(s)”的提示。如果有錯(cuò)會(huì)給出錯(cuò)誤的行和錯(cuò)誤的原因,以方便查錯(cuò)。編譯顯示結(jié)果如圖5所示
圖5 編譯結(jié)果
②單步調(diào)試、設(shè)置斷點(diǎn)觀察結(jié)果
執(zhí)行MCU/MCU8051U1/Debug View命令,進(jìn)人調(diào)試窗口,在調(diào)試之前,執(zhí)行MCU/MCU8051U1/ Memory View命令,打開存儲(chǔ)器窗口,可以觀察指令后的執(zhí)行情況??梢圆榭碨FR、內(nèi)部RAM、內(nèi)部ROM,外部RAM等存儲(chǔ)器的狀態(tài),這些操作對(duì)于調(diào)試非常重要,另外,在調(diào)試過(guò)程中還可以在反匯編中窗口中設(shè)置斷點(diǎn)、單步執(zhí)行和連續(xù)執(zhí)行等命令進(jìn)行調(diào)試。調(diào)試過(guò)程如圖6所示。
圖6 調(diào)試過(guò)程
③單擊運(yùn)行按鈕,就可以得到仿真運(yùn)行結(jié)果,如圖7所示。
圖7 運(yùn)行結(jié)果
本文介紹了在Multisim 10平臺(tái)下聯(lián)合編譯軟件Keil C51對(duì)單片機(jī)進(jìn)行仿真的一種方法,該方法可以把傳統(tǒng)的硬件設(shè)計(jì)、軟件調(diào)試、仿真集成在一個(gè)軟件環(huán)境下,能夠做到邊設(shè)計(jì)、邊實(shí)驗(yàn)、邊修改電路。在Multisim 10平臺(tái)下全部采用的是虛擬元件和測(cè)量器件,實(shí)驗(yàn)成本低,速度快,修改調(diào)試也非常方便,突破了實(shí)驗(yàn)教學(xué)中的實(shí)驗(yàn)內(nèi)容固定不變的局限。另外,借助第三方軟件的優(yōu)勢(shì),可以加速實(shí)驗(yàn)進(jìn)程,增強(qiáng)學(xué)生的創(chuàng)新意識(shí)和提高學(xué)生的實(shí)際應(yīng)用能力。對(duì)于單片機(jī)實(shí)踐教學(xué)尤其是綜合性實(shí)驗(yàn)、課程設(shè)計(jì)、電子競(jìng)賽等,這種仿真調(diào)試軟件的使用會(huì)起到積極的推動(dòng)作用。
[1]聶典,丁偉.Multisiml0計(jì)算機(jī)仿真在電子電路設(shè)計(jì)中的應(yīng)用[M].北京:電子工業(yè)出版社,2009:20-50.
[2]范立南,李震,周勝來(lái)等.基于Keil C51的軟件開門狗電路的設(shè)計(jì)[J].計(jì)算機(jī)發(fā)展與展望,2009,19(1):154-156.
(責(zé)任編輯:馬海燕)
O411.3
A
1671-6469(2012)02-0075-06
2012-03-12
昌吉學(xué)院教學(xué)研究項(xiàng)目(11jyyb011)
王超(1980-),男,新疆瑪納斯縣人,昌吉學(xué)院物理系,講師,研究方向:自動(dòng)化應(yīng)用技術(shù)。