久久ER99热精品一区二区-久久精品99国产精品日本-久久精品免费一区二区三区-久久综合九色综合欧美狠狠

新聞中心

EEPW首頁 > 嵌入式系統 > 設計應用 > 用PROTEUS對單片機進行仿真的方法與實例

用PROTEUS對單片機進行仿真的方法與實例

作者: 時間:2016-11-25 來源:網絡 收藏

接上電源后,PIC12F675的GP4輸出低電平,三極管VT1飽和導通,兩節電池開始充電。隨著電池電壓的上升,輸入到單片機的模擬電壓也不斷升高,當電壓大于預定的設定值3V時,GP4輸出高電平使VT1截止,電池停止充電,并自鎖在這一工作狀態,即使電池在停止充電后電壓略有下降也不會重新進行充電。
在PIC單片機的MPLAB IDE編譯器中輸入下列程序:
#INCLUDE "P12F675.INC"
W_TEMP EQU 20H
SW EQU 21H
TEMP EQU 22H
ORG 000H
MAIN NOP
MOVLW 00H
MOVWF SW
MOVLW 95H
MOVWF TEMP
BSF STATUS,RP0
MOVLW B00001001
MOVWF TRISIO
MOVLW B00000001
MOVWF ANSEL
MOVLW B10000111
MOVWF OPTION_REG
BCF STATUS,RP0
MOVLW B00000111
MOVWF CMCON
BCF GPIO,GP4
BSF GPIO,GP5
LOOP BTFSC SW,0
GOTO LOOP
MOVLW B00000001
MOVWF ADCON0
BSF ADCON0,GO
ADC BTFSS PIR1,ADIF
GOTO ADC
MOVF ADRESH,0
SUBWF TEMP,0
BTFSC STATUS,C
GOTO LOOP
BSF GPIO,GP4
BCF GPIO,GP5
BSF SW,0
GOTO LOOP
END
然后編譯生成目標文件charger.hex。
對充電器仿真時有一個難點,就是Proteus元件庫中沒有可仿真的充電電池,它的電池元件加上充電電流后電壓不會上升,為此可在電池上串一只可變電阻,這樣改變可變電阻的大小就可以就可以改變充電回路兩端的電壓,用來模擬電池電壓的變化。
電路中所使用的元件見表3。



表3

名稱元件種類(Category)子種類(Sub-category)
單片機PIC16F675Microprocessor ICsPIC12 Family
電阻器RESResistorsGeneric
可變電阻器POT-LINResistorsVariable
三極管2N5415TransistorsBipolar
按鈕開關BUTTONSwitches & RelaysSwitches
發光二極管LED-REDOptoelectronicsLEDs
單節電池CELLMiscellaneous

繪制仿真電路圖時添加直流電壓表和上例中選擇示波器類似,先左鍵選擇模型選擇工具欄中的 圖標,再選擇DC VOLTMETER即可。
將可變電阻器RP1滑動觸點調到中點以下的位置單擊 開始仿真,仿真結果見圖12。






RP1的滑動觸點向上調節,電壓表的讀數會逐漸上上升,當讀數大于3V時,會停止充電,發光二極管VD1熄滅,電壓表的讀數恢復為2.5V,這時即使我們把RP1 滑動觸點調到中點以下也不會重新充電,只有按一下復位鍵S1才會重新充電。
3. 電機調速控制器
直流電機的調速主要調整其工作電流,通常有兩種方式:一種是在電機供電電路中串接一個可變電阻,通過改變可變電阻的阻值調節工作電流,從而調節轉速;另一種方法是在直流電機上加直流脈沖電壓,通過改變脈沖直流電的占空比來調節轉速。前一種方法因為可變電阻上有壓降要損耗功率,所以效率不高,只有用小功率直流電機時使用,后一種工作效率高,如目前的電動自行車都采用這種調速方式。
下面用AVR單片機ATmega8設計一個電機調速控制器,使其定時/計數器T/C1工作在PWM模式,作為PWM脈寬調制器。
在ICCAVR編譯器中輸入下列程序:
#include
#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:2
void INT_0(void)
{
if(k!=250)
k=k+5;
OCR1A=k; //設置PWM參數
DelayMs(100);
}

#pragma interrupt_handler INT_1:3
void INT_1(void)
{
if(k!=5)
k=k-5;
OCR1A=k; //設置PWM參數
DelayMs(100);
}

void main(void)
{
DDRD=0X00;
PORTD=0xff; //設置PD口為帶上拉電阻的輸入口
DDRB=0xff; //設置PB口為推挽1輸出
PORTB=0xff;
SREG=0x80; //開全局中斷
GICR=0xc0; //開外部中斷
TCCR1A=0xc1; //8位PWM,向上計數置位OC1A,向下計數清零OC1A
TCCR1B=0x01; //時鐘1分頻,PWM信號頻率為1M/512=2KHz
k=125;
OCR1A=k; //設置PWM參數
while(1);
}
編譯生成目標文件djts.hex。
電路中所使用的元件見表4。
表4

名稱元件種類(Category)子種類(Sub-category)
單片機ATmega8Microprocessor ICsAVR Family
電阻器RESResistorsGeneric
三極管2N3054TransistorsBipolar
按鈕開關BUTTONSwitches & RelaysSwitches
電池BATTERYMiscellaneous
直流電機MOTORElectromechanical

繪制好仿真電路圖,仿真結果見圖13。




當按下S1時,PB1輸出PWM信號占空比減小,電機速度減小;當按下S2時,PB1輸出PWM信號占空比增加,電機速度增加。從示波器上可以看到PWM信號占空比在調節時的變化。
4. 智力競賽搶答器
用單片機AT89C51做一個搶答器,供8組搶答,當主持人按一下開始鍵后即可開始搶答,當某一組按下搶答鍵后,其它各組的按鍵被鎖定,主機上的數碼管顯示相應的組號,同時該組桌上的發光二極管也點亮,并發出1秒鐘的報警聲,數碼管和發光二極管的顯示時間為5秒鐘。
在Keil uVision編譯器中輸入下列程序:
#include
unsigned char n,i;
unsigned long int m,t;
sbit S1=P0^0;
sbit S2=P0^1;
sbit S3=P0^2;
sbit S4=P0^3;
sbit S5=P0^4;
sbit S6=P0^5;
sbit S7=P0^6;
sbit S8=P0^7;
sbit VD1=P1^0;
sbit VD2=P1^1;
sbit VD3=P1^2;
sbit VD4=P1^3;
sbit VD5=P1^4;
sbit VD6=P1^5;
sbit VD7=P1^6;
sbit VD8=P1^7;
sbit SOUND=P3^0;
sbit START=P3^1;
void delay(t) //延時子程序
{
for(;t>0;t--)
{ for(i=0;i<250;i++); }
}
void main() //主程序
{
while(1) //無限循環
{
if(START==0)//若開始鍵按下
{
n=0;
while(n==0)//若n=0,循環執行
{
if(S1==0)//若S1按下
{VD1=0;P2=0x79;n=1;} //發光二極管VD1點亮,數碼管顯示1
else if(S2==0) //若S2按下
{VD2=0;P2=0x24;n=1;} //發光二極管VD2點亮,數碼管顯示2
else if(S3==0) //若S3按下
{VD3=0;P2=0x30;n=1;} //發光二極管VD3點亮,數碼管顯示3
else if(S4==0) //若S4按下
{VD4=0;P2=0x19;n=1;} //發光二極管VD4點亮,數碼管顯示4
else if(S5==0) //若S5按下
{VD5=0;P2=0x12;n=1;} //發光二極管VD5點亮,數碼管顯示5
else if(S6==0) //若S6按下
{VD6=0;P2=0x02;n=1;} //發光二極管VD6點亮,數碼管顯示6
else if(S7==0) //若S7按下
{VD7=0;P2=0x78;n=1;} //發光二極管VD7點亮,數碼管顯示7
else if(S8==0) //若S8按下
{VD8=0;P2=0x00;n=1;} //發光二極管VD8點亮,數碼管顯示8
}
for(m=0;m<1000;m++) //發出1秒報警聲
{
SOUND=!SOUND;
delay(1);
}
delay(5000); //發光二極管、數碼管繼續點亮5秒
P1=0xff;
P2=0xff;
}
}
}
將上述源程序編譯生成目標文件vie_answer.hex。
電路中所使用的元件見表5。
表5

名稱元件種類(Category)子種類(Sub-category)
單片機AT89C51Microprocessor ICs8051 Family
電阻器RESResistorsGeneric
三極管2N2905TransistorsBipolar
共陽數碼管7SEG-COM-ANODEOptoelectronics7-Segment Displays
揚聲器SPEAKERSpeakers & Sounders

繪制好仿真電路圖,設置好有關元件的屬性,仿真后先按一下開始按鈕S9,再按一下S1~S8中的任一個按鈕比如S6,仿真結果見圖14。





上一頁 1 2 3 下一頁

關鍵詞: PROTEUS單片機仿

評論


技術專區

關閉