




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、 用PROTEUS對單片機(jī)進(jìn)行仿真的方法與實(shí)例 吳漢清 Proteus軟件是英國Labcenter Electronics公司的一款電路設(shè)計(jì)與仿真軟件,它包括ISIS、ARES等軟件模塊,ARES模塊主要用來完成PCB的設(shè)計(jì); ISIS模塊用來完成電路原理圖的布圖和仿真。它可以進(jìn)行模擬電路仿真、數(shù)字電路仿真,也可以進(jìn)行單片機(jī)及其外圍電路組成的系統(tǒng)的仿真;軟件提供了各種虛擬儀器,如示波器、邏輯分析儀、信號發(fā)生器、電壓表、電流表等。和其它仿真軟件相比,Proteus ISIS最大特色是對單片機(jī)系統(tǒng)的仿真,目前支持的單片機(jī)類型有: 68000系列、8051系列、ARM系列、AVR系列、PIC系列、Z
2、80系列、HC11系列等。本文主要介紹Proteus軟件在單片機(jī)方面的仿真功能,即ISIS模塊的用法。 在單片機(jī)學(xué)習(xí)開發(fā)的過程中,程序的調(diào)試是一個(gè)很重要的環(huán)節(jié),要安裝電路進(jìn)行實(shí)驗(yàn),而且電路在調(diào)試過程中往往要進(jìn)行調(diào)整和改變,這不緊增加了費(fèi)用和難度,而且也影響了學(xué)習(xí)和開發(fā)的進(jìn)度,這也成了一些初學(xué)者學(xué)習(xí)的障礙。如果使用Proteus 軟件就可以大大節(jié)省時(shí)間和開發(fā)費(fèi)用,可以在軟件仿真通過后再制作印刷電路板進(jìn)行電路實(shí)驗(yàn)。一、Proteus ISIS軟件的工作環(huán)境和一些基本使用方法 下面通過一個(gè)流水燈的實(shí)例來說明Proteus的基本使用方法,使用的軟件版本是Proteus.Professional 7.1
3、 SP2。 流水燈使用AT89C51單片機(jī),用P2口作輸出口。先在Keil uVision編譯器中輸入下列程序:#include <reg51.h>void Delay1ms(unsigned int count)/延時(shí)子程序 unsigned int i,j; for(i=0;i<count;i+) for(j=0;j<120;j+);main() /主程序 unsigned char LEDIndex = 0; bit LEDDirection = 1; while(1) if(LEDDirection) P2 = (0x01<<LEDIndex); e
4、lse P2 = (0x80>>LEDIndex); if(LEDIndex=7) LEDDirection = !LEDDirection; LEDIndex = (LEDIndex+1)%8; Delay1ms(200); 將上述程序編譯生成目標(biāo)文件LED.hex。然后按下列步驟進(jìn)行:1. 運(yùn)行Proteus 7 Professional(ISIS 7 Professional)出現(xiàn)如圖1所示的界面: 這是一種標(biāo)準(zhǔn)的Windows界面,包括標(biāo)題欄、主菜單、標(biāo)準(zhǔn)工具欄、繪圖工具欄、狀態(tài)欄、對象選擇按鈕、預(yù)覽對象方位控制按鈕、仿真進(jìn)程控制按鈕、預(yù)覽窗口、對象選擇器窗口、圖形編輯窗口
5、。2.添加元件到對象選擇器元件列表中 單擊繪圖工具欄中的按鈕,再單擊對象選擇按鈕P,出現(xiàn)挑選元件對話框,見圖2。按表1添加本例所用的元件。表1 名稱元件種類(Category)子種類(Sub-category)單片機(jī)AT89C51Microprocessor ICs8051 Family按鈕開關(guān)BUTTONSwitches & RelaysSwitches電容器CAPCapacitorsGeneric電解電容器CAP-ELECCapacitorsGeneric電阻器RESResistorsGeneric發(fā)光二極管LED-REDOptoelectronicsLEDs晶振CRYSTALMi
6、scellaneous 如果一開始對種類不熟悉,可直接在對話框的KEYWORDS中輸入元件的名稱如AT89C51、CAP等,就可以直接找到所需的元件,如圖3。 添加好元件的對象選擇器元件列表見圖4。 3.放置元件 在元件列表中左鍵選取AT89C51,在原理圖編輯窗口中適當(dāng)?shù)奈恢脝螕糇箧I,這樣AT89C51就被放到原理圖編輯窗口中了,同樣放置其它元件。兩次右擊可以刪除放置的元件,右擊選中元件后按方向控制按鈕可改變元件的方向。右擊選中元件后再按住左鍵可移動元件位置。 4.放置“地”、“電源” 添加“地”:左鍵選擇模型選擇工具欄中的 圖標(biāo),在圖5中左鍵選擇GROUND,并在原理圖編輯窗口中左擊,這樣
7、“地”就被放置到原理圖編輯窗口中了。同樣地,選擇POWER可放置“電源”。 5.編輯元件的屬性 右擊選元件后再左擊即可編輯元件的屬性,也可以右擊后在快捷菜單中選擇命令Edit Prorerties。如R1的屬性窗口如圖6。 在對AT89C51的屬性進(jìn)行編輯時(shí)要加入仿真文件,在Program File中單擊出現(xiàn)文件瀏覽對話框,找出LED.hex文件,單擊確定完成添加文件,單擊OK退出。6.連線 在要連線的一個(gè)點(diǎn)左擊,移動鼠標(biāo)到到另一個(gè)點(diǎn)再左擊即可畫好一條連線,按 放置導(dǎo)線連接結(jié)點(diǎn),畫好連線的仿真電路圖見圖7。 AT89C51的VSS、VDD不需要連線,默認(rèn)VSS=0V、VDD=+5V、GND=0
8、V。 7.仿真 單擊仿真進(jìn)程控制按鈕中的開始仿真,我們可看到發(fā)光二極管分別按兩個(gè)方向依次點(diǎn)亮。輸出端的小方點(diǎn)紅色代表高點(diǎn)平,藍(lán)色代表低電平,灰色代表不確定電平。在仿真時(shí)單片機(jī)的晶振電路和復(fù)位電路可以省略不畫,時(shí)鐘頻率可以在AT89C51的屬性中設(shè)置,默認(rèn)值為12MHz。對于設(shè)計(jì)好的文件可以保存以便下次調(diào)用。 二、單片機(jī)仿真實(shí)例 上面通過一個(gè)簡單的例子介紹了Proteus ISIS的基本使用方法,下面再通過筆者設(shè)計(jì)的幾個(gè)實(shí)例進(jìn)一步介紹Proteus ISIS的使用方法和技巧,同時(shí)也能夠使大家看到幾個(gè)單片機(jī)應(yīng)用的實(shí)例。 1.電感測試儀電感測試儀以電感加上電壓后電流增加的規(guī)律作為測量依據(jù),因?yàn)殡姼屑?/p>
9、上電壓后電流增加的速度與電感量相關(guān),通過測量電流達(dá)到某一預(yù)定值所花的時(shí)間就能測量出電感的電感量。單片機(jī)使用AT89C2051,測量電路如圖8所示,A為AT89C2051內(nèi)部構(gòu)造的電壓比較器,利用電壓比較器測量電感中電流的變化,合上開關(guān)后電源電壓E+ 加在電感LX和電阻R的串聯(lián)回路上,這時(shí)回路中電流IL由零開始逐漸增加,在電阻R兩端電壓從0升到0.632E+的過程中,P3.6口輸出為0,當(dāng)電阻R兩端電壓一旦超過0.632E+后,P3.6口輸出電平即變?yōu)?。以P3.6口的輸出狀態(tài)為依據(jù),用AT89C2051內(nèi)部的定時(shí)器T0對時(shí)間進(jìn)行計(jì)數(shù),再將計(jì)數(shù)結(jié)果顯示出來即得出測量結(jié)果。量程可分為多檔,采用兩位
10、半數(shù)碼管顯示,單位為mH。我們只要仿真其中的一檔即可,這里取×10檔進(jìn)行仿真,即讀數(shù)乘以10為實(shí)際電感量。電感測試儀的源程序如下:#include <reg51.h>unsigned char j,m,n,t,DispBuf3;unsigned int L;unsigned char codeBitTab3=0xdf,0xef,0xf7;/位驅(qū)動碼unsigned char codeDispTab11=0x41,0xcf,0x52,0x46,0xcc,0x64,0x60,0x4f,0x40,0x44,0xff;/字形碼sbit P1_2=P12;sbit P3_6=P36
11、;void Delay1ms(unsigned int count) /延時(shí)程序 for(n=0;n<count;n+) for(m=0;m<250;m+);void main() /主程序 TMOD=0x01;/定時(shí)器T0方式1 while(1) /無限循環(huán) t=BitTabj;/取位值 P1=P1|0x38;/P1.3-P1.5送1 P1=P1&t; /P1.3-P1.5輸出取出的位值 t=DispBufj;/取出待顯示的數(shù) t=DispTabt;/取字形碼 P3=t; /字型碼由P3輸出顯示 Delay1ms(5); j+; /j作為數(shù)碼管的計(jì)數(shù)器,取值0-2,顯示程
12、序通過它確認(rèn)顯示哪個(gè)數(shù)碼管 if(j=3) j=0; TH0=0; TL0=0; P1_2=0;/測試開始 TR0=1; /開定時(shí)器T0 for(;P3_6=0;);/判斷電阻上的電壓上升到參考電壓否 TR0=0;/電壓達(dá)到參考電壓,關(guān)定時(shí)器T0 P1_2=1; L=TL0|(TH0<<8);/取定時(shí)器T0中的數(shù)值 L=L-3; if(L>=200) DispBuf2=10; DispBuf1=10; DispBuf0=1; /超量程,百位數(shù)顯示1,個(gè)位、十位不顯示(滅) else /不超量程,取各位數(shù)值 DispBuf2=L;/取個(gè)位數(shù) L=L/10; DispBuf1=L
13、;/取十位數(shù) DispBuf0=L/10;/取百位數(shù) 用Keil uVision將上述程序編譯生成目標(biāo)文件DGZS.hex。電路中所使用的元件見表2。表2 名稱元件種類(Category)子種類(Sub-category)單片機(jī)AT89C2051Microprocessor ICs8051 Family電阻器RESResistorsGeneric可變電阻器POT-LINResistorsVariable三極管2N2905TransistorsBipolar電感器IND-AIRInductorsGeneric4位共陰數(shù)碼管7SEG-MPX4-CAOptoelectronics7-Segment
14、Displays 繪制好的仿真電路圖如圖9。圖中添加示波器時(shí),先左鍵選擇模型選擇工具 欄中的 圖標(biāo),再選擇OSCILLOSCOPE,并在原理圖編輯窗口中左擊,這樣示波器就被放置到原理圖中了。由于AT89C2051的P1.0和P1.1是復(fù)用端口,除了作I/O口外,還有一個(gè)功能是作為電壓比較器的輸入端,P1.0為同相輸入端,P1.1為反相輸入端,這里作電壓比較器的輸入端使用,因此在設(shè)置AT89C2051的屬性時(shí)要將其設(shè)置電壓比較器的輸入端,即Ehable Comparator選擇Yes,如圖10。 被測電感器的電感量定為1H。單擊開始仿真,可變電阻RP1是用來校準(zhǔn)測量值的,按動RP1的+或-按鈕,
15、調(diào)節(jié)RP1使數(shù)碼管顯示100。仿真結(jié)果見圖10。電阻R2為換擋電阻,改變它的值即可改變擋位。2. 充電器 這是用PIC12F675單片機(jī)做的充電器,能對兩節(jié)鎳鎘或鎳氫電池充電,充電器采用電壓監(jiān)測的方法判斷充電是否結(jié)束,充電結(jié)束后能自動停止充電。圖11是電路圖,圖中PIC12F675的7腳作模擬信號輸入端AN0使用。單片機(jī)使用內(nèi)部時(shí)鐘振蕩器,引腳3作充電控制電壓輸出端GP4使用。S為復(fù)位開關(guān),復(fù)位開關(guān)主要在重新放上電池后使用。 接上電源后,PIC12F675的GP4輸出低電平,三極管VT1飽和導(dǎo)通,兩節(jié)電池開始充電。隨著電池電壓的上升,輸入到單片機(jī)的模擬電壓也不斷升高,當(dāng)電壓大于預(yù)定的設(shè)定值3V
16、時(shí),GP4輸出高電平使VT1截止,電池停止充電,并自鎖在這一工作狀態(tài),即使電池在停止充電后電壓略有下降也不會重新進(jìn)行充電。 在PIC單片機(jī)的MPLAB IDE編譯器中輸入下列程序:#INCLUDE "P12F675.INC"W_TEMP EQU 20HSW EQU 21HTEMP EQU 22H ORG 000HMAIN NOP MOVLW 00H MOVWF SW MOVLW 95H MOVWF TEMP BSF STATUS,RP0 MOVLW B'00001001' MOVWF TRISIO MOVLW B'00000001' MOVW
17、F ANSEL MOVLW B'10000111' MOVWF OPTION_REG BCF STATUS,RP0 MOVLW B'00000111' MOVWF CMCON BCF GPIO,GP4 BSF GPIO,GP5LOOP BTFSC SW,0 GOTO LOOP MOVLW B'00000001' MOVWF ADCON0 BSF ADCON0,GOADC BTFSS PIR1,ADIF GOTO ADC MOVF ADRESH,0 SUBWF TEMP,0 BTFSC STATUS,C GOTO LOOP BSF GPIO,GP4
18、 BCF GPIO,GP5 BSF SW,0 GOTO LOOP END 然后編譯生成目標(biāo)文件charger.hex。 對充電器仿真時(shí)有一個(gè)難點(diǎn),就是Proteus元件庫中沒有可仿真的充電電池,它的電池元件加上充電電流后電壓不會上升,為此可在電池上串一只可變電阻,這樣改變可變電阻的大小就可以就可以改變充電回路兩端的電壓,用來模擬電池電壓的變化。電路中所使用的元件見表3。 表3 名稱元件種類(Category)子種類(Sub-category)單片機(jī)PIC16F675Microprocessor ICsPIC12 Family電阻器RESResistorsGeneric可變電阻器POT-LINR
19、esistorsVariable三極管2N5415TransistorsBipolar按鈕開關(guān)BUTTONSwitches & RelaysSwitches發(fā)光二極管LED-REDOptoelectronicsLEDs單節(jié)電池CELLMiscellaneous 繪制仿真電路圖時(shí)添加直流電壓表和上例中選擇示波器類似,先左鍵選擇模型選擇工具欄中的 圖標(biāo),再選擇DC VOLTMETER即可。 將可變電阻器RP1滑動觸點(diǎn)調(diào)到中點(diǎn)以下的位置單擊 開始仿真,仿真結(jié)果見圖12。 RP1的滑動觸點(diǎn)向上調(diào)節(jié),電壓表的讀數(shù)會逐漸上上升,當(dāng)讀數(shù)大于3V時(shí),會停止充電,發(fā)光二極管VD1熄滅,電壓表的讀數(shù)恢復(fù)為
20、2.5V,這時(shí)即使我們把RP1 滑動觸點(diǎn)調(diào)到中點(diǎn)以下也不會重新充電,只有按一下復(fù)位鍵S1才會重新充電。 3. 電機(jī)調(diào)速控制器 直流電機(jī)的調(diào)速主要調(diào)整其工作電流,通常有兩種方式:一種是在電機(jī)供電電路中串接一個(gè)可變電阻,通過改變可變電阻的阻值調(diào)節(jié)工作電流,從而調(diào)節(jié)轉(zhuǎn)速;另一種方法是在直流電機(jī)上加直流脈沖電壓,通過改變脈沖直流電的占空比來調(diào)節(jié)轉(zhuǎn)速。前一種方法因?yàn)榭勺冸娮枭嫌袎航狄獡p耗功率,所以效率不高,只有用小功率直流電機(jī)時(shí)使用,后一種工作效率高,如目前的電動自行車都采用這種調(diào)速方式。下面用AVR單片機(jī)ATmega8設(shè)計(jì)一個(gè)電機(jī)調(diào)速控制器,使其定時(shí)/計(jì)數(shù)器T/C1工作在PWM模式,作為PWM脈寬調(diào)制
21、器。在ICCAVR編譯器中輸入下列程序:#include <iom8v.h>#define uchar unsigned char char k; void DelayMs(char i) char j; for(;i!=0;i-) for(j=143;j!=0;j-); #pragma interrupt_handler INT_0:2void INT_0(void) if(k!=250) k=k+5; OCR1A=k; /設(shè)置PWM參數(shù) DelayMs(100); #pragma interrupt_handler INT_1:3void INT_1(void) if(k!=5
22、) k=k-5; OCR1A=k; /設(shè)置PWM參數(shù) DelayMs(100); void main(void) DDRD=0X00; PORTD=0xff; /設(shè)置PD口為帶上拉電阻的輸入口 DDRB=0xff; /設(shè)置PB口為推挽1輸出 PORTB=0xff; SREG=0x80; /開全局中斷 GICR=0xc0; /開外部中斷 TCCR1A=0xc1; /8位PWM,向上計(jì)數(shù)置位OC1A,向下計(jì)數(shù)清零OC1A TCCR1B=0x01; /時(shí)鐘1分頻,PWM信號頻率為1M/512=2KHz k=125; OCR1A=k; /設(shè)置PWM參數(shù) while(1); 編譯生成目標(biāo)文件djts.h
23、ex。電路中所使用的元件見表4。表4 名稱元件種類(Category)子種類(Sub-category)單片機(jī)ATmega8Microprocessor ICsAVR Family電阻器RESResistorsGeneric三極管2N3054TransistorsBipolar按鈕開關(guān)BUTTONSwitches & RelaysSwitches電池BATTERYMiscellaneous 直流電機(jī)MOTORElectromechanical 繪制好仿真電路圖,仿真結(jié)果見圖13。 當(dāng)按下S1時(shí),PB1輸出PWM信號占空比減小,電機(jī)速度減??;當(dāng)按下S2時(shí),PB1輸出PWM信號占空比增加,
24、電機(jī)速度增加。從示波器上可以看到PWM信號占空比在調(diào)節(jié)時(shí)的變化。 4. 智力競賽搶答器 用單片機(jī)AT89C51做一個(gè)搶答器,供8組搶答,當(dāng)主持人按一下開始鍵后即可開始搶答,當(dāng)某一組按下?lián)尨疰I后,其它各組的按鍵被鎖定,主機(jī)上的數(shù)碼管顯示相應(yīng)的組號,同時(shí)該組桌上的發(fā)光二極管也點(diǎn)亮,并發(fā)出1秒鐘的報(bào)警聲,數(shù)碼管和發(fā)光二極管的顯示時(shí)間為5秒鐘。 在Keil uVision編譯器中輸入下列程序:#include <reg51.h>unsigned char n,i;unsigned long int m,t;sbit S1=P00;sbit S2=P01;sbit S3=P02;sbit S
25、4=P03;sbit S5=P04;sbit S6=P05;sbit S7=P06;sbit S8=P07;sbit VD1=P10;sbit VD2=P11;sbit VD3=P12;sbit VD4=P13;sbit VD5=P14;sbit VD6=P15;sbit VD7=P16;sbit VD8=P17;sbit SOUND=P30;sbit START=P31;void delay(t) /延時(shí)子程序 for(;t>0;t-) for(i=0;i<250;i+); void main() /主程序 while(1) /無限循環(huán) if(START=0)/若開始鍵按下 n=0; while(n=0)/若n=0,循環(huán)執(zhí)行 if(S1=0)/若S1按下 VD1=0;P2=0x79;n=1; /發(fā)光二極管VD1點(diǎn)亮
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 肉牛投放協(xié)議書
- 船只安全協(xié)議書
- 聯(lián)勤保障協(xié)議書
- 有機(jī)肥授權(quán)銷售協(xié)議書
- 碰壞東西協(xié)議書
- 繼母分錢協(xié)議書
- 花園修剪協(xié)議書
- 肉雞飼養(yǎng)協(xié)議書
- 地下室拆模合同協(xié)議書
- 聯(lián)合展覽協(xié)議書
- GB 34914-2021凈水機(jī)水效限定值及水效等級
- GB 15831-2006鋼管腳手架扣件
- 浙教版八年級科學(xué)第四章電學(xué)測試
- 機(jī)電顧問服務(wù)建議書123
- 廣西壯族自治區(qū)工程造價(jià)綜合定額答疑匯編2022年11月更新
- 科學(xué)發(fā)展觀基本解讀(完整版)課件
- 基坑工程施工驗(yàn)收記錄表
- 夜間施工專項(xiàng)方案
- 微生物實(shí)驗(yàn)室病原微生物評估報(bào)告
- 護(hù)理風(fēng)險(xiǎn)管理與護(hù)理安全
- 綜采工作面液壓支架壓死救活技術(shù)研究
評論
0/150
提交評論