- 相關(guān)推薦
如何仿真單片機(jī)的外圍設(shè)備
摘要:單片機(jī)開(kāi)發(fā)需要良好的軟件開(kāi)發(fā)環(huán)境支持,現(xiàn)國(guó)內(nèi)外已經(jīng)有若干軟件仿真器支持51系列單片機(jī),但外圍設(shè)備的仿真仍是軟件仿真的一個(gè)薄弱環(huán)節(jié)。本文針對(duì)目前較為流行的Keil公司的51單片機(jī)軟件仿真器,介紹如何利用VC++編寫(xiě)動(dòng)態(tài)鏈接庫(kù),仿真單片機(jī)外圍設(shè)備,從而為軟件仿真器提出一新思路。關(guān)鍵詞:單片機(jī) 仿真 動(dòng)態(tài)鏈接庫(kù)
1 問(wèn)題提出
目前,單片機(jī)因其諸多特點(diǎn),在各行各業(yè)中得到了廣泛的應(yīng)用。單片機(jī)本身只有一個(gè)電子器件,只有和其它器件、設(shè)備有機(jī)地組合在一起,并配置適當(dāng)?shù)墓ぷ鞒绦颍ㄜ浖┖螅拍軜?gòu)成一個(gè)單片機(jī)的應(yīng)用系統(tǒng)。因此,單片機(jī)的開(kāi)發(fā)包括硬件和軟件兩個(gè)部分。單片機(jī)本身沒(méi)有自開(kāi)發(fā)功能,必須借助于開(kāi)發(fā)工具。近年來(lái),(范文先生網(wǎng)m.panasonaic.com收集整理)隨著個(gè)人計(jì)算機(jī)系統(tǒng)的不斷普及,國(guó)內(nèi)外推出了不少以PC機(jī)為基礎(chǔ)的單片機(jī)開(kāi)發(fā)系統(tǒng);而軟件模擬仿真器是一種新型的開(kāi)發(fā)方法。這種方法是在PC機(jī)上,用軟件來(lái)實(shí)現(xiàn)仿真,并配置一系列相關(guān)的服務(wù)程序,使用時(shí),只要在PC機(jī)上運(yùn)行該軟件包,就可以對(duì)目標(biāo)碼程序進(jìn)行調(diào)試。對(duì)于那些只是用到單片機(jī)內(nèi)部資源的設(shè)計(jì)來(lái)說(shuō),可以在軟件仿真器內(nèi)完成仿真工作。但是,由于目前大多數(shù)廠商提供的產(chǎn)品還不能模擬單片機(jī)的外圍設(shè)備(如液晶顯示板),所以對(duì)于那些用到外部設(shè)備的設(shè)計(jì)來(lái)說(shuō),軟件仿真器則顯得力從心了。在這種情況下,筆者利用硬件軟化的思想及面向?qū)ο蟆⒋翱诘燃夹g(shù),將外圍設(shè)備的功能在軟件中實(shí)現(xiàn)。下面就針對(duì)Keil公司的51單片機(jī)軟件仿真器,介紹如何利用VC++編寫(xiě)動(dòng)態(tài)鏈接庫(kù),仿真單片機(jī)外圍設(shè)備,從而彌補(bǔ)純軟件仿真的不足,最大限度地發(fā)揮軟件仿真的威力。
2 方案構(gòu)思
目前,Keil公司出品的51系列單片機(jī)軟件仿真器已經(jīng)成為國(guó)內(nèi)流行的軟件仿真器之一。Keil uVision2是一個(gè)標(biāo)準(zhǔn)的Windows應(yīng)用程序,集成了C51編譯器、A51匯編器、L51連接器、實(shí)時(shí)操作系統(tǒng)、項(xiàng)目管理器及調(diào)試器等,可以完成編輯、編譯、鏈接、調(diào)試及仿真等整個(gè)開(kāi)發(fā)流程,可以用IDE編譯C或匯編源文件。
而單片機(jī)軟件的設(shè)計(jì)總要和外部事件打交道,比如響應(yīng)外部中斷,檢測(cè)某一引腳上輸入信號(hào)電平的高低,完成A/D轉(zhuǎn)換等;同時(shí)某些情況下,還要根據(jù)外部信號(hào)輸出不同的控制信號(hào)。如果使用硬件仿真系統(tǒng)或在線調(diào)試器時(shí),已有一個(gè)實(shí)實(shí)在在硬件環(huán)境,在調(diào)試時(shí),可以利用目標(biāo)系統(tǒng)提供給單片機(jī)各種信號(hào)的輸入,以便測(cè)試單片機(jī)的實(shí)際運(yùn)行情況。如果使用軟件仿真器,沒(méi)有任何硬件環(huán)境可以給出這些外部信號(hào),所以外部信號(hào)的輸入是面臨的一個(gè)難題;此外單處常常需要和其它常用器件有機(jī)地組合在一起使用,如A/D芯片、液晶顯示板等,如何仿真這些常用器件的功能,也是面臨的一個(gè)難題。
一種解決的方法是,利用Keil提供的調(diào)試函數(shù)實(shí)現(xiàn)。調(diào)試函數(shù)可以模擬外部設(shè)備產(chǎn)生的給CPU的模擬和脈沖輸入信號(hào),還可以產(chǎn)生外部中斷,周期性更新模擬輸入,將串行數(shù)據(jù)送入片內(nèi)串行口,解決了外部信號(hào)的輸入問(wèn)題。但dScope只支持特殊命令語(yǔ)句及一些特定的表達(dá)式,需要花費(fèi)時(shí)間掌握調(diào)試命令;而且利用調(diào)試函數(shù)不能仿真外圍設(shè)備的界面,不直觀。
另一種解決的方法是,利用Keil提供的接口AGSI(Advanced Generic Simulator Interface),用VC++編寫(xiě)動(dòng)態(tài)鏈接庫(kù),仿真單片機(jī)外圍設(shè)備,從而解決外部信號(hào)的輸入問(wèn)題及界面問(wèn)題。Keil提供的SDK是相當(dāng)于Keil UV2仿真環(huán)境的一個(gè)插件,以DLL的形式提供在純軟件仿真模式下,仿真A/D芯片、仿真液晶顯示板及鍵盤(pán)輸入等功能,在PC上就可以開(kāi)發(fā),調(diào)試大部分與界面、功能相關(guān)的程序,而不須燒片子來(lái)調(diào)試、開(kāi)發(fā),效率將大在提高,成本將大大降低。
另一方面,與單片機(jī)配合使用的接口芯片比較固定,接法相對(duì)也比較固定,由用戶自主開(kāi)發(fā)DLL,模塊可以共享,使仿真外圍芯片和器件的DLL不斷豐富。利用VC++的強(qiáng)大功能以及面向?qū)ο螅翱诘燃夹g(shù),可以擴(kuò)展外圍設(shè)備的仿真功能,實(shí)現(xiàn)靈活、通用的面板功能,解決界面不直觀的問(wèn)題。
圖3 仿真實(shí)現(xiàn)
3 實(shí)例分析
下面以傳送帶控制系統(tǒng)為例,介紹如何編寫(xiě)DLL實(shí)時(shí)仿真單片機(jī)的外圍設(shè)備,其方法具有普遍意義。
3.1 傳送帶控制系統(tǒng)的組成原理
圖1表示了傳送帶控制系統(tǒng)的示意圖。(漏頭中是小球。)
①料箱隨傳送帶按運(yùn)動(dòng)方向向前移動(dòng)。
②當(dāng)料箱移動(dòng)到漏斗下方進(jìn),傳感器B反應(yīng),傳送帶停止運(yùn)行,漏頭落料門(mén)打開(kāi),單片機(jī)對(duì)落下的小球計(jì)數(shù)(通過(guò)傳感器A計(jì)數(shù))。
③當(dāng)落下的小球數(shù)等于裝箱數(shù)目時(shí),關(guān)閉漏斗門(mén),傳送帶移動(dòng)。
圖4 Debug頁(yè)
3.2 仿真的具體實(shí)現(xiàn)
圖2是單片機(jī)的硬件電路圖。此例中需要仿真的外圍設(shè)備有:鍵盤(pán)(外供用戶輸入裝箱的小球數(shù)目)、傳感器(判斷料箱是否移動(dòng)到漏斗下方以及計(jì)數(shù))和其它(如傳送帶)。
具體實(shí)現(xiàn)如下:
首先是在調(diào)試函數(shù)中設(shè)置斷點(diǎn),以便查看存儲(chǔ)器內(nèi)容以及控制目標(biāo)文件與DLL庫(kù)的執(zhí)行順序。其次是DLL的編寫(xiě):
①加入AGSI.h(其中定義了外部仿真的接口及函數(shù)的原型)。
②寫(xiě)初始代碼。包括創(chuàng)建AGSI,定義菜單及對(duì)話框,定義SFR、VTR,定義中斷復(fù)位。
③建立用戶界面。加入按鈕(代表鍵盤(pán))、指示燈圖片(代表傳感器)等。
④編寫(xiě)仿真代碼,如圖3所示。
⑤接口。
*VC中打開(kāi)菜單Project->Setting,選取Custom Builder頁(yè),將編制好的DLL文件拷貝到Keil公司指定的安裝路徑..下,然后配置環(huán)境。
*keil中打開(kāi)菜單project->Options for Target,選取Debug頁(yè),按圖4輸入。
⑥仿真結(jié)果。啟動(dòng)dScope,將自動(dòng)載入8051仿真動(dòng)態(tài)鏈接庫(kù)S8051.DLL及自行設(shè)計(jì)的外部設(shè)備的仿真動(dòng)態(tài)鏈接庫(kù)KEY.DLL。用戶輸入程序,編譯成功后進(jìn)入調(diào)試狀態(tài),打開(kāi)菜單Peripheral,會(huì)多出一個(gè)Interface。通過(guò)這個(gè)界面可以完成該軟件的設(shè)計(jì),而不需要外圍設(shè)備。最終界面如圖5所示。
4 小結(jié)
本文介紹了利用DLL仿真單片機(jī)外圍設(shè)備的方法,其設(shè)計(jì)思想具一定的普遍性。軟件仿真在硬件診斷、實(shí)時(shí)仿真等方面存在不足;但在教學(xué)研究中或沒(méi)有硬件情況下,應(yīng)用前景廣泛,對(duì)于單片機(jī)教學(xué)以及程序開(kāi)發(fā)具有一定的指導(dǎo)意義。
【如何仿真單片機(jī)的外圍設(shè)備】相關(guān)文章:
機(jī)械工程虛擬仿真實(shí)驗(yàn)平臺(tái)如何構(gòu)建論文07-21
定性仿真綜述08-06
仿真小蛇作文08-17
化工仿真實(shí)習(xí)心得04-03
單片機(jī)實(shí)習(xí)報(bào)告06-09
單片機(jī)實(shí)習(xí)報(bào)告07-22
電力驅(qū)動(dòng)系統(tǒng)逆變器實(shí)時(shí)仿真08-06
單片機(jī)學(xué)習(xí)心得06-23