200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > 如何用单片机控制可控硅c语言程序 可控硅的斩波控制的实现--C语言源代码

如何用单片机控制可控硅c语言程序 可控硅的斩波控制的实现--C语言源代码

时间:2020-09-04 23:00:12

相关推荐

如何用单片机控制可控硅c语言程序 可控硅的斩波控制的实现--C语言源代码

//=======可控硅斩波变更定义================

typedefstruct TRIDRIVE

{

uint8 SetRPow ; //功率值

uint8 R_Dly ;//过零后延时开可控硅时间

uint8 T_Dirv ; //可控硅打开的驱动时间

}tTriDrive ;

extern tTriDrive tTriDriv ;

//----------------------

#defineSetRPow tTriDriv.SetRPow

#defineR_Dly tTriDriv.R_Dly

#defineT_Dirv tTriDriv.T_Dirv

//定义标志位

uint8 F_TRI1 ;

uint8 F_HT1 ; //开启负载标志 1为开启

//*************************************

// 函数名称:ControlHt1

// 函数功能:实现可控硅的斩波控制

// 入口参数:无

// 出口参数:无

//***************************************

void ControlMot1(void)

{

if(F_HT1) //负载工作

{

R_Dly = SetRPow; //赋功率值

T_Dirv = 25 ; //可控硅驱动时间 30U*25=750US

TIMER2_IEN_ENB ; //定时器2开中断

F_TRI1 = 1 ;

}

else

{

HT1_OFF ; //关可控硅

F_TRI1 = 0 ;

}

}

//---实例应用------

void main(void)

{

while(1)

{

ReadZ0() ;//如市电频率为50HZ 则10MS跑一次主循环

ControlMot1() ; //控制可控硅输出

}

}

//===中断服务程序=========

void interrupt server(void) //本中断30U进入一次 TIMER2

{

if(F_TRI1)

{

if(R_Dly != 0)

{

R_Dly -- ;

}

else

{

HT1_ON ;//开可控硅

F_TRI1 = 0;

}

}

else

{

if(T_Dirv != 0)

{

T_Dirv -- ;

}

else

{

HT1_OFF;//关可控硅

TIMER2_IEN_DIS ; //关定时器2中断

}

}

}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。