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