當前位置:編程學習大全網 - 編程語言 - 求MPPT(太陽能最大功率點跟蹤)擾動法算法的完整源程序,最好是基於avr編程的。

求MPPT(太陽能最大功率點跟蹤)擾動法算法的完整源程序,最好是基於avr編程的。

*關於頻率和占空比的確定,對於6M晶振,假定PWM輸出頻率為1KHZ,;這樣可以設定占空比可從(1-100)%變化,即0.01ms*100=1ms。周期用T1定時,輸出高電平用T1定時。 *

#include <REGX51.H>

#define uchar unsigned char

#define V_TH1 0XFE

#define V_TL1 0X0C

#define V_TMOD 0X11

void init_sys(void); /*系統初始化函數*/

unsigned char ZL,ZH;

void main (void)

{

init_sys();

while(1)

{

Unsigned Int temp;

int16 zkb=50;

Temp =2^16-5*zkb;

ZH = temp/256;

ZL = temp%256;

K();

}

}

void init_sys(void) /*系統初始化函數*/

{

TMOD=V_TMOD; /*定時器初化*/

TH0=ZH;

TL0=ZL;

TH1 = V_TH1;

TL1= V_TL1;

TR1 = 1;

ET1 = 1;

ET0=1; /*允許T0中斷

EA=1; /*CPU開中斷

}

Void k(int16 vk,ik)

{ static int16 prek;

pk=vk*ik;

prek=0;

vk=0;

if(prvpk==pk)

{

return;

}

else

{

if(pk>prepk)

{ prek=pk;

if(vk>prevk)

{

zkb++;

prevk=vk;

prepk=pk;

}

else

{

zkb--;

prevk=vk;

prepk=pk;

}

}

else

{

if(vk>prevk)

{

zkb++;

prevk=vk;

prepk=pk;

}

else

{

zkb--;

prevk=vk;

prepk=pk;

}

}

/*中斷函數*/

void timer0(void) interrupt 1

{

P2_2=! P2_2;

TR0 = 0;

}

Void timer1(void) interrupt 2

{

TH1 = V_TH1; /*恢復定時器T0初始值*/

TL1 = V_TL1;

P2_2=! P2_2;

TH0=ZH; /*恢復定時器T0初始值*/

TL0=ZL;

TR0 = 1;

}

  • 上一篇:為什麽硬派越野車大多是分時四驅?難道全時四驅不好嗎?
  • 下一篇:女生讀鐵路學校選什麽專業最好?
  • copyright 2024編程學習大全網