安徽滁州技師學(xué)院機(jī)電與汽車工程系 支松柏
Proteus和Keil仿真軟件在職業(yè)技能大賽中的應(yīng)用與思考
安徽滁州技師學(xué)院機(jī)電與汽車工程系 支松柏
Proteus軟件是世界上著名的EDA工具,具有強(qiáng)大的模擬仿真功能, Keil C51生成的目標(biāo)代碼效率非常高,在功能上、結(jié)構(gòu)性、可維護(hù)性上具有明顯的優(yōu)勢(shì)。Proteus和Keil相結(jié)合搭建模擬仿真系統(tǒng),彌補(bǔ)了傳統(tǒng)單片機(jī)開(kāi)發(fā)方法的缺點(diǎn)和不足。在各省市職業(yè)技能大賽中,利用Proteus和Keil軟件仿真,能顯著提高了程序編寫(xiě)效率,及時(shí)查找錯(cuò)誤點(diǎn),降低亞龍YL-236單片機(jī)設(shè)備模塊意外損壞風(fēng)險(xiǎn),讓學(xué)生參與到其中的細(xì)節(jié)設(shè)計(jì)中去,學(xué)生動(dòng)手能力得到訓(xùn)練與提高,充分體現(xiàn)Proteus和Keil軟件在單片機(jī)開(kāi)發(fā)和應(yīng)用上的優(yōu)越性。
Proteus;Keil;技能大賽;應(yīng)用思考
隨著微電子科技的飛速發(fā)展,以及4G通信、網(wǎng)絡(luò)技術(shù)、多媒體技術(shù)在嵌入式系統(tǒng)設(shè)計(jì)中的應(yīng)用,單片機(jī)在日常生活、工業(yè)控制等方面得到了廣泛應(yīng)用。因此,很多職業(yè)學(xué)校開(kāi)設(shè)了單片機(jī)這門(mén)課程,在每年的省市技能大賽中,單片機(jī)項(xiàng)目一直都是各職業(yè)學(xué)校關(guān)注的焦點(diǎn)。傳統(tǒng)的單片機(jī)教學(xué),以理論為主實(shí)踐較少,且實(shí)踐以驗(yàn)證理論為主。理論課堂難以輔助硬件進(jìn)行教學(xué),即使演示,效果也不好?,F(xiàn)利用Proteus和Keil仿真軟件,可以直觀看到程序運(yùn)行的結(jié)果,顯著提高了程序編寫(xiě)效率,減少硬件的損壞,讓學(xué)生參與到其中的細(xì)節(jié)設(shè)計(jì)中去,學(xué)生動(dòng)手能力得到訓(xùn)練與提高,充分解決學(xué)習(xí)和工作中遇到的實(shí)際問(wèn)題。
Proteus是目前最好的模擬單片機(jī)外圍器件的工具,可以仿真51系列、AVR、PIC等常用的MCU及外圍電路。從原理圖布圖、代碼調(diào)試到單片機(jī)與外圍電路協(xié)同仿真,以及一鍵切換到PCB設(shè)計(jì),真正實(shí)現(xiàn)了從概念到產(chǎn)品的完整設(shè)計(jì)。Keil是一個(gè)C51單片機(jī)開(kāi)發(fā)軟件平臺(tái),支持C語(yǔ)言和匯編語(yǔ)言的編譯器軟件,隨著版本升級(jí),它已經(jīng)成為了一個(gè)重要的單片機(jī)開(kāi)發(fā)平臺(tái),其界面友好,操作也不復(fù)雜(如圖1所示)。
Proteus的編譯能力比較弱,但它支持與Keil軟件的聯(lián)調(diào),軟件的編寫(xiě)可以在Keil C51 環(huán)境下進(jìn)行,單片機(jī)型號(hào)選擇AT89S52,編寫(xiě)data.c文件,利用Keil C51進(jìn)行編譯,編譯成功后生成data.hex文件。所以聯(lián)調(diào)結(jié)合在程序調(diào)試與軟件的仿真方面具有很強(qiáng)大的功能。
圖1 Proteus和Keil仿真軟件
Proteus與Keil軟件聯(lián)調(diào)的過(guò)程就是建立軟件和硬件聯(lián)合模擬仿真系統(tǒng)的過(guò)程。通常聯(lián)合仿真系統(tǒng)由一個(gè)硬件執(zhí)行環(huán)境和一個(gè)軟件執(zhí)行環(huán)境組成,兩種環(huán)境都有自己的糾錯(cuò)和控制界面,Proteus與Keil的聯(lián)調(diào)可以實(shí)現(xiàn)整個(gè)設(shè)計(jì)系統(tǒng)的總調(diào)。
使用Keil軟件時(shí),首先創(chuàng)建一個(gè)項(xiàng)目,從元器件庫(kù)中選擇所需元器件,設(shè)置相關(guān)參數(shù),用C或匯編語(yǔ)言寫(xiě)程序。接下來(lái)生成執(zhí)行代碼,檢查程序中的是否錯(cuò)誤并及時(shí)修改,測(cè)試完畢后鏈接其應(yīng)用。學(xué)生可以通過(guò)使用Keil軟件工具編制、調(diào)試應(yīng)用程序,學(xué)習(xí)亞龍YL-236型設(shè)備AT89S52單片機(jī)的各種指令和程序編寫(xiě)的方法和技巧。
在整個(gè)系統(tǒng)中,Proteus作為硬件調(diào)試界面,Keil作為軟件調(diào)試界面,二者相輔相成,缺一不可。詳細(xì)的聯(lián)調(diào)過(guò)程如下:
1、在電腦系統(tǒng)中安裝Proteus和Keil兩種軟件;
2、復(fù)制proteusmodelsvdm51. dll文件到keil c51 in中;
3、修改keil ools. ini,在c51補(bǔ)充 tdrv5=binvdm51. dll,并保存該設(shè)置;
4、打開(kāi)proteus軟件,根據(jù)比賽要求畫(huà)出電路連接圖。
5、在keil中編寫(xiě)比賽所需要的程序,之后進(jìn)行debug命令調(diào)試,此時(shí)可以等到模擬仿真的結(jié)果(如圖2所示)。
圖2 進(jìn)行debug命令調(diào)試
根據(jù)各省市技能大賽的設(shè)備要求,亞龍YL-236型單片機(jī)控制功能考核裝置包括AT89S52主機(jī)模塊、顯示模塊、繼電器模塊、矩陣鍵盤(pán)模塊、A/D模塊,溫感模塊,以及步進(jìn)電機(jī)模塊等??梢赃M(jìn)行的實(shí)驗(yàn)包括流水燈實(shí)驗(yàn)、數(shù)碼管實(shí)驗(yàn)、液晶顯示實(shí)驗(yàn)、定時(shí)器中斷實(shí)驗(yàn)、交直流電機(jī)實(shí)驗(yàn)、矩陣鍵盤(pán)實(shí)驗(yàn)、溫感實(shí)驗(yàn)、AD轉(zhuǎn)換實(shí)驗(yàn)、機(jī)械臂實(shí)驗(yàn)等。在此基礎(chǔ)上,還可以進(jìn)行8255擴(kuò)展模塊的設(shè)計(jì)與應(yīng)用。
下面以技能大賽中最常用的顯示模塊為例,介紹一例Proteus和Keil仿真的實(shí)際應(yīng)用(如圖3所示)。
圖3 Proteus和Keil仿真的實(shí)際應(yīng)用
在Keil軟件下建立一個(gè)項(xiàng)目組,按比賽任務(wù)指導(dǎo)書(shū)要求編寫(xiě)程序,在編完程序后執(zhí)行代碼編譯,右鍵選中AT89S52選項(xiàng),單擊左鍵,在彈出的Edit component對(duì)話框中的program file一欄中,加載執(zhí)行代碼編譯好的源文件,點(diǎn)擊調(diào)試按鈕,進(jìn)行軟件和硬件的模擬仿真調(diào)試。
在Proteus軟件中,仿真工具欄的控制鍵顏色由黑變?yōu)榫G。點(diǎn)擊工具欄的按鈕運(yùn)行,可以觀察到程序運(yùn)行的結(jié)果,LED燈依次點(diǎn)亮,并可以按照賽題要求隨機(jī)點(diǎn)亮所需LED燈,此時(shí)達(dá)到題目的要求。
1、萬(wàn)能LED流水燈的C語(yǔ)言程序編寫(xiě)如下:
#includelt;reg52.hgt;
#includelt;intrins.hgt;
#define uchar unsigned char
#define uint unsigned int
uchar code tab[]={0x77,0x33,0x11,0x00,0x88,0xcc,0xee,0xff};
sbit LED=P3;
uchar aa,x,temp;
void main()
{ x=0;
TMOD=0X01;
TH0=(65536-46080)/256;
TL0=(65536-46080)%256;
EA=1;
ET0=1;
TR0=1;
while(1)
{ P3=tab[x];
if(x==8)
{ x=0; } } }
void time() interrupt 1
{ TH0=(65536-46080)/256;
TL0=(65536-46080)%256;
aa++;
if (aa==10)
{aa=0;
x++; } }
2、液晶點(diǎn)陣屏的C語(yǔ)言程序編寫(xiě)如下:
#includelt;reg52.hgt;
#includelt;intrins.hgt;
#define uchar unsigned char
#define uint unsigned int
sbit row0=P3^0; sbit col0=P3^2;
sbit col1=P3^3; sbit col2=P3^4;
sbit col3=P3^5; sbit key=P1^1;
sbit key1=P1^2;
uchar i,temp,aa,a,b;
uchar code da[]={/*-- 文字: 大 --*/
/*-- 宋體12;此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=16x16 --*/
};
void delay(uint z)
{ uint x,y;
for(x=z;xgt;0;x--)
for(y=110;ygt;0;y--);
}
void main( )
………
1、學(xué)生在編寫(xiě)程序時(shí)應(yīng)當(dāng)關(guān)閉主機(jī)和仿真器模塊電源,為了減少不必要的損耗,要等程序編好后需下載調(diào)試時(shí)再打開(kāi)電源。用電子連線接線時(shí)注意+-極性,不要接反。接線原則是用到哪個(gè)模塊就接哪個(gè)模塊,不用的模塊不用接。使用仿真器進(jìn)行仿真時(shí),應(yīng)注意仿真頭正反方向,確認(rèn)后把仿真頭插入主機(jī)槽中即可。
2、設(shè)置Keil C51軟件的部分選項(xiàng)
單擊options for target選項(xiàng),彈出對(duì)話框窗口,點(diǎn)擊debug選項(xiàng)卡,在出現(xiàn)的下拉菜單里選中proteus vsm monitor-51 driver。此時(shí)還需要點(diǎn)擊use選項(xiàng)前面表明選中的小圓點(diǎn)。
點(diǎn)擊setting選項(xiàng)卡,定義數(shù)據(jù)接口,執(zhí)行編譯程序并進(jìn)入調(diào)試狀態(tài),生成可執(zhí)行文件。
3、生成hex文件時(shí)注意事項(xiàng)
用Keil C51編寫(xiě)程序生成hex文件,hex文件屬于文本文件,可以用記事本程序來(lái)查看。hex文件的一行稱為一個(gè)記錄,通常編譯后的hex文件由若干條記錄組成,一般格式為:LLAATTDDCC.
TT表示記錄類型,00表示數(shù)據(jù)記錄,01表示文件結(jié)束,有的軟件會(huì)產(chǎn)生大于01的記錄類型,此時(shí)可以忽略。 CC表示校驗(yàn)和,若將其本身與記錄中除起始標(biāo)志外的所有字節(jié)相加應(yīng)為0則正確,不為0則有錯(cuò)誤,應(yīng)及時(shí)查找并修改。
Proteus與Keil軟件聯(lián)調(diào)結(jié)合進(jìn)行模擬仿真,具有比較明顯的優(yōu)勢(shì),不僅可以迅速直觀的看到程序運(yùn)行結(jié)果,而且排除了原材料消耗和設(shè)備損壞等因素,可以幫助學(xué)生熟悉單片機(jī)系統(tǒng)的開(kāi)發(fā)方法,彌補(bǔ)理論教學(xué)的不足。在各省市職業(yè)技能大賽中學(xué)生通過(guò)軟件模擬仿真實(shí)驗(yàn),可以更快、更好地編寫(xiě)程序、調(diào)試設(shè)備,這對(duì)進(jìn)一步培養(yǎng)學(xué)生的綜合分析能力、排除故障能力和開(kāi)發(fā)、創(chuàng)新能力具有重要意義。
[1]杜樹(shù)春編.Proteus與Keil 設(shè)計(jì)與仿真[M].電子工業(yè)出版社.
[2]林立編.單片機(jī)原理及應(yīng)用[M].電子工業(yè)出版社.
[3]丁明亮編.51單片機(jī)應(yīng)用與仿真[M].北京航空航天大學(xué)出版社.
支松柏,講師,現(xiàn)供職于安徽滁州技師學(xué)院機(jī)電與汽車工程系。