基于單片機的模擬開(kāi)關(guān)時(shí)序設計與仿真
對開(kāi)關(guān)S1與S2的電荷注入效應。由圖3可知S2關(guān)斷時(shí)間晚于S3,S1關(guān)斷時(shí)間晚于S2。S2斷開(kāi)時(shí)的電荷注入效應引起V1點(diǎn)較小的波形失真,關(guān)閉S1,盡管有S2的電荷注入效應,但V1被置為輸入電壓Vin,因此,被測電容Cx上的電壓不受S2的電荷注入效應影響;S1斷開(kāi)時(shí)的注入電荷,會(huì )沿著(zhù)已閉合的開(kāi)關(guān)S2流向地,S1不會(huì )對被測電容Cx產(chǎn)生影響。所以,S1和S2對輸出基本不產(chǎn)生影響。
對開(kāi)關(guān)S4與S5的電荷注入效應。S4與S5在斷開(kāi)時(shí),產(chǎn)生的電荷注入效應會(huì )使A2和A3的輸出波形有微小失真,但相對于輸出值較小,可以忽略,而且A4采用差動(dòng)式結構輸入會(huì )使S4與S5的電荷注入效應相互抵消,故S4與S5的電荷注入效應不會(huì )對最終的輸出Vo產(chǎn)生影響。
由以上分析可知,通過(guò)合理設計模擬開(kāi)關(guān)控制時(shí)序,解決了其關(guān)斷時(shí)引入的電荷注入效應。
3 實(shí)現開(kāi)關(guān)時(shí)序的相關(guān)軟件
3.1 Keil C51簡(jiǎn)介
Keil是德國Keil公司開(kāi)發(fā)的單片機編譯器。Keil C51是目前最流行的51單片機開(kāi)發(fā)工具,現在Keil公司的編譯器有支持經(jīng)典80C51和80C51派生產(chǎn)品的版本。新版本mu;Vision2把μVision1用的模擬調試器dScope與集成開(kāi)發(fā)環(huán)境無(wú)縫地結合起來(lái),界面更友好,使用更方便,支持的單片機品質(zhì)更多。對于使用C語(yǔ)言進(jìn)行單片機開(kāi)發(fā)的用戶(hù),Keil C51已成為必備的開(kāi)發(fā)工具。
Keil C51軟件是眾多單片機應用開(kāi)發(fā)的優(yōu)秀軟件之一,Keil C51提供了一個(gè)集成開(kāi)發(fā)環(huán)境IDE(Intergrated Development Environment)?滋Vision,包括C51編譯器、宏匯編、連接器、庫管理和一個(gè)功能強大的仿真調試器,支持匯編、PLM語(yǔ)言和C語(yǔ)言的程序設計,界面友好,易學(xué)易用。在開(kāi)發(fā)應用軟件的過(guò)程中,編輯、編譯、匯編、連接、調試等各階段都集成在一個(gè)環(huán)境中,先用編輯器編寫(xiě)程序,再調用編譯器進(jìn)行編譯,連接后即可直接運行[5,6]。
本軟件采用Keil C51進(jìn)行開(kāi)發(fā),程序可讀性強。
3.2 Proteus簡(jiǎn)介
Proteus嵌入式系統仿真與開(kāi)發(fā)平臺是由英國Labcenter Electronics公司開(kāi)發(fā)的,是目前世界上最先進(jìn)、最完整的嵌入式系統設計與仿真平臺,是目前唯一能夠對各種微處理器進(jìn)行實(shí)時(shí)仿真、調試與測試的EDA工具。Proteus除了具有和其他EDA工具一樣的原理布圖、PCB自動(dòng)或人工布線(xiàn)及電路仿真的功能外,最大的特點(diǎn)在于其電路仿真是互動(dòng)的,針對微處理器的應用還可以直接在基于原理圖的虛擬原型上編程,真正實(shí)現了沒(méi)有硬件目標原形的情況下對系統的調試、測試、驗證,并實(shí)現軟件源碼級的實(shí)時(shí)調試,如有顯示及輸出,還能看到運行后輸入輸出的效果,配合系統配置的虛擬儀器如示波器、邏輯分析儀等,建立了一個(gè)完備的電子設計開(kāi)發(fā)環(huán)境。Proteus產(chǎn)品系列可以對基于微控制器的設計連同所有的外圍電子器件儀器仿真,用戶(hù)甚至可以實(shí)時(shí)采用諸如LED/LCD、鍵盤(pán)、RS232終端等動(dòng)態(tài)外設模型來(lái)對設計進(jìn)行交互仿真。
Proteus是一款電路分析與實(shí)物仿真軟件,運行于Windows操作系統上,具有實(shí)驗資源豐富、實(shí)驗周期短、硬件投入少、實(shí)驗過(guò)程損耗小、與實(shí)際設計接近程度大等特點(diǎn)[7-9]。
4 開(kāi)關(guān)時(shí)序的設計與仿真
開(kāi)關(guān)時(shí)序設計原理圖如圖4所示,圖中采用80C51芯片,其中管腳XTAL1、XTAL2接時(shí)鐘控制器,RST端上電,5個(gè)輸出管腳P1.0~P1.4分別控制開(kāi)關(guān)S1、S2、S3、S4和S5,電源VCC為+5 V的直流電源。
4.1 程序設計
在Keil平臺進(jìn)行如圖5所示的程序編譯。
程序代碼如下:
#includelt;reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit s1=P1^0; //控制開(kāi)關(guān)1
sbit s2=P1^1; //控制開(kāi)關(guān)2
sbit s3=P1^2; //控制開(kāi)關(guān)3
sbit s4=P1^3; //控制開(kāi)關(guān)4
sbit s5=P1^4; //控制開(kāi)關(guān)5
bit flag,flag1,flag2,flag3;
uchar ds,ds1,ds2,ds3;
uint jishi;
void Initialization() //初始化函數
{
EA=1;
ET0=1;
TMOD=0X02; //定時(shí)器工作方式為2
TH0=0x06; //定時(shí)250 ?滋s
TL0=0x06;
TR0=1;
s1=0;
s2=1;
s3=1;
s4=1;
s5=1;
flag1=1;flag2=0;flag3=0;
}
void inte() interrupt 1 using 3 //1s中斷處理函數
{
if(++jishi==40) //時(shí)間間隔4000×250 ?滋s=1 s
{
jishi=0;
if(flag1){ds1++;}
if(flag2){ds2++;}
if(flag3){ds3++;}
}
}
void main ()
{
Initialization();
while(1)
{
if(flag1)
{
if(ds1==4){s3=0;}
if(ds1==11){s5=0;}
if(ds1==12){s2=0;}
if(ds1==13){s1=1;}
if(ds1==20){s4=0;flag1=0;flag2=1;}
}
if(flag2)
{
if(ds2==1){s3=1;}
if(ds2==2){s5=1;}
if(ds2==9){s2=1;}
if(ds2==10){s1=0;}
if(ds2==17){s4=1;flag2=0;flag3=1;ds2=0;}
}
if(flag3)
{
if(ds3==7){s3=0;}
if(ds3==14){s5=0;}
if(ds3==15){s2=0;}
if(ds3==16){s1=1;}
if(ds3==23){s4=0;flag2=1;flag3=0;ds3=0;}
}
}
}
評論