基于STC12系列單片機(jī)的串聯(lián)型開(kāi)關(guān)電源設(shè)計(jì)與實(shí)現(xiàn)_第1頁(yè)
基于STC12系列單片機(jī)的串聯(lián)型開(kāi)關(guān)電源設(shè)計(jì)與實(shí)現(xiàn)_第2頁(yè)
基于STC12系列單片機(jī)的串聯(lián)型開(kāi)關(guān)電源設(shè)計(jì)與實(shí)現(xiàn)_第3頁(yè)
已閱讀5頁(yè),還剩5頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

單片機(jī)及模數(shù)綜合系統(tǒng)設(shè)計(jì)課題名稱:基于STC12系列單片機(jī)的串聯(lián)型開(kāi)關(guān)電源設(shè)計(jì)與實(shí)現(xiàn)—-單片機(jī)控制部分一、實(shí)驗(yàn)?zāi)康模罕灸M電路課程設(shè)計(jì)要求制作開(kāi)關(guān)電源的模擬電路部分,在掌握原理的基礎(chǔ)上將其與單片機(jī)相結(jié)合,完成開(kāi)關(guān)電源的設(shè)計(jì).本報(bào)告旨在詳述開(kāi)關(guān)電源的原理分析、計(jì)算、仿真波形、相關(guān)控制方法以及程序展示。二、總體設(shè)計(jì)思路本設(shè)計(jì)由開(kāi)關(guān)電源的主電路和控制電路兩部分組成,主電路主要處理電能,PWMPWMAD管顯示。系統(tǒng)的基本框圖及控制部分如下:?jiǎn)纹瑱C(jī)所采用的芯片為STC12C5A60S2,該芯片在擁有805110ADPWMPWM脈沖,將此脈沖輸入到模擬電路部分,在模擬電路的輸出端即可產(chǎn)生一定的輸出電壓,可比較容易的通過(guò)程序來(lái)實(shí)現(xiàn)對(duì)輸出電壓的控制。但上述的開(kāi)環(huán)控制是無(wú)法達(dá)到精確的調(diào)節(jié)電壓,因此需要采用閉環(huán)控制來(lái)精確調(diào)制。即,對(duì)輸出電壓進(jìn)行AD采樣,將其輸入回單片機(jī)中進(jìn)行數(shù)據(jù)處理。單片機(jī)根據(jù)處理的結(jié)果來(lái)對(duì)輸出電壓做出修正,經(jīng)過(guò)這樣的逐步調(diào)節(jié)即可達(dá)到閉波形輸出模塊,模擬電路模塊,AD控制過(guò)程基本思路為:首先從鍵盤輸入一個(gè)電壓值,并把該電壓值在數(shù)碼管上面顯示出來(lái),再由A/D轉(zhuǎn)換模塊對(duì)串聯(lián)開(kāi)關(guān)電源電路的輸出端進(jìn)行電壓采集,將采集到的電壓值與鍵盤輸入的電壓值進(jìn)行比較,通過(guò)閉環(huán)算法,控制PWM的脈寬輸出,由此控制串聯(lián)開(kāi)關(guān)電壓電源電路,改變輸出的電壓值,使得輸出值與設(shè)定的電壓值相等。三、系統(tǒng)各單元模塊電路設(shè)計(jì)1、鍵盤輸入數(shù)據(jù)部分分別接到單片機(jī)的P2。4,P2。5,P2。6,P2.7。每路通過(guò)電阻進(jìn)行上拉,可以編程實(shí)現(xiàn)控制單片機(jī)運(yùn)行不同程序。為了判斷鍵盤上面的按鍵是否有按下的,可以事先對(duì)P2。P2。5,P2.6,P2。7端口賦值,便可以知道具體是哪個(gè)按鍵被按下了。例如:P2.4=0,便可知P2.4鍵盤輸入模塊程序如下:voidkey() //鍵盤掃描函數(shù){if(P2_6==0){delay(10);//if(P2_6==0){while(P2_6==if(a<9){a++;}elsea=0;}}if(P2_5==0){dela(1//if(P2_5=={while(P2_5==if(b<9){b++; }else(b=0);}if(P2_4=={delay(10);//延時(shí)去抖動(dòng)if(P2_4==0){whilP2_4==if(c<5){c+}elsec=0;}}{dela(1;if(P2_7==0){while(P2_7==0);P1_5=!P1_5;}}}2、數(shù)碼管數(shù)據(jù)顯示部分知道了上面在鍵盤輸入的數(shù)值后,便要在數(shù)碼管上面顯示出來(lái)。8P0和P20—P2.4部一起亮著的。8位分別有段選和位選,段選就是要一個(gè)數(shù)碼管顯示的字型,而位選則是由低電平選中所要那一個(gè)數(shù)碼管,該數(shù)碼管才能亮。因此要使得數(shù)碼管亮并顯示數(shù)字,則必須數(shù)碼管顯示模塊程序?yàn)?voiddisplay(floatx){uintM,N,I;I=100*x/100;N=(100*x—100*I)/10;M=100*x—100*I-10*N;P2_0=0;P0=table[0;delay(10);P2_0=1;P2_1=0;P0=gao_table[I];delay(10);P2_1=1;P2_2=0;P0=table[N;delay(10;P2_2=1;P2_3=0;P0=table[M];delay(10);P2_3=1;}3、控制PWM輸出部分STC12C5A60S2系列單片機(jī)集成了兩路可編程計(jì)數(shù)器陣列(PCA)模塊,可用于軟件定時(shí)器,外部脈沖的捕捉,高速輸出以及脈寬調(diào)制PWM脈寬調(diào)制輸P1.30)P11端口輸出可調(diào)占空比的高速脈沖。PWM模塊程序如下:voidPWM_Drv_Init(void){CCON=0; //初始化PCA控制寄存CL=0; //初始化PCA計(jì)數(shù)器CH=0;CMOD=CR=}voidPWM0_Drv_SetDuty(unsignedcharDutyValue){CCAP0H=CCAP0L=DutyValue;//設(shè)置看空比CCAPM0=0x42;CR=1; }PWM仿真圖為:4、AD轉(zhuǎn)換模塊(完成萬(wàn)用表功能,即測(cè)量開(kāi)關(guān)電源輸出電壓)STC12C5A60S2810位高速A/D一路,故可以通過(guò)軟件設(shè)計(jì)選擇其中的一路用來(lái)測(cè)量電壓。在不需作為A/D轉(zhuǎn)換的端口可以繼續(xù)作為I/OAD轉(zhuǎn)換對(duì)特殊功能寄存器的初始化主要有ADC_CONTR和A/D轉(zhuǎn)換結(jié)果寄存器ADC_RS用來(lái)存放高八位)﹑ADC_RESL(用來(lái)存放低兩位在ADC_CONTR中包含有ADC電源控制位ADC_POWER,模數(shù)轉(zhuǎn)換器轉(zhuǎn)換速度控制位 SPEED1﹑SPEED0,模數(shù)轉(zhuǎn)換器轉(zhuǎn)換結(jié)束標(biāo)志位ADC_FLA模數(shù)轉(zhuǎn)換(ADC轉(zhuǎn)換啟動(dòng)控制位ADC_STAR模擬輸入通道選擇2套時(shí)鐘,在設(shè)置ADC_CONTR4CPUADC_CONTR控制寄存器,所以設(shè)置ADC_CONTR4ADC_CONTRADC的結(jié)構(gòu)如下圖所示:AD轉(zhuǎn)化模塊的程序?yàn)椋簐oidADC_Drv_Demo(void){if(ADC_Finish_Flag==TRUE){ADC_Finish_Flag=FALSE;ADC_Drv_StartCh(ADC_channel);m=ADC_Result[ADC_channel]*5.0/1024;}5、閉環(huán)控制算法這部分是整個(gè)實(shí)驗(yàn)中最重要的部分,該部分主要是通過(guò)A/D采集數(shù)據(jù)控制PWM輸出,PWM控制開(kāi)關(guān)電源輸出,以達(dá)到穩(wěn)定,即讓開(kāi)關(guān)電源輸出電壓穩(wěn)定在鍵盤輸入的電壓值。針對(duì)前面的要求,則需要用單片機(jī)來(lái)完成所有的控制與計(jì)算。ADP1.7,PWMP1。3,在采集完電壓數(shù)據(jù)的時(shí)候把數(shù)據(jù)存放在ADCtemp1000temp1000才能得到實(shí)際的設(shè)置電壓數(shù)值Vs;另一方面,采集回來(lái)的電壓ADC真實(shí)值Vr=ADV*5。0/1024.0在得到這兩個(gè)數(shù)值之后對(duì)他們進(jìn)行比較,要是Vr〈VsPWMVr〉VsPWM而使得串聯(lián)開(kāi)關(guān)電路的輸出電壓與事先所設(shè)置的電壓值相同.實(shí)際測(cè)得的電壓與設(shè)置的電壓對(duì)比表格如下:Vs 〈0。0。80。9 1.01。11。21。31。41。51。618Vr — 0790890981.081.18128139149159171.81。9 2.02。12。22。3 2.42。52。6 2.7282.91.781.781。882。022。082。172。282.382512582682782913。03.13。23.33。43。53。03.13。23.33。43。53.63。73.83。92983123.193283.393483593683793.9603?!?8通過(guò)上面的表格可以看出來(lái),雖然實(shí)際測(cè)出來(lái)的電壓Vr和設(shè)置的電壓Vs有一定的誤差,但是總體還是在設(shè)置的電壓附近波動(dòng),所能輸出地電壓范圍為0.8v~4。0v。誤差原因分析提供給AD四、心得體會(huì)通過(guò)這次實(shí)驗(yàn)讓我知道理論需要聯(lián)合實(shí)際,只有將自己所掌握的知識(shí)真正應(yīng)用于實(shí)際才算真正的掌握了知識(shí)。在剛開(kāi)始做的時(shí)候我對(duì)于單片機(jī)的知識(shí)理論只是有一些模糊的印象,AD程序?qū)懗鰜?lái)。雖然這次實(shí)驗(yàn)做出來(lái)了,但是我還是有些知識(shí)無(wú)法真正掌握,比如定時(shí)器中斷或定時(shí),所以這次實(shí)驗(yàn)我只能用delay通過(guò)這次實(shí)驗(yàn)我還注意到細(xì)節(jié)決定一個(gè)程序是否能成功運(yùn)行,比如我在寫程序是應(yīng)用了if……else格式,可是因?yàn)樵趯懙倪^(guò)程中括號(hào)沒(méi)對(duì)齊,使程序沒(méi)能成功運(yùn)行,經(jīng)過(guò)同學(xué)幫忙才成功運(yùn)行.還有的細(xì)節(jié)就是關(guān)于鍵盤的防抖動(dòng)問(wèn)題。C51編程的的知識(shí),更多的是學(xué)會(huì)了學(xué)習(xí)的方法,能夠?qū)⑺鶎W(xué)到的知識(shí)用到實(shí)驗(yàn)上面,可以把知識(shí)記得更清楚。這還更多地提高了在遇到實(shí)際問(wèn)題時(shí)該怎樣解決實(shí)際問(wèn)題的能力。更深入地學(xué)習(xí)C語(yǔ)言,又可以更多這樣的實(shí)驗(yàn),那樣就可以更好地提高自己的動(dòng)手能力與對(duì)所學(xué)知識(shí)的運(yùn)用能力本實(shí)驗(yàn)C程序源代碼:/******************************************************************************//***文件名:開(kāi)關(guān)穩(wěn)壓電源。c*****************************************************//***功能:設(shè)定電壓初始值,使得輸出電壓值與數(shù)碼管顯示值相同*********************//***單片機(jī)型號(hào):STC12C5A60S2(帶AD轉(zhuǎn)換與PWM脈寬調(diào)制輸出功能)**************//******************************************************************************/***********************/#include"stc12c5a60s2。#include〈intrins?!担efineuintunsignedint#defineucharunsigned#defineTRUE 1#defineFALSE 0voiddelay(uintz);//延時(shí)函數(shù)聲明voiddisplay(floatm);//voidke(;//鍵盤掃描函數(shù)voidADC_Drv_InitC(unsignedcharChN;voidADC_Drv_StartC(unsignedcharvoidADC_Drv_Service(void);voidADC_Drv_Demo(void);voidPWM_Drv_Init(void);voidPWM0_Drv_SetDutunsignedcharDutyValu;ucharADC_channel=7; //選中哪一個(gè)通道的變范圍0——uintADC_Result[8]=0; //保存ADC轉(zhuǎn)換結(jié)果floatm,n;ucharD;ucharcodeucharcodegao_tabl]={0x40,0x7,0x20x3,0x19,0x1;sbitP2_0=P2^0;sbitsbitsbitsbitsbitP2_5=P2^5;sbitsbitsbitPWM0=P1^3; //定義PWM0sbitP1_5=P1^5;bitADC_Finish_Flag=FALSE; //ADCuinta,b,c;voidmain(){a=0,b=0,c=0,D=100;P1_5=0;ADC_Drv_InitCh(;PWM_Drv_Init();while(1){key();n=c+0。1*b+0.01*a;ADC_Drv_Service();ADC_Drv_Demo();PWM0_Drv_SetDutD;if(m〈n){if((m+0〉else{if(DD=0;else}}if(m>n){i(—else{if(D〉=255)D=255;elseD++;}}if(P1_5)display(m);elsedisplay(n);}}voiddelay(uint延時(shí)函數(shù){uintx,y;for(x=z;x〉0;x--)for(y=110;y>0;y--);}voidkey() //鍵盤掃描函數(shù){if(P2_6==0){dela(1/if(P2_6=={whil(P2_6==〈9){a++;}elsea=0;}}if(P2_5=={dela(1/if(P2_5==0){while(P2_5==if(b〈9){b++; }elseb=0;}}if(P2_4==0){delay(10);//延時(shí)去抖動(dòng)if(P2_4==0){while(P2_4==0);if(c〈5){c++;}elsec=0;}}if(P2_7==0){delay(1;if(P2_7==0){P1_5=!P1_5;}}}voiddisplay(floatx){uintI=100*x/100;N=(100*x—100*I)/10;P2_0=0;delay(10);P2_0=1;P2_1=0;P0=gao_tabl[;delay(10);P2_1P2_2=0;delay(10);P2_2=P2_3=0;P0=table[M];delay(10);P2_3=1;}voidADC_Drv_InitCh(unsignedcharChNo){P1ASF=P1ASF|(0x01ChNo);}voidADC_Drv_StartCh(ucharChNo){

//初始化相應(yīng)通道工作在AD模式下//轉(zhuǎn)換啟動(dòng)uintDelay=0x00;P1ASF=P1ASF|(0x01<<

//初始化相應(yīng)通道工作在AD模式下ADC_RES=//ClearpreviousresultADC_CONTR=ADC_POWER|ADC_SPEEDL

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論