版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
我的畢業(yè)論文(二):Keil軟件的基本用法2007年07月02日星期一13:11KeilμVision是Keil公司(ARM子公司)開發(fā)的一款用于MCS—51單片機(jī)開發(fā)的應(yīng)用十分廣泛的編譯和調(diào)試軟件。該軟件可以編輯、編譯匯編語言、C51語言,連接定位目標(biāo)文件和庫文件,創(chuàng)建HEX文件,調(diào)試目標(biāo)程序等。Keil軟件功能強(qiáng)大,包含很多部分,本文我們主要使用KeilμVision來開發(fā)C51項(xiàng)目、調(diào)試程序并生成HEX文件來用于單片機(jī)開發(fā)。KeilμVision是一款在Windows下使用的集成開發(fā)環(huán)境,目前最新版本為V3,本文中我們?yōu)榱撕?jiǎn)便選用V2。0。下面我們就來熟識(shí)一下Keil軟件.首先安裝軟件,它的安裝與MedWin一樣簡(jiǎn)潔,我們不做過多介紹。安裝完成后,我們就可以使用軟件了,打開軟件,我們可以看到其界面,如下圖所示:下面我們就來使用Keil軟件開發(fā)我們的第一個(gè)項(xiàng)目。點(diǎn)擊“Project”(工程)菜單下面的“NewProject"(新建工程),我們來新建一個(gè)工程。軟件彈出“CreateNewProject"(創(chuàng)建新工程)窗口。如下圖所示:我們?yōu)楣こ梯斎胛募?,點(diǎn)擊“保存"按鈕,軟件將彈出“SelectDeviceforTarget”(選擇MCU)窗口,如下圖所示。我們只需依據(jù)自己工程的需要選擇相應(yīng)的MCU,然后點(diǎn)擊“確定”按鈕就可以了。在這里我們選擇Atmel公司的AT89C51,這種類型的單片機(jī)與Intel的8051單片機(jī)完全兼容,但是它內(nèi)含4KBFlash存儲(chǔ)器,使用格外便利,而且在我國也較為流行。事實(shí)上,目前AT89C51已經(jīng)被AT89S51所淘汰,由于AT89S51加入了ISP(在線可編程)功能,通過Atmel公司或者自制的下載線就可以對(duì)片內(nèi)Flash進(jìn)行編程,使用更為便利。然而AT89S51與AT89C51除了ISP以外完全兼容,而且下面我們要說明的Proteus軟件目前只能支持AT89C51,所以本文將以AT89C51來代替8051使用,請(qǐng)大家注意。選擇好相應(yīng)的MCU,點(diǎn)擊窗口中的“確定”按鈕以后,軟件會(huì)彈出一個(gè)窗口詢問是否將8051啟動(dòng)代碼加入工程(如下圖),由于我們不需要這段代碼,所以我們點(diǎn)擊“否”跳過就可以了。至此,我們完成了整個(gè)工程的初步建立。下面我們需要做的就是創(chuàng)建源文件并將我們的源文件加入工程.首先點(diǎn)擊“File”下面的“New”菜單,或者直接點(diǎn)擊工具欄中的新建按鈕,軟件將彈出源文件編輯窗口,我們可以在窗口中編輯源文件。編輯好的源文件如下圖所示。接下來的操作有兩點(diǎn)需要注意:1、加入AT89C51的頭文件(當(dāng)然,如果你選擇了其他的MCU,則加入相應(yīng)的頭文件):在要加入頭文件的地方(一般是文件開頭),點(diǎn)擊右鍵,選擇點(diǎn)擊彈出菜單(如下圖)中的“Insert‘#include<REGX51.H>’"即完成了頭文件的添加.我們可以看到源文件中多了一行頭文件包含代碼“#include<REGX51.H〉”。2、保存源文件:注意保存源文件時(shí)所書寫的源文件擴(kuò)展名決定了源文件的類型(C51文件或者匯編語言源文件).這里我們將源文件保存為“main.c”.你可以看出在源文件保存以后,文件中的關(guān)鍵字已經(jīng)高亮顯示,可以幫助我們準(zhǔn)時(shí)發(fā)現(xiàn)錯(cuò)誤.源文件編輯好以后,我們就可以將其添加到工程中了。如下圖所示,右鍵點(diǎn)擊“ProjectWo(hù)rkspace”窗口中的“SourceGroup1"(如果你不能看到這個(gè)項(xiàng)目,你可以點(diǎn)擊一下圖中“Target1”前面的“+”號(hào)展開文件夾),這時(shí)軟件將彈出如圖所示的菜單.我們選擇“AddFilestoGroup‘SourceGroup1’”,軟件彈出添加源文件窗口,我們就可以將相應(yīng)的源文件加入到工程了。下面我們還需要對(duì)工程作一些設(shè)置,以使其滿意我們的要求。右鍵點(diǎn)擊上圖中的“Target1”,軟件將彈出工程菜單,如下圖所示。我們選擇點(diǎn)擊“OptionsforTarget‘Target1’”,軟件將彈出工程設(shè)置窗口。在工程設(shè)置中其他的我們臨時(shí)不管,只需將“Output”選項(xiàng)卡下面的“CreateHEXFile”選中就可以了,如下圖所示。這樣,當(dāng)我們調(diào)試工程項(xiàng)目時(shí),軟件將能夠生成HEX文件,用來裝入單片機(jī),使之運(yùn)行我們的指令.設(shè)置好以后,我們就可以編譯、鏈接、調(diào)試我們的工程項(xiàng)目了。首先讓我們來熟識(shí)一下調(diào)試工具欄.在這個(gè)工具欄中我們只需了解左邊的三個(gè)按鈕。其中,調(diào)試工具欄中最左側(cè)的按鈕是“Translat(yī)ecurrentfile”按鈕,即編譯按鈕,用來編譯當(dāng)前文件;中間的按鈕是“Buildtarget”按鈕,即建立工程按鈕,用來編譯、連接當(dāng)前的工程,產(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軟件使用簡(jiǎn)介Proteus軟件是LabcenterElectronics公司的一款電路設(shè)計(jì)與仿真軟件,它包括ISIS、ARES等軟件模塊,ARES模塊主要用來完成PCB的設(shè)計(jì),而ISIS模塊用來完成電路原理圖的布圖與仿真.Proteus的軟件仿真基于VSM技術(shù),它與其他軟件最大的不同也是最大的優(yōu)勢(shì)就在于它能仿真大量的單片機(jī)芯片,比如MCS-51系列、PIC系列等等,以及單片機(jī)外圍電路,比如鍵盤、LED、LCD等等。通過Proteus軟件的使用我們能夠輕易地獲得一個(gè)功能齊全、有用便利的單片機(jī)實(shí)驗(yàn)室。本文中由于我們主要使用Proteus軟件在單片機(jī)方面的仿真功能,所以我們重點(diǎn)討論ISIS模塊的用法,在下面的內(nèi)容中,如不格外說明,我們所說的Proteus軟件特指其ISIS模塊。
在進(jìn)行下面的操作前,我先說明一點(diǎn):我的Proteus版本是7.1,如果你使用的是6。9以前的版本,可能你發(fā)現(xiàn)在鼠標(biāo)操作上會(huì)略有不同。這主要表現(xiàn)在6.9以前的版本鼠標(biāo)左右鍵的作用與一般軟件剛好相反,而7.0以后已經(jīng)完全改過.下面我們首先來熟識(shí)一下Proteus的界面.Proteus是一個(gè)標(biāo)準(zhǔn)的Windows窗口程序,和大多數(shù)程序一樣,沒有太大區(qū)分,其啟動(dòng)界面如下圖所示:如圖中所示,區(qū)域①為菜單及工具欄,區(qū)域②為預(yù)覽區(qū),區(qū)域③為元器件掃瞄區(qū),區(qū)域④為編輯窗口,區(qū)域⑤為對(duì)象拾取區(qū),區(qū)域⑥為元器件調(diào)整工具欄,區(qū)域⑦為運(yùn)行工具條。下面我們就以建立一個(gè)和我們?cè)贙eil簡(jiǎn)介中所講的工程項(xiàng)目相配套的Proteus工程為例來簡(jiǎn)略敘述Proteus的操作方法以及注意事項(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"(無仿真模型).那么我們就不能夠用該元器件進(jìn)行仿真了,或者我們只能做它的PCB板,或者我們選擇其他的與其功能類似而且具有仿真模型的元器件。搜尋到所需的元器件以后,我們可以雙擊元器件名來將相應(yīng)的元器件加入到我們的文檔中,那么接著我們還可以用相同的方法來搜尋并加入其他的元器件。當(dāng)我們已經(jīng)將所需的元器件全部加入到文檔中時(shí),我們可以點(diǎn)擊“OK”按鈕來完成元器件的添加。添加好元器件以后,下面我們所需要做的就是將元器件依據(jù)我們的需要連接成電路。首先在元器件掃瞄區(qū)中點(diǎn)擊我們需要添加到文檔中的元器件,這時(shí)我們就可以在掃瞄區(qū)看到我們所選擇的元器件的外形與方向,如果其方向不符合你的要求,你可以通過點(diǎn)擊元器件調(diào)整工具欄中的工具來任意進(jìn)行調(diào)整,調(diào)整完成之后在文檔中單擊并選定好需要放置的位置即可。接著按相同的操作即可完成全部元器件的布置,接下來是連線。事實(shí)上Proteus的自動(dòng)布線功能是如此的完善以至于我們?cè)谧霾季€時(shí)從來都不會(huì)覺得這是一項(xiàng)任務(wù),而通常像是在享受布線的樂趣。布線時(shí)我們只需要單擊選擇起點(diǎn),然后在需要轉(zhuǎn)彎的地方單擊一下,依據(jù)你所需走線的方向移動(dòng)鼠標(biāo)到線的終點(diǎn)單擊即可。本例我們布線的結(jié)果如下圖所示(仿真我們?cè)谏厦娴腒eil操作介紹中的簡(jiǎn)潔例子)。由于該工程十分簡(jiǎ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)添加電源與地,所以我們可以省略.然后在添加電源與地以前,我們先來看一下上面第一個(gè)圖中區(qū)域⑤的對(duì)象拾取區(qū),我們?cè)谶@里只說明本文中可能會(huì)用得到的以及比較重要的工具。l:(SelectionMode)。選擇模式,通常情況下我們都需要選中它,比如布局時(shí)和布線時(shí)。
l:(ComponentMode)。組件模式,點(diǎn)擊該按鈕,能夠顯示出區(qū)域③中的元器件,以便我們選擇.l
:(WireLabelMode)。線路標(biāo)簽?zāi)J剑x中它并單擊文檔區(qū)電路連線能夠?yàn)檫B線添加標(biāo)簽。常常與總線協(xié)作使用。l
:(TextScriptMode)。文本模式,選中它能夠?yàn)槲臋n添加文本。l
:(BusesMode)。總線模式,選中它能夠在電路中畫總線.關(guān)于總線畫法的簡(jiǎn)略步驟與注意事項(xiàng)我們?cè)谙旅鏁?huì)進(jìn)行專門講解。l:(TerminalsMode).終端模式,選中它能夠?yàn)殡娐诽砑痈鞣N終端,比如輸入、輸出、電源、地等等。l:(VirtualInstrumentsMode).虛擬儀器模式,選中它我們能夠在區(qū)域③中看到很多虛擬儀器,比如示波器、電壓表、電流表等等.關(guān)于它們的用法我們會(huì)在后面的相應(yīng)章節(jié)中簡(jiǎn)略敘述.好了,下面我們就來添加電源。首先點(diǎn)擊,選擇終端模式,然后在元器件掃瞄區(qū)中點(diǎn)擊POWER(電源)來選中電源,通過區(qū)域⑥中的元器件調(diào)整工具進(jìn)行適當(dāng)?shù)恼{(diào)整,然后就可以在文檔區(qū)中單擊放置電源了.放置并連接好線路的電路圖一部分如下圖:連接好電路圖以后我們還需要做一些修改。由上圖我們可以看出,圖中的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)為Ω;如果在數(shù)字后面加上K或者k,則表示kΩ之意.這里我們填入270,表示270Ω。修改好各組件屬性以后就要將程序(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)行仿真了。首先來熟識(shí)一下上面第一個(gè)圖中區(qū)域⑦的運(yùn)行工具條。由于比較簡(jiǎn)潔,我們只作一下介紹。工具條從左到右依次是“Play”、“Step”、“Pause”、“Stop”按鈕,即運(yùn)行、步進(jìn)、暫停、停止.下面我們點(diǎn)擊“Play”按鈕來仿真運(yùn)行,效果如下圖所示,可以看到系統(tǒng)依據(jù)我們的程序在運(yùn)行著,而且我們還能看到其凹凸電平的實(shí)時(shí)變化.如果我們已經(jīng)觀察到了結(jié)果就可以點(diǎn)擊“Stop”來停止運(yùn)行。我的畢業(yè)論文(四):計(jì)算機(jī)仿真幫助單片機(jī)指令系統(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,由于其操作簡(jiǎn)潔,而且可以直觀地看到結(jié)果.1.數(shù)據(jù)傳送指令:數(shù)據(jù)傳送類指令主要包括:MOV、MOVX、MOVC、PUSH、POP、XCH等。下面我們通過一個(gè)簡(jiǎn)潔的匯編程序來學(xué)習(xí)這些指令。例1.匯編語言源文件如下圖所示:在MedWin中編輯好源文件以后,以“.a(chǎn)sm"為后綴保存為匯編源文件。然后進(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)來橫向或縱向平鋪窗口.由于本程序需要一步一步地簡(jiǎn)略查看相應(yīng)指令執(zhí)行的結(jié)果,所以我們需要在執(zhí)行指令時(shí)點(diǎn)擊“指令跟蹤(F7)”或“指令單步(F8)”按鈕來單步執(zhí)行.指令執(zhí)行中的一個(gè)畫面如下圖所示:從圖中我們能夠清楚地觀察到每一條指令執(zhí)行的每一個(gè)結(jié)果,從而加深我們對(duì)這些指令的理解與記憶。除以上實(shí)例程序中所書寫的以外,我們還可以使用其他的指令書寫程序并在MedWin中仿真,比如PUSH、POP、MOVC等,信任你會(huì)得到一個(gè)很好的結(jié)果,而且MedWin肯定會(huì)提高你學(xué)習(xí)指令的愛好。2.算術(shù)操作類指令算術(shù)操作類指令主要有:ADD、ADDC、DAA、SUB、INC、DEC、MUL、DIV等。算術(shù)操作類指令比較簡(jiǎn)潔,掌握起來比較困難,但在實(shí)際的單片機(jī)項(xiàng)目應(yīng)用中很少涉及,尤其是MUL、DIV兩條指令,在51系列單片機(jī)中更是被束之高閣,很少使用。此處,我們不再像上節(jié)那樣逐條書寫并仿真課本上的程序,如果感愛好,你可以仿照上節(jié)自己書寫程序并進(jìn)行仿真,觀察并體會(huì)每一條指令執(zhí)行的結(jié)果以及對(duì)系統(tǒng)的影響。這里我們通過一個(gè)比較有用的例子來演示仿真算術(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中。匯編源程序如下圖:在MedWin中編輯好源文件后,以“.asm”為后綴將其保存為匯編文件,然后進(jìn)行編譯、匯編并將代碼裝入內(nèi)存進(jìn)行仿真。你可以像上例那樣步進(jìn)觀察其簡(jiǎn)略執(zhí)行過程,分析緣由;當(dāng)然也可以在“l(fā)jmp
$”處設(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.3。規(guī)律運(yùn)算指令、掌握轉(zhuǎn)移類指令規(guī)律運(yùn)算指令,顧名思義,是用于規(guī)律運(yùn)算的指令.主要包括:CLR、CPL、ANL、ORL、XRL等常用規(guī)律指令以及循環(huán)移位指令如:RL、RLC、RR、RRC等。掌握轉(zhuǎn)移類指令是指在程序中依據(jù)簡(jiǎn)略的條件(或者沒有條件)使程序轉(zhuǎn)移到相應(yīng)的入口的指令。它主要包括三類指令:一是無條件轉(zhuǎn)移指令,比如:AJMP、SJMP、LJMP等;二是條件轉(zhuǎn)移指令,比如:JZ、CJNE、DJNZ等;三是子程序調(diào)用返回指令,比如:ACALL、LCALL、RET、RETI等。鑒于單獨(dú)針對(duì)規(guī)律運(yùn)算指令進(jìn)行的仿真十分簡(jiǎn)潔(事實(shí)上與數(shù)據(jù)傳送類指令相同),可以很容易、很便利地自己針對(duì)相應(yīng)的指令設(shè)計(jì)程序來觀察結(jié)果,進(jìn)行學(xué)習(xí)。所以此處不再針對(duì)規(guī)律運(yùn)算指令舉例仿真。而掌握轉(zhuǎn)移類指令又不行能單獨(dú)使用,往往與其他指令結(jié)合使用來組成相應(yīng)的程序,所以也無法單獨(dú)進(jìn)行仿真。所以下面我們就將規(guī)律運(yùn)算類指令與掌握轉(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中編輯好源文件以后,將其以“.a(chǎn)sm"為后綴保存為匯編源文件,然后編譯、匯編并將產(chǎn)生的代碼裝入內(nèi)存進(jìn)行仿真調(diào)試。仿真前需要注意首先輸入R3、R4設(shè)置十六進(jìn)制初始值,簡(jiǎn)略設(shè)置方法如下。首先調(diào)出寄存器窗口,然后在需要修改的寄存器名稱或者數(shù)值上雙擊,這時(shí)其內(nèi)容將變?yōu)榭尚薷?我們?cè)谄渲刑钊胄枰O(shè)置的數(shù)值(字母大小寫均可)即可,如下圖所示:設(shè)置好初始值以后,你可以單步觀察幾步以便明白其原理,然后就可以設(shè)置一個(gè)斷點(diǎn)全速運(yùn)行了,最后就可以看到所得到的結(jié)果,比如我們輸入8FD6,將得到結(jié)果:R5=03,R6=68,R7=22。4.位操作指令位操作比較簡(jiǎn)潔,我們也不再寫實(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)擊上圖中下側(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ù)器T0、T1,它們都具有兩種工作模式(定時(shí)器和計(jì)數(shù)器)以及四種工作方式(方式0、1、2、3)。定時(shí)器/計(jì)數(shù)器T0由特殊功能寄存器TH0和TL0構(gòu)成,T1由特殊功能寄存器TH1和TL1構(gòu)成。除此之外,與定時(shí)器/計(jì)數(shù)器有關(guān)的特殊功能寄存器還有工作方式掌握寄存器TMOD和掌握寄存器TCON.關(guān)于它們的簡(jiǎn)略內(nèi)容和簡(jiǎn)略應(yīng)用請(qǐng)參閱相關(guān)參考文獻(xiàn),此處不做探討.由于定時(shí)器/計(jì)數(shù)器T0與T1用法幾乎完全相同,所以下面的例子中我們將全部使用T0。而且定時(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-t×f/12其中t為定時(shí)時(shí)間(單位為s),f為單片機(jī)的時(shí)鐘頻率(單位為MHz).所以,計(jì)數(shù)初值為216-0.05×12M/12=15536=3CB0H。因此,TH0的初值應(yīng)為3CH,TL0的初值應(yīng)為B0H。因此,此例的源代碼如下圖:在MedWin中將源文件編輯完成以后,保存為匯編源文件并編譯、匯編產(chǎn)生源代碼(.HEX文件)。下面我們?cè)赑roteus中設(shè)計(jì)電路,此例電路也比較簡(jiǎn)潔,只需在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)行按鈕,系統(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閃爍一次。通常情況下,為了簡(jiǎn)便,人們會(huì)使用軟件延時(shí),即通過執(zhí)行一段沒有意義的程序來達(dá)到延時(shí)的目的。但那樣做會(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下最大250μs左右),所以,此處我們?nèi)匀贿x用方式1。但方式1在12MHz下的最大定時(shí)時(shí)間也只有60多ms,仍然不能滿意延時(shí)要求.所以,延時(shí)程序需要軟硬件協(xié)作.即我們可以這樣去做,通過硬件T0延時(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í)效果(可以通過指令單步執(zhí)行“l(fā)calldly500"一句觀察指令執(zhí)行時(shí)間,則實(shí)際執(zhí)行時(shí)間就是延時(shí)時(shí)間)。結(jié)果發(fā)現(xiàn),實(shí)際執(zhí)行中該延時(shí)程序比我們的要求多延時(shí)了87μs,這是由于延時(shí)程序中還插入了其他指令(比如設(shè)置T0模式等),所以我們的延時(shí)程序不是十分精確,實(shí)際應(yīng)用中我們可以通過調(diào)整T0初值來稍作調(diào)整,但此處對(duì)延時(shí)要求并不精確,所以我們就不再做調(diào)整了。下面我們可以在Proteus中構(gòu)建電路來觀察我們的延時(shí)效果。電路圖十分簡(jiǎn)潔,如下圖所示:注意LED的陰陽極不要接反,圖中的限流電阻在模擬時(shí)可以略去,但如果添加上的話,最好阻值不要設(shè)置的過大,以免LED發(fā)光太弱,影響觀察效果。設(shè)置好電路圖以及各元器件的屬性以后,我們就可以點(diǎn)擊仿真按鈕來觀察效果了??梢钥吹剑琇ED依據(jù)大約0.5s的周期開頭閃爍。例3。定時(shí)器/計(jì)數(shù)器的計(jì)數(shù)功能。本例使用T1對(duì)外部脈沖進(jìn)行計(jì)數(shù),每計(jì)數(shù)一次,與P1口相連的8個(gè)LED發(fā)光二極管的亮燈個(gè)數(shù)和位置就依據(jù)它們的挨次所表示的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)行處理。其源程序如下圖所示:將上面在MedWin中編輯好的源文件保存為匯編文件,然后進(jìn)行編譯/匯編,并產(chǎn)生相應(yīng)的源代碼(。HEX文件)。注意由于Proteus仿真電路的按鍵為抱負(fù)按鍵,所以程序設(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ì)好的電路圖如下圖所示:設(shè)計(jì)電路圖時(shí)要注意由于本電路圖中需要較多的限流電阻(如果添加的話),所以在繪制電路圖時(shí)考慮用排阻來進(jìn)行代替。圖中RP1就是一個(gè)8×的排阻。Proteus中供應(yīng)了幾種排阻,你可以使用關(guān)鍵詞“respack"進(jìn)行查找.設(shè)計(jì)好電路圖,我們就可以將上面匯編源文件產(chǎn)生的源代碼裝入單片機(jī),然后進(jìn)行仿真。仿真時(shí)使用鼠標(biāo)點(diǎn)擊按鍵,你可以看到LED依據(jù)BCD碼加法的規(guī)律進(jìn)行變化。仿真中的一個(gè)畫面可以從上圖中看到。我的畢業(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è)外部輸入中斷源INT0(P3.2)和INT1(P3.3),中斷懇求標(biāo)志分別為IE0和IE1;2個(gè)內(nèi)部定時(shí)器/計(jì)數(shù)器的溢出中斷源T0(計(jì)數(shù)時(shí)P3.4輸入)和T1(計(jì)數(shù)時(shí)P3.5輸入),中斷懇求標(biāo)志分別為TF0和TF1;串口中斷懇求源,其中斷懇求標(biāo)志為RI或TI。中斷懇求標(biāo)志位分布在特殊功能寄存器TCON(IE0、IE1、TF0、TF1)和SCON(RI、TI)中.與中斷有關(guān)的特殊功能寄存器除它們以外還有中斷允許寄存器IE和中斷優(yōu)先級(jí)寄存器IP。這些寄存器都能夠進(jìn)行位尋址。此處不再對(duì)它們進(jìn)行簡(jiǎn)略的探討。關(guān)于它們的簡(jiǎn)略情況和簡(jiǎn)略功能以及中斷的其他知識(shí)請(qǐng)參閱相關(guān)參考文獻(xiàn),此處我們從略。事實(shí)上,關(guān)于中斷我們?cè)谏弦黄恼轮猩塘慷〞r(shí)器/計(jì)數(shù)器時(shí)已經(jīng)對(duì)T0、T1的相關(guān)中斷進(jìn)行過較為詳盡的商量和舉例。而關(guān)于串口中斷,我們會(huì)在下節(jié)講解串口時(shí)進(jìn)行相應(yīng)的商量,所以本節(jié)我們只簡(jiǎn)潔商量一下外部中斷INT0和INT1,并舉例分析。例1.外部中斷INT0和INT1同時(shí)存在。和上篇文章中的例3一樣,P1口連接8個(gè)LED發(fā)光二極管,兩個(gè)按鍵分別接到外部中斷INT0和INT1。正常情況下,8個(gè)LED閃爍發(fā)光。當(dāng)INT0發(fā)生中斷時(shí),使P1口的8?jìng)€(gè)LED做一個(gè)燈的左移右移兩次;當(dāng)INT1發(fā)生中斷時(shí),使P1口的8?jìng)€(gè)LED做兩個(gè)燈的左移右移兩次.此例的源程序如下圖所示:源文件編輯結(jié)束以后,將源文件保存為匯編文件,然后進(jìn)行編譯/匯編,并產(chǎn)生相應(yīng)的源代碼以便下面仿真使用。下面我們?cè)赑roteus中繪制電路,此例電路圖和上篇文章中最后一例的電路圖大體相同,只不過將接在P3.5的按鍵改為接在P3.2和P3.3的INT0和INT1的中斷懇求輸入端.繪制好的電路圖如下圖所示:電路設(shè)計(jì)好以后,我們就可以將上面生成的源代碼裝入單片機(jī),然后進(jìn)行仿真了??梢钥吹?仿真開頭時(shí),8個(gè)LED作大約0.2S間隔的閃爍;當(dāng)我們按下INT0口的按鍵時(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/Transmitter,通用異步收發(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ò)展并行IO口,可以擴(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è)單片機(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.則由于計(jì)算波特率公式波特率=2SMOD/32×f/(12×(28-X))其中,f為單片機(jī)時(shí)鐘頻率,X為定時(shí)器初值.所以,我們可以得到T1計(jì)數(shù)初值為:FAH(此處為了精確,我們?nèi)=11。0592MHz)。源文件如下所示:發(fā)送程序如下圖:接收程序如下圖:源文件編輯結(jié)束以后,將源文件保存為匯編文件,然后進(jìn)行編譯/匯編,并產(chǎn)生相應(yīng)的源代碼,籌備用于仿真。下面我們來設(shè)計(jì)電路。首先在電路圖中放置兩片AT89C51芯片,并將它們的P3.0(RXD)和P3.1(TXD)引腳交叉相連。然后在片一的P1口連接8個(gè)按鍵;片二的P2口連接上8個(gè)LED。最終結(jié)果如下圖所示:在進(jìn)行仿真以前,我們需要來再熟識(shí)一下Proteus的按鍵。如上圖所示,仿真時(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ì)轉(zhuǎn)變狀態(tài).此例我們就需要這種屬性來依據(jù)要求進(jìn)行我們的仿真。設(shè)計(jì)好電路圖以后,我們就可以裝入相應(yīng)的程序了.注意裝入程序時(shí)不要發(fā)生錯(cuò)誤,要將相應(yīng)的源代碼裝入相應(yīng)的單片機(jī)。然后進(jìn)行仿真,可以通過點(diǎn)擊相應(yīng)的按鍵來轉(zhuǎn)變狀態(tài),進(jìn)而觀察到LED的狀態(tài)。可以看到,串口通信得到了實(shí)現(xiàn)。仿真中的一個(gè)畫面如上面電路圖中的效果所示。例2.串口擴(kuò)充并行IO口輸出.單片機(jī)的串口擴(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串入并出移位寄存器。本例源文件如下圖:源文件編輯結(jié)束以后,將其保存為匯編文件,然后進(jìn)行編譯/匯編,并產(chǎn)生相應(yīng)的源代碼,籌備用于仿真。然后我們來繪制電路圖。電路圖比較簡(jiǎn)潔,如下圖所示,此處不再詳述.但有一點(diǎ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段或8段LED構(gòu)成的顯示器件。有共陰極和共陽極兩種。按其顯示方式則可分為靜態(tài)顯示方式和動(dòng)態(tài)顯示方式兩種。關(guān)于數(shù)碼管的其他知識(shí)請(qǐng)參閱相關(guān)參考文獻(xiàn),此處不作商量。下面我們將主要敘述數(shù)碼管顯示的仿真.1.靜態(tài)顯示方式靜態(tài)顯示方式較為簡(jiǎn)潔,編程十分容易,但占用IO口線較多。實(shí)際使用中不太多見.下面我們就通過一個(gè)簡(jiǎn)潔的例子來予以說明。例1.單片機(jī)的P2口接一個(gè)共陽極數(shù)碼管,利用該數(shù)碼管顯示從0到9,然后返回到0的循環(huán)。該例子較為簡(jiǎn)潔,源文件如下圖:源文件編輯結(jié)束以后,將其保存為匯編文件,然后進(jìn)行編譯/匯編,并產(chǎn)生相應(yīng)的源代碼,籌備用于仿真。下面我們編輯電路圖.此例的電路圖十分簡(jiǎn)潔,只需將一個(gè)共陽極數(shù)碼管連到單片機(jī)的P2口即可.數(shù)碼管使用關(guān)鍵詞“7Seg”進(jìn)行查找.可以看到有很多結(jié)果,注意區(qū)分共陽極“Anode"和共陰極“Cat(yī)hode”即可.這里我們選用較為簡(jiǎn)潔的“7SEG—COM—ANODE”數(shù)碼管。最后得到的電路圖如下圖所示:繪制好電路圖,我們就可以將前面所生成的源代碼裝入單片機(jī),然后點(diǎn)擊仿真按鈕進(jìn)行仿真??梢钥吹綌?shù)碼管顯示的數(shù)字依據(jù)我們程序中設(shè)定的要求進(jìn)行變化著,仿真中的一個(gè)畫面如上圖所示。2.動(dòng)態(tài)顯示方式動(dòng)態(tài)顯示方式是一種相對(duì)較為高級(jí)的顯示方式,它編程較為簡(jiǎn)潔,但占用IO口線少,達(dá)到了節(jié)省硬件資源的目的,實(shí)際使用中較多利用。下面我們也利用一個(gè)實(shí)例來簡(jiǎn)略說明這種顯示方式.例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)的源代碼,籌備用于仿真。接下來我們繪制電路圖。此例電路圖比較簡(jiǎn)潔,如下圖所示,但有幾點(diǎn)需要注意:(1)單片機(jī)的IO口的驅(qū)動(dòng)能力有限,所以此例我們選用了大功率晶體管驅(qū)動(dòng)電路,即圖中的兩個(gè)NPN三極管,單片機(jī)通過掌握它們的通斷來達(dá)到掌握位碼的目的.(2)關(guān)于數(shù)碼管,此例我們選用了2位的共陽極數(shù)碼管7SEG—MPX2—CA,這樣可以便利我們連線和使用。而且由于我們的例子中沒有用到小數(shù)點(diǎn)(DP),所以為了簡(jiǎn)便在圖中我們沒有連接P2.7和DP引腳。當(dāng)然,如果你連接好這個(gè)引腳,仿真結(jié)果不會(huì)受到任何影響,由于在段碼表中,P2.7引腳始終輸出的都是高電平,也就是說小數(shù)點(diǎn)始終處于熄滅狀態(tài)。繪制好電路圖,就可以點(diǎn)擊仿真按鈕進(jìn)行仿真了。仿真中的一個(gè)效果如上圖所示。3.事實(shí)上,在實(shí)際的應(yīng)用中我們還可以選用數(shù)碼管顯示驅(qū)動(dòng)譯碼芯片來達(dá)到掌握數(shù)碼管顯示的目的。常用的這類芯片有CD4511、MAX7219等。關(guān)于這些芯片的使用方法請(qǐng)參閱相關(guān)參考文獻(xiàn),此處我們僅以MAX7219為例來簡(jiǎn)潔介紹一下這類芯片的使用.例3。單片機(jī)使用MAX7219接8?jìng)€(gè)數(shù)碼管,初始時(shí)利用這些數(shù)碼管從左到右顯示7到0,然后依次將最右側(cè)的數(shù)字移到最左側(cè)顯示。鑒于C51語言在此類程序編寫中的明顯優(yōu)勢(shì),此例我們將使用C51語言進(jìn)行編寫,源文件如下:在Keil中編輯好源文件以后,進(jìn)行編譯、鏈接,并生成源代碼(。HEX文件)。注意生成.HEX文件時(shí)要依據(jù)前面的文章中的相應(yīng)介紹進(jìn)行設(shè)置.然后我們來繪制電路圖.本例的電路圖較為簡(jiǎn)潔,MAX7219與數(shù)碼管連接的段碼和位碼在芯片上已經(jīng)標(biāo)識(shí)明確,直接相連即可;唯獨(dú)需要注意的就是要依據(jù)前面程序中定義的那樣,將MAX7219的DN、CLK、LOAD三引腳分別與單片機(jī)AT89C51的P1.0、P1。1、P1。2引腳相連。如下圖所示,此處我們就不再作其他說明白。繪制好電路圖以后,將我們剛才生成的源代碼裝入單片機(jī),然后仿真運(yùn)行,就可以看到我們所盼望的效果了,仿真中的一個(gè)畫面如上圖所示。我的畢業(yè)論文(十):Proteus仿真幫助LED點(diǎn)陣的學(xué)習(xí)2007年07月12日星期四15:25LED點(diǎn)陣是由LED構(gòu)成的點(diǎn)數(shù)為8×8、16×16的點(diǎn)陣顯示器,它可以用來顯示數(shù)字、字母以及漢字等。使用十分靈敏,應(yīng)用較為廣泛,比如大街上隨處可見的LED電子廣告牌。下面我們通過一個(gè)實(shí)例來簡(jiǎn)潔介紹LED點(diǎn)陣的使用和仿真。例。使用一塊8X8的LED點(diǎn)陣來顯示一個(gè)向左循環(huán)移動(dòng)的數(shù)字“1”。此例比較簡(jiǎn)潔,但需要注意的新東西有很多。一是8X8LED點(diǎn)陣,它的行列掃描。二是關(guān)于字模,網(wǎng)上有很多字模軟件可供下載,但針對(duì)8X8LED點(diǎn)陣的比較少。由于數(shù)字“1”的字模比較簡(jiǎn)潔,我們可以自己寫出來。由于C51語言的便利性,此處我們?nèi)匀徊杉{其來書寫,源文件如下圖:編輯好源文件以后,在Keil中進(jìn)行編譯、鏈接、并生成相應(yīng)的工程源代碼。然后,我們就開頭繪制電路圖。關(guān)于本例的電路圖,我們需要說明的是,由于采納總線方式繪制電路可以很大程度上使得電路圖簡(jiǎn)化、美觀,所以,此處我們將采納總線方式來繪制電路。關(guān)于總線的知識(shí)請(qǐng)參閱相關(guān)參考文獻(xiàn),此處我們只簡(jiǎn)潔敘述一下在Proteus中如何繪制我們需要的總線。采納總線方式繪制電路,首先要點(diǎn)擊前面的“Proteus簡(jiǎn)介”一文中Proteus界面圖區(qū)域⑤對(duì)象拾取區(qū)中的總線按鈕,使系統(tǒng)進(jìn)入繪制總線模式.這樣你就可以在你需要繪制總線的地方單擊像繪制一般連線一樣來繪制總線了,需要注意在你想要結(jié)束總線的地方雙擊才能結(jié)束總線的繪制.繪制好總線以后,我們可以先在需要與總線連接的各個(gè)線端來添加相應(yīng)的標(biāo)簽(Label).首先點(diǎn)擊上述區(qū)域⑤對(duì)象拾取區(qū)中的添加標(biāo)簽按鈕,使系統(tǒng)進(jìn)入添加標(biāo)簽?zāi)J健H缓竽憔涂梢栽谛枰砑訕?biāo)簽的線端上點(diǎn)擊鼠標(biāo),系統(tǒng)將會(huì)彈出編輯標(biāo)簽對(duì)話框(EditWireLabel).我們只需在其中的“Label”選項(xiàng)卡的“String”框中填入我們需要的標(biāo)簽并點(diǎn)擊確定(OK),就完成了相應(yīng)標(biāo)簽的添加。添加好標(biāo)簽以后,接下來就要繪制各總線分支。繪制總線分支時(shí)需要注意按一下“Ctrl”鍵,你會(huì)發(fā)現(xiàn)連線方向已經(jīng)依據(jù)你所需要的方向(45°)偏轉(zhuǎn)了。在連接好總線分支以后,總線繪制就完成了。然后再稍作修飾,最后完成的電路圖如下圖所示:繪制好電路圖,我們就可以將上面產(chǎn)生的源代碼裝入單片機(jī)進(jìn)行模擬仿真了.可以看到8X8LED點(diǎn)陣已經(jīng)依據(jù)我們的要求開頭循環(huán)顯示數(shù)字“1”。仿真中的一個(gè)畫面如上圖所示。我的畢業(yè)論文(十一):Proteus仿真幫助LCD(液晶顯示器)的學(xué)習(xí)2007年07月13日星期五22:00LCD就是液晶顯示器,液晶顯示器正在以其低功耗、高性價(jià)比以及便利有用的特性而成為單片機(jī)系統(tǒng)的一個(gè)重要輸出器件。關(guān)于LCD顯示器的簡(jiǎn)略知識(shí)請(qǐng)參閱相關(guān)書籍和參考文獻(xiàn),此處我們只通過一個(gè)簡(jiǎn)潔實(shí)例來說明LCD的用法。例.使用Proteus中的128×64點(diǎn)陣圖形液晶顯示器來顯示字符“鄭州高校物理工程學(xué)院”。首先我們要生成字符的字模,這需要通過字模軟件來完成。網(wǎng)上有很多免費(fèi)的字模軟件可供下載使用,此處使用字模軟件HZDotReader來生成。關(guān)于字模軟件的用法請(qǐng)參閱相關(guān)書籍,此處也不再贅言.生成好字模以后,由于軟件設(shè)計(jì)與電路圖有關(guān),所以,我們首先來繪制例子所需要的電路圖.此例選用的LCD器件是“AMPIRE128×64”,在Proteus中你可以使用該關(guān)鍵詞來進(jìn)行查找.除此以外,電路圖中還需要一個(gè)滑動(dòng)變阻器,你可以使用關(guān)鍵詞“POT—”來查找,并依據(jù)需要選擇相應(yīng)的類型(POT-HG、POT-LIN等)。電路圖中涉及的其他元器件我們?cè)谝郧暗碾娐穲D中都已經(jīng)見到過,此處不再敘述。最后繪制好的電路圖如下圖所示:由于C51語言在此類程序編寫上具有突出的優(yōu)勢(shì),本例仍然采納C51語言來書寫。本例的程序源文件如下面幾個(gè)圖所示:編輯好源文件以后,在Keil中編譯、鏈接并生成工程代碼(。HEX文件)。然后將生成的源代碼裝入上面電路圖里面的單片機(jī)中,然后進(jìn)行仿真,可以看到如圖中所示的結(jié)果。當(dāng)然,你還可以對(duì)源程序稍作修改來實(shí)現(xiàn)其他你所需要的功能,比如打字效果,或者字體的移動(dòng),等等.我的畢業(yè)論文(十二):Proteus仿真幫助DAC的學(xué)習(xí)2007年07月14日星期六10:55DAC是將數(shù)字信號(hào)轉(zhuǎn)換為模擬信號(hào)的一種常用器件??砂雌浞直媛实陌纪箤⑵浞譃?位、10位、12位、16位等多種類型.課本中比較偏重?cái)⑹龅氖荄AC0832,所以這里我們也將以其為重點(diǎn)并舉例來敘述DAC的使用及模擬仿真。關(guān)于其他的類似器件,請(qǐng)查閱相關(guān)資料.例。使用AT89C51與DAC0832的接口電路來產(chǎn)生三角波.由于在Proteus中沒有DAC0832器件的仿真模型,所以這里我們使用一個(gè)普適DAC模型,你可以在Proteus中使用關(guān)鍵詞“DAC_8"來進(jìn)行查找。本例比較簡(jiǎn)潔,所以仍使用了匯編語言來書寫,程序源代碼如下圖:編輯好源文件以后,即可進(jìn)行編譯、匯編并產(chǎn)生相應(yīng)的源代碼。然后我們就可以繪制電路圖了.由于本例使用了引腳較為簡(jiǎn)潔的DAC模型,所以電路連接也十分簡(jiǎn)潔,如下圖所示:繪制好電路圖,然后我們就可以將源代碼裝入單片機(jī)進(jìn)行仿真了.仿真中軟件將彈出示波器窗口,我們可以在窗口中看到相應(yīng)的波形。其波形如下圖所示:我的畢業(yè)論文(十四):計(jì)算機(jī)仿真單片機(jī)輸入器件的學(xué)習(xí)2007年07月17日星期二18:34單片機(jī)的輸入器件主要有開關(guān)、撥碼開關(guān)、鍵盤以及ADC等,與之相應(yīng),輸入到單片機(jī)的信號(hào)就包括開關(guān)量、脈沖量和鍵盤信號(hào)等。下面我們就來簡(jiǎn)略商量計(jì)算機(jī)在仿真這些器件方面的應(yīng)用.1開關(guān)在前面文章的仿真實(shí)例中我們已經(jīng)多次涉及到開關(guān)和撥碼開關(guān),而且我們已經(jīng)對(duì)其相當(dāng)熟識(shí),所以此處我們不再對(duì)其作進(jìn)一步探討。下面我們只說明一點(diǎn)問題。通常情況下,開關(guān)在按下和彈起的過程中會(huì)有抖動(dòng)發(fā)生,所以我們?cè)谔幚砩婕伴_關(guān)的問題中肯定要注意消除抖動(dòng).只不過在仿真試驗(yàn)中,開關(guān)的仿真模型是抱負(fù)模型,沒有抖動(dòng),我們也就不需要處理;但在實(shí)際應(yīng)用中,這點(diǎn)務(wù)須注意。2鍵盤單片機(jī)系統(tǒng)中常常使用非編碼鍵盤,主要包括獨(dú)立式鍵盤和矩陣式鍵盤兩種。(1)。獨(dú)立式鍵盤獨(dú)立式鍵盤每個(gè)按鍵單獨(dú)占用一根IO口線,各按鍵相對(duì)獨(dú)立,互不影響??梢允褂貌樵兎绞交蛘咧袛喾绞絹頇z測(cè)哪一個(gè)按鍵被按下,并執(zhí)行相應(yīng)的程序。其軟件結(jié)構(gòu)簡(jiǎn)潔,但硬件簡(jiǎn)潔,而且當(dāng)按鍵數(shù)量較大時(shí)將占用大量的IO口,使得IO口資源浪費(fèi)較大,所以獨(dú)立式鍵盤只適用于按鍵數(shù)量較少的場(chǎng)合。由于獨(dú)立式鍵盤的硬件結(jié)構(gòu)以及軟件處理方式與前面文章中我們所述及的按鍵相同,所以,此處我們不再對(duì)其進(jìn)行簡(jiǎn)略商量。關(guān)于獨(dú)立式鍵盤的知識(shí),請(qǐng)參閱相關(guān)參考文獻(xiàn).(2).矩陣式鍵盤矩陣式鍵盤又稱行列式鍵盤,它的按鍵跨接在行線和列線上,適用于按鍵數(shù)量較多的情況。關(guān)于矩陣式鍵盤的基本知識(shí)也請(qǐng)參閱有關(guān)參考文獻(xiàn)。此處我們以一個(gè)矩陣式鍵盤的例子來說明其使用方法以及軟件設(shè)計(jì)。例.單片機(jī)P1口連接一個(gè)矩陣式鍵盤,共有16個(gè)按鍵,按從左到右、從上到下的挨次依次命名為0、1、2、…、E、F。P2口連接一個(gè)共陽極數(shù)碼管,編寫程序仿真當(dāng)按鍵按下時(shí),在數(shù)碼管上顯示出按下的按鍵所代表的數(shù)字。本例是鍵盤與數(shù)碼管的綜合應(yīng)用??紤]到C51語言在此類程序書寫上的明顯優(yōu)勢(shì),本例程序?qū)⒉杉{C51來書寫。最后的源文件如下圖所示:編輯好源文件以后,我們要進(jìn)行編譯并產(chǎn)生相應(yīng)的工程源代碼(.HEX文件)以便下面仿真使用.在生成源代碼以后,我們就可以依據(jù)要求來繪制電路圖了。此例電路圖元器件比較簡(jiǎn)潔,但繪制不太容易,尤其是16個(gè)按鍵組成的鍵盤矩陣,需要注意。關(guān)于電路圖的其他部分,我們?cè)谇懊娴姆抡嬷幸呀?jīng)多次涉及,此處不再多言.最后繪制好的電路圖如下圖所示:繪制好電路圖以后,我們就可以將上面產(chǎn)生的源代碼裝入單片機(jī)進(jìn)行仿真了。你可以注意到仿真中當(dāng)你點(diǎn)擊一個(gè)按鍵,右邊的數(shù)碼管就會(huì)顯示該按鍵對(duì)應(yīng)的數(shù)字。而且,如果你始終按住某個(gè)按鍵不放,數(shù)碼管的顯示是不會(huì)轉(zhuǎn)變的。這完全符合我們?cè)O(shè)計(jì)的初衷.系統(tǒng)仿真中的一個(gè)畫面如上面的圖形所示。3ADCProteus中的ADC器件主要在“DataConverters"子類中,種類繁多,從低精度的8位ADC到高精度的16位,從并行接口、SPI接口到IIC接口,Proteus都能仿真。但稍有圓滿的是當(dāng)前的新型Σ-Δ型ADC臨時(shí)還不能仿真。由于仿真ADC器件需要考慮相當(dāng)多的東西,而本文時(shí)間緊迫,所以這里我們就不進(jìn)行相應(yīng)的仿真了。如果您對(duì)此比較感愛好,可以試著用溫度傳感器測(cè)溫,然后由ADC轉(zhuǎn)換并將其送入單片機(jī)處理,最后在數(shù)碼管或LCD上顯示溫度,做一個(gè)數(shù)字溫度計(jì)。我的畢業(yè)論文(十六):Proteus仿真IO接口擴(kuò)展的學(xué)習(xí)2007年07月19日星期四21:21單片機(jī)的IO接口擴(kuò)展按其擴(kuò)展方式可以分為簡(jiǎn)潔IO擴(kuò)展、可編程IO接口芯片擴(kuò)展以及串口擴(kuò)展。下面我們將分別進(jìn)行敘述.1.
簡(jiǎn)潔IO擴(kuò)展簡(jiǎn)潔IO擴(kuò)展主要是使用TTL或者CMOS系列鎖存器和三態(tài)門進(jìn)行擴(kuò)展。這種擴(kuò)展方式比較簡(jiǎn)潔,尤其當(dāng)系統(tǒng)資源較為豐富時(shí),我們常??梢圆杉{這種方式。此種擴(kuò)展方式中一個(gè)較為常見的例子是使用P0口擴(kuò)展8個(gè)按鍵和8個(gè)LED,當(dāng)一個(gè)按鍵按下的時(shí)候,使與其對(duì)應(yīng)的LED發(fā)光。由于比較簡(jiǎn)潔,此處不再贅述。2.
可編程IO接口芯片擴(kuò)展由于在Proteus中只能仿真8250和8255A(chǔ)兩個(gè)可編程接口芯片,其他的如8155、8279等均不能仿真,所以本節(jié)我們將以8255A為重點(diǎn)進(jìn)行敘述。事實(shí)上,如8155、8279等芯片在實(shí)際應(yīng)用中早已
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 方式采購合同范本3篇
- 房屋買賣居間合同注意事項(xiàng)3篇
- 改擴(kuò)建工程施工合同的安全生產(chǎn)3篇
- 招標(biāo)采購合同管理實(shí)踐3篇
- 新編股份轉(zhuǎn)讓協(xié)議合同范本模板3篇
- 帆船出租協(xié)議范式3篇
- 政務(wù)信息化項(xiàng)目招標(biāo)指南3篇
- 餐飲攤位租賃合同
- 旅館租賃合同樣式
- 地下工程挖機(jī)操作手聘用合同
- 城市軌道交通安全監(jiān)理規(guī)劃
- (格式已排好)國家開放大學(xué)電大《計(jì)算機(jī)應(yīng)用基礎(chǔ)(專)》終結(jié)性考試大作業(yè)答案任務(wù)一
- 已安排論壇-樹脂基復(fù)合材料工藝仿真軟件pam rtm教程
- 《XX醫(yī)院安寧療護(hù)建設(shè)實(shí)施方案》
- 西門子s7-400手冊(cè)集400h冗余系統(tǒng)2004
- 梯形鋼屋架鋼結(jié)構(gòu)課程設(shè)計(jì)
- 工程重點(diǎn)難點(diǎn)分析及對(duì)策
- 家具企業(yè)消防安全管理制度范本
- 湖南省住宅物業(yè)服務(wù)分項(xiàng)目分等級(jí)基準(zhǔn)價(jià)標(biāo)準(zhǔn)[完整版]
- 中國 黑龍江 哈爾濱日出日落時(shí)間表
- 2019年上海市春考高考英語試卷(精校含答案)
評(píng)論
0/150
提交評(píng)論