国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

聯(lián)合Keil C51在Multisim 10平臺(tái)下實(shí)現(xiàn)單片機(jī)的仿真

2012-09-02 07:24:58楊蓮紅
昌吉學(xué)院學(xué)報(bào) 2012年2期
關(guān)鍵詞:昌吉C語(yǔ)言元件

王 超 楊蓮紅 楊 奇

(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ī);仿真

1 引言

《單片機(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 Multisim 10與Keil C51

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ù)。

3 仿真實(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é)果

4 結(jié)束語(yǔ)

本文介紹了在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ù)。

猜你喜歡
昌吉C語(yǔ)言元件
適宜在昌吉春麥區(qū)種植的早熟高產(chǎn)春小麥品種篩選
基于Visual Studio Code的C語(yǔ)言程序設(shè)計(jì)實(shí)踐教學(xué)探索
以十九大精神為指引 展現(xiàn)新作為新氣象,開創(chuàng)昌吉學(xué)院發(fā)展新局面
基于C語(yǔ)言的計(jì)算機(jī)軟件編程
電子制作(2018年16期)2018-09-26 03:27:08
高職高專院校C語(yǔ)言程序設(shè)計(jì)教學(xué)改革探索
在昌吉,我們品嘗到了豐收的味道——新疆昌吉漢和7S店無(wú)人機(jī)飛防作業(yè)小記
QFN元件的返工指南
在新興產(chǎn)業(yè)看小元件如何發(fā)揮大作用
寶馬i3高電壓元件介紹(上)
論子函數(shù)在C語(yǔ)言數(shù)據(jù)格式輸出中的應(yīng)用
清流县| 陆川县| 义乌市| 呼伦贝尔市| 高要市| 长宁区| 镇坪县| 东宁县| 益阳市| 门头沟区| 惠来县| 浪卡子县| 敖汉旗| 通河县| 朝阳市| 鄄城县| 临清市| 濮阳县| 泸溪县| 卫辉市| 通化县| 杭锦旗| 舟曲县| 天门市| 信宜市| 木兰县| 萨迦县| 新干县| 贵南县| 丰城市| 开远市| 凤凰县| 大同市| 遂宁市| 乌兰县| 杭州市| 重庆市| 阿克陶县| 黄浦区| 逊克县| 固安县|