逆变电源程序.docxVIP

  • 3
  • 0
  • 约1.3万字
  • 约 15页
  • 2024-04-11 发布于辽宁
  • 举报

//

//main.c,晶振4MHz,系统测试

//

#includepic.h//包含单片机内部资源预定义

#includemath.h

#includetext.h〃资源定义

#include12864.h〃显示

#includeInitial.h//初始化

#includekeyscan.h〃按键扫描

#includepwm.h

//

voidmain(void)

{

Initial();//调用初始化子函数

LCD_lnitial();//LCD初始化子函数

LCD_Prints(0,0,双极性单相SPWM);

LCD_Prints(1,0,”逆变器模拟装置);

LCD_Prints(2,0,”频率: Hz);

LCD_Prints(3,0「调制度: =);

while(1)

{

while(!T0IF);//判断40ms到否

{

T0IF=0;TMR0=98;

asm(clrwdt);//清看门狗

keyscan();//按键扫描

if(spwmintfer_Hz50)//上电初始后,频率自动加到50Hz,调制度自动加到0.98{

if(delay15)

{

fer_Hz+=1;delay=0;mark=1;

if((fer_Hz%2)m15){m++;xian_m+=2;}

}

elsedelay++;

}

else

{spwmint=0;LCD_Prints(3,6,);}

if(k2){m++;mark=1;xian_m+=2;}〃有k2键,调制度加0.02,即m加1if(xian_m==102)xian_m=68;

if(m16){m=0;mark=1;}//调制度范围为0.68~1,共17阶,每阶加0.02if(k1){fer_Hz=fer_Hz+10;mark=1;}//有k1键,正弦波频率加10Hz

if(k0){fer_Hz=fer_Hz+1;mark=1;}//有k0键,正弦波频率加1Hzif(fer_Hz100)fer_Hz=10;//正弦波频率范围为10~100HzR4=fer_Hz/100; 〃显示频率和调制度

R5=(fer_Hz%100)/10;

R6=fer_Hz%10;

LCD_Printc(2,2,0x3A);

LCD_Writedata(0x00);

LCD_Writedata(0x30+R4);

LCD_Writedata(0x30+R5);

LCD_Writedata(0x30+R6);

R4=xian_m/100;

R5=xian_m%100/10;

R6=xian_m%10;

LCD_Printc(3,3,0x3A);

LCD_Writedata(0x30+R4);

LCD_Writedata(0x2E);

LCD_Writedata(0x30+R5);

LCD_Writedata(0x30+R6);

if(mark)

{

mark=0;

//10~24Hz 根据频率确定对应的

//10~24Hz 根据频率确定对应的

//25~39Hz

//40~59Hz

抽样次数

if(25=fer_Hzfer_Hz39)sta=1;

if(40=fer_Hzfer_Hz59)sta=2;

if(60=fer_Hzfer_Hz100)sta=3;//60~100Hzswitch(sta)

{

case0://10~24Hz

N=100;〃预分频数为4

PR2_time=((250000/fer_Hz)/N)-1;//某一频率正弦波对应的一个

PWM周期

for(n=0;n25;n++)〃计算1/4周期正弦波的PWM正脉宽时间

{ 〃结果存于number1[]数组中

R0=(tiaom[m]*sin100[n])/255;R1=(R0+1)/2;R2=(R1+128);

R3=(R2*PR2_time)/255;

number1[n]=R3;

}

〃将中断中的查表状态值改为1

〃将中断中的查表状态值改为1

//修改PWM周期值

//1/4抽样数给中断查pwm_high个数

〃欲分频系数为4

PR2=PR2_time;

pwm_N=25;

T2CKPS0=1;

for(n=0;n25;n++)//表1值移入表0中

{

number0[n]=number1[n];

}

choose_table=0; 〃表值移完,中断查表状态值改为0

break;

case1: //25~39Hz

N=160;〃抽样总数160

PR2_time=(1000000/fer_Hz)/N-1;//某一频率正弦波对应的一个

PWM周期

for(n=0;n

文档评论(0)

1亿VIP精品文档

相关文档