可控硅的斩波控制的实现--C语言源代码
时间:01-20 13:48 阅读:1115次
*温馨提示:点击图片可以放大观看高清大图
简介:在这里和大家分享一个能实现可控硅的斩波控制的C语言源代码。
//=======可控硅斩波变更定义================
typedef struct TRIDRIVE
{
uint8 SetRPow ; //功率值
uint8 R_Dly ;//过零后延时开可控硅时间
uint8 T_Dirv ; //可控硅打开的驱动时间
}tTriDrive ;
extern tTriDrive tTriDriv ;
//----------------------
#define SetRPow tTriDriv.SetRPow
#define R_Dly tTriDriv.R_Dly
#define T_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中断
}
}
}