Proteus軟件仿真教程_第1頁
Proteus軟件仿真教程_第2頁
Proteus軟件仿真教程_第3頁
Proteus軟件仿真教程_第4頁
Proteus軟件仿真教程_第5頁
已閱讀5頁,還剩76頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、我的畢業(yè)論文(二):Keil軟件的基本用法2007年07月02日星期一13:11KeilpVision是Keil公司(ARM子公司)開發(fā)的一款用于MCS-51單片機(jī)開發(fā)的應(yīng)用十分廣泛的編譯和調(diào)試軟件。該軟件可以編輯、編譯匯編語言、C51語言,連接定位目標(biāo)文件和庫文件,創(chuàng)建HEX文件,調(diào)試目標(biāo)程序等。Keil軟件功能強(qiáng)大,包含很多部分,本文我們主要使用KeilpVision來開發(fā)C51項(xiàng)目、調(diào)試程序并生成HEX文件來用于單片機(jī)開發(fā)。KeilpVision是一款在Windows下使用的集成開發(fā)環(huán)境,目前最新版本為V3,本文中我們?yōu)榱撕啽氵x用V2.0。下面我們就來熟悉一下Keil軟件。首先安裝軟件,

2、它的安裝與MedWin樣簡單,我們不做過多介紹。安裝完成后,我們就可以使用軟件了,打開軟件,我們可以看到其界面,如下圖所示:FileEditViewFroiectDebufrFlashFeripher:=l1sToolsSVCSWirLdowHelp厲|黑髦皤a圧|辜車4%爲(wèi)嵬恤矗冀厭|9翁SROBIFP-1土莊0?會(huì)ProjectWorkspacex-g|Filesuab.門MOPL_至口BuildCommand入FindinFil亡s/:丨I顧2下面我們就來使用Keil軟件開發(fā)我們的第一個(gè)項(xiàng)目。點(diǎn)擊“Project”(工程)菜單下面的“NewProject(新建工程),我們來新建一個(gè)工程。

3、軟件彈出“CreateNewProject(創(chuàng)建新工程)窗口。如下圖所示:我們?yōu)楣こ梯斎胛募?,點(diǎn)擊“保存”按鈕,軟件將彈出“SelectDeviceforTarget”(選擇MCU)窗口,如下圖所示。我們只需根據(jù)自己工程的需要選擇相應(yīng)的MCU,然后點(diǎn)擊“確定”按鈕就可以了。SelectDeviceforTarget1Targetf?XcfuVendor:AtmelDevice:AT89C51廠U*ExtendedLirLker(U51)inEteadofBL51Family:MCS51廠UseEktendedAs:R:ELt:ELbaseDescription/De1ayXl匸izumu.

4、nsiriEdchsrccurLt:main)El_Q=OrLelayELOzn.3(50?;Nhiletl)F1_0=-E1_0;DElyXlQrngfSO);接下來的操作有兩點(diǎn)需要注意:1、加入AT89C51的頭文件(當(dāng)然,如果你選擇了其他的MCU,則加入相應(yīng)的頭文件):在要加入頭文件的地方(一般是文件開頭),點(diǎn)擊右鍵,選擇點(diǎn)擊彈出菜單(如下圖)中的Insert#include,”即完成了頭文件的添加。我們可以看到源文件中多了一行頭文件包含代碼include”。S?UndoOlRedo蕃Cut=!CopyFasteToggleBookiri:=Lt_kInsertJincludeJGoTo

5、Line氣址|Insert/EejrriijVE!Bre:=LkfuirLtEnable/DisableBi-eakpuintCle:eq-curnpleCodeCoverageInfu2、保存源文件:注意保存源文件時(shí)所書寫的源文件擴(kuò)展名決定了源文件的類型面我們還需要對(duì)工程作一些設(shè)置,以使其滿足我們的要求。(C51文件或者匯編語言源文件)。這里我們將源文件保存為“main.c”。你可以看出在源文件保存以后,文件中的關(guān)鍵字已經(jīng)高亮顯示,可以幫助我們及時(shí)發(fā)現(xiàn)錯(cuò)誤。源文件編輯好以后,我們就可以將其添加到工程中了。如下圖所示,右鍵點(diǎn)擊“ProjectWorkspace”窗口中的“SourceGroup

6、1”(如果你不能看到這個(gè)項(xiàng)目,你可以點(diǎn)擊一下圖中“Target1”前面的“+”號(hào)展開文件夾),這時(shí)軟件將彈出如圖所示的菜單。我們選擇“AddFilestoGroupSourceGroup1U軟件彈出添加源文件窗口,我們就可以將相應(yīng)的源文件加入到工程了。I盤IRebuildtarget|:X|Bui1dt:=Q-get右鍵點(diǎn)擊上圖中的“Target1”,軟件將彈出工程菜單,如下圖所示。我們選|PnpjfectVl-韭Tb乂監(jiān)巳工丄l呂-;xSo-SelectDeviceforTargetTarget1-醫(yī)OptiorL5farT:ii_getT:ii_cet1JOpenFile擇點(diǎn)擊“Optio

7、nsforTargetTargetT”,軟件將彈出工程設(shè)置窗口。在工程設(shè)置中其他的我們暫時(shí)不管,只需將“Output”選項(xiàng)卡下面的“CreateHEXFile選中就可以了,如下圖所示。這樣,當(dāng)我們調(diào)試工程項(xiàng)目時(shí),軟件將能夠生成HEX文件,用來裝入單片機(jī),使之運(yùn)行我們的指令。設(shè)置好以后,我們就可以編譯、鏈接、調(diào)試我們的工程項(xiàng)目了。首先讓我們來熟悉一下調(diào)試工具欄。在這個(gè)工具欄中我們只需了解左邊的三個(gè)按鈕。其中,調(diào)試工具欄中最左側(cè)的按鈕是Translatecurrentfile”按鈕,即編譯按鈕,用來編譯當(dāng)前文件;中間的按鈕是“Buildtarget”按鈕,即建立工程按鈕,用來編譯、連接當(dāng)前的工程,

8、產(chǎn)生相應(yīng)的工程目標(biāo)文件,比如HEX文件;最右側(cè)的按鈕是“Rebuildalltargetfiles按鈕,即全部重建按鈕,主要在工程文件有改動(dòng)時(shí)使用,作用是全部重建整個(gè)工程,產(chǎn)生相應(yīng)的目標(biāo)文件。在整個(gè)工程生成HEX文件以后,我們?cè)贙eil中的任務(wù)就算完成了。當(dāng)然,你可以在Keil中進(jìn)行各種調(diào)試。事實(shí)上,Keil的功能十分強(qiáng)大,它能仿真單片機(jī)的各種功能。但是我們?cè)诖瞬⒉挥懻撍倪@些功能。如果你想深入地學(xué)習(xí)Keil的各種功能和使用方法,請(qǐng)參閱相關(guān)參考文獻(xiàn)。我的畢業(yè)論文(三):Proteus軟件使用簡介Proteus軟件是LabcenterElectronics公司的一款電路設(shè)計(jì)與仿真軟件,它包括IS

9、IS、ARES等軟件模塊,ARES模塊主要用來完成PCB的設(shè)計(jì),而ISIS模塊用來完成電路原理圖的布圖與仿真。Proteus的軟件仿真基于VSM技術(shù),它與其他軟件最大的不同也是最大的優(yōu)勢(shì)就在于它能仿真大量的單片機(jī)芯片,比如MCS-51系列、PIC系列等等,以及單片機(jī)外圍電路,比如鍵盤、LED、LCD等等。通過Proteus軟件的使用我們能夠輕易地獲得一個(gè)功能齊全、實(shí)用方便的單片機(jī)實(shí)驗(yàn)室。本文中由于我們主要使用Proteus軟件在單片機(jī)方面的仿真功能,所以我們重點(diǎn)研究ISIS模塊的用法,在下面的內(nèi)容中,如不特別說明,我們所說的Proteus軟件特指其ISIS模塊。在進(jìn)行下面的操作前,我先說明一點(diǎn)

10、:我的Proteus版本是7.1,如果你使用的是6.9以前的版本,可能你發(fā)現(xiàn)在鼠標(biāo)操作上會(huì)略有不同這主要表現(xiàn)在6.9以前的版本鼠標(biāo)左右鍵的作用與一般軟件剛好相反,而7.0以后已經(jīng)完全改過。下面我們首先來熟悉一下Proteus的界面。Proteus是一個(gè)標(biāo)準(zhǔn)的Windows窗口程序,和大多數(shù)程序一樣,沒有太大區(qū)別,其啟動(dòng)界面如下圖所示:如圖中所示,區(qū)域?yàn)椴藛渭肮ぞ邫?,區(qū)域?yàn)轭A(yù)覽區(qū),區(qū)域?yàn)樵骷g覽區(qū),區(qū)域?yàn)榫庉嫶翱?,區(qū)域?yàn)閷?duì)象拾取區(qū),區(qū)域?yàn)樵骷{(diào)整工具欄,區(qū)域?yàn)檫\(yùn)行工具條。下面我們就以建立一個(gè)和我們?cè)贙eil簡介中所講的工程項(xiàng)目相配套的Proteus工程為例來詳細(xì)講述Proteus的操作方法以

11、及注意事項(xiàng)。首先點(diǎn)擊啟動(dòng)界面區(qū)域中的“P”按鈕(PickDevices,拾取元器件)來打開“PickDevices”(拾取元器件)對(duì)話框從元件庫中拾取所需的元器件。對(duì)話框如下圖所示:在對(duì)話框中的“Keywords”里面輸入我們要檢索的元器件的關(guān)鍵詞,比如我們要選擇項(xiàng)目中使用的AT89C51,就可以直接輸入。輸入以后我們能夠在中間的“Results”結(jié)果欄里面看到我們搜索的元器件的結(jié)果。在對(duì)話框的右側(cè),我們還能夠看到我們選擇的元器件的仿真模型、引腳以及PCB參數(shù)。這里有一點(diǎn)需要注意,可能有時(shí)候我們選擇的元器件并沒有仿真模型,對(duì)話框?qū)⒃诜抡婺P秃鸵_一欄中顯示“NoSimulatorModel”(

12、無仿真模型)。那么我們就不能夠用該元器件進(jìn)行仿真了,或者我們只能做它的PCB板,或者我們選擇其他的與其功能類似而且具有仿真模型的元器件。搜索到所需的元器件以后,我們可以雙擊元器件名來將相應(yīng)的元器件加入到我們的文檔中,那么接著我們還可以用相同的方法來搜索并加入其他的元器件。當(dāng)我們已經(jīng)將所需的元器件全部加入到文檔中時(shí),我們可以點(diǎn)擊“0K”按鈕來完成元器件的添加。添加好元器件以后,下面我們所需要做的就是將元器件按照我們的需要連接成電路。首先在元器件瀏覽區(qū)中點(diǎn)擊我們需要添加到文檔中的元器件,這時(shí)我們就可以在瀏覽區(qū)看到我們所選擇的元器件的形狀與方向,如果其方向不符合你的要求,你可以通過點(diǎn)擊元器件調(diào)整工具

13、欄中的工具來任意進(jìn)行調(diào)整,調(diào)整完成之后在文檔中單擊并選定好需要放置的位置即可。接著按相同的操作即可完成所有元器件的布置,接下來是連線。事實(shí)上Proteus的自動(dòng)布線功能是如此的完美以至于我們?cè)谧霾季€時(shí)從來都不會(huì)覺得這是一項(xiàng)任務(wù),而通常像是在享受布線的樂趣。布線時(shí)我們只需要單擊選擇起點(diǎn),然后在需要轉(zhuǎn)彎的地方單擊一下,按照你所需走線的方向移動(dòng)鼠標(biāo)到線的終點(diǎn)單擊即可。本例我們布線的結(jié)果如下圖所示(仿真我們?cè)谏厦娴腒eil操作介紹中的簡單例子)。DICTAL1CTA12FSTALEEhF::1.16:.sPEIn*RoaPD.VAD1PDZADZP口3舊PO.AD*PDS*AD5P環(huán)聞PD.7/AP?

14、FZDHEPZJiHSP2A-DpzaH.nPZ.4/A1ZP2SA13PZjffAHP2.TW15P3JTRXDF3.imDP32iTITnpaTITTPH+iTDP3ST1PHjS慣頂PI.TiTO口TTNI2T+-佰7因?yàn)樵摴こ淌趾唵?,我們沒有必要加上復(fù)位電路,所以這點(diǎn)在圖中予以忽略,請(qǐng)大家注意。除此以外,你可能還發(fā)現(xiàn),單片機(jī)系統(tǒng)沒有晶振,這一點(diǎn)你需注意。事實(shí)上在Proteus中單片機(jī)的晶振可以省略,系統(tǒng)默認(rèn)為12MHz,而且很多時(shí)候,當(dāng)然也為了方便,我們只需要取默認(rèn)值就可以了。下面我們來添加電源。先說明一點(diǎn),Proteus中單片機(jī)芯片默認(rèn)已經(jīng)添加電源與地,所以我們可以省略。然后在添加

15、電源與地以前,我們先來看一下上面第一個(gè)圖中區(qū)域的對(duì)象拾取區(qū),我們?cè)谶@里只說明本文中可能會(huì)用得到的以及比較重要的工具。|k:(SelectionMode)。選擇模式,通常情況下我們都需要選中它,比如布局時(shí)和布線時(shí)。|4:(ComponentMode)。組件模式,點(diǎn)擊該按鈕,能夠顯示出區(qū)域中的元器件,以便我們選擇。丨能:(WireLabelMode)。線路標(biāo)簽?zāi)J?,選中它并單擊文檔區(qū)電路連線能夠?yàn)檫B線添加標(biāo)簽。經(jīng)常與總線配合使用。丨廷:(TextScriptMode)。文本模式,選中它能夠?yàn)槲臋n添加文本。丨卄:(BusesMode)??偩€模式,選中它能夠在電路中畫總線。關(guān)于總線畫法的詳細(xì)步驟與注意

16、事項(xiàng)我們?cè)谙旅鏁?huì)進(jìn)行專門講解。丨呂:(TerminalsMode)。終端模式,選中它能夠?yàn)殡娐诽砑痈鞣N終端,比如輸入、輸出、電源、地等等。丨硏:(VirtualInstrumentsMode)。虛擬儀器模式,選中它我們能夠在區(qū)域中看到很多虛擬儀器,比如示波器、電壓表、電流表等等。關(guān)于它們的用法我們會(huì)在后面的相應(yīng)章節(jié)中詳細(xì)講述。好了,下面我們就來添加電源。首先點(diǎn)擊呂,選擇終端模式,然后在元器件瀏覽區(qū)中點(diǎn)擊POWER(電源)來選中電源,通過區(qū)域中的元器件調(diào)整工具進(jìn)行適當(dāng)?shù)恼{(diào)整,然后就可以在文檔區(qū)中單擊放置電源了。放置并連接好線路的電路圖一部分如下圖:連接好電路圖以后我們還需要做一些修改。由上圖我們

17、可以看出,圖中的R1電阻值為10k,這個(gè)電阻作為限流電阻顯然太大,將使發(fā)光二極管D1亮度很低或者根本就不亮,影響我們的仿真結(jié)果。所以我們要進(jìn)行修改。修改方法如下:首先我們雙擊電阻圖標(biāo),這時(shí)軟件將彈出“EditComponent”對(duì)話框(見下圖所示的對(duì)話框),對(duì)話框中的“ComponentReferer”是組件標(biāo)簽之意,可以隨便填寫,也可以取默認(rèn),但要注意在同一文檔中不能有兩個(gè)組件標(biāo)簽相同;“Resistance”就是電阻值了,我們可以在其后的框中根據(jù)需要填入相應(yīng)的電阻值。填寫時(shí)需注意其格式,如果直接填寫數(shù)字,則單位默認(rèn)為Q;如果在數(shù)字后面加上K或者k,則表示kQ之意。這里我們填入270,表示2

18、70Q。修改好各組件屬性以后就要將程序(HEX文件)載入單片機(jī)了。首先雙擊單片機(jī)圖標(biāo),系統(tǒng)同樣會(huì)彈出“EditComponent”對(duì)話框,如下圖。在這個(gè)對(duì)話框中我們點(diǎn)擊“Programfiles”框右側(cè)的,來打開選擇程序代碼窗口,選中相應(yīng)的HEX文件后返回,這時(shí),按鈕左側(cè)的框中就填入了相應(yīng)的HEX文件,我們點(diǎn)擊對(duì)話框的“OK”按鈕,回到文檔,程序文件就添加完畢了。裝載好程序,我們就可以進(jìn)行仿真了。首先來熟悉一下上面第一個(gè)圖中區(qū)域的運(yùn)行工具條。因?yàn)楸容^簡單,我們只作一下介紹。工具條從左到右依次是“Play”、“Step”、“Pause”、“Stop”按鈕,即運(yùn)行、步進(jìn)、暫停、停止。下面我們點(diǎn)擊“

19、Play”按鈕來仿真運(yùn)行,效果如下圖所示,可以看到系統(tǒng)按照我們的程序在運(yùn)行著,而且我們還能看到其高低電平的實(shí)時(shí)變化。如果我們已經(jīng)觀察到了結(jié)果就可以點(diǎn)擊“Stop”來停止運(yùn)行。F:1:Z7口1SXTAIZPOIFADOPCIJiADIpa2SMS2PCIJAK3PD.+i,AD+PCI曲05PD.G*AD6PU.TiACf?3aP3EMALEEhH.1T&ZS1pzo-hePZ.VASpzz.h.cpzaAnFZ.4/AErzsaqPZ.SARPZ.7/AtP3IVRXDP3.1iT:IiP321TMTBPaTffTTP35iT1PHE阿Pl.TiTO我的畢業(yè)論文(四):計(jì)算機(jī)仿真輔助單片機(jī)指令

20、系統(tǒng)的學(xué)習(xí)2007年07月04日星期三14:41計(jì)算機(jī)仿真對(duì)單片機(jī)指令系統(tǒng)的學(xué)習(xí)的幫助主要在于幫助理解,加強(qiáng)記憶,適當(dāng)應(yīng)用。能夠在單片機(jī)指令系統(tǒng)學(xué)習(xí)中的軟件主要是MedWin,因?yàn)槠洳僮骱唵危铱梢灾庇^地看到結(jié)果。數(shù)據(jù)傳送指令:數(shù)據(jù)傳送類指令主要包括:MOV、MOVX、MOVC、PUSH、POP、XCH等。下面我們通過一個(gè)簡單的匯編程序來學(xué)習(xí)這些指令。例1.匯編語言源文件如下圖所示:Q匚八就叭畢業(yè)詭文h墓本指令“皿orgoaaah1jm.pma.in跳到主程洋,開始執(zhí)行org003ah.避幵中斷mam:JILOVa,it45h“m巫曰曰扌旨令曰TilCiVlOh.itiGh“IAOT3d1r

21、-ect,#己呂土呂申旨令D2皿單元佯WLOVra.JfiahWLOV亂lah.iaova,directa=10h單元的氏WLOVSi,ra;JAOVSi,TTlF皆令,呂工申卩IlLOVSi,r-0_mowai”回r丄掏空rU所指的lUli單元IIlLOVdPtr,#aaiaii.dptr=0010hTilOVK*dptr-razjTlowk回日ptr-“孑旨會(huì)把戶給dptrF的外部存聘器單元TlLOVp2f#aah.Ep2=00hlIlLOVrOllh心OLlhlIILUVK邊,a.利用衣配合訛或者xl來實(shí)現(xiàn)亠昌日Mr樣耳址外部存瞎器的自的.成措離世1訊措地世,所M蠟今措向|Kch.1rQ

22、.xch電”m掩令Kclld.a,r0.xchd1片禺令1jrn.pend$|在MedWin中編輯好源文件以后,以“.asm”為后綴保存為匯編源文件。然后進(jìn)行編譯、匯編并將代碼裝入內(nèi)存進(jìn)行仿真。由于本程序?qū)拇嫫鳌⑻厥夤δ芗拇嫫?、?nèi)部存儲(chǔ)器、外部數(shù)據(jù)存儲(chǔ)器都進(jìn)行了操作,所以需要首先點(diǎn)擊“查看”菜單下的相應(yīng)子菜單打開相應(yīng)的窗口,即寄存器、特殊功能寄存器、數(shù)據(jù)區(qū)IData、數(shù)據(jù)區(qū)XData,并可以根據(jù)需要點(diǎn)擊“窗口”菜單下的選項(xiàng)來橫向或縱向平鋪窗口。因?yàn)楸境绦蛐枰徊揭徊降卦敿?xì)查看相應(yīng)指令執(zhí)行的結(jié)果,所以我們需要在執(zhí)行指令時(shí)點(diǎn)擊“指令跟蹤(F7)”或“指令單步(F8)”按鈕來單步執(zhí)行。指令執(zhí)行中的

23、一個(gè)畫面如下圖所示:RGR1R2R3R4R5RJ6R7止ESF11FFFFFFFFFFFFFF4600070050CIA畢業(yè)徒文MedWinXtrans-:awnovnovnovHschschd11JflD3列數(shù)pF-DFTK0010位FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF稍式|ByteFF4&FFFFFFFFFF4&FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFp2,#00hrOllhr0.a.

24、利用成配合:rd或者:rl來實(shí)現(xiàn)b”r0a.r0$從圖中我們能夠清晰地觀察到每一條指令執(zhí)行的每一個(gè)結(jié)果,從而加深我們對(duì)這些指令的理解與記憶。除以上實(shí)例程序中所書寫的以外,我們還可以使用其他的指令書寫程序并在MedWin中仿真,比如PUSH、POP、MOVC等,相信你會(huì)得到一個(gè)很好的結(jié)果,而且MedWin肯定會(huì)提高你學(xué)習(xí)指令的興趣。算術(shù)操作類指令算術(shù)操作類指令主要有:ADD、ADDC、DAA、SUB、INC、DEC、MUL、DIV等。算術(shù)操作類指令比較復(fù)雜,掌握起來比較困難,但在實(shí)際的單片機(jī)項(xiàng)目應(yīng)用中很少涉及,尤其是MUL、DIV兩條指令,在51系列單片機(jī)中更是被束之高閣,很少使用。此處,我們不

25、再像上節(jié)那樣逐條書寫并仿真課本上的程序,如果感興趣,你可以仿照上節(jié)自己書寫程序并進(jìn)行仿真,觀察并體會(huì)每一條指令執(zhí)行的結(jié)果以及對(duì)系統(tǒng)的影響。這里我們通過一個(gè)比較實(shí)用的例子來演示仿真算術(shù)類指令的操作。例2.兩個(gè)壓縮BCD碼求和:將兩個(gè)BCD碼(每個(gè)占4位)分別放在一個(gè)字節(jié)的高4位和低4位即組成壓縮BCD碼。本例中有兩個(gè)壓縮BCD碼數(shù)字,都是四位數(shù),第一個(gè)數(shù)的高兩位放在20H,低兩位放在21H中;第二個(gè)高低位分別放在30H、31H中。要求所得結(jié)果放在40H、41H中。匯編源程序如下圖:Sg7ICU畢砸論文Iedfin算術(shù)鎳件.asa回鬲orgOOOOh匚J.jmpmainrg0030hmain:Jl

26、LOV20h,#20hH下四句為2DH.21H,30H,J1H賦初直,TilOV21h,#07h從而為兩壓縮BCD碼賦初直bTiluV30h,#45h賦值吋需注意是標(biāo)準(zhǔn)的壓縮BCD碼!TiluV31h,#59hTiluVr0,#21hTiluVrl,#31hTilOVa,r0adda,rl壓縮BCD碼按二進(jìn)制相如daa對(duì)ECD碼舍占畀進(jìn)行修正TilOV41h”a結(jié)果存/相應(yīng)單元decrOdecrlTilOVa,r0addca,rl后一位相加可能百進(jìn)位、所U農(nóng)選用進(jìn)也加疼描令daa對(duì)ECD碼舍占畀進(jìn)行修正TilOV40h.a芒占果存幾相應(yīng)單元JU丄jmpSendJjj1在MedWin中編輯好源文

27、件后,以“.asm為后綴將其保存為匯編文件,然后進(jìn)行編譯、匯編并將代碼裝入內(nèi)存進(jìn)行仿真。你可以像上例那樣步進(jìn)觀察其詳細(xì)執(zhí)行過程,分析原因;當(dāng)然也可以在“Ijmp$”處設(shè)置斷點(diǎn),然后全速運(yùn)行。需要注意程序中使用到了內(nèi)部存儲(chǔ)器,所以你需要將數(shù)據(jù)區(qū)“IData”窗口調(diào)出來進(jìn)行觀察。運(yùn)行的最后結(jié)果如下圖所示:從圖中我們能夠很清楚地看到內(nèi)部存儲(chǔ)器相應(yīng)單元的內(nèi)容,進(jìn)而觀察到程序執(zhí)行的結(jié)果,即:2097+4559=6656。邏輯運(yùn)算指令、控制轉(zhuǎn)移類指令邏輯運(yùn)算指令,顧名思義,是用于邏輯運(yùn)算的指令。主要包括:CLR、CPL、ANL、ORL、XRL等常用邏輯指令以及循環(huán)移位指令如:RL、RLC、RR、RRC等。

28、控制轉(zhuǎn)移類指令是指在程序中根據(jù)具體的條件(或者沒有條件)使程序轉(zhuǎn)移到相應(yīng)的入口的指令。它主要包括三類指令:一是無條件轉(zhuǎn)移指令,比如:AJMP、SJMP、LJMP等;二是條件轉(zhuǎn)移指令,比如:JZ、CJNE、DJNZ等;三是子程序調(diào)用返回指令,比如:ACALL、LCALL、RET、RETI等。鑒于單獨(dú)針對(duì)邏輯運(yùn)算指令進(jìn)行的仿真十分簡單(事實(shí)上與數(shù)據(jù)傳送類指令相同),可以很容易、很方便地自己針對(duì)相應(yīng)的指令設(shè)計(jì)程序來觀察結(jié)果,進(jìn)行學(xué)習(xí)。所以此處不再針對(duì)邏輯運(yùn)算指令舉例仿真。而控制轉(zhuǎn)移類指令又不可能單獨(dú)使用,往往與其他指令結(jié)合使用來組成相應(yīng)的程序,所以也無法單獨(dú)進(jìn)行仿真。所以下面我們就將邏輯運(yùn)算類指令與

29、控制轉(zhuǎn)移類指令相結(jié)合來編寫仿真程序,通過一個(gè)實(shí)例同時(shí)來仿真這兩類指令的應(yīng)用。例3.十六進(jìn)制整數(shù)轉(zhuǎn)化為BCD碼整數(shù):4位十六進(jìn)制整數(shù)高低位依次放在R3、R4中,要求轉(zhuǎn)換后的BCD整數(shù)按高低位順序放在R5、R6、R7中。程序源文件如下圖:在MedWin中編輯好源文件以后,將其以“.asm為后綴保存為匯編源文件,然后編譯、匯編并將產(chǎn)生的代碼裝入內(nèi)存進(jìn)行仿真調(diào)試。仿真前需要注意首先輸入R3、R4設(shè)置十六進(jìn)制初始值,具體設(shè)置方法如下。首先調(diào)出寄存器窗口,然后在需要修改的寄存器名稱或者數(shù)值上雙擊,這時(shí)其內(nèi)容將變?yōu)榭尚薷?,我們?cè)谄渲刑钊胄枰O(shè)置的數(shù)值(字母大小寫均可)即可,如下圖所示:設(shè)置好初始值以后,你可

30、以單步觀察幾步以便明白其原理,然后就可以設(shè)置一個(gè)斷點(diǎn)全速運(yùn)行了,最后就可以看到所得到的結(jié)果,比如我們輸入8FD6,將得到結(jié)果:R5=03,R6=68,R7=22。位操作指令位操作比較簡單,我們也不再寫實(shí)例進(jìn)行仿真,如果你感興趣,可以自己寫一些針對(duì)相應(yīng)指令的小程序來仿真之。這里我們主要說明一下仿真位操作指令與其他指令的不同及注意事項(xiàng)。位操作指令是對(duì)單片機(jī)內(nèi)部存儲(chǔ)器的位地址空間進(jìn)行的相應(yīng)操作,所以我們查看相應(yīng)結(jié)果時(shí)應(yīng)該打開相應(yīng)窗口。單片機(jī)的位地址空間可以這樣來打開:點(diǎn)擊“查看”菜單下面的“數(shù)據(jù)區(qū)Bit”子菜單。位地址空間窗口如下圖所示:除此之外,在相應(yīng)的位操作中如果我們需要查看各種位標(biāo)志時(shí),可以點(diǎn)

31、擊上圖中下側(cè)的“位”標(biāo)簽,將“字節(jié)”標(biāo)簽換過來進(jìn)行查看。我的畢業(yè)論文(五):Proteus仿真輔助定時(shí)器/計(jì)數(shù)器的學(xué)習(xí)2007年07月05日星期四14:23MCS-51系列單片機(jī)內(nèi)部有兩個(gè)定時(shí)器/計(jì)數(shù)器TO、T1,它們都具有兩種工作模式(定時(shí)器和計(jì)數(shù)器)以及四種工作方式(方式0、1、2、3)。定時(shí)器/計(jì)數(shù)器TO由特殊功能寄存器TH0和TLO構(gòu)成,T1由特殊功能寄存器TH1和TL1構(gòu)成。除此之外,與定時(shí)器/計(jì)數(shù)器有關(guān)的特殊功能寄存器還有工作方式控制寄存器TMOD和控制寄存器TCON。關(guān)于它們的詳細(xì)內(nèi)容和具體應(yīng)用請(qǐng)參閱相關(guān)參考文獻(xiàn),此處不做探討。由于定時(shí)器/計(jì)數(shù)器TO與T1用法幾乎完全相同,所以下

32、面的例子中我們將全部使用TO。而且定時(shí)器/計(jì)數(shù)器方式0和方式3較少使用,因此我們也將主要仿真說明其方式1和2的用法,另外我們還會(huì)給出一種其計(jì)數(shù)器的用法。例1.定時(shí)器/計(jì)數(shù)器T0工作于定時(shí)器模式方式1,在P1.0端口產(chǎn)生周期為100ms的方波。首先計(jì)算計(jì)數(shù)初值:周期為100ms,定時(shí)應(yīng)為50ms(半個(gè)周期)。一個(gè)計(jì)算公式為:計(jì)數(shù)初值=216-1Xf/12其中t為定時(shí)時(shí)間(單位為s),f為單片機(jī)的時(shí)鐘頻率(單位為MHz)。所以,計(jì)數(shù)初值為216-0.05X12M/12=15536=3CB0H。因此,TH0的初值應(yīng)為3CH,TL0的初值應(yīng)為B0H。因此,此例的源代碼如下圖:在MedWin中將源文件編

33、輯完成以后,保存為匯編源文件并編譯、匯編產(chǎn)生源代碼(.HEX文件)。下面我們?cè)赑roteus中設(shè)計(jì)電路,此例電路也比較簡單,只需在AT89C51單片機(jī)的P1.0口連上一個(gè)示波器來觀察產(chǎn)生的相應(yīng)波形就可以了。選擇示波器時(shí)要注意首先在前面的文章“我的畢業(yè)論文(三)Proteus軟件的基本用法”中第一個(gè)圖:Proteus界面里面的區(qū)域點(diǎn)擊按鈕囹選擇虛擬儀器模式,然后在區(qū)域中選擇“OSCILLOSCOPE”示波器)。完成的電路圖如下圖所示構(gòu)建好電路圖以后,下面就可以為單片機(jī)添加程序代碼(.HEX文件)了。雙擊單片機(jī)圖標(biāo),添加上面的源文件所生成的程序代碼,添加好以后,接著就可以進(jìn)行下面的仿真。點(diǎn)擊運(yùn)行按

34、鈕,系統(tǒng)就運(yùn)行了起來,我們可以適當(dāng)調(diào)整示波器面板上的按鈕來使波形最有利于我們觀察。調(diào)整好以后,系統(tǒng)產(chǎn)生的波形效果如下圖所示:如果你的Proteus版本是7.0以前的版本,那么你的示波器和波形效果可能與圖中略有不同,但并不影響仿真效果;如果是最新版本,則應(yīng)該完全相同。從圖中我們能夠看出,波形的周期為100ms,這與我們?cè)O(shè)定的目標(biāo)相一致;而其幅值則近似為5V。例2.設(shè)計(jì)一個(gè)延時(shí)程序,延時(shí)500ms。為了能夠清晰地看到延時(shí)效果,我們?cè)O(shè)計(jì)在P1.0口連接一個(gè)LED發(fā)光二極管,使其使用該延時(shí)程序每500ms閃爍一次。通常情況下,為了簡便,人們會(huì)使用軟件延時(shí),即通過執(zhí)行一段沒有意義的程序來達(dá)到延時(shí)的目的。

35、但那樣做會(huì)浪費(fèi)系統(tǒng)資源,使得系統(tǒng)在延時(shí)過程中不能響應(yīng)任何外部或內(nèi)部事件。所以,人們對(duì)其做了改進(jìn),而通過定時(shí)器/計(jì)數(shù)器定時(shí)來進(jìn)行延時(shí)。由于方式2定時(shí)時(shí)間過短(12MHz下最大250Is左右),所以,此處我們?nèi)匀贿x用方式1。但方式1在12MHz下的最大定時(shí)時(shí)間也只有60多ms,仍然不能滿足延時(shí)要求。所以,延時(shí)程序需要軟硬件協(xié)作。即我們可以這樣去做,通過硬件TO延時(shí)50ms,然后設(shè)置一個(gè)計(jì)數(shù)器,當(dāng)計(jì)數(shù)器計(jì)到10時(shí),我們延時(shí)的目標(biāo)就達(dá)到了。源程序如下圖:(計(jì)數(shù)器初值計(jì)算與上例相同)將上面的源文件保存為匯編文件,然后進(jìn)行編譯/匯編,并生產(chǎn)源代碼裝入內(nèi)存在MedWin中仿真運(yùn)行看延時(shí)效果(可以通過指令單步

36、執(zhí)行“l(fā)calldly500”一句觀察指令執(zhí)行時(shí)間,則實(shí)際執(zhí)行時(shí)間就是延時(shí)時(shí)間)。結(jié)果發(fā)現(xiàn),實(shí)際執(zhí)行中該延時(shí)程序比我們的要求多延時(shí)了87“s,這是因?yàn)檠訒r(shí)程序中還插入了其他指令(比如設(shè)置TO模式等),所以我們的延時(shí)程序不是十分精確,實(shí)際應(yīng)用中我們可以通過調(diào)整TO初值來稍作調(diào)整,但此處對(duì)延時(shí)要求并不精確,所以我們就不再做調(diào)整了。下面我們可以在Proteus中構(gòu)建電路來觀察我們的延時(shí)效果。電路圖十分簡單,如下圖所示:注意LED的陰陽極不要接反,圖中的限流電阻在模擬時(shí)可以略去,但如果添加上的話,最好阻值不要設(shè)置的過大,以免LED發(fā)光太弱,影響觀察效果。設(shè)置好電路圖以及各元器件的屬性以后,我們就可以點(diǎn)

37、擊仿真按鈕來觀察效果了。可以看到,LED按照大約0.5s的周期開始閃爍。例3.定時(shí)器/計(jì)數(shù)器的計(jì)數(shù)功能。本例使用T1對(duì)外部脈沖進(jìn)行計(jì)數(shù),每計(jì)數(shù)一次,與P1口相連的8個(gè)LED發(fā)光二極管的亮燈個(gè)數(shù)和位置就按照它們的順序所表示的BCD碼(亮燈代表1,滅燈為0)做加法。比如開始為29(00101001),計(jì)數(shù)一次以后,對(duì)應(yīng)的數(shù)字變?yōu)?0(00110000)。這里我們用按鍵來模擬外部脈沖,每按一次,表示產(chǎn)生一個(gè)脈沖。顯然,根據(jù)要求,我們可以使T1工作于計(jì)數(shù)器方式2,而且我們可以設(shè)置其初值為FF,這樣,外部產(chǎn)生一個(gè)脈沖,T1檢查到就會(huì)發(fā)生中斷,然后我們?cè)谥袛嘧映绦蛑邪匆筮M(jìn)行處理。其源程序如下圖所示:將上

38、面在MedWin中編輯好的源文件保存為匯編文件,然后進(jìn)行編譯/匯編,并產(chǎn)生相應(yīng)的源代碼(.HEX文件)。注意因?yàn)镻roteus仿真電路的按鍵為理想按鍵,所以程序設(shè)計(jì)時(shí)并沒有考慮按鍵的抖動(dòng),但在實(shí)際應(yīng)用中應(yīng)該注意,否則將可能實(shí)現(xiàn)不了預(yù)期目的。另外,本例為了仿真的方便,設(shè)置T1計(jì)數(shù)器的初值為FFH,實(shí)際應(yīng)用中可以靈活地根據(jù)相關(guān)要求進(jìn)行改動(dòng)。然后我們根據(jù)題中要求設(shè)計(jì)電路。設(shè)計(jì)好的電路圖如下圖所示:::CTAL1PDHADDPD.101PO2ftD2:TAL2叩.3.-AD3Pn.i,ADiPD.5Wf.D5PD.&AD6RGTPD.TJftDT曲口阿P2.1MP22.winPSEN1ALEP2.iw

39、12EftP2J&W13P2.T.W15pmP3H-EXDP1.1P3.1/DDP12P321N7IP1JP33ANT1P1.ipn.4,71P1J5P3J5T1P1J6Pl.&tiURP1.TP3.T-FD設(shè)計(jì)電路圖時(shí)要注意因?yàn)楸倦娐穲D中需要較多的限流電阻(如果添加的話),所以在繪制電路圖時(shí)考慮用排阻來進(jìn)行代替。圖中RP1就是一個(gè)8X的排阻。Proteus中提供了幾種排阻,你可以使用關(guān)鍵詞“respack”進(jìn)行查找。設(shè)計(jì)好電路圖,我們就可以將上面匯編源文件產(chǎn)生的源代碼裝入單片機(jī),然后進(jìn)行仿真。仿真時(shí)使用鼠標(biāo)點(diǎn)擊按鍵,你可以看到LED按照BCD碼加法的規(guī)律進(jìn)行變化。仿真中的一個(gè)畫面可以從上圖中

40、看到。我的畢業(yè)論文(六):Proteus仿真輔助中斷功能的學(xué)習(xí)2007年07月06日星期五13:51MCS-51系列單片機(jī)具有5個(gè)中斷源,2個(gè)中斷優(yōu)先級(jí),可以實(shí)現(xiàn)2級(jí)中斷服務(wù)程序嵌套。5個(gè)中斷源分別為:兩個(gè)外部輸入中斷源INTO(P3.2)和INT1(P3.3),中斷請(qǐng)求標(biāo)志分別為IE0和IE1;2個(gè)內(nèi)部定時(shí)器/計(jì)數(shù)器的溢出中斷源TO(計(jì)數(shù)時(shí)P3.4輸入)和T1(計(jì)數(shù)時(shí)P3.5輸入),中斷請(qǐng)求標(biāo)志分別為TFO和TF1;串口中斷請(qǐng)求源,其中斷請(qǐng)求標(biāo)志為RI或TI。中斷請(qǐng)求標(biāo)志位分布在特殊功能寄存器TCON(IE0、IE1、TFO、TF1)和SCON(RI、TI)中。與中斷有關(guān)的特殊功能寄存器除它

41、們以外還有中斷允許寄存器IE和中斷優(yōu)先級(jí)寄存器IP。這些寄存器都能夠進(jìn)行位尋址。此處不再對(duì)它們進(jìn)行詳細(xì)的探討。關(guān)于它們的詳細(xì)情況和具體功能以及中斷的其他知識(shí)請(qǐng)參閱相關(guān)參考文獻(xiàn),此處我們從略。事實(shí)上,關(guān)于中斷我們?cè)谏弦黄恼轮杏懻摱〞r(shí)器/計(jì)數(shù)器時(shí)已經(jīng)對(duì)TO、T1的相關(guān)中斷進(jìn)行過較為詳盡的討論和舉例。而關(guān)于串口中斷,我們會(huì)在下節(jié)講解串口時(shí)進(jìn)行相應(yīng)的討論,所以本節(jié)我們只簡單討論一下外部中斷INTO和INT1,并舉例分析。例1外部中斷INTO和INT1同時(shí)存在。和上篇文章中的例3一樣,P1口連接8個(gè)LED發(fā)光二極管,兩個(gè)按鍵分別接到外部中斷INTO和INT1。正常情況下,8個(gè)LED閃爍發(fā)光。當(dāng)INTO

42、發(fā)生中斷時(shí),使P1口的8個(gè)LED做一個(gè)燈的左移右移兩次;當(dāng)INT1發(fā)生中斷時(shí),使P1口的8個(gè)LED做兩個(gè)燈的左移右移兩次。此例的源程序如下圖所示:org1jmpOOOOhmainorg0003h夕卜鄒中斷口盯0入口地址1jift-PiintO跳轉(zhuǎn)到外鄒中斷INTO子程序org0013h外鄒中斷irrn入口地址1jmpiintl跳轉(zhuǎn)到外鄒中斷INT1子程序or-g0030P1main:Titoviez#85h10000101幵nnm和nm中斷TilDVip,Jt04hoooooioo設(shè)置nm高優(yōu)先級(jí)THOVtconz#0設(shè)INTO-fUINTl電平觸發(fā)并擠臨中斷標(biāo)志1clraloop:THOVp

43、lza以卞循環(huán)囚燈,磚待中斷l(xiāng)calldelaycpla1JTliploopimtO:田T0中斷子程席Ipu.shacc寄存器盤入檯IILOVrl,#2循壞點(diǎn)亮兩次loopll:IILOVmffhclrcmovr2z#8從右移到左井8次loopl2:rlca幵始移包movplza數(shù)字渝出J使F1口的LED開紿按規(guī)律發(fā)光lcalldelaydjnzr2zlooplZmovr2z#7從左往右移需要17次loopl3:rrca爭實(shí)上此處r比可以換為rrmovplzalcalldelay1djnzr2zloop!3std0C:1CU畢業(yè)論文Iedlin中斷.as*匸)回:“匚叭畢業(yè)論文1呂d砒rA中斷

44、.djnzr-2.,loop13Jdjnzrl,loopll.POPaccretilintl:田TL中斷子卷凈,也丄下和INT01U?不楓push8.CCJiLOVrl,X2loop21:TiLOV乳旳fuhJiLOV氓,朋loop22.:x-1aTlLOVpl,alcalldelaydjI1Zr2,Loop22TlLOV篦魏loop23:ITaTlLOVplfalcailldelaydjnzr.?Loop23djnzrl,Lqqp2LPOPreti?.ccdelay:JILOVr410”廷時(shí)子程序,延時(shí)犬約2DDMSloop31:JILOVr5.#4)loop32:JILOVrKJffhdj

45、nzr6,$djnzloop32djnzretend.r4”loop31源文件編輯結(jié)束以后,將源文件保存為匯編文件,然后進(jìn)行編譯/匯編,并產(chǎn)生相應(yīng)的源代碼以便下面仿真使用。下面我們?cè)赑roteus中繪制電路,此例電路圖和上篇文章中最后一例的電路圖大體相同,只不過將接在P3.5的按鍵改為接在P3.2和P3.3的INT0和INT1的中斷請(qǐng)求輸入端。繪制好的電路圖如下圖所示:PDIKftDD叩.3XP.D3PQ.iftDiPQ.DSPQjaftDGPD.7JftD7pnn-F!:DP?.1/TXDPaiWTFP33l!jrTpa.i-ToP35T1P3.7jFP2imSP21何pa.in眼押11P2

46、1W12P2J&IA13P2J&AUP2.T15電路設(shè)計(jì)好以后,我們就可以將上面生成的源代碼裝入單片機(jī),然后進(jìn)行仿真了??梢钥吹?,仿真開始時(shí),8個(gè)LED作大約0.2S間隔的閃爍;當(dāng)我們按下INTO口的按鍵時(shí),LED作一個(gè)燈的左移右移兩次;當(dāng)我們按下INT1口的按鍵時(shí),LED作兩個(gè)燈的左移右移兩次。完全達(dá)到了我們預(yù)期的設(shè)計(jì)目的。仿真中的一個(gè)畫面如上圖所示。我的畢業(yè)論文(七):Proteus仿真輔助串口功能的學(xué)習(xí)2007年07月08日星期日12:30MCS-51系列單片機(jī)內(nèi)部有一個(gè)可編程全雙工串行通信接口,具有UART(UniversalAsynchronousReceiver/Transmitt

47、er,通用異步收發(fā)器)功能。它有四種工作方式,可由軟件設(shè)定;它的波特率也可由軟件設(shè)置片內(nèi)的定時(shí)器/計(jì)數(shù)器來進(jìn)行控制。與串口相關(guān)的特殊功能寄存器主要有串口控制寄存器SCON和電源控制寄存器PCON。其中需要注意的是PCON不可位尋址。51系列單片機(jī)的串口主要用來進(jìn)行串口數(shù)據(jù)通信,除此以外,它還可以用來非常方便地?cái)U(kuò)展并行10口,可以擴(kuò)充輸入或者輸出。本節(jié)我們主要通過實(shí)例來說明其在串行數(shù)據(jù)通信的應(yīng)用及其在擴(kuò)展IO口上的應(yīng)用,考慮到篇幅,我們只舉以下二例。例1兩個(gè)AT89C51的雙機(jī)通信。其中一個(gè)單片機(jī)P1口外接8個(gè)按鍵(事實(shí)上可以用撥碼開關(guān)來代替,但Proteus中沒有這個(gè)器件的仿真模型),第二個(gè)單

48、片機(jī)P2口外接8個(gè)LED燈,使用雙機(jī)串口通信將第一個(gè)單片機(jī)的撥碼開關(guān)的狀態(tài)發(fā)送到第二個(gè),并在第二個(gè)單片機(jī)的LED燈上顯示出相應(yīng)狀態(tài)。我們?nèi)蓹C(jī)串口都工作于方式1,由定時(shí)器T1和SMOD控制其波特率,設(shè)T1工作于定時(shí)模式方式2,SMOD取0取波特率為4800bit/s。則因?yàn)橛?jì)算波特率公式波特率=2smod/32x(12x(28-X)其中,f為單片機(jī)時(shí)鐘頻率,X為定時(shí)器初值。所以,我們可以得到T1計(jì)數(shù)初值為:FAH(此處為了精確,我們?nèi)=11.0592MHz)。源文件如下所示:發(fā)送程序如下圖:接收程序如下圖:源文件編輯結(jié)束以后,將源文件保存為匯編文件,然后進(jìn)行編譯/匯編,并產(chǎn)生相應(yīng)的源代碼,準(zhǔn)

49、備用于仿真。下面我們來設(shè)計(jì)電路。首先在電路圖中放置兩片AT89C51芯片,并將它們的P3.0(RXD)和P3.1(TXD)引腳交叉相連。然后在片一的P1口連接8個(gè)按鍵;片二的P2口連接上8個(gè)LED。最終結(jié)果如下圖所示:IJ-1i-XTALIXTALZPDIFArapn.ir.acnPDZAIEpna-H.raPD.AEn-PDS*AD6PD.&D.TiAP?ALEETFZHhEPZ.Ii.hSpzjzih.uPzaAHFZ.+i.h-CFZiA-nPS.Gh.uFZ.TA-EP1DP3JJHXDP1.1P3.1iT:IiP12PlJZiTffTOP1JPUTffTTP1.+Pl.+iTD

50、P1SP3ST1P1.6P3.&17iJRP1.7P.TiTTRETU2-:T.hL1pou-H.rapo.imPCIZih.DZXTRI2poa-HiaP0.*4,AD+POSAWPCI.SAMRSTp|-|7AH7pzhheP2.VABPZAtlP!=:ENP73A11RLEpjAIZ目P2jWA13PljaAl*PZ.T.h-Ep1pirvRxnPl1P3irrwDP1pinnnP1Z3PmTiTTP*lP3P1P3iT1P1.6Pl.&ljiJKP1.7P.TiTTh.TSjSIsZ3177051771DnvTn-TTTTis-ra-THHI在進(jìn)行仿真以前,我們需要來再熟悉一下Prot

51、eus的按鍵。如上圖所示,仿真時(shí)我們可以點(diǎn)擊鍵帽,但當(dāng)我們松開鼠標(biāo)時(shí),按鍵就彈開了;我們還可以點(diǎn)擊鍵帽右側(cè)的標(biāo)有上下箭頭的紅黑色小圓圈,此時(shí)當(dāng)我們松開鼠標(biāo)時(shí),鍵帽不會(huì)彈開,按鍵一直保持著按下的狀態(tài),只有當(dāng)我們?cè)俅吸c(diǎn)擊小圓圈時(shí),鍵帽才會(huì)彈開,按鍵才會(huì)改變狀態(tài)。此例我們就需要這種屬性來根據(jù)要求進(jìn)行我們的仿真。設(shè)計(jì)好電路圖以后,我們就可以裝入相應(yīng)的程序了。注意裝入程序時(shí)不要發(fā)生錯(cuò)誤,要將相應(yīng)的源代碼裝入相應(yīng)的單片機(jī)。然后進(jìn)行仿真,可以通過點(diǎn)擊相應(yīng)的按鍵來改變狀態(tài),進(jìn)而觀察到LED的狀態(tài)??梢钥吹?,串口通信得到了實(shí)現(xiàn)。仿真中的一個(gè)畫面如上面電路圖中的效果所示。例2.串口擴(kuò)充并行IO口輸出。單片機(jī)的串口

52、擴(kuò)充的8位并行IO口上外接8個(gè)LED,然后從串口輸出數(shù)據(jù)實(shí)現(xiàn)8個(gè)LED左移2次,閃爍2次的循環(huán)。串口擴(kuò)充并行口時(shí),串口工作于方式0:同步移位寄存器方式,波特率固定,數(shù)據(jù)由RXD端輸出,移位時(shí)鐘由TXD送出。使用74LS164串入并出移位寄存器。本例源文件如下圖:白G:XlCUi文hMdtarA串口工O?asiorgaa30hmam:JILOVscon,jFO設(shè)暨串口方式Dfirt:JILOVdptr,Stable上PE指向憑振義頭loop:clramoves.,a-i-dptr取出相應(yīng)數(shù)粧C=Jlit=si,nest,是否取到懐馬一個(gè)數(shù)據(jù)1jm-pf,取到長盾一個(gè),重新汗始循環(huán)hSKt:cpl

53、.沒百的站,汗始處理*反相叛據(jù)滿足一WLOVsbufa.串口輸出弁始loopl:jbotl.Loopc!.輸出堯畢,跳轉(zhuǎn)1jm.pLoopl.沒摘出結(jié)耒,循環(huán)尊特loop2:lcalldelay.延時(shí)亮燈medptr,掲向下一牛憑據(jù)1jm.pLoopdelay:IlLLlVr4f#1011dll;IlL-iVdi2;IlL-iVfhdjnzdjnzr5.dl2djn.zr4.dllret:.able:db4.數(shù)據(jù)表。前四行為左籟亮燈db10h,20h,40h,80hdb1,2,4,8db10h,20h,40h,80hdb0,Offh,0,Offh.此行閃爍兩次db3數(shù)搐表結(jié)束標(biāo)志end源文件編

54、輯結(jié)束以后,將其保存為匯編文件,然后進(jìn)行編譯/匯編,并產(chǎn)生相應(yīng)的源代碼,準(zhǔn)備用于仿真。然后我們來繪制電路圖。電路圖比較簡單,如下圖所示,此處不再詳述。但有一點(diǎn)需要注意:此前的排阻不能使用了,因?yàn)槟切┒际嵌噍斎雴屋敵?,不能符合此例要求。此處我們換作另外一種8輸入8輸出的排阻(見上圖中RN1),你可以在Proteus中用關(guān)鍵詞“RX8進(jìn)行查找。設(shè)計(jì)好的電路圖如上圖所示。電路圖設(shè)計(jì)好以后,我們就可以將上面產(chǎn)生的代碼裝入單片機(jī)了裝入以后進(jìn)行仿真,仿真中的一個(gè)畫面也可以從上圖看到。我的畢業(yè)論文(九):Proteus仿真輔助數(shù)碼管的學(xué)習(xí)2007年07月10日星期二13:42數(shù)碼管又稱LED數(shù)碼管,它是由7

55、段或8段LED構(gòu)成的顯示器件。有共陰極和共陽極兩種。按其顯示方式則可分為靜態(tài)顯示方式和動(dòng)態(tài)顯示方式兩種。關(guān)于數(shù)碼管的其他知識(shí)請(qǐng)參閱相關(guān)參考文獻(xiàn),此處不作討論。下面我們將主要講述數(shù)碼管顯示的仿真。靜態(tài)顯示方式靜態(tài)顯示方式較為簡單,編程十分容易,但占用10口線較多。實(shí)際使用中不太多見。下面我們就通過一個(gè)簡單的例子來予以說明。例1單片機(jī)的P2口接一個(gè)共陽極數(shù)碼管,利用該數(shù)碼管顯示從0到9,然后返回到0的循環(huán)。該例子較為簡單,源文件如下圖:QG:as*|回回org13nip0LI0UhnainIorg0030hhlain:TILOVdptr,Stable段碣袤頭鰭曲5TILOVra,#o.-H-01u

56、p:血匚呷m,rOTil-iVCa+dptr.養(yǎng)我得段迴1Til-iV口2,a段迴輸田顯示lcalldelay起吋r區(qū)示一會(huì)1lier-0抱向F傘數(shù)宰cjnerO-#10-up顯示到S瑋始倒數(shù)decr0/F二句便U倒數(shù)到8down:decr0TlLOVa.r-02last倒暫到山幵殆遷數(shù)TlLOVCara-i-dptr-,査義得段冏1ffl-OV成alcalldeiay1j吩down1jmpinaindelay:TILOVr410.進(jìn)時(shí)子看岸1dil:TIL匚IE5沖4。di2.:TILOVrS.OffhdjHEdjnzrdl2djnzretr4,dlltable:dbOcOh,Of9h.0a

57、4h.0b0h.99h挺陽根橫礙董db理82h,Of8h.80h.90hendT|jr源文件編輯結(jié)束以后,將其保存為匯編文件,然后進(jìn)行編譯/匯編,并產(chǎn)生相應(yīng)的源代碼,準(zhǔn)備用于仿真。下面我們編輯電路圖。此例的電路圖十分簡單,只需將一個(gè)共陽極數(shù)碼管連到單片機(jī)的P2口即可。數(shù)碼管使用關(guān)鍵詞“7Seg”進(jìn)行查找??梢钥吹接泻芏嘟Y(jié)果,注意區(qū)分共陽極“Anode”和共陰極“Cathode”即可。這里我們選用較為簡單的“7SEG-COM-ANODE”數(shù)碼管。最后得到的電路圖如下圖所示:繪制好電路圖,我們就可以將前面所生成的源代碼裝入單片機(jī),然后點(diǎn)擊仿真按鈕進(jìn)行仿真??梢钥吹綌?shù)碼管顯示的數(shù)字按照我們程序中設(shè)定

58、的要求進(jìn)行變化著,仿真中的一個(gè)畫面如上圖所示。動(dòng)態(tài)顯示方式動(dòng)態(tài)顯示方式是一種相對(duì)較為高級(jí)的顯示方式,它編程較為復(fù)雜,但占用IO口線少,達(dá)到了節(jié)約硬件資源的目的,實(shí)際使用中較多利用。下面我們也利用一個(gè)實(shí)例來詳細(xì)說明這種顯示方式。例2數(shù)碼管動(dòng)態(tài)顯示方式。單片機(jī)P2口接一個(gè)二位數(shù)碼管的8位段碼線,P3口的低二位接數(shù)碼管的兩位位碼線。程序使得二位數(shù)碼管做0到99的循環(huán)顯示。該例源文件如下圖所示:源文件編輯結(jié)束以后,將其保存為匯編文件,然后進(jìn)行編譯/匯編,并產(chǎn)生相應(yīng)的源代碼,準(zhǔn)備用于仿真。接下來我們繪制電路圖。此例電路圖比較簡單,如下圖所示,但有幾點(diǎn)需要注意:PD.O/ADliPD.iwEiipo.iw

59、rizJTT如PD.3/AD3PD.4/WEI4F0.5/D5PD.6/WEIRRSTP0.7/D7P2.Qf卩21伽P2.A10PSENP2.3/A1IALEP2.4/A12EAP2.5/A13P2.67A1斗P2.7W.15PI.DP3.D/RXDP1.1PSjnXDP1.2P3.2/nJTDP1.3P9.9/INT1P1.4P3.斗仃DP1.5P3.5mP1.6P3.ti.-WRP1.7F?:7/RD1)單片機(jī)的IO口的驅(qū)動(dòng)能力有限,所以此例我們選用了大功率晶體管驅(qū)動(dòng)電路,即圖中的兩個(gè)NPN三極管,單片機(jī)通過控制它們的通斷來達(dá)到控制位碼的目的。2)關(guān)于數(shù)碼管,此例我們選用了2位的共陽極數(shù)

60、碼管7SEG-MPX2-CA,這樣可以方便我們連線和使用。而且由于我們的例子中沒有用到小數(shù)點(diǎn)(DP),所以為了簡便在圖中我們沒有連接P2.7和DP引腳。當(dāng)然,如果你連接好這個(gè)引腳,仿真結(jié)果不會(huì)受到任何影響,因?yàn)樵诙未a表中,P2.7引腳一直輸出的都是高電平,也就是說小數(shù)點(diǎn)一直處于熄滅狀態(tài)。繪制好電路圖,就可以點(diǎn)擊仿真按鈕進(jìn)行仿真了。仿真中的一個(gè)效果如上圖所示。事實(shí)上,在實(shí)際的應(yīng)用中我們還可以選用數(shù)碼管顯示驅(qū)動(dòng)譯碼芯片來達(dá)到控制數(shù)碼管顯示的目的。常用的這類芯片有CD4511、MAX7219等。關(guān)于這些芯片的使用方法請(qǐng)參閱相關(guān)參考文獻(xiàn),此處我們僅以MAX7219為例來簡單介紹一下這類芯片的使用。例3

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論