于明軍
(赤峰學(xué)院 物理與電子信息工程學(xué)院,內(nèi)蒙古 赤峰 024000)
單片機(jī)系統(tǒng)虛擬仿真方法
于明軍
(赤峰學(xué)院 物理與電子信息工程學(xué)院,內(nèi)蒙古 赤峰 024000)
在缺乏單片機(jī)實(shí)驗(yàn)設(shè)備的情況下,利用軟件構(gòu)建單片機(jī)系統(tǒng),并對(duì)程序和電路的進(jìn)行聯(lián)合調(diào)試,是一種方便可行的方法.本文以數(shù)字時(shí)鐘系統(tǒng)的搭建和仿真調(diào)試為例,介紹了仿真軟件Proteus在單片機(jī)系統(tǒng)仿真中的使用,并詳細(xì)闡述了KeilC51軟件和Proteus軟件的聯(lián)合調(diào)試方法,為單片機(jī)系統(tǒng)的開發(fā)與調(diào)試提供了一種純軟件的方法.
單片機(jī);虛擬仿真;聯(lián)合調(diào)試
單片機(jī)系統(tǒng)的開發(fā)包含硬件電路設(shè)計(jì)、軟件設(shè)計(jì)和系統(tǒng)調(diào)試三個(gè)部分.通常的開發(fā)步驟是首先搭建實(shí)物電路或制作PCB實(shí)驗(yàn)板,然后編寫軟件程序,最后利用仿真器進(jìn)行軟硬件聯(lián)合調(diào)試,直至系統(tǒng)完成.在缺乏實(shí)驗(yàn)設(shè)備和條件的情況下,利用軟件構(gòu)建單片機(jī)系統(tǒng)并調(diào)試是一種很好的選擇.
Labcenter electronics公司的EDA工具軟件Proteus是目前最好的模擬單片機(jī)外圍器件的工具,它可以仿真51系列、AVR、PIC等常用的MCU及其外圍電路,如LCD、RAM、ROM、鍵盤、馬達(dá)、LED、A/D、D/A,部分 SPI、IIC器件等.它包含幾十個(gè)元件庫和大量虛擬儀器,集電路設(shè)計(jì)、仿真調(diào)試、電路板制作于一體,但該軟件并不仿真MCU本身,而是將編譯好的程序解析成單片機(jī)引腳電平信號(hào)從而控制其外圍器件.
Kei l軟件公司開發(fā)的KeilC51 uVision3是國內(nèi)流行的單片機(jī)軟件開發(fā)平臺(tái),其仿真方法有純軟件仿真(simulator)和基于驅(qū)動(dòng)文件和硬件仿真平臺(tái)的硬件仿真(emulator)兩種.前者可以利用軟件模擬程序運(yùn)行過程,通過單步、連續(xù)、斷點(diǎn)等方式對(duì)程序進(jìn)行調(diào)試,缺點(diǎn)是不能看到實(shí)驗(yàn)現(xiàn)象,只能通過對(duì)內(nèi)部存儲(chǔ)器和寄存器進(jìn)行觀察而判斷程序正確與否.后者將計(jì)算機(jī)與硬件仿真器連接,也可進(jìn)行單步、連續(xù)、斷點(diǎn)等方式調(diào)試,利用仿真器模擬單片機(jī)驅(qū)動(dòng)目標(biāo)系統(tǒng),可實(shí)時(shí)觀察現(xiàn)象,直觀真實(shí)并可以調(diào)試硬件目標(biāo)系統(tǒng).
該電子時(shí)鐘系統(tǒng)由AT89C52單片機(jī)、LCD1602液晶顯示模塊、日歷時(shí)鐘芯片DS1302、10K上拉電阻、晶振、電池和若干電阻電容構(gòu)成,電路如圖1所示.
在該軟件中繪制原理圖與其他軟件相似,主要有以下兩步:
2.1 將所需元件從庫中裝進(jìn)器件欄(DEVICES):左鍵單擊窗口左側(cè)的元器件工具欄的component按鈕,接著再點(diǎn)擊窗口左側(cè)的元器件選擇區(qū)的Pick Divices按鈕,彈出 Pick Devices窗口(圖 2),搜索關(guān)鍵字如“AT89C52”找到器件,雙擊該器件即可加載到左側(cè)的器件欄中,加載其它元器件和以上過程一樣.
圖2
2.2 在繪圖區(qū)繪制原理圖;將已經(jīng)找到的器件放到繪圖區(qū),布置好各個(gè)元器件相對(duì)位置,用鼠標(biāo)左鍵點(diǎn)擊器件引腳連線即可.
圖3
硬件電路設(shè)計(jì)完成后,在KeilC51軟件中編寫軟件程序,調(diào)試通過后生成HEX文件,對(duì)Proteus中硬件電路的調(diào)試有兩種方法,一種是利用Proteus單獨(dú)調(diào)試,只需將HEX文件加載到電路圖中的單片機(jī)中,運(yùn)行Proteus程序觀察實(shí)驗(yàn)現(xiàn)象,如與設(shè)計(jì)不符,通過分析現(xiàn)象修改KeilC51中的程序重新編譯生成HEX文件,再運(yùn)行仿真,如此往復(fù)直到軟硬件調(diào)試正確.此方法類似于單片機(jī)實(shí)驗(yàn)板的在線下載,沒有仿真器的調(diào)試情況;另一種方式是KeilC51軟件和Proteus軟件的聯(lián)合調(diào)試,類似于帶仿真器的實(shí)驗(yàn)板調(diào)試的情況.
任何仿真器與KeilC51軟件聯(lián)調(diào)都需要由一個(gè)驅(qū)動(dòng)文件,并將其信息寫入Keil的配置文件,Keil軟件才能識(shí)別.在此我們?cè)敿?xì)說明其設(shè)置方法:
(1)Keil與Proteus聯(lián)調(diào),首先必須將proteus安裝目錄下VDM51.dll文件復(fù)制到Keil安裝目錄的C51BIN目錄中.
(2)修改keil安裝目錄下Tools.ini文件.用記事本(其它的編輯軟件也可以,如Ultra Edit)打開Keil根目錄下的TOOLS.INI文件,在[C51]欄目下加入TDRV3=BINVDM51.DLL ("ProteusVSM Monitor-51 Driver"),其中“TDRV3”中的“3”要根據(jù)實(shí)際情況寫,不要和原來的重復(fù),括號(hào)中的文字為提示文字,可隨意改寫.
(3)在proteus的debug菜單中選中use remote debug monitor.在keil中編寫MCU的程序.進(jìn)入KEIL的 project菜單 option for target'工程名 '.在DEBUG選項(xiàng)中右欄上部的下拉菜選中Proteus VSM Monitor-51 Driver.
(4)在進(jìn)入seting,如果同一臺(tái)機(jī)IP名為127.0.0.1,如不是同一臺(tái)機(jī)則填另一臺(tái)的IP地址端口號(hào)一定為8000.
軟件設(shè)置好后,運(yùn)行Keil與Proteus軟件,可以在Keil軟件中使用單步、連續(xù)、斷點(diǎn)等方式調(diào)試,于此同時(shí)Proteus軟件中將相應(yīng)的顯示程序執(zhí)行效果,達(dá)到軟硬件聯(lián)合調(diào)試的效果.如圖4所示.
圖4
本文介紹了利用KeilC51軟件和Proteus軟件對(duì)單片機(jī)系統(tǒng)進(jìn)行虛擬仿真的方法,可以實(shí)現(xiàn)部分硬件仿真的功能.大大簡(jiǎn)化了實(shí)際單片機(jī)系統(tǒng)開發(fā)過程中硬件電路制作、測(cè)試的過程,是一種便捷、低成本的開發(fā)方法.而在缺少實(shí)驗(yàn)條件的情況下,也是一種很好的單片機(jī)系統(tǒng)開發(fā)手段.
〔1〕許超,吳新杰,張丹.基于 Proteus和 Keil的單片機(jī)課程教學(xué)改革[J].遼寧大學(xué)學(xué)報(bào)(自然科學(xué)版),2011(1).
〔2〕吳凌燕.基于Proteus的單片機(jī)仿真設(shè)計(jì)[J].儀表技術(shù),2011(7).
〔3〕陳龍,張亞君.Proteus仿真軟件在單片機(jī)實(shí)驗(yàn)教學(xué)中的應(yīng)用[J].實(shí)驗(yàn)技術(shù)與管理,2009(8).
〔4〕陳昶.電子仿真軟件在單片機(jī)電路仿真中的應(yīng)用[J].山西科技,2009(2).
〔5〕王瑋,曹會(huì)寧.Proteus仿真軟件在單片機(jī)一體化教學(xué)中的應(yīng)用[J].機(jī)電產(chǎn)品開發(fā)與創(chuàng)新,2009(5).
TP273
A
1673-260X(2012)04-0032-02